사용자 도구

사이트 도구


white:ibsheet_dynamic

IBSheet Dynamic

Sheet을 javascript로 생성하자

function f_init_answer(ans, data){
	if( ans == undefined )
		ans = new Map();
	if( ans.has(data.opq_qust_item_id) ){
	} else {
		data["myOrder"] = ans.size;
		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 ]);
}

동적트리

		<script type="text/javascript">
			$( document ).ready( function(){
			});
			function mySheet1_OnSmartResize(Width, Height) {
			    //변경된 정보에 따라 컬럼들의 너비를 재조정한다.
			    mySheet1.FitColWidth();
			}
 
			//동적 LIST 생성 , list <- IBSheet ID
			var lastCol;
			var orgTreeCols;
			function listReset(){
				var requestObject = {
						"HEADER" : headerObject,
						"BODY" : {
							"ME_PEB0202_01" : [ {
								"company_cd" : "${sessionScope.session_company_cd}",
								"locale_cd" : "${sessionScope.session_locale_cd}",
								"type_nm" : '인건비'
							} ]
						}
					};
 
				execute( "getPayItem", "PEB0202_00_H01", requestObject, function( actionType, 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:0
									};
					}
 
					var dynamicColInfo = [];
					orgTreeCols = [];
					for(var i = 0 ; i < cnt; i++){
						orgTreeCols.push(data[i]['cd']);
						headerInfo += data[i]['cd_nm'] + "|" ;
						headerInfo2 += data[i]['print_nm'] + "|";
						dynamicColInfo[i] = {Type:"Int",Width:70, SaveName: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};
					}
 
					headerInfo = headerInfo.substring(0,headerInfo.length-1);
					headerInfo2 = headerInfo2.substring(0,headerInfo2.length-1);
 
					var headers = [{ Text: headerInfo, Align:"center"}
		 						  ,{ Text: headerInfo2, Align:"center"}
		 						  ];
					var info = { Sort:0,ColMove:1,ColResize:1,HeaderCheck:0 };
					var cols = "[";
					cols += JSON.stringify( colInfo ).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>
white/ibsheet_dynamic.txt · 마지막으로 수정됨: 2025/04/15 10:05 저자 127.0.0.1