SPAER13000.xjs 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/***************************************************************************************
  3. * System Name : KNUH2.0
  4. * Job Name : AST
  5. * Creator :
  6. * Make Date : 2016-04-28
  7. * Description :
  8. *---------------------------------------------------------------------------------------
  9. * Modify Date Modifier Modify Description
  10. *---------------------------------------------------------------------------------------
  11. * 2015-05-18 Live Converter TF->XP
  12. *
  13. *---------------------------------------------------------------------------------------
  14. ****************************************************************************************/
  15. var gridProperty = ["displaytype", "edittype", "tooltiptext", "tooltiptype", "mask", "suppress", "wordwrap", "expr", "text", "combocodecol", "combodatacol", "combodataset",
  16. "combodisplay", "calendardisplay", "calendardisplaynulltype", "editdisplay", "expandshow", "class", "align", "background", "background2", "backgroundimage",
  17. "color", "color2", "cursor", "font", "line", "padding", "selectbackground", "selectcolor", "selectfont"];
  18. //=======================================================================================
  19. // Function
  20. //---------------------------------------------------------------------------------------
  21. /** 미전환
  22. * @desc : ?????????? ???? ??????
  23. * @
  24. * @param :
  25. * @return :
  26. * @author : ??????
  27. * @---------------------------------------------------
  28. */
  29. function fInitOrderOfCol(){
  30. var grdid = model.getValue("/root/main/cond/grdid");
  31. fGetOrderInfoOfCol(grdid); //???? default?? ?????? grid?? column?? size?? ??????.
  32. var refdata = model.getValue("/root/listval/refdata");
  33. var sizedata = model.getValue("/root/listval/sizedata");
  34. fSetOrderInfoOfCol(grdid +"_resize", refdata, sizedata); //default?? ?????? grid?? column?? size?? ???? ????????.
  35. }
  36. /****************************************************************************************
  37. * Argument : N/A
  38. * Description : 화면초기화
  39. ****************************************************************************************/
  40. function fInitialize_SPAER13000(){
  41. ///////////// 2. SPAER13000 화면 오픈 후 실행 /////////////
  42. // fClkBtnSetCol 함수에서 SMAER13000 에 밖아둔것들 사용 지금 SPAER13000 에서 실행중인거임
  43. var opn_scrnid = opener.frmf_getScreenID(); // SMAER13000
  44. var scrnid = frmf_getScreenID(); // SPAER13000
  45. var grdid = opener.frmf_getParameter(opn_scrnid+"_param_grdid"); // switch1.case1.grd_mainordlist5
  46. // var caseid = opener.frmf_getParameter(opn_scrnid+"_param_caseid"); // case1 이걸 또 사용하지 않음?
  47. var compscd = opener.frmf_getParameter(opn_scrnid+"_param_compscd"); // 01
  48. // var btnid = "btn_case1";
  49. // var grdObj = this.components[btnid]; // 사용을 안하네?
  50. // SPAER13000 의 ds_main_cond
  51. ds_main_cond.setColumn(0,"scrnid" , scrnid); // SPAER13000
  52. ds_main_cond.setColumn(0,"grdid" , grdid); // switch1.case1.grd_mainordlist5
  53. ds_main_cond.setColumn(0,"compscd" , compscd); // 01
  54. switch1.tabindex = 0; // 탭선택 이벤트 실행 fClkBtnOfTopTab 함수 실행
  55. frmf_inputEnterKey("switch1", "onchanged", new TabIndexChangeEventInfo);
  56. }
  57. /****************************************************************************************
  58. * Argument : grdid - 호출화면 대상 그리드 ID
  59. * : caseid - 호출화면 대상 Tab ID
  60. * : compscd - 1 : 검사현황 / 2 : 타검사현황
  61. * Description : 그리드 사용자화면설정 호출
  62. ****************************************************************************************/
  63. function fClkBtnSetCol(grdid, caseid, compscd){
  64. ///////////// 1. SMAER13000 화면에서 호출 /////////////
  65. var scrnID = "SPAER13000"; // 사용자설정화면
  66. var p_scrnid = frmf_getScreenID(); // 함수 호출한 화면 SMAER13000 에서 계속 실행중
  67. var grdID = grdid; // 그리드 아이디 인데 위 두화면 일단 같음.
  68. // var caseID = caseid; // 쓸모없음
  69. var compsCD = compscd;
  70. frmf_setParameter(p_scrnid+"_param_scrnid" , scrnID); //
  71. frmf_setParameter(p_scrnid+"_param_grdid" , grdID); // switch1.case1.grd_mainordlist5
  72. // frmf_setParameter(p_scrnid+"_param_caseid" , caseID); // case1 쓸모없음
  73. frmf_setParameter(p_scrnid+"_param_compscd", compscd); // SMAER13000 에 밖아둔것들
  74. frmf_modal("SPAER13000", "SPAER13000", null, null, null, null, null, null, null, null, null, null, "M"); // 오픈하면서 fInitialize_SPAER13000 실행
  75. ///////////////// 사용자 설정 팝업화면에서 설정하는 동안 일단 멈춤
  76. ///////////// 7 번 까지 돌고 팝업 닫고 돌아옴 /////////////
  77. // 여기는 다시 SMAER13000 화면
  78. var useyn = frmf_getParameter("SPAER13000_rtn_useyn");
  79. if(useyn == "Y"){
  80. ds_chngcol.setColumn(0,"chngcolflag", "Y");
  81. var grdID = frmf_getParameter(p_scrnid+"_param_grdid");
  82. var scrnID = frmf_getParameter(p_scrnid+"_param_scrnid" );
  83. var compsCD = frmf_getParameter(p_scrnid+"_param_compscd");
  84. fOrderInfoOfCol(grdID, scrnID, compsCD);
  85. }
  86. }
  87. /****************************************************************************************
  88. * Argument : grdid - 호출화면 대상 그리드 ID
  89. * : caseid - 호출화면 대상 Tab ID
  90. * : compscd - 1 : 검사현황 / 2 : 타검사현황
  91. * Description : 탭버튼 선택 이벤트
  92. ****************************************************************************************/
  93. function fClkBtnOfTopTab(caseid, grdid, compscd){
  94. ///////////// 3. 탭이벤트에서 실행 /////////////
  95. // 지금 SPAER13000 에서 실행중인거임
  96. // fClkBtnOfTopTab("case1", "grd_mainordlist5", "01");
  97. var opn_scrnid = opener.frmf_getScreenID(); // SMAER13000
  98. var scrnid = frmf_getScreenID(); // SPAER13000
  99. // SPAER13000 에 ds_main_cond 아까 넣었었는데 쓰지도 않고 새로 넣는다??
  100. ds_main_cond.setColumn(0,"grdid" , grdid); // switch1.case1.grd_mainordlist5
  101. ds_main_cond.setColumn(0,"scrnid" , scrnid); // SPAER13000
  102. ds_main_cond.setColumn(0,"caseid" , "case"+caseid); // casecase1 ????
  103. ds_main_cond.setColumn(0,"compscd", compscd); // 01
  104. fOrderInfoOfCol(grdid,opn_scrnid,compscd);
  105. fOrderInfoOfCol(grdid+"_resize",opn_scrnid,compscd);
  106. }
  107. /****************************************************************************************
  108. * Argument : N/A
  109. * Description : 그리드 설정저장
  110. ****************************************************************************************/
  111. function fSaveOrderInfoCol(){
  112. ///////////// 6. 그리드 설정 후 저장 버튼에서 실행 /////////////
  113. // 아직 SPAER13000 에서 실행중인거임
  114. var grdid = ds_main_cond.getColumn(0,"grdid"); // switch1.case1.grd_mainordlist5
  115. var scrnid = ds_main_cond.getColumn(0,"scrnid"); // SPAER13000
  116. var compscd = ds_main_cond.getColumn(0,"compscd"); // 01
  117. var opn_scrnid = opener.frmf_getScreenID(); // SMAER13000
  118. var opn_compscd = opener.frmf_getParameter(opn_scrnid+"_param_compscd"); // 01
  119. fGetOrderInfoOfCol(grdid);
  120. var refdata = ds_listval.getColumn(0,"refdata");
  121. var sizedata = ds_listval.getColumn(0,"sizedata");
  122. dsf_createDsRow("ds_send_savedata", [
  123. {col:"compscnts", type:"STRING", size:256, val:""}
  124. , {col:"compsrefcnts", type:"STRING", size:256, val:refdata}
  125. , {col:"compssizecnts", type:"STRING", size:256, val:sizedata}
  126. , {col:"scrnid", type:"STRING", size:256, val:opn_scrnid}
  127. , {col:"compscd", type:"STRING", size:256, val:compscd}
  128. ]);
  129. var oParam = {};
  130. oParam.id = "TXAER01101";
  131. oParam.service = "astcommonapp.SetUserScrnCol";
  132. oParam.method = "reqInsUserScrnEnvEstb";
  133. oParam.inds = "req=ds_send_savedata";
  134. oParam.outds = "";
  135. oParam.async = false;
  136. //oParam.callback = "cf_TXAER01101";
  137. tranf_submit(oParam);
  138. // SMAER13000에 전달
  139. opener.frmf_setParameter(opn_scrnid+"_param_scrnid" , opn_scrnid);
  140. opener.frmf_setParameter(opn_scrnid+"_param_grdid" , grdid);
  141. opener.frmf_setParameter(opn_scrnid+"_param_compscd", compscd);
  142. }
  143. /****************************************************************************************
  144. * Argument : grdID - 호출화면 대상 그리드 ID
  145. * : scrnID - 환경설정화면 ID
  146. * : compsCD - 1 : 검사현황 / 2 : 타검사현황
  147. * Description : 그리드 사용자화면설정 호출
  148. ****************************************************************************************/
  149. function fOrderInfoOfCol(grdID,scrnID,compsCD){
  150. ///////////// 4. 탭이벤트함수에서 호출 /////////////
  151. // 지금 SPAER13000 에서 실행중인거임
  152. ///////////// 8. 컬럼변경 버튼에서 팝업화면 닫고 호출 /////////////
  153. // 한바꾸 돌고 이제는 SMAER13000 에서 실행중인거임
  154. var grdid = grdID; // switch1.case1.grd_mainordlist5
  155. var scrnid = scrnID; // 4. SMAER13000 / 8. SMAER13000
  156. var compscd = compsCD; // 01
  157. dsf_createDsRow("ds_send_reqdata", [
  158. {col:"scrnid", type:"STRING", size:256, val:scrnid}
  159. , {col:"compscd", type:"STRING", size:256, val:compsCD}
  160. ]);
  161. var oParam = {};
  162. oParam.id = "TRAER01101"; // 그리드정보조회
  163. oParam.service = "astcommonapp.SetUserScrnCol";
  164. oParam.method = "reqGetUserScrnEnvEstb";
  165. oParam.inds = "req=ds_send_reqdata";
  166. oParam.outds = "ds_init_userscrnenvinfo_gridseq=gridseq";
  167. oParam.async = false;
  168. oParam.callback = "cf_TRAER01101";
  169. tranf_submit(oParam);
  170. if(arErrorCode.pop("TRAER01101") > -1 && ds_init_userscrnenvinfo_gridseq.rowcount > 0){
  171. var refdata = ds_init_userscrnenvinfo_gridseq.getColumn(0,"compsrefcnts");
  172. var sizedata = ds_init_userscrnenvinfo_gridseq.getColumn(0,"compssizecnts");
  173. fSetOrderInfoOfCol(grdid, refdata, sizedata);
  174. // var xmlnode = model.instance1.selectSingleNode("/root/init/userscrnenvinfo/gridseq");
  175. // if(xmlnode != null){
  176. // var refdata = model.getValue("/root/init/userscrnenvinfo/gridseq/compsrefcnts");
  177. // var sizedata = model.getValue("/root/init/userscrnenvinfo/gridseq/compssizecnts");
  178. // fSetOrderInfoOfCol(grdid, refdata, sizedata);
  179. // }
  180. }
  181. }
  182. function cf_TRAER01101(sSvcId, nErrorCode, sErrorMsg) {
  183. arErrorCode.push(sSvcId, nErrorCode);
  184. }
  185. /****************************************************************************************
  186. * Argument : grdID
  187. * Description : 컬럼 순서 정보를 얻는다.
  188. ****************************************************************************************/
  189. function fGetOrderInfoOfCol(grdID){
  190. ///////////// 7. 그리드 설정 저장 중 /////////////
  191. // 아직 SPAER13000 에서 실행중인거임
  192. var grd_resize = grdID+"_resize";
  193. var grdObj = eval(grd_resize); //switch1.case1.grd_mainordlist5_resize
  194. var refdata = ""; // ref
  195. var sizedata = ""; // size
  196. var refval = "";
  197. var sizeval = "";
  198. var oDataSet = eval(grdObj.binddataset);
  199. var totcol = grdObj.getCellCount("Head");
  200. for(var i = 0; i < totcol; i++){
  201. refval = ((i == 0) && (grdObj.getCellProperty("body", i, "celltype") == "head")) ? "" : lf_getBindCellName(grdObj, i); // 순번 헤더는 ""으로 처리
  202. refdata += refval + "^";
  203. sizeval = grdObj.getRealColSize(i);
  204. sizedata += sizeval + "^";
  205. // if(refval != "" && oDataSet.getColumn(0, refval) == "☜") {
  206. // sFrozenCol = refval;
  207. // }
  208. }
  209. refdata = refdata.substring(0 , refdata.length-1);
  210. sizedata = sizedata.substring(0, sizedata.length-1);
  211. ds_listval.clearData();
  212. ds_listval.addRow();
  213. ds_listval.setColumn(0, "refdata", refdata);
  214. ds_listval.setColumn(0, "sizedata", sizedata);
  215. // ds_listval.setColumn(0, "frozencol", sFrozenCol);
  216. }
  217. /****************************************************************************************
  218. * Argument : grdid - 그리드명
  219. * : refdata - 그리드 컬럼순서
  220. * : sizedata - 그리드 컬럼사이즈
  221. * Description : 그리드 사용자화면설정 호출
  222. ****************************************************************************************/
  223. function fSetOrderInfoOfCol(grdid, refdata, sizedata){
  224. ///////////// 5. 사용자화면설정 onload -> 탭이벤트함수 -> 그리드정보조회 에서 호출 /////////////
  225. // 지금 SPAER13000 에서 실행중인거임
  226. ///////////// 9. 컬럼변경 버튼에서 팝업화면 닫고 호출 /////////////
  227. // 한바꾸 돌고 이제는 SMAER13000 에서 실행중인거임
  228. var grdObj = eval(grdid);
  229. var refArray = refdata.split("^");
  230. var sizeArray = sizedata.split("^");
  231. grdObj.splitContentsCell("head", 0, 0, 0, grdObj.getCellCount("Head"), true);
  232. grdObj.splitContentsCell("body", 0, 0, 0, grdObj.getCellCount("Body"), true);
  233. var nFixedCol = -1;
  234. var nLeftCol = -1;
  235. for( var i=0 ; i<grdObj.getCellCount("Body") ; i++ ){
  236. if( grdObj.getCellProperty("Body", i, "celltype") == "head" ){
  237. nFixedCol++;
  238. }
  239. if( grdObj.getFormatColProperty(i, "band") == "left" ){
  240. nLeftCol++;
  241. }
  242. }
  243. for( var i=nLeftCol ; i>=0 ; i-- ){
  244. grdObj.setFormatColProperty(i, "band", "body");
  245. }
  246. grdObj.enableredraw = false;
  247. var nMaxColCnt = -1;
  248. if( refArray.length > grdObj.getCellCount("Body") ){
  249. nMaxColCnt = grdObj.getCellCount("Body");
  250. }else{
  251. nMaxColCnt = refArray.length;
  252. }
  253. for( var i=(nFixedCol+1) ; i<nMaxColCnt ; i++ ){
  254. var colcnt = grdObj.getBindCellIndex("body", refArray[i]);
  255. var nCol = i;
  256. if( colcnt < 0 ){
  257. colcnt = 0;
  258. }
  259. // 이동 컬럼과 대상컬럼의 인덱스가 같지 않은 경우만 이동.
  260. if( colcnt != i && colcnt > nFixedCol && i > nFixedCol && colcnt != -1 ){
  261. var headText = utlf_transNullToEmpty(grdObj.getCellProperty("Head", colcnt, "text"));
  262. var bodyText = new Array();
  263. for( var j=0 ; j<gridProperty.length ; j++ ){
  264. bodyText[j] = grdObj.getCellProperty("Body", colcnt, gridProperty[j]);
  265. }
  266. grdObj.deleteContentsCol(colcnt);
  267. nCol = grdObj.insertContentsCol(i);
  268. grdObj.setCellProperty("Head", nCol, "text", headText);
  269. for( var j=0 ; j<gridProperty.length ; j++ ){
  270. if( !utlf_isNull(bodyText[j]) ){
  271. grdObj.setCellProperty("Body", nCol, gridProperty[j], bodyText[j]);
  272. }
  273. }
  274. }
  275. grdObj.setFormatColProperty(nCol, "size", sizeArray[i]);
  276. }
  277. grdObj.enableredraw = true;
  278. for( var i=0 ; i<=nLeftCol ; i++ ){
  279. grdObj.setFormatColProperty(i, "band", "left");
  280. }
  281. for( var i=(grdObj.getCellCount("Head")-2) ; i>=(nFixedCol+1) ; i-- ){
  282. if( !utlf_isNull(grdObj.getCellProperty("Head", i, "text")) &&
  283. grdObj.getCellProperty("Head", i, "text") == grdObj.getCellProperty("Head", i+1, "text") ){
  284. grdObj.mergeContentsCell("head", 0, i, 0, i+1, i, false);
  285. }
  286. }
  287. for( var i=(grdObj.getCellCount("Body")-2) ; i>=(nFixedCol+1) ; i-- ){
  288. if( grdObj.getCellProperty("Body", i, "text") == grdObj.getCellProperty("Body", i+1, "text") ){
  289. grdObj.mergeContentsCell("body", 0, i, 0, i+1, i, false);
  290. }
  291. }
  292. }
  293. /** 미전환
  294. * @desc : ???????? column ????
  295. * @
  296. * @param :
  297. * @return :
  298. * @author : ??????
  299. * @---------------------------------------------------
  300. */
  301. function fDelColOfGrd(){
  302. var grdid = model.getValue("/root/main/cond/grdid");
  303. var grdObj = document.controls.item(grdid + "_resize");
  304. var selectedCells = grdObj.selectedCells;
  305. for(var i = 0; i < selectedCells.length; i++){
  306. var curcol = selectedCells.item(i).col;
  307. grdObj.colWidth(curcol) = 0;
  308. grdObj.colHidden(curcol) = true;
  309. }
  310. grdObj.rebuild();
  311. }
  312. /****************************************************************************************
  313. * Argument : oTrgtGrid - 대상 그리드
  314. * : nColumnIndx - 대상 컬럼 인덱스
  315. * Description : 그리드에서 컬럼 인덱스로 바인드된 데이터셋의 컬럼명을 가져온다.
  316. ****************************************************************************************/
  317. function lf_getBindCellName(oTrgtGrid, nColumnIndx){
  318. var sRtnText = "";
  319. var sTrgtText = oTrgtGrid.getCellProperty("body", nColumnIndx, "text");
  320. if(!utlf_isNull( sTrgtText)){
  321. sRtnText = sTrgtText.replace("bind:", "");
  322. }
  323. return sRtnText;
  324. }]]></Script>