SMMRE00500.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382
  1. /*
  2. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  3. 술식어 폴더 ( SMMRE00500_폴더생성관리.xrw - JScript )
  4. - Version :
  5. 1) : Ver.1.00.01
  6. - Author : 최원돈 (2010.12.01~
  7. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  8. */
  9. var sSELFOLDINFO_PATH = "/root/main/selinfo/foldinfo"
  10. var sSELFOLDLIST_PATH = "/root/main/selinfo/foldinfo/foldlist"
  11. var sSELSELFOLDINFO_PATH = "/root/main/selinfo/selfoldinfo"
  12. var sSELSELFOLDLIST_PATH = "/root/main/selinfo/selfoldinfo/foldlist"
  13. var sSELFOLDINFO_ORG_PATH = "/root/data/selinfo/foldinfo"
  14. var sSELFOLDLIST_ORG_PATH = "/root/data/selinfo/foldinfo/foldlist"
  15. var sMODINFO_PATH = "/root/data/modinfo"
  16. var sMODFOLDINFO_PATH = "/root/data/modinfo/foldinfo"
  17. var sDELINFO_PATH = "/root/data/delinfo"
  18. var sDELFOLDINFO_PATH = "/root/data/delinfo/foldinfo"
  19. // PK COLUMNS
  20. var aPKCOLID_MASTLIST = new Array( "instcd"
  21. , "wmid" );
  22. // treeindex
  23. var li_treeindex = 0;
  24. /**
  25. * @---------------------------------------------------
  26. * @creat : 20100000
  27. * @author : 최원돈
  28. * @desc : 초기화
  29. * @---------------------------------------------------
  30. */
  31. function fInitialize()
  32. {
  33. fGetfoldinfo(); // 술식어 폴더를 조회한다.
  34. }
  35. /**
  36. * @---------------------------------------------------
  37. * @creat : 20100000
  38. * @author : 최원돈
  39. * @desc : 술식어 폴더를 조회
  40. * @---------------------------------------------------
  41. */
  42. function fGetfoldinfo()
  43. {
  44. // 초기화 START
  45. //mainlist 초기화
  46. model.removenode(sSELFOLDINFO_PATH);
  47. model.makeNode(sSELFOLDINFO_PATH);
  48. model.removenode(sSELSELFOLDINFO_PATH);
  49. model.makeNode(sSELSELFOLDINFO_PATH);
  50. //send parameter 초기화
  51. model.removeNodeset("/root/send/foldinfo/reqdata");
  52. model.makeNode("/root/send/foldinfo/reqdata");
  53. model.copyNode("/root/send/foldinfo/reqdata", "/root/main/cond");
  54. // 초기화 END
  55. //submit 호출
  56. if(!submit("TRMRE00501")){
  57. messageBox("조회를 실패하였습니다.", "E999");
  58. return;
  59. }
  60. setTreeActiveInit(); // Tree초기화 (조회, 저장 후)
  61. }
  62. /**
  63. * @---------------------------------------------------
  64. * @creat : 20100000
  65. * @author : 최원돈
  66. * @desc : 술식어 하위폴더를 조회
  67. * @---------------------------------------------------
  68. */
  69. function fGetSelfoldinfo()
  70. {
  71. if (instance1.selectSingleNode(sSELFOLDLIST_PATH + "[treeindex='" + tr_fold.value + "']/wmid").NodeValue == "")
  72. {
  73. setActiveInit(); // 초기화 (조회, 저장 후)
  74. return;
  75. }
  76. // 초기화 START
  77. //mainlist 초기화
  78. model.removenode(sSELSELFOLDINFO_PATH);
  79. model.makeNode(sSELSELFOLDINFO_PATH);
  80. model.setValue("/root/main/cond/selwmid", tr_fold.value);
  81. //send parameter 초기화
  82. model.removeNodeset("/root/send/selfoldinfo/reqdata");
  83. model.makeNode("/root/send/selfoldinfo/reqdata");
  84. model.copyNode("/root/send/selfoldinfo/reqdata", "/root/main/cond");
  85. // 초기화 END
  86. //submit 호출
  87. if(!submit("TRMRE00502")){
  88. messageBox("조회를 실패하였습니다.", "E999");
  89. return;
  90. }
  91. setActiveInit(); // 초기화 (조회, 저장 후)
  92. }
  93. /**
  94. * @---------------------------------------------------
  95. * @creat : 20100000
  96. * @author : 최원돈
  97. * @desc : Tree초기화 (조회, 저장 후)
  98. * @---------------------------------------------------
  99. */
  100. function setTreeActiveInit()
  101. {
  102. li_treeindex = 0; // li_treeindex 초기화
  103. model.setValue("/root/main/cond/selwmid", "");
  104. // 조회된 정보가 없다면. title을 자동으로 생성시켜주고, 클릭 상태로 만들어준다.
  105. var lx_node = instance1.selectSingleNode(sSELFOLDINFO_PATH);
  106. if ( lx_node == null
  107. || lx_node.childNodes.length == 0)
  108. {
  109. model.setValue("/root/main/cond/newtitle", cmb_wrdflag.label); // 술식구분 추가를 설정하여 자동으로 저장될 수 있도록 한다.
  110. model.copyNode(sSELFOLDINFO_PATH, "/root/init/selinitinfo/foldinfo");
  111. model.setValue(sSELFOLDLIST_PATH + "/title" , cmb_wrdflag.label );
  112. model.setValue(sSELFOLDLIST_PATH + "/bizflag" , model.getValue("/root/main/cond/bizflag"));
  113. model.setValue(sSELFOLDLIST_PATH + "/wrdflag" , model.getValue("/root/main/cond/wrdflag"));
  114. model.setValue(sSELFOLDLIST_PATH + "/treeindex" , "imsi" + (++li_treeindex) );
  115. model.setValue(sSELFOLDLIST_PATH + "/status" , "i" );
  116. model.refresh();
  117. tr_fold.select(0); // 첫번째 인텍스를 선택한다.
  118. }
  119. else
  120. {
  121. model.setValue("/root/main/cond/newtitle", "");
  122. tr_fold.rebuild();
  123. }
  124. model.setValue("/root/main/cond/selectIndxcd", "");
  125. model.refresh();
  126. }
  127. /**
  128. * @---------------------------------------------------
  129. * @creat : 20100000
  130. * @author : 최원돈
  131. * @desc : 초기화 (조회, 저장 후)
  132. * @---------------------------------------------------
  133. */
  134. function setActiveInit()
  135. {
  136. createTempNode(); // Temp 노드를 생성한다.
  137. model.removeNodeset(sMODFOLDINFO_PATH);
  138. model.makeNode(sMODFOLDINFO_PATH);
  139. model.removeNodeset(sDELFOLDINFO_PATH);
  140. model.makeNode(sDELFOLDINFO_PATH);
  141. model.refresh();
  142. }
  143. /**
  144. * @---------------------------------------------------
  145. * @creat : 20100000
  146. * @author : 최원돈
  147. * @desc : 술식어 폴더 저장
  148. * @---------------------------------------------------
  149. */
  150. function fClkBtnfoldSave()
  151. {
  152. var li_findtitle = grd_foldlist.findRow("", 0, grd_foldlist.colref("title"), false, true);
  153. if (li_findtitle >= 0)
  154. {
  155. messageBox(li_findtitle + "행의 메뉴명을 입력하세요!", "E999");
  156. return;
  157. }
  158. var li_findseq = grd_foldlist.findRow("", 0, grd_foldlist.colref("seq"), false, true);
  159. if (li_findseq >= 0)
  160. {
  161. messageBox(li_findseq + "행의 순번을 입력하세요!", "E999");
  162. return;
  163. }
  164. if(chkMsetIdenNode(aPKCOLID_MASTLIST, sSELFOLDLIST_ORG_PATH, sSELSELFOLDINFO_PATH, sDELFOLDINFO_PATH, sMODFOLDINFO_PATH, false, "insertwmid", null, "m", "i")) // 동일여부체크
  165. {
  166. messageBox("저장할 데이터가", "I004");
  167. return;
  168. }
  169. //send parameter 초기화
  170. model.removeNodeset("/root/send/selfoldinfo/reqdata");
  171. model.makeNode("/root/send/selfoldinfo/reqdata");
  172. model.copyNode("/root/send/selfoldinfo/reqdata", "/root/main/cond");
  173. model.removeNodeset("/root/send/selfoldinfo/savedata");
  174. var modfoldinfo = instance1.selectSingleNode(sMODFOLDINFO_PATH);
  175. var delfoldinfo = instance1.selectSingleNode(sDELFOLDINFO_PATH);
  176. if ( modfoldinfo != null
  177. && modfoldinfo.childNodes.length > 0) // 추가, 수정정보를 save에 등록한다.
  178. {
  179. model.makeNode ("/root/send/selfoldinfo/savedata/modlist");
  180. model.makeValue("/root/send/selfoldinfo/savedata/modlist", getNodeListCSV(modfoldinfo.childNodes));
  181. }
  182. if ( delfoldinfo != null
  183. && delfoldinfo.childNodes.length > 0) // 삭제정보를 save에 등록한다.
  184. {
  185. model.makeNode ("/root/send/selfoldinfo/savedata/dellist");
  186. model.makeValue("/root/send/selfoldinfo/savedata/dellist", getNodeListCSV(delfoldinfo.childNodes));
  187. }
  188. if(!submit("TXMRE00501")){
  189. messageBox("저장을 실패하였습니다.", "E999");
  190. return;
  191. }
  192. fGetfoldinfo(); // 술식어 폴더를 조회한다.
  193. // setTreeActiveInit(); // Tree 초기화 (조회, 저장 후)
  194. }
  195. /**
  196. * @---------------------------------------------------
  197. * @creat : 20100000
  198. * @author : 최원돈
  199. * @desc : Temp 노드를 생성한다.
  200. * @---------------------------------------------------
  201. */
  202. function createTempNode()
  203. {
  204. model.removeNodeset(sSELFOLDINFO_ORG_PATH);
  205. model.makeNode(sSELFOLDINFO_ORG_PATH);
  206. model.copyNode(sSELFOLDINFO_ORG_PATH, sSELSELFOLDINFO_PATH);
  207. }
  208. /**
  209. * @---------------------------------------------------
  210. * @creat : 20100000
  211. * @author : 최원돈
  212. * @desc : 술식어 폴더 추가
  213. * @---------------------------------------------------
  214. */
  215. function fClkBtnfoldAdd()
  216. {
  217. if (tr_fold.selectedindex == -1)
  218. {
  219. messageBox("술식어 폴더를 선택하세요!", "E999");
  220. return;
  221. }
  222. var li_level;
  223. if (tr_fold.selectedindex == 0)
  224. {
  225. li_level = 1;
  226. }
  227. // else if ( instance1.selectSingleNode(sSELFOLDLIST_PATH + "[treeindex='" + tr_fold.value + "']") == null
  228. // || instance1.selectSingleNode(sSELFOLDLIST_PATH + "[treeindex='" + tr_fold.value + "']/wmid").NodeValue == "")
  229. // {
  230. // messageBox("선택 정보가 저장되어있지 않아서 하위 폴더를 생성할 수 없습니다. 저장 후 추가하세요!", "E999");
  231. // return;
  232. // }
  233. else
  234. {
  235. li_level = parseInt(instance1.selectSingleNode(sSELFOLDLIST_PATH + "[wmid='" + tr_fold.value + "']/level").NodeValue) + 1;
  236. }
  237. var li_selectedindex = tr_fold.selectedindex;
  238. grd_foldlist.addRow();
  239. currow = grd_foldlist.row;
  240. // grd_foldlist.insertRow(grd_foldlist.findRow(tr_fold.value, 0, grd_foldlist.colRef("treeindex")), "below", false, true);
  241. model.setValue(sSELSELFOLDLIST_PATH + "[" + currow + "]/bizflag" , model.getValue("/root/main/cond/bizflag"));
  242. model.setValue(sSELSELFOLDLIST_PATH + "[" + currow + "]/wrdflag" , model.getValue("/root/main/cond/wrdflag"));
  243. model.setValue(sSELSELFOLDLIST_PATH + "[" + currow + "]/seq" , 10 );
  244. model.setValue(sSELSELFOLDLIST_PATH + "[" + currow + "]/useyn" , "Y");
  245. model.setValue(sSELSELFOLDLIST_PATH + "[" + currow + "]/level" , li_level);
  246. model.setValue(sSELSELFOLDLIST_PATH + "[" + currow + "]/pwmid" , tr_fold.value);
  247. // model.setValue(sSELSELFOLDLIST_PATH + "[" + currow + "]/treeindex" , "imsi" + (++li_treeindex));
  248. model.setValue(sSELSELFOLDLIST_PATH + "[" + currow + "]/status" , "i");
  249. model.refresh();
  250. grd_foldlist.bottomrow = grd_foldlist.row;
  251. // tr_fold.select(li_selectedindex);
  252. }
  253. /**
  254. * @---------------------------------------------------
  255. * @creat : 20100000
  256. * @author : 최원돈
  257. * @desc : 술식어 폴더 삭제
  258. * @---------------------------------------------------
  259. */
  260. function fClkBtnfoldDel()
  261. {
  262. if (tr_fold.selectedindex == -1)
  263. {
  264. messageBox("술식어 폴더를 선택하세요!", "E999");
  265. return;
  266. }
  267. // if (instance1.selectSingleNode(sSELFOLDLIST_PATH + "[pwmid='" + tr_fold.value + "']/wmid") != null)
  268. // {
  269. // messageBox("하위 폴더가 존재합니다!", "E999");
  270. // return;
  271. // }
  272. var delnode = instance1.selectSingleNode(sDELFOLDINFO_PATH);
  273. var la_foldsel = new Array();
  274. // 삭제 ros Desc 임시 저장
  275. var j = 0;
  276. for(var i=(grd_foldlist.selectedRows-1); i>=0; i--)
  277. {
  278. var li_row = grd_foldlist.selectedRow(i);
  279. if (instance1.selectSingleNode(sSELFOLDLIST_PATH + "[pwmid='" + grd_foldlist.valueMatrix(li_row, grd_foldlist.colRef("wmid")) + "']/wmid") != null)
  280. {
  281. messageBox("하위 폴더가 존재합니다!", "E999");
  282. return;
  283. }
  284. la_foldsel[j++] = li_row;
  285. }
  286. // 삭제 노드를 '삭제노드'에 임시 저장을 하고, 삭제함(=> 저장 시 삭제정보 활용)
  287. for(i=0; i<la_foldsel.length; i++)
  288. {
  289. li_row = la_foldsel[i];
  290. var ls_pkcond = "";
  291. // 비교하기 위해서 PK 를 추출
  292. for (j=0; j<aPKCOLID_MASTLIST.length; j++)
  293. {
  294. if (ls_pkcond != "")
  295. {
  296. ls_pkcond += " and ";
  297. }
  298. var ls_pkvalue = grd_foldlist.valueMatrix(li_row, grd_foldlist.colRef(aPKCOLID_MASTLIST[j]));
  299. if (ls_pkvalue == "")
  300. {
  301. ls_pkcond = "";
  302. break;
  303. }
  304. ls_pkcond += aPKCOLID_MASTLIST[j] + "='" + ls_pkvalue + "'";
  305. }
  306. if (ls_pkcond == "") // PK가 존재하지 않을 경우 [추가일 경우]
  307. {
  308. grd_foldlist.deleteRow(li_row, false);
  309. }
  310. else
  311. {
  312. var ls_cond = sSELSELFOLDLIST_PATH + "[" + ls_pkcond + "]";
  313. delnode.appendChild(instance1.selectSingleNode(ls_cond));
  314. // delnode.lastChild.selectSingleNode("status").NodeValue = "d";
  315. grd_foldlist.deleteRow(li_row, false);
  316. }
  317. }
  318. model.refresh();
  319. }