사용자 도구

사이트 도구


white:ibsheet_dynamic

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

다음 판
이전 판
white:ibsheet_dynamic [2018/10/10 08:00] – 만듦 taekguwhite:ibsheet_dynamic [2025/04/15 10:05] (현재) – 바깥 편집 127.0.0.1
줄 5: 줄 5:
 <code javascript> <code javascript>
 function f_init_answer(ans, data){ function f_init_answer(ans, data){
- if( ans == undefined ) + if( ans == undefined ) 
- ans = new Map(); + ans = new Map(); 
- if( ans.has(data.opq_qust_item_id) ){ + if( ans.has(data.opq_qust_item_id) ){ 
- } else { + } else { 
- data["myOrder"] = ans.size; + data["myOrder"] = ans.size; 
- ans.set( data.opq_qust_item_id, data ); + ans.set( data.opq_qust_item_id, data ); 
- }+
 +
 +function f_add_answer(ans, data){ 
 + if( ans == undefined ) 
 + alert("f_add_answer:error:ans가없습니다."); 
 + if( ans.has(data.opq_qust_item_id) ){ 
 + let obj = ans.get(data.opq_qust_item_id); 
 + if( data.opq_ansr_item_id > 0 ) { 
 + if( obj["col_" + data.opq_ansr_item_id] == undefined ) 
 + obj["col_" + data.opq_ansr_item_id] = 0; 
 + obj["col_" + data.opq_ansr_item_id] += Number(data.opq_cnt); 
 + } 
 + if( obj["qust_cnt"] == undefined ) 
 + obj["qust_cnt"] = 0; 
 + obj["qust_cnt"] += Number(data.qust_cnt); 
 + } else { 
 + // console.log("opq_qust_item_id가없습니다." + data.opq_qust_item_id); 
 + // 없으면 주관식인가? 
 +
 +
 +function myMakeSheet(){ 
 + let answerCol = new Map(); // 설문답변  
 + let mAnswer = new Map();  // 설문문항 
 +  
 +  
 + for(let i=0; i < bindingObject["ME_OPQ0009_03"].length; i++){ 
 + let data = bindingObject["ME_OPQ0009_03"][i]; 
 + answerCol.set(data.opq_ansr_item_id, data); 
 + f_init_answer(mAnswer, data); // 설문문항준비 
 + }; 
 + var tmpHeaderRow1 = '번호|상태|삭제|문항|응답자'; 
 + /** BodyRow 기본 컬럼 **/ 
 + var bodyRow = [{Type:"Seq", Width:40, SaveName:"_seq", Align:"Right"}, 
 +                {Type:"Status", Width:60, SaveName:"sStatus", Align:"Center", Hidden:true}, 
 +                {Type:"DelCheck", Width:40, SaveName:"sDelete", Align:"Center", Hidden:true}, 
 +                {Type:"Text",SaveName:"qust_type_nm", Width:300, Align:"Left"}, 
 +                {Type:"Text",SaveName:"qust_cnt", Width:100, Align:"Center", Hidden:true} 
 +   ]; 
 + //for (const [key, value] of answerCol.entries()) { // IE에서 작동안함 
 + answerCol.forEach(function(value){ 
 +   tmpHeaderRow1 += "|" + value.ansr_item_nm; 
 +   bodyRow.push({Type:"Text",SaveName:"col_" + value.opq_ansr_item_id, Width:100, Align:"Center"}); 
 +
 +  
 + //var sheet = mySheet3; // 이렇게하면 안됨... 이유는 모름. 
 + var headers = [{ Text:tmpHeaderRow1, Align:"center"}]; 
 + var info = { Sort:0,ColMove:0,ColResize:1,HeaderCheck:0 }; 
 +  
 + mySheet3.Reset(); 
 + mySheet3.SetConfig({SearchMode:1,Page:100,FrozenCol:4,MergeSheet:msHeaderOnly}); 
 + mySheet3.InitHeaders( headers, info ); 
 + mySheet3.InitColumns( bodyRow ); 
 + 
 + //console.log(bodyRow); 
 +  
 + // 답변결과를 넣어주자. 
 + bindingObject['ME_OPQ0009_05'].forEach(function(data){ 
 + f_add_answer(mAnswer, data); 
 + }); 
 + //console.log(mAnswer); 
 +  
 + var myData = []; 
 + // myData준비하자 
 + //for (const [key, value] of mAnswer.entries()) {  // IE에서 작동안함 
 + mAnswer.forEach(function(value){ 
 + myData[value.myOrder] = value; 
 +
 + // myData준비완료 
 + //console.log(myData); 
 +  
 + $('div[dataProvider="ME_OPQ0009_05"]').triggerHandler("bindData", [ myData ]); 
 +
 +</code> 
 +===== 동적트리 ===== 
 +<code html> 
 + <script type="text/javascript"> 
 + $( document ).ready( function(){ 
 + }); 
 + function mySheet1_OnSmartResize(Width, Height) { 
 +     //변경된 정보에 따라 컬럼들의 너비를 재조정한다. 
 +     mySheet1.FitColWidth();
  }  }
- function f_add_answer(ans, data){ + 
- if( ans =undefined ) + //동적 LIST 생성 , list <- IBSheet ID 
- alert("f_add_answer:error:ans가없습니다.")+ var lastCol; 
- ifans.has(data.opq_qust_item_id) ){ + var orgTreeCols; 
- let obj = ans.get(data.opq_qust_item_id); + function listReset(){ 
- ifdata.opq_ansr_item_id > 0 ) { + var requestObject { 
- ifobj["col_" + data.opq_ansr_item_id] == undefined + "HEADER" : headerObject, 
- obj["col_+ data.opq_ansr_item_id] = 0; + "BODY" 
- obj["col_+ data.opq_ansr_item_id] += Number(data.opq_cnt);+ "ME_PEB0202_01" : [ { 
 + "company_cd" : "${sessionScope.session_company_cd}"
 + "locale_cd" : "${sessionScope.session_locale_cd}", 
 + "type_nm" : '인건비' 
 + } ] 
 +
 + }; 
 + 
 + execute"getPayItem", "PEB0202_00_H01", requestObject, functionactionType, obj ) { 
 + var data = obj[ "ME_PEB0202_02" ]; 
 + var cnt data.length; 
 + 
 + var colInfo = []; 
 + var headerInfo = ""; 
 + var headerInfo2 = ""; 
 + 
 + lastCol = (lastCol == undefined) ? mySheet1.LastCol(: lastCol
 + for(var j = 0; j <= lastCol; j++){ 
 + headerInfo += mySheet1.GetCellText(0,j) + "|"
 + headerInfo2 += mySheet1.GetCellText(0,j) + "|"; 
 +  
 + colInfo[j] = { Type: mySheet1.GetCellProperty(0, j, "Type"), 
 + Width: mySheet1.GetCellProperty(0, j, "Width"),  
 + SaveName: mySheet1.GetCellProperty(0, j, "SaveName"),  
 + Align: mySheet1.GetCellProperty(0, j, "Align"),  
 + Edit: mySheet1.GetCellProperty(0, j, "Edit"), 
 + Hidden: mySheet1.GetCellProperty(0, j, "Hidden")
 + MultiLineText:0, 
 + Wrap:0, 
 + TreeCol: mySheet1.GetCellProperty(0, j, "TreeCol"), 
 + KeyField:0, 
 + ColMerge:
 + };
  }  }
- if( obj["qust_cnt"] == undefined ) 
- obj["qust_cnt"] = 0; 
- obj["qust_cnt"] += Number(data.qust_cnt); 
- } else { 
- // console.log("opq_qust_item_id가없습니다." + data.opq_qust_item_id); 
- // 없으면 주관식인가? 
- } 
- } 
- function myMakeSheet(){ 
- let answerCol = new Map(); // 설문답변  
- let mAnswer = new Map();  // 설문문항 
-  
-  
- for(let i=0; i < bindingObject["ME_OPQ0009_03"].length; i++){ 
- let data = bindingObject["ME_OPQ0009_03"][i]; 
- answerCol.set(data.opq_ansr_item_id, data); 
- f_init_answer(mAnswer, data); // 설문문항준비 
- }; 
- var tmpHeaderRow1 = '번호|상태|삭제|문항|응답자'; 
- /** BodyRow 기본 컬럼 **/ 
- var bodyRow = [{Type:"Seq", Width:40, SaveName:"_seq", Align:"Right"}, 
-                {Type:"Status", Width:60, SaveName:"sStatus", Align:"Center", Hidden:true}, 
-                {Type:"DelCheck", Width:40, SaveName:"sDelete", Align:"Center", Hidden:true}, 
-                {Type:"Text",SaveName:"qust_type_nm", Width:300, Align:"Left"}, 
-                {Type:"Text",SaveName:"qust_cnt", Width:100, Align:"Center", Hidden:true} 
-   ]; 
- for (const [key, value] of answerCol.entries()) { 
-   tmpHeaderRow1 += "|" + value.ansr_item_nm; 
-   bodyRow.push({Type:"Text",SaveName:"col_" + value.opq_ansr_item_id, Width:100, Align:"Center"}); 
- } 
-  
- //var sheet = mySheet3; // 이렇게하면 안됨... 이유는 모름. 
- var headers = [{ Text:tmpHeaderRow1, Align:"center"}]; 
- var info = { Sort:0,ColMove:0,ColResize:1,HeaderCheck:0 }; 
-  
- mySheet3.Reset(); 
- mySheet3.SetConfig({SearchMode:1,Page:100,FrozenCol:4,MergeSheet:msHeaderOnly}); 
- mySheet3.InitHeaders( headers, info ); 
- mySheet3.InitColumns( bodyRow ); 
  
- //console.log(bodyRow); + var dynamicColInfo = []; 
-  + orgTreeCols = []; 
- // 답변결과를 넣어주자. + for(var i = 0 ; i < cnt; i++){ 
- bindingObject['ME_OPQ0009_05'].forEach(function(data){ + orgTreeCols.push(data[i]['cd']); 
- f_add_answer(mAnswer, data)+ headerInfo += data[i]['cd_nm'+ "|"
- }); + headerInfo2 += data[i]['print_nm'] + "|"; 
- //console.log(mAnswer); + dynamicColInfo[i] = {Type:"Int",Width:70SaveName:data[i]['cd'] , Align:"right", Edit:0,MultiLineText:0, Wrap:0,Format:"Integer", TreeCol:0,KeyField:0,ColMerge:1,Hidden:0,InsertEdit:0,UpdateEdit:0}
-  + } 
- var myData = []; + 
- // myData준비하자 + headerInfo = headerInfo.substring(0,headerInfo.length-1); 
- for (const [keyvalue] of mAnswer.entries()) { + headerInfo2 = headerInfo2.substring(0,headerInfo2.length-1); 
- myData[value.myOrder= value+ 
- + var headers = [{ Text: headerInfo, Align:"center"
- // myData준비완료 +   ,{ Text: headerInfo2, Align:"center"
- //console.log(myData); +   ]; 
-  + var info = { Sort:0,ColMove:1,ColResize:1,HeaderCheck:0 }; 
- $('div[dataProvider="ME_OPQ0009_05"]').triggerHandler("bindData", [ myData ]);+ var cols = "["; 
 + cols += JSON.stringifycolInfo ).replace("[""").replace("]", "")
 + if(dynamicColInfo.length > 0){ 
 + cols += ", " + JSON.stringify( dynamicColInfo ).replace("[", "").replace("]", "")
 +
 + cols += "]";  
 +  
 + //alert(JSON.stringify(cols)); 
 + cols = JSON.parse( cols ); //STRING을 JSON으로 변환한다 
 +  
 + mySheet1.Reset(); 
 + // 2018.08.24 (LMY) 테마 적용 
 + var theme = "${sessionScope.session_theme}".replace('ui-', ''); 
 +  
 + if( theme !null || theme != '' || theme != undefined ) 
 + mySheet1.SetTheme(theme, theme); 
 + else  
 + mySheet1.SetTheme('base', 'base'); 
 +  
 + mySheet1.SetConfig({SearchMode:2,Page:30,FrozenCol:6,MergeSheet:msHeaderOnly}); 
 + mySheet1.InitHeaders( headers, info ); 
 + mySheet1.InitColumns( cols ); 
 + mySheet1.SetDataRowHeight(35); 
 + //mySheet1.SetSumValue(4, "합계")
 + 
 + var colslength = dynamicColInfo.length +lastCol; 
 + var scols = lastCol + 1; 
 +  
 + mySheet1.SetEditable(0); 
 +  
 + //doAction('retrieve'); 
 + }, function(actionType, obj) { 
 + alert("ERROR getPayItem"); 
 + }false);
  }  }
 + </script>
 </code> </code>
white/ibsheet_dynamic.1539158426.txt.gz · 마지막으로 수정됨: 2025/04/15 10:05 (바깥 편집)