사용자 도구

사이트 도구


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()) {
					  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()) {
					myData[value.myOrder] = value;
				}
				// myData준비완료
				//console.log(myData);
 
				$('div[dataProvider="ME_OPQ0009_05"]').triggerHandler("bindData", [ myData ]);
			}
white/ibsheet_dynamic.1539158426.txt.gz · 마지막으로 수정됨: 2025/04/15 10:05 (바깥 편집)