SMADC01600.js 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614
  1. /**
  2. * 파 일 명 : SMADC01600.js
  3. * 설 명 : 약품식별회신등록 Javascriot
  4. * 설 계 자 : 공두경
  5. * 작 성 자 : 공두경
  6. * 수정이력 : 2007.07.20 / 최초작성 / 공두경
  7. */
  8. var gTimer = null;
  9. //=======================================================================================================
  10. // 초기화
  11. //=======================================================================================================
  12. function fInit() {
  13. model.removeNodeset("/root/main/cnst/drugidlist");
  14. var pid = model.getValue("/root/temp/cnstinfo/pid");
  15. var rgstseqno= model.getValue("/root/temp/cnstinfo/rgstseqno");
  16. if ( pid != ""){
  17. model.setValue("/root/main/cnst/patinfolist/pid",pid);
  18. model.setValue("/root/send/srchinfo/rgstseqno", rgstseqno);
  19. model.refresh();
  20. fRefDrugidCnst();
  21. grd_drugid.rebuild();
  22. }
  23. // 상품명(hngnm)이 존재하지 않으면 그리드를 지움
  24. if(model.getValue("/root/main/cnst/drugidlist["+1+"]/idseqno") == "")
  25. model.removeNodeset("/root/main/cnst/drugidlist");
  26. if(model.getValue("/root/temp/cnstinfo/pidchkflag") == "Y") {
  27. // 20100119_laboru_약사 이외의 사용자인 경우
  28. btn_save.disabled = true;
  29. btn_repl.disabled = true;
  30. btn_del.disabled = true;
  31. }
  32. // alert("약품의뢰합니다.")
  33. model.refresh();
  34. }
  35. //=======================================================================================================
  36. // 약품식별회신등록 정보 조회
  37. //=======================================================================================================
  38. function fRefDrugidCnst(){
  39. var rowcnt = 0;
  40. if(model.getValue("/root/main/cnst/patinfolist/pid") != ""){
  41. // 소요시간을 체크(ON/OFF) flag를 초기화
  42. // tmflag == 1 : ON. 타이머 중지
  43. // tmflag == 0 : OFF. 타이머시작
  44. model.setValue("/root/hidden/tmflag","1");
  45. var controlObj = document.controls("btn_tm");
  46. controlObj.dispatch("onclick");
  47. model.resetInstanceNode("/root/main/cnst/drugidlist");
  48. //model.resetInstanceNode("/root/send/srchinfo");
  49. // 입력된 등록번호로 조회
  50. model.setValue("/root/send/srchinfo/pid", model.getValue("/root/main/cnst/patinfolist/pid"));
  51. submit("TRADC01601");
  52. //회신일시 설정 (회신일자 + 회신시간)
  53. model.setValue("/root/main/cnst/cnstinfo/pid", model.getValue("/root/main/cnst/patinfolist/pid"));
  54. var repldd = model.getValue("/root/main/cnst/cnstinfo/repldd");
  55. var repltm = model.getValue("/root/main/cnst/cnstinfo/repltm");
  56. model.setValue("/root/hidden/repldt",repldd+repltm);
  57. // 조회된 식별상세정보가 없으면 그리드 초기화
  58. if(model.getValue("/root/main/cnst/drugidlist["+1+"]/idseqno") == ""){
  59. model.removeNodeset("/root/main/cnst/drugidlist");
  60. }else{
  61. fImgSetting(true);
  62. }
  63. // 저장된 약반송 여부가 없으면 의뢰시 지정한 약반송 여부 표시
  64. if(model.getValue("/root/main/cnst/cnstinfo/drugrtn") == ""){
  65. model.setValue("/root/main/cnst/cnstinfo/drugrtn", model.getValue("/root/main/cnst/cnstinfo2/drugrtn"));
  66. }
  67. // 기존 작성자가 존재하지 않으면 현재 사용자의 아이디값으로 설정
  68. if(model.getValue("/root/main/cnst/cnstinfo/writnm") == ""){
  69. model.setValue("/root/main/cnst/cnstinfo/writid", getUserId());
  70. model.setValue("/root/main/cnst/cnstinfo/writnm", getUserName());
  71. }
  72. fBtnDisabled();
  73. }else{
  74. messageBox("등록번호를 ","C001");
  75. }
  76. rowcnt = rowcnt + 1 ;
  77. model.setValue("/root/main/cnst/drugidlist["+1+"]/rowcnt", rowcnt);
  78. // alert(rowcnt)
  79. model.refresh();
  80. opener.btn_sea.dispatch("DOMActivate");
  81. opener.model.refresh();
  82. }
  83. //=======================================================================================================
  84. // 이미지 설정
  85. //=======================================================================================================
  86. function fImgSetting(orgimg){
  87. model.refresh();
  88. for( var i = grd_drugid.fixedRows ; i < grd_drugid.rows ; i++ ) {
  89. setImageRefInstance("/root/main/cnst/drugidlist["+i+"]/phot");
  90. var photyn = model.getValue("/root/main/cnst/drugidlist["+i+"]/phot");
  91. if(photyn != "") {
  92. model.setValue("/root/main/cnst/drugidlist["+i+"]/photyn","Y");
  93. }
  94. if(grd_drugid.colWidth(3) < 220)
  95. grd_drugid.colWidth(3) = 220;
  96. if(grd_drugid.rowHeight(i) < 82)
  97. grd_drugid.rowHeight(i) = 82;
  98. if(orgimg == true){
  99. // orgimg == Y : 기존 이미지 정보
  100. // orgimg == N : 사용자 임의 이미지 임의 등록
  101. model.setValue("/root/main/cnst/drugidlist["+i+"]/orgimg","Y");
  102. }
  103. }
  104. }
  105. //=======================================================================================================
  106. // 약품식별 검색 팝업 열기
  107. //=======================================================================================================
  108. function fPopupDrugIDSrch() {
  109. //modal("SPADC60300",0,50,50,"SPADC60300","","");
  110. open("SPADC60300",0,50,50,"SPADC60300");
  111. //grd_drugid.rebuild();
  112. model.refresh();
  113. }
  114. //=======================================================================================================
  115. // 약품식별 회신 저장
  116. //=======================================================================================================
  117. function fSaveReqDrugId() {
  118. if(model.getValue("/root/main/cnst/patinfolist/pid") != ""){
  119. model.setValue("/root/hidden/tmflag","1");
  120. var controlObj = document.controls("btn_tm");
  121. controlObj.dispatch("onclick");
  122. /*
  123. //---------- 회신이 아니면 저장상태로 설정
  124. if(model.getValue("/root/main/cnst/cnstinfo/statflag") != "Z"){
  125. model.setValue("/root/main/cnst/cnstinfo/statflag", "D"); //저장
  126. model.makeValue("/root/main/cnst/cnstinfo/cnststat", "21"); //회신임시
  127. model.setValue("/root/main/cnst/cnstinfo/writid", getUserId());
  128. }
  129. */
  130. //---------- 의뢰내역을 회신내역에 저장------------------------------------------------------------------
  131. model.makeValue("/root/main/cnst/cnstinfo/cnstseqno", model.getValue("/root/main/cnst/cnstinfo2/cnstseqno"));
  132. model.makeValue("/root/main/cnst/cnstinfo/formrecseq", model.getValue("/root/main/cnst/cnstinfo2/formrecseq"));
  133. model.makeValue("/root/main/cnst/cnstinfo/prcphosp",model.getValue("/root/main/cnst/cnstinfo2/prcphosp"));
  134. model.makeValue("/root/main/cnst/cnstinfo/prcphosptel",model.getValue("/root/main/cnst/cnstinfo2/prcphosptel"));
  135. model.makeValue("/root/main/cnst/cnstinfo/prcppharm", model.getValue("/root/main/cnst/cnstinfo2/prcppharm"));
  136. model.makeValue("/root/main/cnst/cnstinfo/prcppharmtel",model.getValue("/root/main/cnst/cnstinfo2/prcppharmtel"));
  137. model.makeValue("/root/main/cnst/cnstinfo/cnstdd",model.getValue("/root/main/cnst/cnstinfo2/cnstdd"));
  138. model.makeValue("/root/main/cnst/cnstinfo/cnstdeptcd", model.getValue("/root/main/cnst/cnstinfo2/cnstdeptcd"));
  139. model.makeValue("/root/main/cnst/cnstinfo/cnstdrid",model.getValue("/root/main/cnst/cnstinfo2/cnstdrid"));
  140. model.makeValue("/root/main/cnst/cnstinfo/drugresn",model.getValue("/root/main/cnst/cnstinfo2/drugresn"));
  141. model.setValue("/root/main/cnst/cnstinfo/writid", getUserId());
  142. model.copyNode("/root/send/req", "/root/main/cnst/cnstinfo");
  143. if(model.getValue("/root/send/req/pid") == ""){
  144. model.setValue("/root/send/req/pid", model.getValue("/root/main/cnst/patinfolist/pid"));
  145. }
  146. model.makeNode("/root/send/req/drugidlist");
  147. if(fUseYn()) return;
  148. var update = grd_drugid.Getupdatedata();
  149. model.setValue("/root/send/req/drugidlist",update);
  150. var success = submit("TXADC01601",false);
  151. if (success) {
  152. if ( model.getValue("/root/send/srchinfo/rgstseqno") == "" ) {
  153. if ( model.getValue("/root/main/cnst/cnstinfo/rgstseqno") != "" ) {
  154. model.setValue("/root/send/srchinfo/rgstseqno", model.getValue("/root/main/cnst/cnstinfo/rgstseqno"));
  155. } else {
  156. model.setValue("/root/send/srchinfo/rgstseqno", model.getValue("/root/hidden/item/rgstseqno"));
  157. }
  158. }
  159. model.makeValue("/root/hidden/item/saverslt", 'Y');
  160. /*
  161. if(model.getValue("/root/hidden/item/rgstseqno") == "-1"){
  162. messageBox("[취소] 더이상 수정하실 수","I004");
  163. }else if(model.getValue("/root/hidden/item/rgstseqno") == "-2"){
  164. messageBox("[회신확정] 더이상 수정하실 수","I004");
  165. }
  166. */
  167. fRefDrugidCnst();
  168. //fBtnDisabled(); //회신상태에 따라 버튼 활성화 처리
  169. model.resetInstanceNode("root/send/req");
  170. } else {
  171. model.makeValue("/root/hidden/item/saverslt", 'N');
  172. }
  173. //fRefDrugidCnst();
  174. }else{
  175. messageBox("등록번호를 ","C001");
  176. }
  177. model.refresh();
  178. }
  179. //=======================================================================================================
  180. // 회신상태에 따라 버튼 활성화 처리
  181. //=======================================================================================================
  182. function fBtnDisabled() {
  183. if (model.getValue("/root/main/cnst/cnstinfo/statflag") == "Z" ) {
  184. btn_save.disabled = true;
  185. //btn_repl.disabled = true;
  186. btn_del.disabled = true;
  187. } else {
  188. btn_save.disabled = false;
  189. btn_repl.disabled = false;
  190. btn_del.disabled = false;
  191. }
  192. if(model.getValue("/root/temp/cnstinfo/btnreplflag") == "Y") {
  193. // 20100118_laboru_회신완료 상태일때 회신버튼 비활성화 위해서
  194. btn_repl.disabled = true;
  195. }
  196. }
  197. //=======================================================================================================
  198. // 본원 사용여부 판별
  199. // 본원 사용여부 판별은 서버단에서 실행
  200. //=======================================================================================================
  201. function fUseYn(){
  202. for(var i = grd_drugid.fixedRows; i < grd_drugid.rows; i++){
  203. var tmp_var1 = ""; // 본원사용여부
  204. var tmp_var2 = ""; // 본원사용여부 comment
  205. var pos = 0; //
  206. var org_useyn = model.getValue("/root/main/cnst/drugidlist["+i+"]/useyn").getTrim();
  207. var tmp_useyn = model.getValue("/root/main/cnst/drugidlist["+i+"]/useyn").setReplaceWord("\n","").getTrim();
  208. // 처음 구분값에 O or X가 없으면 입력양식에 일치하지 않는 것으로 판단
  209. if(org_useyn != ""){
  210. tmp_var1 = tmp_useyn.substr(0, 1).getTrim();
  211. if(isSearchString(tmp_var1.toUpperCase(),"O")){
  212. tmp_var1 = "O";
  213. pos = org_useyn.toUpperCase().indexOf("O");
  214. }else if(isSearchString(tmp_var1.toUpperCase(),"X")){
  215. tmp_var1 = "X";
  216. pos = org_useyn.toUpperCase().indexOf("X");
  217. }else{
  218. messageBox("[본원사용 여부 : O 혹은 X] 입력방식이","E004");
  219. return true;
  220. }
  221. tmp_var2 = org_useyn.substr(pos+1);
  222. //model.setValue("/root/main/cnst/drugidlist["+i+"]/useyn", tmp_var1);
  223. model.setValue("/root/main/cnst/drugidlist["+i+"]/useyncmt",tmp_var2, true);
  224. }
  225. }
  226. return false;
  227. }
  228. //=======================================================================================================
  229. // 약품식별 회신정보와 약품식별회신 상세정보 삭제
  230. //=======================================================================================================
  231. function fDelReqDrugId() {
  232. fSaveReqDrugId();
  233. /*
  234. model.copyNode("/root/send/req", "/root/main/cnst/cnstinfo");
  235. var success = submit("TXADC01602");
  236. if (success) {
  237. submit("TRADC01601");
  238. //fRefDrugidCnst();
  239. }
  240. model.refresh();
  241. */
  242. }
  243. //=======================================================================================================
  244. // 식별정보 행삭제
  245. //
  246. // 선택한 행의 상태에 따라 '행삭제'의 동작 구분
  247. // 행상태 : Insert(상태값 : 1) => 해당행을 지움
  248. // 새로 추가되지 않는 행 => 해당행의 상태값을 delete로 전환
  249. //=======================================================================================================
  250. function fDataGridRowDelete(){
  251. if(grd_drugid.row == -1){
  252. messageBox("삭제할 행을","C002");
  253. }else{
  254. /*
  255. if(grd_drugid.selectedRows != 0){
  256. for(var i =grd_drugid.fixedRows; i < grd_drugid.selectedRows;i++){
  257. // alert(grd_drugid.rowstatus(grd_drugid.selectedRow(i)));
  258. var status = grd_drugid.rowstatus(grd_drugid.selectedRow(i));
  259. if(status == 1 || status == 3){
  260. grd_drugid.deleteItem(grd_drugid.selectedRow(i));
  261. }else{
  262. grd_drugid.addStatus(grd_drugid.selectedRow(i),"delete");
  263. // deleteSelectedRows(grd_drugid, true);
  264. }
  265. }
  266. }
  267. }*/
  268. var rowIdx;
  269. var grd = grd_drugid;
  270. if (grd.selectedRows > 0) {
  271. var selectedRows = Array(grd.selectedRows);
  272. for(i=0;i<grd.selectedRows;i++) {
  273. selectedRows[i] = grd.selectedRow(i);
  274. }
  275. for(i=selectedRows.length-1;i>=0;i--) {
  276. rowIdx = selectedRows[i];
  277. if(grd.rowstatus(rowIdx) == 1 || grd.rowstatus(rowIdx) == 3) { // just inserted row
  278. grd.deleterow(rowIdx,false);
  279. } else {
  280. grd.addStatus(rowIdx,"delete");
  281. grd.rowHidden(rowIdx) = true;
  282. }
  283. }
  284. }
  285. }
  286. }
  287. //=======================================================================================================
  288. // 소요시간체크
  289. //=======================================================================================================
  290. function fStartTimer(){
  291. var cnt = model.getValue("/root/main/cnst/cnstinfo/cnsttm");
  292. cnt ++;
  293. model.setValue("/root/main/cnst/cnstinfo/cnsttm", cnt);
  294. opt_cnsttm.refresh();
  295. }
  296. //=======================================================================================================
  297. // 소요시간체크 중지
  298. //=======================================================================================================
  299. function fStopTimer() {
  300. if(gTimer != null){
  301. window.clearInterval(gTimer);
  302. }
  303. }
  304. //=======================================================================================================
  305. // 공통코드의 getCurrentTime() 일부수정
  306. //
  307. // 현재시간얻기
  308. // return : 년/월/일 시간/분
  309. //=======================================================================================================
  310. function astgetCurrentTime()
  311. {
  312. var sDate = getNewDate();
  313. rtnTime = (( sDate.getHours() > 9 ) ? sDate.getHours() : "0" + sDate.getHours());
  314. rtnTime = rtnTime.toString() + (( sDate.getMinutes() > 9 ) ? sDate.getMinutes() : "0" + sDate.getMinutes());
  315. return rtnTime;
  316. }
  317. //=======================================================================================================
  318. // 마우스 우클릭 팝업메뉴
  319. // 사진불러오기 // 그리드상의 이미지 변경
  320. //=======================================================================================================
  321. function floadimg(){
  322. var imgName = openImageFileDialog("512000");
  323. if (imgName == "") {
  324. return false;
  325. }else{
  326. var tmp = imgName.split("\\"); // 파일경로 분리
  327. var photoid = tmp[tmp.length-1]; // 파일명만 저장
  328. var row = grd_drugid.row;
  329. model.setValue("/root/main/cnst/drugidlist["+row+"]/photoid",photoid);
  330. img_hidden.src = imgName; // 불러온 이미지를 그리드에 삽입하기 위해 생성한 이미지컨트롤 : img_hidden
  331. var data = img_hidden.getbase64data();
  332. model.setValue("/root/main/cnst/drugidlist["+row+"]/phot", data, true);
  333. model.setValue("/root/main/cnst/drugidlist["+row+"]/orgimg", "N"); // 사용자 임의 이미지 등록 상태 : orgimg == N
  334. model.setValue("/root/main/cnst/drugidlist["+row+"]/photyn", "Y");
  335. if(grd_drugid.rowStatus(row) == 0){
  336. grd_drugid.addStatus(row,"update");
  337. }
  338. }
  339. model.refresh();
  340. }
  341. //=======================================================================================================
  342. // 마우스 우클릭 팝업메뉴 // 복사하기
  343. //=======================================================================================================
  344. function astgrid_oncopy() {
  345. var trgObj = document.all.item(event.target);
  346. if( trgObj.elementName == "xforms:datagrid" ) // event.target이 datagrid > input일 경우 return
  347. gridObj = trgObj;
  348. else
  349. return;
  350. var cellValue;
  351. var rClipBoardValue = "";
  352. var gridSelMode = gridObj.selectionMode;
  353. //alert(gridSelMode);
  354. // datagrid@selectionmode가 free일 경우
  355. if( gridSelMode == "free" ) {
  356. if( gridObj.selectedCells.length == 0 )
  357. return;
  358. var firstCell = getFirstCell(gridObj.selectedCells);
  359. var lastCell = getLastCell(gridObj.selectedCells);
  360. //alert(gridObj.selectedCells.length);
  361. //alert(firstCell.row +" "+ lastCell.row+"\n"+firstCell.col+" "+lastCell.col);
  362. var i, j;
  363. for( i = firstCell.row; i <= lastCell.row; i++ ) {
  364. for ( j = firstCell.col; j <= lastCell.col; j++ ) {
  365. if(j != 2 && j != 11){
  366. cellValue = gridObj.valueMatrix(i, j);
  367. //if( cellValue.indexOf("\n") != -1 )
  368. // cellValue = '"' + cellValue + '"';
  369. }else cellValue = "";
  370. rClipBoardValue += cellValue;
  371. if( j != lastCell.col )
  372. rClipBoardValue += "\t";
  373. }
  374. rClipBoardValue += "\r\n";
  375. }
  376. var setClipBoardFlag = true;
  377. // selectedCells 갯수와 rClipBoardValue의 갯수 비교
  378. var cntRClip = 0;
  379. var cntRRow = rClipBoardValue.split("\r\n").length;
  380. var cntRCol = rClipBoardValue.split("\r\n")[0].split("\t").length;
  381. if( gridObj.selectedCells.length != ( cntRRow - 1 ) * cntRCol ) {
  382. setClipBoardFlag = false;
  383. }
  384. // selectedCell이 firstCell부터 lastCell까지 속해있나 비교
  385. for( i = 0; i < gridObj.selectedCells.length; i++ ) {
  386. if( firstCell.row > gridObj.selectedCells.item(i).row || lastCell.row < gridObj.selectedCells.item(i).row ) {
  387. setClipBoardFlag = false;
  388. break;
  389. }
  390. if( firstCell.col > gridObj.selectedCells.item(i).col || lastCell.col < gridObj.selectedCells.item(i).col ) {
  391. setClipBoardFlag = false;
  392. break;
  393. }
  394. }
  395. if( !setClipBoardFlag ) {
  396. messageBox("다중 선택 범위에서는", "E001");
  397. return;
  398. }
  399. }
  400. // datagrid@selectionmode가 bycol일 경우
  401. else if( gridSelMode == "bycol" ) {
  402. if( gridObj.selectedCells.length == 0 )
  403. return;
  404. var firstCell = getFirstCell(gridObj.selectedCells);
  405. var lastCell = getLastCell(gridObj.selectedCells);
  406. //alert(firstCell +" "+ lastCell);
  407. var i, j;
  408. for( i = gridObj.fixedRows; i < gridObj.rows; i++ ) {
  409. for ( j = firstCell.col; j <= lastCell.col; j++ ) {
  410. if(j != 2 && j != 11){
  411. cellValue = gridObj.valueMatrix(i, j);
  412. //if( cellValue.indexOf("\n") != -1 )
  413. // cellValue = '"' + cellValue + '"';
  414. }else cellValue = "";
  415. rClipBoardValue += cellValue;
  416. if( j != lastCell.col )
  417. rClipBoardValue += "\t";
  418. }
  419. rClipBoardValue += "\r\n";
  420. }
  421. }
  422. // datagrid@selectionmode가 default이거나 byrow일 경우
  423. else {
  424. var gridCols = gridObj.Cols;
  425. var selRow;
  426. var i, j;
  427. for( i = 0; i < gridObj.selectedRows; i++ ) {
  428. selRow = gridObj.selectedRow(i);
  429. for ( j = gridObj.fixedCols; j < gridCols; j++ ) {
  430. if(j != 2 && j != 11){
  431. cellValue = gridObj.valueMatrix(selRow, j);
  432. //if( cellValue.indexOf("\n") != -1 )
  433. // cellValue = '"' + cellValue + '"';
  434. }else cellValue = "";
  435. rClipBoardValue += cellValue;
  436. if( j != gridCols - 1 )
  437. rClipBoardValue += "\t";
  438. }
  439. rClipBoardValue += "\r\n";
  440. }
  441. }
  442. if( rClipBoardValue != "" )
  443. window.clipBoardData = rClipBoardValue;
  444. }
  445. //=======================================================================================================
  446. // 마우스 우클릭 팝업메뉴 // 붙여넣기
  447. //=======================================================================================================
  448. function astgrid_onpaste(){
  449. var trgObj = document.all.item(event.target);
  450. if( trgObj.elementName == "xforms:datagrid" ){ // event.target이 datagrid > input일 경우 return
  451. gridObj = trgObj;
  452. }
  453. else{
  454. return;
  455. }
  456. var rClipBoardValue = "";
  457. var gridSelMode = gridObj.selectionMode;
  458. if(window.clipBoardData !="")
  459. var rClipBoardValue = window.clipBoardData;
  460. var clipBoardRow = rClipBoardValue.split("\r\n");
  461. if(gridSelMode = "free"){ // free 모드 동작
  462. var firstCell = getFirstCell(gridObj.selectedCells);
  463. var lastCell = getLastCell(gridObj.selectedCells);
  464. var row = firstCell.row;
  465. for(var i = 0; i < clipBoardRow.length-1; i++){
  466. var clipBoardCol = clipBoardRow[i].split("\t"); // 클립보드에 저장된 내용을 tab 단위로 분리
  467. var col = firstCell.col;
  468. for(var j = 0; j < clipBoardCol.length; j++){
  469. gridObj.ValueMatrix(row, col) = clipBoardCol[j];
  470. col++;
  471. }
  472. row++;
  473. }
  474. }else { // defualt, byrow, list 모드 동작
  475. var gridCols = gridObj.Cols;
  476. var selRow = gridObj.row;
  477. var i, j;
  478. for(var i = 0; i < clipBoardRow.length-1; i++){
  479. var clipBoardCol = clipBoardRow[i].split("\t");
  480. var col = 0;
  481. for(var j = 0; j < clipBoardCol.length; j++){
  482. gridObj.ValueMatrix(row, col) = clipBoardCol[j];
  483. col++;
  484. }
  485. selRow++
  486. }
  487. }
  488. }
  489. //=======================================================================================================
  490. // 마우스 우클릭 팝업메뉴 : 지우기
  491. //
  492. // ** 팝업메뉴 클릭시 모든 기능 동작
  493. // ** 단일행, 셀에 대해서만 단축키 동작 가능
  494. // ** 멀티행, 셀에 대해서는 단축키 동작 불능
  495. //=======================================================================================================
  496. function fgrid_clear(){
  497. var gridSelMode = grd_drugid.selectionMode;
  498. if(gridSelMode == "free"){
  499. var firstCell = getFirstCell(grd_drugid.selectedCells);
  500. var lastCell = getLastCell(grd_drugid.selectedCells);
  501. for(var i = firstCell.row; i <= lastCell.row; i++){
  502. for(var j = firstCell.col; j <= lastCell.col; j++){
  503. grd_drugid.ValueMatrix(i,j) = "";
  504. }
  505. }
  506. }else{
  507. for(var i = 0; i < grd_drugid.selectedRows; i++){
  508. selRow = grd_drugid.selectedRow(i);
  509. for ( j = grd_drugid.fixedCols; j < grd_drugid.cols; j++ ) {
  510. grd_drugid.ValueMatrix(selRow, j) = "";
  511. }
  512. }
  513. }
  514. }
  515. //=======================================================================================================
  516. // 마우스 우클릭 팝업메뉴 // 붙여넣기
  517. //=======================================================================================================
  518. function pasteImg(){
  519. var trgObj = document.all.item(event.target);
  520. if( trgObj.elementName == "xforms:datagrid" ){ // event.target이 datagrid > input일 경우 return
  521. gridObj = trgObj;
  522. }
  523. else{
  524. return;
  525. }
  526. var rClipBoardValue = "";
  527. var gridSelMode = gridObj.selectionMode;
  528. if(window.clipBoardData !="")
  529. var rClipBoardValue = window.clipBoardData;
  530. //var clipBoardRow = rClipBoardValue.split("\r\n");
  531. var Cell = getFirstCell(gridObj.selectedCells);
  532. var row = Cell.row;
  533. var col = Cell.col;
  534. gridObj.ValueMatrix(row, col) = rClipBoardValue;
  535. setImageRefInstance("/root/main/cnst/drugidlist["+row+"]/phot");
  536. if(grd_drugid.colWidth(2) < 250)
  537. grd_drugid.colWidth(2) = 180;
  538. if(grd_drugid.rowHeight(row) < 85)
  539. grd_drugid.rowHeight(row) = 85;
  540. /*
  541. if(orgimg == true){
  542. // orgimg == Y : 기존 이미지 정보
  543. // orgimg == N : 사용자 임의 이미지 임의 등록
  544. model.setValue("/root/main/cnst/drugidlist["+row+"]/orgimg","Y");
  545. }
  546. */
  547. }