sol *.130.111.148
제목 작성자 날짜
04. 그래프(pchart)를 에디터에 추가/수정하기 위한 popup.js 만들기 (current) sol 2009.08.20 22:38:26
복원
<div class="eArea xe_content xe_dr_hx"><h3 id="h1250736862209">에디터에 추가하기 insertPChart() </h3></div><div class="eArea xe_content xe_dr_txt"><p>에디터 윈도우인 opener의 editorReplaceHTML를 이용하여 선택된 부분을 _createImg()로 만든 그래프인 &lt;img /&gt; tag 로 치환합니다.<br> 차후 수정을 위해 &lt;img /&gt;의 <span style="font-weight: bold;">editor_component attribute</span>에는 pchart를 <span style="font-weight: bold;">title attribute</span>에 항목1:값1[ , 항목2:값2 ..] 로 설정합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>// 에디터에 추가<br>function <span style="font-weight: bold;">insertPChart</span>() {<br>&nbsp;&nbsp;&nbsp; // 창을 띄운 윈도우가 없을 경우 종료<br>&nbsp;&nbsp;&nbsp; if(typeof(opener)=='undefined') return;<br></p><p>&nbsp;&nbsp;&nbsp; var str = _createImg(); <br><br>&nbsp;&nbsp;&nbsp; opener.editorFocus(opener.editorPrevSrl);<br>&nbsp;&nbsp;&nbsp; var iframe_obj = opener.editorGetIFrame(opener.editorPrevSrl)<br>&nbsp;&nbsp;&nbsp; opener.editorReplaceHTML(iframe_obj, str);<br>&nbsp;&nbsp;&nbsp; window.close();<br>}</p><p><br></p><p>// api를 이용하여 이미지 경로를 만들고 &lt;img /&gt; tag를 생성<br>function _createImg(){<br>&nbsp;&nbsp;&nbsp; // api 기본 url를 가져옴<br>&nbsp;&nbsp;&nbsp; var url = jQuery('#api_url').val();<br>&nbsp;&nbsp;&nbsp; var title=[],value=[],h,w,t=[],v=[],info='',src='';<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; h = jQuery('#chart_height').val();<br>&nbsp;&nbsp;&nbsp; w = jQuery('#chart_width').val();<br><br>&nbsp;&nbsp;&nbsp; jQuery('input[id^=title]').each(function(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; title.push(jQuery(this).val()); <br>&nbsp;&nbsp;&nbsp; }); <br>&nbsp;&nbsp;&nbsp; jQuery('input[id^=value]').each(function(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value.push(jQuery(this).val()); <br>&nbsp;&nbsp;&nbsp; }); <br><br>&nbsp;&nbsp;&nbsp; for(var i=0,c=title.length;i&lt;c;i++){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(title[i].length&gt;0 &amp;&amp; value[i].length&gt;0){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t.push(title[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v.push(value[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; info += title[i] + ':' +value[i] + ',';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br><br>&nbsp;&nbsp;&nbsp; // 넓이와 높이 각 항목의 타이틀 <br>&nbsp;&nbsp;&nbsp; src = url.setQuery('cht','p3').setQuery('chd','t:'+v.join(','+
'+
')).setQuery('chs',w+'x'+h).setQuery('chl',t.join('|')).setQuery('dummy','.png');<br>&nbsp;&nbsp;&nbsp; return '&lt;img src="'+url+'" width="'+w+'" height="'+h+'" editor_component="pchart" alt="pie chart" title="'+info+'" /&gt;';<br>}<br><br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250736884090">그래프를 수정하기 </h3></div><div class="eArea xe_content xe_dr_txt"><p>수정시에는 사용자가 에디터에서 만들어진 파이 차트를 더블클릭 합니다.</p><p>더블클릭 이벤트는 XE_ROOT/modules/editor/tpl/js/editor_common.js 의 editorEventCheck()가 받아 editor_component attribute값으로 해당 컴포넌트를 연결하여 pchart::getPopupContent()가 호출되어 설정창이 뜹니다.</p><p>이때 opener인 에디터 창에서 변수 editorPrevNode 값에 선택된 node가 들어가게 되어 opener.editorPrevNode를 이용하여 차트생성시 title에 셋팅해둔 값을 읽어와 jQuery ready 이벤트시(창이 로드될 때) 설정 팝업창 input에 값을 넣어 주게 됩니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>// 수정시<br>jQuery(function(){<br>&nbsp;&nbsp;&nbsp; // 선택된 노드<br>&nbsp;&nbsp;&nbsp; var node = jQuery(opener.editorPrevNode).length;<br>&nbsp;&nbsp;&nbsp; if(node.length){<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // title attribute 파싱<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var i=0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node.attr('title').replace(/([^,:]+):([0-9]+)/g,function(m1,m2,m3){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jQuery('#title'+i).val(m2);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jQuery('#value'+i).val(m3);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 넓이와 높이<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jQuery('#chart_height').val(node.attr('height'));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jQuery('#chart_width').val(node.attr('width'));<br>&nbsp;&nbsp;&nbsp; }<br>});<br><br></p></div>
sol 2009.08.20 12:29:13
복원
<div class="eArea xe_content xe_dr_hx"><h3 id="h1250736862209">에디터에 추가하기 insertPChart() </h3></div><div class="eArea xe_content xe_dr_txt"><p>에디터 윈도우인 opener의 editorReplaceHTML를 이용하여 선택된 부분을 _createImg()로 만든 그래프인 &lt;img /&gt; tag 로 치환합니다.<br> 차후 수정을 위해 &lt;img /&gt;의 <span style="font-weight: bold;">editor_component attribute</span>에는 pchart를 <span style="font-weight: bold;">title attribute</span>에 항목1:값1[ , 항목2:값2 ..] 로 설정합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>// 에디터에 추가<br>function <span style="font-weight: bold;">insertPChart</span>() {<br>&nbsp;&nbsp;&nbsp; // 창을 띄운 윈도우가 없을 경우 종료<br>&nbsp;&nbsp;&nbsp; if(typeof(opener)=='undefined') return;<br></p><p>&nbsp;&nbsp;&nbsp; var str = _createImg(); <br><br>&nbsp;&nbsp;&nbsp; opener.editorFocus(opener.editorPrevSrl);<br>&nbsp;&nbsp;&nbsp; var iframe_obj = opener.editorGetIFrame(opener.editorPrevSrl)<br>&nbsp;&nbsp;&nbsp; opener.editorReplaceHTML(iframe_obj, str);<br>&nbsp;&nbsp;&nbsp; window.close();<br>}</p><p><br></p><p>// api를 이용하여 이미지 경로를 만들고 &lt;img /&gt; tag를 생성<br>function _createImg(){<br>&nbsp;&nbsp;&nbsp; // api 기본 url를 가져옴<br>&nbsp;&nbsp;&nbsp; var url = jQuery('#api_url').val();<br>&nbsp;&nbsp;&nbsp; var title=[],value=[],h,w,t=[],v=[],info='',src='';<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; h = jQuery('#chart_height').val();<br>&nbsp;&nbsp;&nbsp; w = jQuery('#chart_width').val();<br><br>&nbsp;&nbsp;&nbsp; jQuery('input[id^=title]').each(function(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; title.push(jQuery(this).val()); <br>&nbsp;&nbsp;&nbsp; }); <br>&nbsp;&nbsp;&nbsp; jQuery('input[id^=value]').each(function(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value.push(jQuery(this).val()); <br>&nbsp;&nbsp;&nbsp; }); <br><br>&nbsp;&nbsp;&nbsp; for(var i=0,c=title.length;i&lt;c;i++){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(title[i].length&gt;0 &amp;&amp; value[i].length&gt;0){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t.push(title[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v.push(value[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; info += title[i] + ':' +value[i] + ',';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br><br>&nbsp;&nbsp;&nbsp; // 넓이와 높이 각 항목의 타이틀 <br>&nbsp;&nbsp;&nbsp; src = url.setQuery('cht','p3').setQuery('chd','t:'+v.join(','+
'+
')).setQuery('chs',w+'x'+h).setQuery('chl',t.join('|')).setQuery('dummy','.png');<br>&nbsp;&nbsp;&nbsp; return '&lt;img src="'+url+'" width="'+w+'" height="'+h+'" editor_component="pchart" alt="pie chart" title="'+info+'" /&gt;';<br>}<br><br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250736884090">그래프를 수정하기 </h3></div><div class="eArea xe_content xe_dr_txt"><p>수정시에는 사용자가 에디터에서 만들어진 파이 차트를 더블클릭 합니다.</p><p>더블클릭 이벤트는 XE_ROOT/modules/editor/tpl/js/editor_common.js 의 editorEventCheck()가 받아 editor_component attribute값으로 해당 컴포넌트를 연결하여 pchart::getPopupContent()가 호출되어 설정창이 뜹니다.</p><p>이때 opener인 에디터 창에서 변수 editorPrevNode 값에 선택된 node가 들어가게 되어 opener.editorPrevNode를 이용하여 차트생성시 title에 셋팅해둔 값을 읽어와 jQuery ready 이벤트시(창이 로드될 때) 설정 팝업창 input에 값을 넣어 주게 됩니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>// 수정시<br>jQuery(function(){<br>&nbsp;&nbsp;&nbsp; // 선택된 노드<br>&nbsp;&nbsp;&nbsp; var node = jQuery(opener.editorPrevNode).length;<br>&nbsp;&nbsp;&nbsp; if(node.length){<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // title attribute 파싱<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var i=0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node.attr('title').replace(/([^,:]+):([0-9]+)/g,function(m1,m2,m3){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jQuery('#title'+i).val(m2);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jQuery('#value'+i).val(m3);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 넓이와 높이<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jQuery('#chart_height').val(node.attr('height'));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jQuery('#chart_width').val(node.attr('width'));<br>&nbsp;&nbsp;&nbsp; }<br>});<br><br></p></div>
sol 2009.08.20 12:27:11
복원
<div class="eArea xe_content xe_dr_hx"><h3 id="h1250736862209">에디터에 추가하기 insertPChart() </h3></div><div class="eArea xe_content xe_dr_txt"><p>에디터 윈도우인 opener의 editorReplaceHTML를 이용하여 선택된 부분을 _createImg()로 만든 그래프로 치환합니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>// 에디터에 추가<br>function <span style="font-weight: bold;">insertPChart</span>() {<br>&nbsp;&nbsp;&nbsp; // 창을 띄운 윈도우가 없을 경우 종료<br>&nbsp;&nbsp;&nbsp; if(typeof(opener)=='undefined') return;<br></p><p>&nbsp;&nbsp;&nbsp; var str = _createImg(); <br><br>&nbsp;&nbsp;&nbsp; opener.editorFocus(opener.editorPrevSrl);<br>&nbsp;&nbsp;&nbsp; var iframe_obj = opener.editorGetIFrame(opener.editorPrevSrl)<br>&nbsp;&nbsp;&nbsp; opener.editorReplaceHTML(iframe_obj, str);<br>&nbsp;&nbsp;&nbsp; window.close();<br>}</p><p><br></p><p>// api를 이용하여 이미지 경로를 만들고 &lt;img /&gt; tag를 생성<br>function _createImg(){<br>&nbsp;&nbsp;&nbsp; // api 기본 url를 가져옴<br>&nbsp;&nbsp;&nbsp; var url = jQuery('#api_url').val();<br>&nbsp;&nbsp;&nbsp; var title=[],value=[],h,w,t=[],v=[],info='',src='';<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; h = jQuery('#chart_height'+
'+
').val();<br>&nbsp;&nbsp;&nbsp; w = jQuery('#chart_width').val();<br><br>&nbsp;&nbsp;&nbsp; jQuery('input[id^=title]').each(function(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; title.push(jQuery(this).val()); <br>&nbsp;&nbsp;&nbsp; }); <br>&nbsp;&nbsp;&nbsp; jQuery('input[id^=value]').each(function(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value.push(jQuery(this).val()); <br>&nbsp;&nbsp;&nbsp; }); <br><br>&nbsp;&nbsp;&nbsp; for(var i=0,c=title.length;i&lt;c;i++){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(title[i].length&gt;0 &amp;&amp; value[i].length&gt;0){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t.push(title[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v.push(value[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; info += title[i] + ':' +value[i] + ',';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br><br>&nbsp;&nbsp;&nbsp; // 넓이와 높이 각 항목의 타이틀 <br>&nbsp;&nbsp;&nbsp; src = url.setQuery('cht','p3').setQuery('chd','t:'+v.join(',')).setQuery('chs',w+'x'+h).setQuery('chl',t.join('|')).setQuery('dummy','.png');<br>&nbsp;&nbsp;&nbsp; return '&lt;img src="'+url+'" width="'+w+'" height="'+h+'" editor_component="pchart" alt="pie chart" title="'+info+'" /&gt;';<br>}<br><br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250736884090">그래프를 수정하기 </h3></div>
sol 2009.08.20 12:01:56