001002003004005006007008009010011012013014015016017018019020021022023024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066067068069070071072
// (2021.1.12, 차재복, Cha Jae Bok, http://www.ktword.co.kr) // more 요소, div 생성, 상세 (code:1,manual:2,run:3,comp:4) 보여주기 // more 상세 보여주기 (이벤트처리기) function moreShow (e) { // <- ex_run/navi_testing.js, reform/reform_editor.js // liLineSpan let liLineSpan = this; // data 추출 및 JSON parse 후 object화 let data = JSON.parse(liLineSpan.dataset.dataObject); // data : reform 및 reform_more 테이블 내 해당 레코드 (parent,id,sub_seq,title,yoyak,path2node,more_ptr,...) // 상세 출력용 display Box let detailBox; detailBox = document.getElementById('detail_'+data.id); // 기존에 요소 펼쳐 있으면 숨김 if (detailBox) { itemShowHide(detailBox, liLineSpan); // base_utils/common_utils.js // 기존에 요소 없으면 새로 생성 후 출력 } else { if(data.more_type=='1' || data.more_type=='2') { // 1: code, 2 : manual // liLineSpan 직후에 table 생성 detailBox = document.createElement('table'); detailBox.id = 'detail_'+data.id; embed_display(data, liLineSpan, detailBox); // ex_run/embed_display.js insertAfter(liLineSpan, detailBox); } else if(data.more_type=='3') { // 3 : run (구현보기) // liLineSpan 직후에 div 생성 detailBox = run_div_create(data, liLineSpan); // ex_run/navi_more.js detailBox.id = 'detail_'+data.id; // 정해진 함수 실행 window[data.func](detailBox); // reform_more.func 값 => language/language_testing/keyword() => language/language.php } else if(data.more_type=='4') { // 4 : comp // liLineSpan 직후에 div 생성 detailBox = run_div_create(data, liLineSpan); // ex_run/navi_more.js detailBox.id = 'detail_'+data.id; embed_display(data, liLineSpan, detailBox); // ex_run/embed_display.js insertAfter(liLineSpan, detailBox); } } } // 실행 결과 보여주기 위한, div 요소 생성 function run_div_create(data, afterIt) { // div 요소 생성 let div = document.createElement("div"); div.id = 'div_'+data.id; // div style div.style.border = '1px gray dotted'; div.style.margin = '5px'; div.style.padding = '10px'; // div 요소를 실제 DOM 트리에 적용 (화면에 실제 보임) return insertAfter(afterIt, div); }