SPCIT00400_만족도설문지미리보기.xfdl 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <FDL version="1.5">
  3. <TypeDefinition url="..\..\..\default_typedef.xml"/>
  4. <Form id="SPCIT00400" position="absolute 0 0 870 900" titletext="만족도 설문지 미리보기" oninit="SPCIT00400_oninit" onload="SPCIT00400_onload">
  5. <Layouts>
  6. <Layout/>
  7. </Layouts>
  8. <Objects>
  9. <Dataset id="ds_send" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  10. <ColumnInfo>
  11. <Column id="qpaprseqno" type="STRING" size="256" sumtext="설문지일련번호"/>
  12. <Column id="stinseqno" type="STRING" size="256" sumtext="설문지일련번호"/>
  13. <Column id="qestitemgrupseqno" type="STRING" size="256" sumtext="설문지그룹일련번호"/>
  14. </ColumnInfo>
  15. <Rows>
  16. <Row/>
  17. </Rows>
  18. </Dataset>
  19. <Dataset id="ds_qestlistGrp" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  20. <ColumnInfo>
  21. <Column id="qestitemgrupseqno" type="STRING" size="256" sumtext="설문문항그룹일련번호"/>
  22. <Column id="qestitemgrupnm" type="STRING" size="256" sumtext="설문문항그룹이름"/>
  23. <Column id="qestitemgrupdesc" type="STRING" size="256" sumtext="설문문항그룹설명"/>
  24. <Column id="qestuseyn" type="STRING" size="256" sumtext="설문사용여부"/>
  25. <Column id="colgstinqestyn" type="STRING" size="256" sumtext="종합만족도설문여부"/>
  26. <Column id="colgstinqestseqno" type="STRING" size="256" sumtext="종합만족도설문일련번호"/>
  27. </ColumnInfo>
  28. </Dataset>
  29. <Dataset id="ds_qestlist" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  30. <ColumnInfo>
  31. <Column id="qestitemgrupseqno" type="STRING" size="256" sumtext="설문문항그룹일련번호"/>
  32. <Column id="qestitemgrupnm" type="STRING" size="256" sumtext="설문문항그룹이름"/>
  33. <Column id="qestitemgrupdesc" type="STRING" size="256" sumtext="설문문항그룹설명"/>
  34. <Column id="qestuseyn" type="STRING" size="256" sumtext="설문사용여부"/>
  35. <Column id="colgstinqestyn" type="STRING" size="256" sumtext="종합만족도설문여부"/>
  36. <Column id="colgstinqestseqno" type="STRING" size="256" sumtext="종합만족도설문일련번호"/>
  37. <Column id="qestseqno" type="STRING" size="256" sumtext="설문일련번호"/>
  38. <Column id="qpaprsortseq" type="STRING" size="256" sumtext="설문지정렬순서"/>
  39. <Column id="itemkindcd" type="STRING" size="256" sumtext="문항종류코드"/>
  40. <Column id="qestitemanswcnt" type="STRING" size="256" sumtext="설문문항답변보기개수"/>
  41. <Column id="qestitemanswchoicolcnt" type="STRING" size="256" sumtext="설문문항답변보기열개수"/>
  42. <Column id="qestcnts" type="STRING" size="256" sumtext="설문내용"/>
  43. <Column id="essnanswcnt" type="STRING" size="256" sumtext="필수답변개수"/>
  44. <Column id="answseqno" type="STRING" size="256" sumtext="답변보기일련번호"/>
  45. <Column id="qestitemanswcnts" type="STRING" size="256" sumtext="설문문항답변보기내용"/>
  46. <Column id="divpnt" type="STRING" size="256" sumtext="배분점수"/>
  47. <Column id="answaddcnts" type="STRING" size="256" sumtext="답변보기추가내용"/>
  48. <Column id="figrinptyn" type="STRING" size="256" sumtext="숫자입력여부"/>
  49. <Column id="addinptyn" type="STRING" size="256" sumtext="추가입력여부"/>
  50. <Column id="addflgrinptyn" type="STRING" size="256" sumtext="추가숫자입력여부"/>
  51. <Column id="essninptyn" type="STRING" size="256" sumtext="필수입력여부"/>
  52. <Column id="norpaddyn" type="STRING" size="256" sumtext="무응답추가여부"/>
  53. <Column id="nextqestseqno" type="STRING" size="256" sumtext="다음설문일련번호"/>
  54. <Column id="descinptyn" type="STRING" size="256" sumtext="서술입력여부"/>
  55. <Column id="qestanswno" type="STRING" size="256" sumtext="정답"/>
  56. <Column id="descinptaddcnts" type="STRING" size="256" sumtext="서술입력추가내용"/>
  57. <Column id="descinptcnts" type="STRING" size="256" sumtext="서술입력내용"/>
  58. <Column id="qestmltlanswno" type="STRING" size="256" sumtext="설문 멀티라인 답변번호( ,구분자)"/>
  59. </ColumnInfo>
  60. </Dataset>
  61. </Objects>
  62. <Bind/>
  63. <Script type="xscript4.0"><![CDATA[/***************************************************************************************
  64. * System Name :
  65. * Job Name :
  66. * Creator :
  67. * Make Date : 2016-05-24
  68. * Description :
  69. *---------------------------------------------------------------------------------------
  70. * Modify Date Modifier Modify Description
  71. *---------------------------------------------------------------------------------------
  72. * 2016-05-24 Live Converter TF->XP
  73. *
  74. *---------------------------------------------------------------------------------------
  75. ****************************************************************************************/
  76. include "com_commonxp::comm_main.xjs"
  77. include "crm_cssaxp::CSZ001.xjs"
  78. var arGroupTop = new Array();
  79. var arIsGroupClick = new Array(); // 0: 이면 NonCheck 1이면 Check 해당 그룹을 클릭해서 불러왔는가는 체크
  80. var columns = new Array("qestitemgrupseqno", "qestitemgrupnm", "qestitemgrupdesc", "qestuseyn", "colgstinqestyn", "colgstinqestseqno"
  81. , "qestseqno" , "qpaprsortseq", "itemkindcd", "qestitemanswcnt" ,"qestitemanswchoicolcnt" , "qestcnts"
  82. , "essnanswcnt", "answseqno", "qestitemanswcnts", "divpnt", "answaddcnts", "figrinptyn", "addinptyn"
  83. , "addflgrinptyn", "essninptyn", "norpaddyn", "nextqestseqno", "descinptyn");
  84. function SPCIT00400_oninit(obj:Form, e:InitEventInfo)
  85. {
  86. frmf_initForm(obj);
  87. }
  88. function SPCIT00400_onload(obj:Form, e:LoadEventInfo)
  89. {
  90. // 부모창의 설문지 일련번호를 가져온다.
  91. var qpaprseqno = opener.frmf_getParameter("qpaprseqno");
  92. ds_send.setColumn(0, "qpaprseqno", qpaprseqno);
  93. var tempqestitemgrupseqno = "";
  94. // 설문지 미리보기(먼저 그룹을 조회함)을 조회 한다.
  95. var oParam = {};
  96. oParam.id = "TRCIT00402";
  97. oParam.service = "cssamngtapp.CssaMngt";
  98. oParam.method = "reqGetCsiQstrAllData2";
  99. oParam.inds = "req=ds_send";
  100. oParam.outds = "ds_qestlistGrp=qestlistGrp";
  101. oParam.async = true;
  102. oParam.callback = "cf_TRCIT00402";
  103. tranf_submit(oParam);
  104. }
  105. function cf_TRCIT00402(sSvcId, nErrorCode, sErrorMsg) {
  106. if(nErrorCode < 0) return;
  107. setTab();
  108. }
  109. function setTab() {
  110. var objTab = new Tab("tab_main", 0, 0, 870, 890);
  111. this.addChild("tab_main", objTab);
  112. objTab.style.border = "0 none #808080ff,1 solid #808080ff,1 solid #808080ff,1 solid #808080ff";
  113. objTab.multiline = true;
  114. objTab.onchanged.addHandler(tab_mainIndexChangeEventInfo);
  115. objTab.show();
  116. for (var i = ds_qestlistGrp.rowcount - 1; i >= 0; i--) {
  117. var tabBtnText = ds_qestlistGrp.getColumn(i, "qestitemgrupnm");
  118. groupContainer = makeCase(objTab, "tabpage" + i, tabBtnText);
  119. var explOutput = makeOutput(groupContainer, ds_qestlistGrp.getColumn(i, "qestitemgrupdesc"), "stt_title", 10, 20, 800, 20);
  120. arGroupTop[i] = 10 + explOutput.position.bottom;
  121. }
  122. fnQestItemPrint(objTab.tabindex, ds_qestlistGrp.getColumn(objTab.tabindex, "qestitemgrupseqno"));
  123. }
  124. function tab_mainIndexChangeEventInfo(obj:Tab, e:TabIndexChangeEventInfo) {
  125. fnQestItemPrint(e.postindex, ds_qestlistGrp.getColumn(e.postindex, "qestitemgrupseqno"));
  126. }
  127. function fnQestItemPrint(pGroupIndex, pQestitemgrupseqno) {
  128. if (arIsGroupClick[pGroupIndex] == 1) return;
  129. ds_send.setColumn(0, "qestitemgrupseqno", pQestitemgrupseqno);
  130. var oParam = {};
  131. oParam.id = "TRCIT00401";
  132. oParam.service = "cssamngtapp.CssaMngt";
  133. oParam.method = "reqGetCsiQstrAllData";
  134. oParam.inds = "req=ds_send";
  135. oParam.outds = "ds_qestlist=qestlist";
  136. oParam.async = true;
  137. oParam.callback = "cf_TRCIT00401";
  138. tranf_submit(oParam);
  139. }
  140. function cf_TRCIT00401(sSvcId, nErrorCode, sErrorMsg) {
  141. if(nErrorCode < 0) return;
  142. var poll;
  143. var pre_qestseqno = -1;
  144. var arPreDatas = null;
  145. var arDatas = new Array();
  146. var rowIndex = 0;
  147. var left = 10;
  148. var top = arGroupTop[0];
  149. var isContinuous = false; // 이전 척도연속 여부
  150. var pollHeight; //맨마지막 Row를 찍을때 시작위치
  151. var grupHeight = tab_main.position.height; //그룹의 크기를 정한다.
  152. var totDataCnt = 0; // DB에 qpaprsortseq 값이 저장되어 있는 않은 경우 예외처리를 위한 변수의 용도로도 쓰임
  153. var rowcount = ds_qestlist.rowcount;
  154. var tabPage = tab_main.components[tab_main.tabindex];
  155. for(var i = 0; i < rowcount; i++) {
  156. var qestseqno= ds_qestlist.getColumn(i, "qestseqno");
  157. // 설문 문항 출력
  158. if (qestseqno != pre_qestseqno) {
  159. if(i > 0) {
  160. isContinuous = isIdentical(arPreDatas, arDatas);
  161. if(!utlf_isNull(poll)) {
  162. top += poll.position.height;
  163. if (!isContinuous) {
  164. top += 10;
  165. } // end if
  166. } // end if
  167. poll = createPoll(tabPage, arDatas, "ds_value", left, top, !isContinuous);
  168. // Container 크기를 자동으로 늘리기
  169. if (top > grupHeight) {
  170. grupHeight = top;
  171. }
  172. }
  173. arPreDatas = arDatas;
  174. pre_qestseqno = qestseqno;
  175. arDatas = new Array();
  176. rowIndex = 0;
  177. isContinuous = false;
  178. totDataCnt++;
  179. }
  180. if(!utlf_isNull(poll)) {
  181. pollHeight = poll.position.height;
  182. }
  183. var obj = new Array();
  184. for(var j = 0; j < columns.length; j++) {
  185. obj[columns[j]] = ds_qestlist.getColumn(i, columns[j]);
  186. if(columns[j] == "qpaprsortseq" && obj[columns[j]] == "") obj[columns[j]] = totDataCnt;
  187. }
  188. arDatas[rowIndex] = obj;
  189. rowIndex++;
  190. }
  191. // 맨 마지막 설문문항 찍기
  192. if (totDataCnt == 1 && arDatas.length > 0 ) {
  193. top += qeustGap;
  194. poll = createPoll(tabPage, arDatas, "ds_value", left, top, true);
  195. } else if (totDataCnt > 1 && arDatas.length > 0 ) {
  196. top = top + pollHeight;
  197. poll = createPoll(tabPage, arDatas, "ds_value", left, top, false);
  198. if (top > grupHeight) {
  199. grupHeight = top;
  200. }
  201. }
  202. tabPage.resetScroll();
  203. arDatas = null;
  204. arPreDatas = null;
  205. arIsGroupClick[tab_main.tabindex] = 1;
  206. }]]></Script>
  207. </Form>
  208. </FDL>