[알고리즘] 포스트잇 메모장 기능 구현 [심플형]
로빈아빠
본문
윈도우 바탕화면에서 간편하게
사용하던
포스트잇 프로그램을 구현해 봤습니다
로그 아웃 종전의 위치와 사이즈, 펼침 또는 접힘 형태를
그대로 유지하며 출력을 해 줄수 있도록 해봤습니다
방법은
각종 이벤트가 일어 날때마다
그 이벤트 위치 값등을 찾아내어
DB에 업데이트 시켰습니다
DB를 활용했기 때문에
정보 보전성이 강하고
확장 프로그램이 가능합니다
관리자 로그인 후 스킨이 적용 되면서
이전 모양대로 출력되록 하기 위해서
XML 으로 데이타를 추출해 출력하는 방법을 택했습니다
function postit_xmlList(reqs)
{
var outhtml= '';
var xmlDoc = '';
var xmlDoc = reqs.responseXML;
var sw = document.body.clientWidth;
var sh = document.body.clientHeight;
var postmaxw = parseInt( (sw - postit_defaultWH[0]) - 150);
var postmaxh = parseInt( (sw - postit_defaultWH[1]) - 70);
var xmlList= xmlDoc.getElementsByTagName('item');
var xmlListLen = xmlList.length;
for(var i=0; i<xmlListLen; i++){
var itemList = xmlList.item(i);
var postid = itemList.getElementsByTagName('postid').item(0).firstChild.nodeValue;
var x = itemList.getElementsByTagName('x').item(0).firstChild.nodeValue;
var y = itemList.getElementsByTagName('y').item(0).firstChild.nodeValue;
var w = itemList.getElementsByTagName('w').item(0).firstChild.nodeValue;
var h = itemList.getElementsByTagName('h').item(0).firstChild.nodeValue;
var dly = itemList.getElementsByTagName('displaymd').item(0).firstChild.nodeValue;
var memo= itemList.getElementsByTagName('description').item(0).firstChild.nodeValue;
x = (x > postmaxw) ? postmaxw : x;
y = (y > postmaxh) ? 10 : y;
postit_runDiv(postid, w, h,x,y,'create','','default','');
var elementId = document.getElementById(postid);
elementId.innerHTML = memo;
if(dly == 'none'){
postit_simple(postid);
}
}
}
또한 포스트잇은 내용을 적음과 동시에
저장을 해줘야 하기 때문에
다음과 같이 하였습니다
// 메모 자동저장 /--------------------------------------
var keystart = 0;
var postTmpMemo = '';
var postMid = '';
// 이벤트 체크 및 시작
function postit_runKey(evt,id)
{
var KeyCode =0;
var e = evt? evt : window.event;
if(!e) return;
postMid = id;
if (e.keyCode){ KeyCode = e.keyCode; }
else if (typeof(e.which)!= 'undefined'){ KeyCode = e.which; }
if (KeyCode>0){
if (KeyCode == 40 || KeyCode == 38){ keystart = 0; }else{ keystart =1; }
}
if(keystart==1){ setTimeout("postit_getmemo()",500); }
}
// 데이타 비교 및 저장 /--
function postit_getmemo()
{
if(keystart == 0) return;
var obj = document.getElementById(postMid+'_content');
var objv= obj.value;
if(objv != postTmpMemo){
postTmpMemo = objv;
params = 'postid='+postMid+'&memo='+encodeURIComponent(objv);
postit_runProgramMode('memo',params);
}
setTimeout("postit_getmemo()",500);
}
// 포커스 아웃인지 체크
function postit_keyChkFocus(){ keystart = 0; }
부족하지만 해 보고 싶어 하는 분들에게 팁이 될진 몰겠지만
안보는것 보다야 괜찮겠죠 ^^
http://www.apmsoft.net/ax/admin/
-----------------------------------------------
선우님 댓글:
오 죽이는데요.. 제가 만든 비슷한거 ,, 로그인후 노트가면 됩니다.
http://www.passpy.com 아이디 : test1 / 패스 1111
사용하던
포스트잇 프로그램을 구현해 봤습니다
로그 아웃 종전의 위치와 사이즈, 펼침 또는 접힘 형태를
그대로 유지하며 출력을 해 줄수 있도록 해봤습니다
방법은
각종 이벤트가 일어 날때마다
그 이벤트 위치 값등을 찾아내어
DB에 업데이트 시켰습니다
DB를 활용했기 때문에
정보 보전성이 강하고
확장 프로그램이 가능합니다
관리자 로그인 후 스킨이 적용 되면서
이전 모양대로 출력되록 하기 위해서
XML 으로 데이타를 추출해 출력하는 방법을 택했습니다
function postit_xmlList(reqs)
{
var outhtml= '';
var xmlDoc = '';
var xmlDoc = reqs.responseXML;
var sw = document.body.clientWidth;
var sh = document.body.clientHeight;
var postmaxw = parseInt( (sw - postit_defaultWH[0]) - 150);
var postmaxh = parseInt( (sw - postit_defaultWH[1]) - 70);
var xmlList= xmlDoc.getElementsByTagName('item');
var xmlListLen = xmlList.length;
for(var i=0; i<xmlListLen; i++){
var itemList = xmlList.item(i);
var postid = itemList.getElementsByTagName('postid').item(0).firstChild.nodeValue;
var x = itemList.getElementsByTagName('x').item(0).firstChild.nodeValue;
var y = itemList.getElementsByTagName('y').item(0).firstChild.nodeValue;
var w = itemList.getElementsByTagName('w').item(0).firstChild.nodeValue;
var h = itemList.getElementsByTagName('h').item(0).firstChild.nodeValue;
var dly = itemList.getElementsByTagName('displaymd').item(0).firstChild.nodeValue;
var memo= itemList.getElementsByTagName('description').item(0).firstChild.nodeValue;
x = (x > postmaxw) ? postmaxw : x;
y = (y > postmaxh) ? 10 : y;
postit_runDiv(postid, w, h,x,y,'create','','default','');
var elementId = document.getElementById(postid);
elementId.innerHTML = memo;
if(dly == 'none'){
postit_simple(postid);
}
}
}
또한 포스트잇은 내용을 적음과 동시에
저장을 해줘야 하기 때문에
다음과 같이 하였습니다
// 메모 자동저장 /--------------------------------------
var keystart = 0;
var postTmpMemo = '';
var postMid = '';
// 이벤트 체크 및 시작
function postit_runKey(evt,id)
{
var KeyCode =0;
var e = evt? evt : window.event;
if(!e) return;
postMid = id;
if (e.keyCode){ KeyCode = e.keyCode; }
else if (typeof(e.which)!= 'undefined'){ KeyCode = e.which; }
if (KeyCode>0){
if (KeyCode == 40 || KeyCode == 38){ keystart = 0; }else{ keystart =1; }
}
if(keystart==1){ setTimeout("postit_getmemo()",500); }
}
// 데이타 비교 및 저장 /--
function postit_getmemo()
{
if(keystart == 0) return;
var obj = document.getElementById(postMid+'_content');
var objv= obj.value;
if(objv != postTmpMemo){
postTmpMemo = objv;
params = 'postid='+postMid+'&memo='+encodeURIComponent(objv);
postit_runProgramMode('memo',params);
}
setTimeout("postit_getmemo()",500);
}
// 포커스 아웃인지 체크
function postit_keyChkFocus(){ keystart = 0; }
부족하지만 해 보고 싶어 하는 분들에게 팁이 될진 몰겠지만
안보는것 보다야 괜찮겠죠 ^^
http://www.apmsoft.net/ax/admin/
-----------------------------------------------
선우님 댓글:
오 죽이는데요.. 제가 만든 비슷한거 ,, 로그인후 노트가면 됩니다.
http://www.passpy.com 아이디 : test1 / 패스 1111
관련링크
댓글목록
등록된 댓글이 없습니다.