PAM001.xjs 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/*
  3. * 원무 공통 함수
  4. * PAM001.js
  5. * 작성자 : 최병진
  6. * 작성일 : 2009.03.20
  7. * 수정이력
  8. */
  9. var pamCodeResultRef = "/root/hidden/pam/resultref"; // 공통코드를 맵핑시킬 임시 결과 path
  10. /* 원무공통코드 리스트 조회
  11. *
  12. * 전제조건 : TRPAM00105 submission이 추가되어야 한다.
  13. */
  14. function pamfGetCodeList_backup(cd_grup_id_list, rslt_ref_list, sortfield_list, sortmethod_list) {
  15. model.makeNode(pamCodeResultRef); // 결과를 맵핑시킬 XPath에 대한 instance 생성
  16. // 코드ID별 파라미터 생성
  17. for (key in cd_grup_id_list){
  18. addParameter("cdgrupid", cd_grup_id_list[key]);
  19. if(sortfield_list != null){
  20. addParameter("sortfield", sortfield_list[key]);
  21. }else{
  22. addParameter("sortfield", "dispseq");
  23. }
  24. if(sortmethod_list != null){
  25. addParameter("sortmethod", sortmethod_list[key]);
  26. }else{
  27. addParameter("sortmethod", "asc");
  28. }
  29. }
  30. var submit_id = "TRPAM00105";
  31. var success = submit(submit_id, "false", getParameterPath(), pamCodeResultRef);
  32. for(key in cd_grup_id_list){
  33. var target_path = rslt_ref_list[key];
  34. if(target_path== null ){
  35. target_path = rslt_ref_list[key-1];
  36. }
  37. var source_path = pamCodeResultRef+"/"+cd_grup_id_list[key]+"/"+cd_grup_id_list[key];
  38. var sourceNode = instance1.selectNodes(pamCodeResultRef+"/"+cd_grup_id_list[key]+"/"+cd_grup_id_list[key]);
  39. for(var i = 0 ; i < sourceNode.length ; i++){
  40. model.duplicate(target_path, sourceNode.item(i));
  41. }
  42. }
  43. model.removeNode(pamCodeResultRef);
  44. clearParameter("cdgrupid");
  45. clearParameter("sortfield");
  46. clearParameter("sortmethod");
  47. }
  48. /**********************************************************************************
  49. * 함 수 명 : appf_getCodeList
  50. * 설 명 : 원무 공통 코드를 가져온다.
  51. * argument : arrParam
  52. * # cdGrpId(필수) - 코드ID
  53. * # dsNm(필수) - 가져온 코드를 담을 dataset 명
  54. * # sortField(선택) - 정렬할 컬럼명 (cdid, cdnm, dispseq)
  55. * # sortMehotd(선택) - 정렬 방법 (asc, desc)
  56. * # showValue(선택) - code column을 datacolumn과 같이 표시한다.(출력예 : [001] 등록비 )
  57. * 작성예) [{dsNm: "ds_code_1", cdGrpId: "R3310", sortField: "cdnm", sortMehotd: "desc", showValue:true}
  58. * , {dsNm: "ds_code_2", cdGrpId: "R3310", sortField: "cdnm", sortMehotd: "desc", showValue:true}]
  59. * bAsync - 동기 / 비동기 여부
  60. * sCallback - callback 함수명
  61. * return Type :
  62. * 작성자 : 최재원
  63. **********************************************************************************/
  64. function pamfGetCodeList(arrParam, bAsync, sCallback){
  65. //pamfGetCodeListSubmit 인자값
  66. var arrSubmitParam = new Array();
  67. //비동기 여부가 null일때 false
  68. //기본 비동기
  69. if(utlf_isNull(bAsync)){
  70. bAsync = false;
  71. }
  72. for(var i in arrParam){
  73. if(utlf_isNull(arrParam[i].showValue)) arrParam[i].showValue = false;
  74. arrSubmitParam.push(arrParam[i]);
  75. }
  76. if(arrSubmitParam.length > 0){
  77. pamfGetCodeListSubmit(arrSubmitParam, bAsync, sCallback);
  78. }else{
  79. if(sCallback == null) return;
  80. if(sCallback == "undefined") return;
  81. if(sCallback.length == 0) return;
  82. if(bAsync) eval(sCallback + "();");
  83. }
  84. }
  85. /**********************************************************************************
  86. * 함 수 명 : pamfGetCodeListSubmit
  87. * 설 명 : 원무 공통 코드를 DB에서 가져온다.
  88. * argument : sCallback - callback function
  89. * arrParam
  90. * #cdGrpId(필수) - 코드ID
  91. * #dsNm(필수) - 가져온 코드를 담을 dataset 명
  92. * #sortField(선택) - 정렬할 컬럼명 (cdid, cdnm, dispseq)
  93. * #sortMehotd(선택) - 정렬 방법 (asc, desc)
  94. * #showValue(선택) - code column을 datacolumn과 같이 표시한다.(출력예 : [001] 등록비 )
  95. * 작성예) [{cdGrpId: "R3310", dsNm: "ds_code_1", sortField: "cdnm", sortMehotd: "desc", showValue: true}
  96. * , {cdGrpId: "R3310", dsNm: "ds_code_2", sortField: "cdnm", sortMehotd: "desc", showValue: true}]
  97. * bAsync - 동기 / 비동기 여부
  98. * sCallback - callback 함수명
  99. * return Type :
  100. * 작성자 : 최재원
  101. **********************************************************************************/
  102. function pamfGetCodeListSubmit(arrParam, bAsync, sCallback){
  103. // var S_IN_DS_CMD = "appf_ds_cmd_pamfGetCodeListSubmit";
  104. var S_IN_DS_REQ = "ds_req_pamfGetCodeListSubmit";
  105. var sInDsCmd = "";
  106. var sOutDs = "";
  107. var sOutParam = "";
  108. var sGrpIds = "";
  109. var sDupDs = "";
  110. var sMinimum = "true";
  111. //inds req 생성
  112. if(this.objects[S_IN_DS_REQ] != null){
  113. this.objects[S_IN_DS_REQ].clear();
  114. }else{
  115. var objDs = new Dataset;
  116. this.addChild(S_IN_DS_REQ, objDs);
  117. }
  118. this.objects[S_IN_DS_REQ].addColumn("cdgrupid", "String", "256");
  119. var sTrId = "tr_reqpamfGetCodeLists~";
  120. //outds string 생성
  121. for(var i in arrParam){
  122. //arrParam[i].dsNm 이 form에 없을때만 생성한다.
  123. if(utlf_isNull(this.objects[arrParam[i].dsNm])){
  124. dsf_createDs(arrParam[i].dsNm);
  125. }
  126. //trace("before="+this.objects[arrParam[i].dsNm].name);
  127. this.objects[S_IN_DS_REQ].addRow();
  128. this.objects[S_IN_DS_REQ].setColumn(i, "cdgrupid", arrParam[i].cdGrpId);
  129. if(utlf_isNull(arrParam[i].sortField)){
  130. this.objects[S_IN_DS_REQ].addColumn("sortfield", "String", "256");
  131. this.objects[S_IN_DS_REQ].setColumn(i, "sortfield", "dispseq");
  132. }else{
  133. this.objects[S_IN_DS_REQ].addColumn("sortfield", "String", "256");
  134. this.objects[S_IN_DS_REQ].setColumn(i, "sortfield", arrParam[i].sortField);
  135. }
  136. if(!utlf_isNull(arrParam[i].sortMehotd)){
  137. this.objects[S_IN_DS_REQ].addColumn("sortmethod", "String", "256");
  138. this.objects[S_IN_DS_REQ].setColumn(i, "sortmethod", "asc");
  139. }else{
  140. this.objects[S_IN_DS_REQ].addColumn("sortmethod", "String", "256");
  141. this.objects[S_IN_DS_REQ].setColumn(i, "sortmethod", arrParam[i].sortMehotd);
  142. }
  143. sGrpIds = sGrpIds + arrParam[i].cdGrpId + " ";
  144. //sTrId = sTrId+arrParam[i].dsNm+"~";
  145. if(utlf_getStrCount(sGrpIds, arrParam[i].cdGrpId) == 1){
  146. sOutDs = sOutDs + arrParam[i].dsNm+"="+arrParam[i].cdGrpId+" ";
  147. sOutParam = sOutParam + arrParam[i].dsNm+"="+arrParam[i].cdGrpId+"="+arrParam[i].showValue+" ";
  148. }else if(utlf_getStrCount(sGrpIds, arrParam[i].cdGrpId) > 1){
  149. sDupDs = sDupDs + arrParam[i].dsNm+"="+arrParam[i].cdGrpId+"="+arrParam[i].showValue+" ";
  150. }
  151. }
  152. var sAsync = "FALSE";
  153. if(bAsync) sAsync = "TRUE";
  154. sTrId = sTrId + sOutParam + "~" + sAsync + "~" + sCallback + "~" + sDupDs;
  155. var objTrParam = new Object();
  156. objTrParam.id = sTrId;
  157. objTrParam.service = "pamcomnapp.PamComn";
  158. objTrParam.method = "reqGetPamCodeLists";
  159. objTrParam.inds = "req="+S_IN_DS_REQ;
  160. objTrParam.outds = sOutDs;
  161. objTrParam.callback = "cbf_tr_reqpamfGetCodeLists";
  162. objTrParam.async = bAsync;
  163. tranf_submit(objTrParam);
  164. }
  165. function cbf_tr_reqpamfGetCodeLists(sSvcId, nErrorCode, sErrorMsg){
  166. //var arrSvcParam = sSvcId.split("~");
  167. var sTranId = sSvcId.split("~")[0];
  168. var sOutDs = sSvcId.split("~")[1];
  169. var sAsync = sSvcId.split("~")[2];
  170. var sCallback = sSvcId.split("~")[3];
  171. var sDupDs = sSvcId.split("~")[4];
  172. var arrOutDs = sOutDs.split(" ");
  173. //Quick View를 위하여 예외처리함. Quick View실행 시 cache에 등록하지 않는다.
  174. //db에서 가져온 코드를 top영역의 code cache에 등록한다.
  175. // for(var i=0 ; i<arrOutDs.length ; i++){
  176. // var arrTempDsNm = arrOutDs[i].split("=");
  177. //
  178. // if(!utlf_isNull(arrOutDs[i])){
  179. // this.objects[arrTempDsNm[0]].name = arrTempDsNm[1];
  180. // try{
  181. // agv_objAppTopPath.form.setComnCodeCache(this.objects[arrTempDsNm[0]]);
  182. // }catch(e){
  183. // sysf_catchTrace(e);
  184. // }
  185. // if(arrTempDsNm[2] == "true") appf_showValue(this.objects[arrTempDsNm[0]]);
  186. // }
  187. // }
  188. //중복된 코드를 복사한다.
  189. // if(!utlf_isNull(sDupDs)){
  190. // //trace("중복="+sDupDs);
  191. // var arrDupDs = sDupDs.split(" ");
  192. // for(var i in arrDupDs){
  193. // if(!utlf_isNull(arrDupDs[i])){
  194. // var sDupDsNm = arrDupDs[i].split("=")[0];
  195. // var sDupGrpCd = arrDupDs[i].split("=")[1];
  196. // var sShowValue = arrDupDs[i].split("=")[2];
  197. //
  198. // var objCachedDs = agv_objAppTopPath.form.getComnCodeCache(sDupGrpCd);
  199. //
  200. // if(this.objects[sDupDsNm] == null){
  201. // //form에 ds이 없으면 새로 생성하고 복사
  202. // dsf_createDs(sDupDsNm);
  203. // this.objects[sDupDsNm].copyData(objCachedDs);
  204. // if(sShowValue == "true") appf_showValue(this.objects[sDupDsNm]);
  205. // }else{
  206. // //form에 ds이 있으면 복사만
  207. // this.objects[sDupDsNm].copyData(objCachedDs);
  208. // if(sShowValue == "true") appf_showValue(this.objects[sDupDsNm])
  209. // }
  210. // }
  211. // }
  212. // }
  213. //
  214. // Form Callback 함수 호출 async가 true일때만
  215. //if(arrSvcParam[2] == "TRUE"){
  216. //if(arrSvcParam[3] == "null") return;
  217. if(sCallback == null) return;
  218. if(sCallback == "undefined") return;
  219. if(sCallback.length == 0) return;
  220. eval(sCallback + "('" + sTranId + "', '" + nErrorCode + "', '" + sErrorMsg + "');");
  221. //}
  222. }]]></Script>