SMMRE00600.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371
  1. /*
  2. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  3. 폴더별 술식어 ( SMMRE00600_폴더별술식어관리.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 sSELWORDINFO_PATH = "/root/main/selinfo/wordinfo"
  12. var sSELWORDLIST_PATH = "/root/main/selinfo/wordinfo/wordlist"
  13. var sSELFOLDWORDINFO_PATH = "/root/main/selinfo/foldwordinfo"
  14. var sSELFOLDWORDLIST_PATH = "/root/main/selinfo/foldwordinfo/foldwordlist"
  15. var sSELFOLDWORDINFO_ORG_PATH = "/root/data/selinfo/foldwordinfo"
  16. var sSELFOLDWORDLIST_ORG_PATH = "/root/data/selinfo/foldwordinfo/foldwordlist"
  17. var sMODINFO_PATH = "/root/data/modinfo"
  18. var sMODFOLDWORDINFO_PATH = "/root/data/modinfo/foldwordinfo"
  19. var sDELINFO_PATH = "/root/data/delinfo"
  20. var sDELFOLDWORDINFO_PATH = "/root/data/delinfo/foldwordinfo"
  21. // PK COLUMNS
  22. var aPKCOLID_MASTLIST = new Array( "instcd"
  23. , "wmid"
  24. , "wrpid" );
  25. // treeindex
  26. //var li_treeindex = 0;
  27. /**
  28. * @---------------------------------------------------
  29. * @creat : 20100000
  30. * @author : 최원돈
  31. * @desc : 초기화
  32. * @---------------------------------------------------
  33. */
  34. function fInitialize()
  35. {
  36. // fGetwordinfo(); // 술식어를 조회한다.
  37. //
  38. // grd_foldwordlist.removeRow(true);
  39. // model.refresh();
  40. //debugger;
  41. fGetfoldinfo(); // 폴더를 조회한다.
  42. tr_fold.refresh();
  43. // combo2.dispatch("xforms-value-changed");
  44. }
  45. /**
  46. * @---------------------------------------------------
  47. * @creat : 20100000
  48. * @author : 최원돈
  49. * @desc : 폴더를 조회
  50. * @---------------------------------------------------
  51. */
  52. function fGetfoldinfo()
  53. {
  54. // 초기화 START
  55. //mainlist 초기화
  56. model.removenode(sSELFOLDINFO_PATH);
  57. model.makeNode(sSELFOLDINFO_PATH);
  58. //send parameter 초기화
  59. model.removeNodeset("/root/send/foldinfo/reqdata");
  60. model.makeNode("/root/send/foldinfo/reqdata");
  61. model.copyNode("/root/send/foldinfo/reqdata", "/root/main/cond/foldinfo");
  62. // 초기화 END
  63. //submit 호출
  64. if(!submit("TRMRE00501")){
  65. messageBox("조회를 실패하였습니다.", "E999");
  66. return;
  67. }
  68. // 폴더별 술식어 초기화
  69. model.removenode(sSELFOLDWORDINFO_PATH);
  70. model.makeNode(sSELFOLDWORDINFO_PATH);
  71. setActiveInit(); // 초기화 (조회, 저장 후)
  72. model.setValue("/root/main/cond/foldwordinfo/wmid", "");
  73. model.refresh();
  74. }
  75. /**
  76. * @---------------------------------------------------
  77. * @creat : 20100000
  78. * @author : 최원돈
  79. * @desc : 술식어를 조회
  80. * @---------------------------------------------------
  81. */
  82. function fGetwordinfo()
  83. {
  84. // 초기화 START
  85. model.removenode(sSELWORDINFO_PATH);
  86. model.makeNode(sSELWORDINFO_PATH);
  87. //send parameter 초기화
  88. model.removeNodeset("/root/send/wordinfo/reqdata");
  89. model.makeNode("/root/send/wordinfo/reqdata");
  90. model.copyNode("/root/send/wordinfo/reqdata", "/root/main/cond/wordinfo");
  91. // 초기화 END
  92. //submit 호출
  93. if(!submit("TRMRE00201")){
  94. messageBox("조회를 실패하였습니다.", "E999");
  95. return;
  96. }
  97. }
  98. /**
  99. * @---------------------------------------------------
  100. * @creat : 20100000
  101. * @author : 최원돈
  102. * @desc : 폴더별 술식어를 조회
  103. * @---------------------------------------------------
  104. */
  105. function fGetfoldwordinfo()
  106. {
  107. // 자식폴드가 있으면 조회안됨.
  108. if ( tr_fold.value == ""
  109. || instance1.selectSingleNode(sSELFOLDLIST_PATH + "[pwmid='" + tr_fold.value + "']") != null)
  110. {
  111. return;
  112. }
  113. // 초기화 START
  114. model.removenode(sSELFOLDWORDINFO_PATH);
  115. model.makeNode(sSELFOLDWORDINFO_PATH);
  116. //send parameter 초기화
  117. model.removeNodeset("/root/send/foldwordinfo/reqdata");
  118. model.makeNode("/root/send/foldwordinfo/reqdata");
  119. model.copyNode("/root/send/foldwordinfo/reqdata", "/root/main/cond/foldwordinfo");
  120. // 초기화 END
  121. //submit 호출
  122. if(!submit("TRMRE00601")){
  123. messageBox("조회를 실패하였습니다.", "E999");
  124. return;
  125. }
  126. setActiveInit(); // 초기화 (조회, 저장 후)
  127. }
  128. /**
  129. * @---------------------------------------------------
  130. * @creat : 20100000
  131. * @author : 최원돈
  132. * @desc : 초기화 (조회, 저장 후)
  133. * @---------------------------------------------------
  134. */
  135. function setActiveInit()
  136. {
  137. createTempNode(); // Temp 노드를 생성한다.
  138. model.removeNodeset(sMODFOLDWORDINFO_PATH);
  139. model.makeNode(sMODFOLDWORDINFO_PATH);
  140. model.removeNodeset(sDELFOLDWORDINFO_PATH);
  141. model.makeNode(sDELFOLDWORDINFO_PATH);
  142. }
  143. /**
  144. * @---------------------------------------------------
  145. * @creat : 20100000
  146. * @author : 최원돈
  147. * @desc : 폴더별 술식어 저장
  148. * @---------------------------------------------------
  149. */
  150. function fClkBtnfoldwordSave()
  151. {
  152. if(chkMsetIdenNode(aPKCOLID_MASTLIST, sSELFOLDWORDLIST_ORG_PATH, sSELFOLDWORDINFO_PATH, sDELFOLDWORDINFO_PATH, sMODFOLDWORDINFO_PATH, false, "insertwmid", null, "m", "i")) // 동일여부체크
  153. {
  154. messageBox("저장할 데이터가", "I004");
  155. return;
  156. }
  157. //send parameter 초기화
  158. model.removeNodeset("/root/send/foldwordinfo/reqdata");
  159. model.makeNode("/root/send/foldwordinfo/reqdata");
  160. model.copyNode("/root/send/foldwordinfo/reqdata", "/root/main/cond/foldwordinfo");
  161. model.removeNodeset("/root/send/foldwordinfo/savedata");
  162. var modfoldwordinfo = instance1.selectSingleNode(sMODFOLDWORDINFO_PATH);
  163. var delfoldwordinfo = instance1.selectSingleNode(sDELFOLDWORDINFO_PATH);
  164. if ( modfoldwordinfo != null
  165. && modfoldwordinfo.childNodes.length > 0) // 추가, 수정정보를 save에 등록한다.
  166. {
  167. model.makeNode ("/root/send/foldwordinfo/savedata/modlist");
  168. model.makeValue("/root/send/foldwordinfo/savedata/modlist", getNodeListCSV(modfoldwordinfo.childNodes));
  169. }
  170. if ( delfoldwordinfo != null
  171. && delfoldwordinfo.childNodes.length > 0) // 삭제정보를 save에 등록한다.
  172. {
  173. model.makeNode ("/root/send/foldwordinfo/savedata/dellist");
  174. model.makeValue("/root/send/foldwordinfo/savedata/dellist", getNodeListCSV(delfoldwordinfo.childNodes));
  175. }
  176. if(!submit("TXMRE00601")){
  177. messageBox("저장을 실패하였습니다.", "E999");
  178. return;
  179. }
  180. setActiveInit(); // 초기화 (조회, 저장 후)
  181. model.refresh();
  182. }
  183. /**
  184. * @---------------------------------------------------
  185. * @creat : 20100000
  186. * @author : 최원돈
  187. * @desc : Temp 노드를 생성한다.
  188. * @---------------------------------------------------
  189. */
  190. function createTempNode()
  191. {
  192. model.removeNodeset(sSELFOLDWORDINFO_ORG_PATH);
  193. model.makeNode(sSELFOLDWORDINFO_ORG_PATH);
  194. model.copyNode(sSELFOLDWORDINFO_ORG_PATH, sSELFOLDWORDINFO_PATH);
  195. }
  196. /**
  197. * @---------------------------------------------------
  198. * @creat : 20100000
  199. * @author : 최원돈
  200. * @desc : 술식어 팝업메뉴 '입력' 클릭 시 폴더별 술식에 삽입
  201. * @---------------------------------------------------
  202. */
  203. function InsertrowFoldWord()
  204. {
  205. if (tr_fold.selectedindex == -1)
  206. {
  207. messageBox("폴더를 선택하세요!", "E999");
  208. return;
  209. }
  210. if (instance1.selectSingleNode(sSELFOLDLIST_PATH + "[pwmid='" + tr_fold.value + "']") != null)
  211. {
  212. messageBox("자식가 있으로 추가할 수 없습니다. 자식 폴더를 선택하세요!", "E999");
  213. return;
  214. }
  215. var lb_endyn = false;
  216. var li_currentrow = grd_foldwordlist.row;
  217. var li_rows = grd_foldwordlist.rows;
  218. var li_row = grd_foldwordlist.rows - 1;
  219. var cnt = 0; // seq 증가변수
  220. if (li_currentrow > 0)
  221. {
  222. li_row = li_currentrow;
  223. }
  224. for(var i=0; i<grd_wordlist.selectedRows; i++)
  225. {
  226. if (grd_wordlist.selectedRow(i) > 0)
  227. {
  228. if (i == grd_wordlist.selectedRows - 1) // 마지막에 refresh
  229. {
  230. lb_endyn = true;
  231. }
  232. var ls_wrpid = grd_wordlist.valueMatrix(grd_wordlist.selectedRow(i), grd_wordlist.colRef("wrpid"));
  233. if ( li_rows < 2
  234. || ( li_rows > 1
  235. && grd_foldwordlist.findRow(ls_wrpid, 0, grd_foldwordlist.colRef("wrpid"), false, true) < 0)) // 동일한 정보가 있다면 추가에서 제외
  236. {
  237. if (li_currentrow > 0)
  238. {
  239. grd_foldwordlist.insertRow(li_row, "below", false, true);
  240. }
  241. else
  242. {
  243. grd_foldwordlist.addRow(false);
  244. }
  245. ++li_row;
  246. grd_foldwordlist.valueMatrix(li_row, grd_foldwordlist.colRef("wmid")) = tr_fold.value;
  247. grd_foldwordlist.valueMatrix(li_row, grd_foldwordlist.colRef("wrpid")) = grd_wordlist.valueMatrix(grd_wordlist.selectedRow(i), grd_wordlist.colRef("wrpid"));
  248. grd_foldwordlist.valueMatrix(li_row, grd_foldwordlist.colRef("content")) = grd_wordlist.valueMatrix(grd_wordlist.selectedRow(i), grd_wordlist.colRef("content"));
  249. grd_foldwordlist.valueMatrix(li_row, grd_foldwordlist.colRef("seq")) = 10 * (++cnt);
  250. grd_foldwordlist.valueMatrix(li_row, grd_foldwordlist.colRef("status")) = "i";
  251. }
  252. if ( lb_endyn
  253. && cnt > 0)
  254. {
  255. grd_foldwordlist.refresh();
  256. grd_foldwordlist.bottomrow = grd_foldwordlist.row;
  257. }
  258. }
  259. }
  260. initPopupMenu(); // Reset Right Popupmenu
  261. }
  262. /**
  263. * @---------------------------------------------------
  264. * @creat : 20100000
  265. * @author : 최원돈
  266. * @desc : 폴더별 술식어 삭제
  267. * @---------------------------------------------------
  268. */
  269. function fClkBtnfoldwordDel()
  270. {
  271. var delnode = instance1.selectSingleNode(sDELFOLDWORDINFO_PATH);
  272. var la_foldwordsel = new Array();
  273. // 삭제 ros Desc 임시 저장
  274. var j = 0;
  275. for(var i=(grd_foldwordlist.selectedRows-1); i>=0; i--)
  276. {
  277. la_foldwordsel[j++] = grd_foldwordlist.selectedRow(i);
  278. }
  279. // 삭제 노드를 '삭제노드'에 임시 저장을 하고, 삭제함(=> 저장 시 삭제정보 활용)
  280. for(i=0; i<la_foldwordsel.length; i++)
  281. {
  282. li_row = la_foldwordsel[i];
  283. var ls_pkcond = "";
  284. // 비교하기 위해서 PK 를 추출
  285. for (j=0; j<aPKCOLID_MASTLIST.length; j++)
  286. {
  287. if (ls_pkcond != "")
  288. {
  289. ls_pkcond += " and ";
  290. }
  291. var ls_pkvalue = grd_foldwordlist.valueMatrix(li_row, grd_foldwordlist.colRef(aPKCOLID_MASTLIST[j]));
  292. if (ls_pkvalue == "")
  293. {
  294. ls_pkcond = "";
  295. break;
  296. }
  297. ls_pkcond += aPKCOLID_MASTLIST[j] + "='" + ls_pkvalue + "'";
  298. }
  299. if (ls_pkcond == "") // PK가 존재하지 않을 경우 [추가일 경우]
  300. {
  301. grd_foldwordlist.deleteRow(li_row, false);
  302. }
  303. else
  304. {
  305. var ls_cond = sSELFOLDWORDLIST_PATH + "[" + ls_pkcond + "]";
  306. delnode.appendChild(instance1.selectSingleNode(ls_cond));
  307. // delnode.lastChild.selectSingleNode("status").NodeValue = "d";
  308. grd_foldwordlist.deleteRow(li_row, false);
  309. }
  310. }
  311. model.refresh();
  312. }