SPMMB03600.xjs 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/***************************************************************************************
  3. * System Name : KNUH2.0
  4. * Job Name : EMR
  5. * Creator :
  6. * Make Date : 2015-02-06
  7. * Description :
  8. *---------------------------------------------------------------------------------------
  9. * Modify Date Modifier Modify Description
  10. *---------------------------------------------------------------------------------------
  11. * 2015-02-06 Live Converter TF->XP
  12. *
  13. *---------------------------------------------------------------------------------------
  14. ****************************************************************************************/
  15. //=======================================================================================
  16. // Function
  17. //---------------------------------------------------------------------------------------
  18. /****************************************************************************************
  19. * Function : fReqOrderInfoOfCol
  20. * Description : 화면ID에 해당하는 컬럼순서를 조회한다.
  21. * Argument : grdid : 그리드ID (string)
  22. * return type :
  23. * Creator :
  24. ****************************************************************************************/
  25. function fReqOrderInfoOfCol(grdid){
  26. ds_send_reqdata.clear();
  27. dsf_makeValue(ds_send_reqdata,"userid","string", sysf_getUserInfo("userid"));
  28. dsf_makeValue(ds_send_reqdata,"scrnid","string", ds_main_cond.getColumn(0,"scrnid"));
  29. var oParam = {};
  30. oParam.id = "TRMMB01103";
  31. oParam.service = "prcpbaseapp.EnvInfoMngt";
  32. oParam.method = "reqGetUserScrnEnvEstb";
  33. oParam.inds = "req=ds_send_reqdata";
  34. oParam.outds = "ds_init_gridseq_resize=gridseq";
  35. oParam.async = false;
  36. oParam.callback = "cf_TRMMB01103";
  37. tranf_submit(oParam);
  38. if(arErrorCode.pop("TRMMB01103") > -1) {
  39. if(ds_init_gridseq_resize.rowcount>0){
  40. //fSetOrderInfoOfCol(grdid, refdata, sizedata, frozencol);
  41. //setOrderInfoOfCol(grdid + "_resize", refdata, sizedata, frozencol);
  42. setOrderInfoOfCol(components[grdid + "_resize"], ds_init_gridseq_resize);
  43. }
  44. }
  45. }
  46. /****************************************************************************************
  47. * Function : fReqBasicOrderInfoOfCol
  48. * Description : 화면ID에 해당하는 기본 컬럼순서를 조회한다.
  49. * Argument : grdid : 그리드ID (string)
  50. * return type :
  51. * Creator :
  52. ****************************************************************************************/
  53. function fReqBasicOrderInfoOfCol(grdid){
  54. ds_send_reqdata.clear();
  55. dsf_makeValue(ds_send_reqdata,"userid","string", "00000"); // 병원 공통(00000) 기본 컬럼을 조회 한다.
  56. dsf_makeValue(ds_send_reqdata,"scrnid","string", ds_main_cond.getColumn(0,"scrnid"));
  57. var oParam = {};
  58. oParam.id = "TRMMB01103";
  59. oParam.service = "prcpbaseapp.EnvInfoMngt";
  60. oParam.method = "reqGetUserScrnEnvEstb";
  61. oParam.inds = "req=ds_send_reqdata";
  62. oParam.outds = "ds_init_gridseq=gridseq";
  63. oParam.async = false;
  64. oParam.callback = "cf_TRMMB01103";
  65. tranf_submit(oParam);
  66. if(arErrorCode.pop("TRMMB01103") > -1) {
  67. if(ds_init_gridseq.rowcount>0){
  68. //fSetOrderInfoOfCol(grdid + "_basic", refdata, sizedata, frozencol);
  69. setOrderInfoOfCol(components[grdid], ds_init_gridseq);
  70. }
  71. }
  72. }
  73. /****************************************************************************************
  74. * Function : cf_TRMMB01103
  75. * Description : TRMMB01103 콜백함수
  76. * Argument :
  77. * return type :
  78. * Creator :
  79. ****************************************************************************************/
  80. function cf_TRMMB01103(sSvcId, nErrorCode, sErrorMsg) {
  81. arErrorCode.push(sSvcId, nErrorCode);
  82. }
  83. /****************************************************************************************
  84. * Function : fInitOrderOfCol
  85. * Description : 사용자화면 설정 초기화
  86. * Argument :
  87. * return type :
  88. * Creator :
  89. ****************************************************************************************/
  90. function fInitOrderOfCol(){
  91. var grdid = ds_main_cond.getColumn(0,"grdid");
  92. fGetOrderInfoOfCol(grdid); //현재 default로 설정된 grid의 column과 size를 구한다.
  93. var refdata = ds_listval.getColumn(0,"refdata");
  94. var sizedata = ds_listval.getColumn(0,"sizedata");
  95. var frozencol = ds_listval.getColumn(0,"frozencol");
  96. fSetOrderInfoOfCol(grdid +"_resize", refdata, sizedata, frozencol); //default로 설정된 grid의 column과 size를 다시 설정한다.
  97. }
  98. /****************************************************************************************
  99. * Function : fInitOrderOfCol
  100. * Description : 컬럼 순서 정보를 얻는다.
  101. * Argument : gidID : 그리드ID (string)
  102. * return type :
  103. * Creator :
  104. ****************************************************************************************/
  105. function fGetOrderInfoOfCol(grdID){
  106. var grdObj = components[grdID];
  107. var refdata = ""; // ref
  108. var sizedata = ""; // size
  109. var sFrozenCol = ""; // frozenCols
  110. var refval = "";
  111. var sizeval = "";
  112. var oDataSet = objects[grdObj.binddataset];
  113. var totcol = grdObj.getCellCount("Head");
  114. for(var i = 0; i < totcol; i++){
  115. refval = ((i == 0) && (grdObj.getCellProperty("body", i, "celltype") == "head")) ? "" : lf_getBindCellName(grdObj, i); // 순번 헤더는 ""으로 처리
  116. refdata += refval + "^";
  117. sizeval = grdObj.getRealColSize(i);
  118. sizedata += sizeval + "^";
  119. if(refval != "" && oDataSet.getColumn(0, refval) == "☜") {
  120. sFrozenCol = refval;
  121. }
  122. }
  123. refdata = refdata.substring(0 , refdata.length-1);
  124. sizedata = sizedata.substring(0, sizedata.length-1);
  125. ds_listval.clear();
  126. dsf_makeValue(ds_listval,"refdata" ,"string", refdata);
  127. dsf_makeValue(ds_listval,"sizedata" ,"string", sizedata);
  128. dsf_makeValue(ds_listval,"frozencol","string", sFrozenCol);
  129. }
  130. /****************************************************************************************
  131. * Function : fInitOrderOfCol
  132. * Description : 컬럼 순서 정보 설정한다.
  133. * Argument : gidID : 그리드ID (string)
  134. * : refdata : 그리드 ref데이터 구분자 '^'
  135. * : sizedata : 그리드 size데이터 구분자 '^'
  136. * return type :
  137. * Creator :
  138. ****************************************************************************************/
  139. function fSetOrderInfoOfCol(grdID, refdata, sizedata, frozencol, bColor){
  140. var grdObj = components[grdID];
  141. var refarr = refdata.split("^");
  142. var sizearr = sizedata.split("^");
  143. var frozencolIndex = grdObj.getBindCellIndex("body", frozencol);
  144. grdObj.enableevent = false;
  145. grdObj.enableredraw = false;
  146. try {
  147. for(var i = 0; i < refarr.length; i++) {
  148. var nCol = i;
  149. var colText = refarr[i];
  150. var col = grdObj.getBindCellIndex("body", colText);
  151. if(col == -1) continue;
  152. if(i != col) {
  153. var headText = grdObj.getCellProperty("head", col, "text");
  154. var bodyText = grdObj.getCellProperty("body", col, "text");
  155. grdObj.deleteContentsCol(col);
  156. nCol = grdObj.insertContentsCol(i);
  157. grdObj.setCellProperty("head", nCol, "text", headText);
  158. grdObj.setCellProperty("body", nCol, "text", bodyText);
  159. }
  160. grdObj.setFormatColProperty(nCol, "size", sizearr[i]);
  161. grdObj.setFormatColProperty(nCol, "band", (frozencolIndex != -1 && nCol <= frozencolIndex) ? "left" : "body");
  162. }
  163. } finally {
  164. grdObj.enableevent = true;
  165. grdObj.enableredraw = true;
  166. }
  167. if(!utlf_isNull(frozencol))
  168. objects[grdObj.binddataset].setColumn(0, frozencol, "☜");
  169. }
  170. /****************************************************************************************
  171. * Function : fSaveOrderInfoCol
  172. * Description : 그리드 ref, size저장
  173. * Argument :
  174. * return type :
  175. * Creator :
  176. ****************************************************************************************/
  177. function fSaveOrderInfoCol(){
  178. var grdid = ds_main_cond.getColumn(0,"grdid");
  179. var scrnid = ds_main_cond.getColumn(0,"scrnid");
  180. fGetOrderInfoOfCol(grdid + "_resize");
  181. var refdata = ds_listval.getColumn(0, "refdata");
  182. var sizedata = ds_listval.getColumn(0, "sizedata");
  183. var sFrozenCol = ds_listval.getColumn(0, "frozencol");
  184. ds_send_savedata.clear();
  185. dsf_makeValue(ds_send_savedata,"compscnts", "string", ""); //추후 삭제 예정
  186. dsf_makeValue(ds_send_savedata,"scrnid", "string", scrnid);
  187. dsf_makeValue(ds_send_savedata,"compsrefcnts", "string", refdata);
  188. dsf_makeValue(ds_send_savedata,"compssizecnts","string", sizedata);
  189. dsf_makeValue(ds_send_savedata,"frozencol", "string", sFrozenCol);
  190. dsf_makeValue(ds_send_savedata,"compscd" , "string", ds_init_gridseq_resize.getColumn(0, "compscd"));
  191. var oParam = {};
  192. oParam.id = "TXMMB01102";
  193. oParam.service = "prcpbaseapp.EnvInfoMngt";
  194. oParam.method = "reqInsUserScrnEnvEstb";
  195. oParam.inds = "req=ds_send_savedata";
  196. oParam.async = false;
  197. tranf_submit(oParam);
  198. }
  199. /****************************************************************************************
  200. * Function : fAddColOfGrd
  201. * Description : 컬럼 추가
  202. * Argument :
  203. * return type :
  204. * Creator :
  205. ****************************************************************************************/
  206. function fAddColOfGrd(obj:PopupMenu, e:MenuClickEventInfo) {
  207. var sAddColNm = ""; // 컬럼명
  208. var sAddColSz = ""; // 컬럼 사이즈
  209. var nCurCol = 0; // 선택된 컬럼 번호
  210. var nSelCol = 0;
  211. var grdid = ds_main_cond.getColumn(0,"grdid");
  212. var SelectedGrdObj = components[grdid];
  213. var ResizeGrdObj = components[grdid + "_resize"];
  214. if(SelectedGrdObj.getCellPos() < 0) return;
  215. var SelectedCells = grdf_getSelectedCols(SelectedGrdObj);
  216. SelectedGrdObj.enableevent = false;
  217. SelectedGrdObj.enableredraw = false;
  218. ResizeGrdObj.enableevent = false;
  219. ResizeGrdObj.enableredraw = false;
  220. try {
  221. for(var i = 0; i < SelectedCells.length; i++) {
  222. var nCurCol = SelectedCells[i];
  223. var sAddColNm = lf_getBindCellName(SelectedGrdObj, nCurCol);
  224. var sAddColSz = SelectedGrdObj.getRealColSize(nCurCol);
  225. var nSelCol = ResizeGrdObj.getBindCellIndex("body", sAddColNm);
  226. //sysf_trace(nCurCol+" "+sAddColNm+" "+sAddColSz+" "+nSelCol);
  227. if(nSelCol > 0) {
  228. ResizeGrdObj.setFormatColProperty(nSelCol, "size", sAddColSz);
  229. ResizeGrdObj.setCellProperty("body", nSelCol, "background", "lightgreen");
  230. ResizeGrdObj.setCellProperty("body", nSelCol, "background2", "lightgreen");
  231. }
  232. }
  233. } finally {
  234. SelectedGrdObj.enableevent = true;
  235. SelectedGrdObj.enableredraw = true;
  236. ResizeGrdObj.enableevent = true;
  237. ResizeGrdObj.enableredraw = true;
  238. }
  239. }
  240. /****************************************************************************************
  241. * Function : fDelColOfGrd
  242. * Description : 컬럼 삭제
  243. * Argument :
  244. * return type :
  245. * Creator :
  246. ****************************************************************************************/
  247. function fDelColOfGrd(obj:PopupMenu, e:MenuClickEventInfo) {
  248. var grdid = ds_main_cond.getColumn(0,"grdid");
  249. var ResizeGrdObj = components[grdid + "_resize"];
  250. var selectedCells = grdf_getSelectedCols(ResizeGrdObj);
  251. for(var i = 0; i < selectedCells.length; i++){
  252. var nCurCol = selectedCells[i];
  253. ResizeGrdObj.setFormatColProperty(nCurCol, "size", 0);
  254. if(ResizeGrdObj.getCellProperty("body", nCurCol, "background") == "lightgreen")
  255. ResizeGrdObj.setCellProperty("body", nCurCol, "background", null);
  256. if(ResizeGrdObj.getCellProperty("body", nCurCol, "background2") == "lightgreen")
  257. ResizeGrdObj.setCellProperty("body", nCurCol, "background2", null);
  258. }
  259. }
  260. /****************************************************************************************
  261. * Function : fAddColDragStart
  262. * Description : 컬럼 추가 드래그 시작
  263. * Argument :
  264. * return type :
  265. * Creator :
  266. ****************************************************************************************/
  267. function fAddColDragStart(obj:Grid, e:GridDragEventInfo){
  268. var sDropData = ""; // Drag Drop 파라미터 데이터
  269. var sDragColNm = ""; // 컬럼명
  270. var sDragColSz = ""; // 컬럼 사이즈
  271. var nCurCol = 0; // 선택된 컬럼 번호
  272. var SelectedCells = grdf_getSelectedCols(obj);
  273. for(var i = 0; i < SelectedCells.length; i++){
  274. nCurCol = SelectedCells[i];
  275. sDragColNm = lf_getBindCellName(obj, nCurCol);
  276. sDragColSz = obj.getRealColSize(nCurCol);
  277. if(eval(sDragColSz) > 0) {
  278. if(utlf_isNull(sDropData)) {
  279. sDropData = sDragColNm + "^" + sDragColSz;
  280. } else {
  281. sDropData = sDropData + "|" + sDragColNm + "^" + sDragColSz;
  282. }
  283. }
  284. }
  285. e.userdata = sDropData;
  286. }
  287. /****************************************************************************************
  288. * Function : fAddColDrop
  289. * Description : 컬럼 추가 드래그 종료
  290. * Argument :
  291. * return type :
  292. * Creator :
  293. ****************************************************************************************/
  294. function fAddColDrop(obj:Grid, e:GridDragEventInfo){
  295. var sDragColNm = "";
  296. var sDragColSz = "";
  297. var nPreCol = 0; // 옮기기전 Col
  298. var nSelCol = 0; // 옮긴후 Col
  299. var grdid = ds_main_cond.getColumn(0,"grdid");
  300. var ResizeGrdObj = components[grdid + "_resize"];
  301. if(e.sourceobject.name == grdid) {
  302. if(!utlf_isNull(e.userdata)) {
  303. nSelCol = e.col; // 초기값은 마우스로 선택된 컬럼
  304. var selColNm = lf_getBindCellName(ResizeGrdObj, nSelCol); // 현재 선택한 컬럼의 이름
  305. var saDropData = e.userdata.split("|");
  306. ResizeGrdObj.enableevent = false;
  307. ResizeGrdObj.enableredraw = false;
  308. try {
  309. var tempRefdata = ""; // ref
  310. var tempSizedata = ""; // size
  311. var refdata = "";
  312. var sizedata = "";
  313. var refval = "";
  314. var sizeval = "";
  315. var dropColNm = "";
  316. var dropColSz = "";
  317. // 1. 선택하여 드래그한 컬럼들 합침
  318. for(var i = 0; i < saDropData.length; i++) {
  319. var saDropCol = saDropData[i].split("^");
  320. dropColNm += saDropCol[0] + "^";
  321. dropColSz += saDropCol[1] + "^";
  322. }
  323. dropColNm = dropColNm.substring(0 , dropColNm.length-1);
  324. dropColSz = dropColSz.substring(0 , dropColSz.length-1);
  325. // 2. 사용자 설정 그리드의 전체 열에서 드래그한 컬럼들 제거(집어넣는 위치의 컬럼은 제외)
  326. var totcol = ResizeGrdObj.getCellCount("Head");
  327. for(var i = 0; i < totcol; i++){
  328. var colText = lf_getBindCellName(ResizeGrdObj, i);
  329. refval = ((i == 0) ? "" : colText); // 순번 헤더는 ""으로 처리
  330. sizeval = ResizeGrdObj.getRealColSize(i);
  331. var isExist = false;
  332. for(var j = 0; j < saDropData.length; j++) {
  333. var saDropCol = saDropData[j].split("^");
  334. if(colText == saDropCol[0] && selColNm != colText) { // 집어넣은 위치에 있는 컬럼은 제외
  335. isExist = true;
  336. saDropData.splice(j, 1);
  337. break;
  338. }
  339. }
  340. if(!isExist) {
  341. tempRefdata += refval + "^";
  342. tempSizedata += sizeval + "^";
  343. }
  344. }
  345. tempRefdata = tempRefdata.substring(0 , tempRefdata.length-1);
  346. tempSizedata = tempSizedata.substring(0, tempSizedata.length-1);
  347. // 3. 집어 넣은 위치의 컬럼에 드래그 한 컬럼들을 삽입
  348. var ttempRefdata = tempRefdata.split("^");
  349. var ttempSizedata = tempSizedata.split("^");
  350. for(var i = 0; i < ttempRefdata.length; i++) {
  351. refval = ttempRefdata[i];
  352. sizeval = ttempSizedata[i];
  353. if(selColNm == ttempRefdata[i]) {
  354. var dragColNm = dropColNm.split("^");
  355. var isExist = false;
  356. for(var j = 0; j < dragColNm.length; j++) {
  357. if(refval == dragColNm[j]) {
  358. isExist = true;
  359. break;
  360. }
  361. }
  362. if(isExist) {
  363. refval = dropColNm;
  364. sizeval = dropColSz;
  365. } else {
  366. refval = refval + "^" + dropColNm;
  367. sizeval = sizeval + "^" + dropColSz;
  368. }
  369. }
  370. refdata += refval + "^";
  371. sizedata += sizeval + "^";
  372. }
  373. refdata = refdata.substring(0 , refdata.length-1);
  374. sizedata = sizedata.substring(0, sizedata.length-1);
  375. // 4. 컬럼 재 설정
  376. fSetOrderInfoOfCol(grdid + "_resize", refdata, sizedata);
  377. // 5. 변경 된 부분 색상 칠하기
  378. var dropdata = e.userdata.split("|");
  379. for(var i = 0; i < dropdata.length; i++) {
  380. var saDropCol = dropdata[i].split("^");
  381. var dropCol = ResizeGrdObj.getBindCellIndex("body", saDropCol[0]);
  382. ResizeGrdObj.setCellProperty("body", dropCol, "background", "lightgreen");
  383. ResizeGrdObj.setCellProperty("body", dropCol, "background2", "lightgreen");
  384. }
  385. } finally {
  386. ResizeGrdObj.enableevent = true;
  387. ResizeGrdObj.enableredraw = true;
  388. }
  389. }
  390. }
  391. }
  392. /****************************************************************************************
  393. * Function : fAddColDragOver
  394. * Description : 컬럼 추가 드래그 종료
  395. * Argument :
  396. * return type :
  397. * Creator :
  398. ****************************************************************************************/
  399. function fAddColDragOver(obj:Grid, e:GridDragEventInfo){
  400. if(e.button == "lbutton")
  401. obj.style.cursor = "hand";
  402. else
  403. obj.style.cursor = "auto";
  404. }
  405. ]]></Script>