PAM001.xjs 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  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].deleteColumn("sortfield");
  131. }else{
  132. this.objects[S_IN_DS_REQ].addColumn("sortfield", "String", "256");
  133. this.objects[S_IN_DS_REQ].setColumn(i, "sortfield", arrParam[i].sortField);
  134. }
  135. if(!utlf_isNull(arrParam[i].sortMehotd)){
  136. this.objects[S_IN_DS_REQ].deleteColumn("sortmethod");
  137. }else{
  138. this.objects[S_IN_DS_REQ].addColumn("sortmethod", "String", "256");
  139. this.objects[S_IN_DS_REQ].setColumn(i, "sortmethod", arrParam[i].sortMehotd);
  140. }
  141. sGrpIds = sGrpIds + arrParam[i].cdGrpId + " ";
  142. //sTrId = sTrId+arrParam[i].dsNm+"~";
  143. if(utlf_getStrCount(sGrpIds, arrParam[i].cdGrpId) == 1){
  144. sOutDs = sOutDs + arrParam[i].dsNm+"="+arrParam[i].cdGrpId+" ";
  145. sOutParam = sOutParam + arrParam[i].dsNm+"="+arrParam[i].cdGrpId+"="+arrParam[i].showValue+" ";
  146. }else if(utlf_getStrCount(sGrpIds, arrParam[i].cdGrpId) > 1){
  147. sDupDs = sDupDs + arrParam[i].dsNm+"="+arrParam[i].cdGrpId+"="+arrParam[i].showValue+" ";
  148. }
  149. }
  150. var sAsync = "FALSE";
  151. if(bAsync) sAsync = "TRUE";
  152. sTrId = sTrId + sOutParam + "~" + sAsync + "~" + sCallback + "~" + sDupDs;
  153. var objTrParam = new Object();
  154. objTrParam.id = sTrId;
  155. objTrParam.service = "pamcomnapp.PamComn";
  156. objTrParam.method = "reqGetPamCodeLists";
  157. objTrParam.inds = "req="+S_IN_DS_REQ;
  158. objTrParam.outds = sOutDs;
  159. objTrParam.callback = "cbf_tr_reqpamfGetCodeLists";
  160. objTrParam.async = bAsync;
  161. tranf_submit(objTrParam);
  162. }
  163. function cbf_tr_reqpamfGetCodeLists(sSvcId, nErrorCode, sErrorMsg){
  164. //var arrSvcParam = sSvcId.split("~");
  165. var sTranId = sSvcId.split("~")[0];
  166. var sOutDs = sSvcId.split("~")[1];
  167. var sAsync = sSvcId.split("~")[2];
  168. var sCallback = sSvcId.split("~")[3];
  169. var sDupDs = sSvcId.split("~")[4];
  170. var arrOutDs = sOutDs.split(" ");
  171. //Quick View를 위하여 예외처리함. Quick View실행 시 cache에 등록하지 않는다.
  172. //db에서 가져온 코드를 top영역의 code cache에 등록한다.
  173. // for(var i=0 ; i<arrOutDs.length ; i++){
  174. // var arrTempDsNm = arrOutDs[i].split("=");
  175. //
  176. // if(!utlf_isNull(arrOutDs[i])){
  177. // this.objects[arrTempDsNm[0]].name = arrTempDsNm[1];
  178. // try{
  179. // agv_objAppTopPath.form.setComnCodeCache(this.objects[arrTempDsNm[0]]);
  180. // }catch(e){
  181. // sysf_catchTrace(e);
  182. // }
  183. // if(arrTempDsNm[2] == "true") appf_showValue(this.objects[arrTempDsNm[0]]);
  184. // }
  185. // }
  186. //중복된 코드를 복사한다.
  187. // if(!utlf_isNull(sDupDs)){
  188. // //trace("중복="+sDupDs);
  189. // var arrDupDs = sDupDs.split(" ");
  190. // for(var i in arrDupDs){
  191. // if(!utlf_isNull(arrDupDs[i])){
  192. // var sDupDsNm = arrDupDs[i].split("=")[0];
  193. // var sDupGrpCd = arrDupDs[i].split("=")[1];
  194. // var sShowValue = arrDupDs[i].split("=")[2];
  195. //
  196. // var objCachedDs = agv_objAppTopPath.form.getComnCodeCache(sDupGrpCd);
  197. //
  198. // if(this.objects[sDupDsNm] == null){
  199. // //form에 ds이 없으면 새로 생성하고 복사
  200. // dsf_createDs(sDupDsNm);
  201. // this.objects[sDupDsNm].copyData(objCachedDs);
  202. // if(sShowValue == "true") appf_showValue(this.objects[sDupDsNm]);
  203. // }else{
  204. // //form에 ds이 있으면 복사만
  205. // this.objects[sDupDsNm].copyData(objCachedDs);
  206. // if(sShowValue == "true") appf_showValue(this.objects[sDupDsNm])
  207. // }
  208. // }
  209. // }
  210. // }
  211. //
  212. // Form Callback 함수 호출 async가 true일때만
  213. //if(arrSvcParam[2] == "TRUE"){
  214. //if(arrSvcParam[3] == "null") return;
  215. if(sCallback == null) return;
  216. if(sCallback == "undefined") return;
  217. if(sCallback.length == 0) return;
  218. eval(sCallback + "('" + sTranId + "', '" + nErrorCode + "', '" + sErrorMsg + "');");
  219. //}
  220. }]]></Script>