MRF03900.js 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623
  1. /**
  2. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  3. 진료 - 이미지편집 ( SSMRF03900.xrw - JScript )
  4. * Version :
  5. - Ver.1.00.01
  6. * 개발자: 이경희
  7. * 최초작성일:
  8. - 2007/07/12
  9. * 수정이력:
  10. - 2008/03/18
  11. * 기타:
  12. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  13. */
  14. /* viewmode
  15. 0 : 원본사이즈
  16. 1 : 스크린에 꽉차게
  17. 2 : 스크린 세로사이즈에 꽉차게
  18. 3 : 스크린 가로사이즈에 꽉차게
  19. 4 : 스크린 가로/사로 사이즈에 맞춤
  20. */
  21. var gNewImgeNo = 100000;
  22. var gIntervalId;
  23. var INTERVAL_TIME = 150;
  24. var gPageInfo;
  25. var gOnlyOneImge = false;
  26. var isLoadImage = false;
  27. /**
  28. * @ver : 2008-03-18
  29. * @desc : 이미지 편집기 화면 생성 시 실행되어 변수들을 초기화함.(페이지가 팝업인지 아닌지 검사하여 그에 따라 변수 설정이 다름.)
  30. * @
  31. * @by : 이경희
  32. * @param:
  33. * @return:
  34. * @---------------------------------------------------
  35. */
  36. function fFormReady()
  37. {
  38. document.controls("obj_thumnail").attribute("visibility") = "hidden";
  39. obj_imge.SetDrawMode(true);
  40. // grup_bottom.attribute("height") = 56;
  41. // grup_bottom.refresh();
  42. grd_imgelist.rowheight(1) = 100;
  43. // for (var i = 0; i < grd_imgelist.cols; i++)
  44. // {
  45. // grd_imgelist.colHidden(i) = true;
  46. // }
  47. if (gPageInfo == null)
  48. {
  49. gPageInfo = new PAGEINFO();
  50. }
  51. if (isPopup())
  52. {
  53. if (model.getValue("/root/temp/modalif/openmode") == "")
  54. {
  55. gPageInfo.fstLevlItemCd = opener.window.javascript.getParameter("fstlevlitemcd");
  56. gPageInfo.formCd = opener.window.javascript.getParameter("formcd");
  57. gPageInfo.formDegnSeq = opener.window.javascript.getParameter("formdegnseq");
  58. }
  59. else
  60. {
  61. if (model.getValue("/root/temp/modalif/imgecd") != "")
  62. {
  63. var imgecd = model.getValue("/root/temp/modalif/imgecd");
  64. if (fRefImgeDateByImgeCd(imgecd))
  65. {
  66. fAddImgeByData(imgecd, "", model.getValue("/root/main/imgview2/image"));
  67. }
  68. }
  69. }
  70. }
  71. //fShowPltte();
  72. }
  73. /**
  74. * @ver : 2008-03-18
  75. * @desc : 이미지 코드로 DB에서 이미지 데이터를 얻어온다.
  76. * @
  77. * @by : 이경희
  78. * @param:
  79. * @return:
  80. * @---------------------------------------------------
  81. */
  82. function fRefImgeDateByImgeCd(imgecd)
  83. {
  84. model.removenode("/root/main/imgview");
  85. model.makeValue("/root/send/imgecode", imgecd);
  86. return submit("TRMMR03603");
  87. }
  88. /**
  89. * @ver : 2008-03-18
  90. * @desc : 부모윈도우의 lookup버튼 속성을 보이게 한다.
  91. * @
  92. * @by : 이경희
  93. * @param:
  94. * @return:
  95. * @---------------------------------------------------
  96. */
  97. function fInitFormByParent()
  98. {
  99. btn_lookup.visible = true;
  100. }
  101. /**
  102. * @ver : 2008-03-18
  103. * @desc : 화면 상단의 이미지 리스트에서 이미지를 더블클릭했을때 실행되는 이벤트 함수이다.
  104. * @
  105. * @by : 이경희
  106. * @param:
  107. * @return:
  108. * @---------------------------------------------------
  109. */
  110. function fDbClick()
  111. {
  112. var imgeno = grd_imgelist.colAttribute(grd_imgelist.col, "ref"); // 이미지 번호를 얻어온다.
  113. imgeno = imgeno.replace("imge", "");
  114. if(imgeno == "")
  115. {
  116. return;
  117. }
  118. var node = instance1.selectSingleNode(gPageInfo.recItemRef + "[degnitemno = '"+imgeno+"']");
  119. imgeInfo = new IMGE_INFO();
  120. imgeInfo.imgeno = node.getXPathString("degnitemno");
  121. imgeInfo.imgecd = node.getXPathString("degnitemcd");
  122. imgeInfo.width = node.getXPathString("width");
  123. imgeInfo.height = node.getXPathString("height");
  124. imgeInfo.recbase64 = node.getXPathString("recimge");
  125. imgeInfo.srcbase64 = node.getXPathString("srcimge");
  126. // imgeInfo.degnitemlevlcd = node.getXPathString("degnitemlevlcd");
  127. // imgeInfo.degnitemlevlno = node.getXPathString("degnitemlevlno");
  128. // caption 데이터 무조건 CDATA 처리
  129. imgeInfo.shape = fSetCdata(node.getXPathString("reccnts"));
  130. /*
  131. if(isSearchString(node.getXPathString("reccnts"), "&") == true)
  132. {
  133. // <shape caption 데이터 & 처리
  134. imgeInfo.shape = fSetCdata(node.getXPathString("reccnts"));
  135. }
  136. else
  137. {
  138. imgeInfo.shape = node.getXPathString("reccnts");
  139. }
  140. */
  141. imgeInfo.imgenm = node.getXPathString("degnitemnm");
  142. imgeInfo.colno = node.getXPathString("colno");
  143. gImgeInfo = imgeInfo;
  144. fClearImge();
  145. //fSetImge();
  146. fSetImge(gImgeInfo);
  147. for(var col = 0; col < grd_imgelist.cols; col++)
  148. {
  149. grd_imgelist.fixedcellischeck(0, col) = false;
  150. }
  151. grd_imgelist.fixedcellischeck(0, grd_imgelist.col) = true;
  152. // gIntervalId = window.setInterval("fSetImge();", INTERVAL_TIME);
  153. }
  154. /**
  155. * @ver : 2008-03-18
  156. * @desc : 이미지 정보를 초기화한다.
  157. * @
  158. * @by : 이경희
  159. * @param:
  160. * @return:
  161. * @---------------------------------------------------
  162. */
  163. function IMGE_INFO()
  164. {
  165. this.imgeno = "";
  166. this.imgecd = "";
  167. this.width = 0;
  168. this.height = 0;
  169. this.srcbase64 = "";
  170. this.recbase64 = "";
  171. this.shape = "";
  172. this.imgenm = "";
  173. this.filePath = "";
  174. this.degnitemlevlno = "";
  175. this.degnitemlevlcd = "";
  176. this.colno = "";
  177. this.rowno = "";
  178. }
  179. /**
  180. * @ver : 2008-03-18
  181. * @desc : 현재 보이는 이미지를 상단의 이미지 리스트에 추가한다.
  182. * @
  183. * @by : 이경희
  184. * @param: 1) imgeInfo - 이미지데이터(이미지번호, 코드, 가로/세로 사이즈, Base64코드, 이미지이름, 디자인아이템번호, 디자인아이템코드
  185. * @return:
  186. * @---------------------------------------------------
  187. */
  188. function fAddImgeList(imgeInfo)
  189. {
  190. var rowcnt = parseInt(getNodesetCnt(model, gPageInfo.recItemRef)) + 1;
  191. var path = gPageInfo.recItemRef + "["+rowcnt+"]/#colnm#";
  192. model.makeValue(path.replace("#colnm#", "width"), imgeInfo.width);
  193. model.makeValue(path.replace("#colnm#", "height"), imgeInfo.height);
  194. model.makeValue(path.replace("#colnm#", "instcd"), "");
  195. model.makeValue(path.replace("#colnm#", "rechistseq"), "");
  196. model.makeValue(path.replace("#colnm#", "recitemno"), "");
  197. model.makeValue(path.replace("#colnm#", "fstlevlitemcd"), gPageInfo.fstLevlItemCd);
  198. model.makeValue(path.replace("#colnm#", "formcd"), gPageInfo.formCd);
  199. model.makeValue(path.replace("#colnm#", "formdegnseq"), gPageInfo.formDegnSeq);
  200. model.makeValue(path.replace("#colnm#", "degnitemno"), imgeInfo.imgeno);
  201. model.makeValue(path.replace("#colnm#", "degnitemcd"), imgeInfo.imgecd);
  202. model.makeValue(path.replace("#colnm#", "degnitemkind"), "IMG");
  203. model.makeValue(path.replace("#colnm#", "degnitemlevlno"), imgeInfo.degnitemlevlno);
  204. model.makeValue(path.replace("#colnm#", "degnitemnm"), imgeInfo.imgenm);
  205. model.makeValue(path.replace("#colnm#", "degnitemlevlcd"), imgeInfo.degnitemlevlcd);
  206. model.makeValue(path.replace("#colnm#", "rectermcd"), "");
  207. model.makeValue(path.replace("#colnm#", "rectermnm"), "");
  208. model.makeValue(path.replace("#colnm#", "recitemcd"), "");
  209. model.makeNode(path.replace("#colnm#", "reccnts"));
  210. model.setValue(path.replace("#colnm#", "reccnts"), imgeInfo.shape, true);
  211. if(imgeInfo.imgenm == "LOCALIMG")
  212. model.makeValue(path.replace("#colnm#", "unitnm"), obj_imge.GetImageSizeEx(false));
  213. else
  214. model.makeValue(path.replace("#colnm#", "unitnm"), "");
  215. model.makeNode(path.replace("#colnm#", "recimge"));
  216. model.setValue(path.replace("#colnm#", "recimge"), imgeInfo.recbase64, true);
  217. model.makeNode(path.replace("#colnm#", "srcimge"));
  218. model.setValue(path.replace("#colnm#", "srcimge"), imgeInfo.srcbase64, true);
  219. model.makeValue(path.replace("#colnm#", "rowno"), imgeInfo.rowno);
  220. model.makeValue(path.replace("#colnm#", "colno"), imgeInfo.colno);
  221. fAddthumnail(imgeInfo.imgeno, imgeInfo.imgenm, imgeInfo.srcbase64);
  222. model.refresh();
  223. grd_imgelist.rebuild();
  224. }
  225. /**
  226. * @ver : 2008-03-18
  227. * @desc : fAddImgeList 함수내에서 실행되며 실질적으로 이미지를 상단의 이미지 리스트에 추가하는 기능을 수행한다.
  228. * @
  229. * @by : 이경희
  230. * @param: 1) pImgeno - 이미지번호
  231. 2) pImgenm - 이미지이름
  232. 3) pBase64 - 인코딩된 Base64 이미지 데이터
  233. * @return:
  234. * @---------------------------------------------------
  235. */
  236. function fAddthumnail(pImgeno, pImgenm, pBase64)
  237. {
  238. if (gOnlyOneImge) return;
  239. obj_thumnail.LoadImageBase64(pBase64); // Base64로 인코딩된 이미지를 로드한다.
  240. var colnm = "imge" + pImgeno;
  241. grd_imgelist.addColumn("ref:" + colnm + ";");
  242. grd_imgelist.col = grd_imgelist.colref(colnm);
  243. grd_imgelist.valueMatrix(0, grd_imgelist.col) = pImgenm;
  244. grd_imgelist.colstyle(grd_imgelist.col, "data", "background-position") = "center";
  245. grd_imgelist.colstyle(grd_imgelist.col, "data", "border-style") = "none";
  246. // 100x100 썸네일 이미지 사이즈
  247. // 썸네일 이미지와 실 크기의 이미지를 모두 저장
  248. var Thumbase64 = obj_thumnail.GetThumbnailBase64(100, 100);
  249. model.setValue("/root/temp/thumblist/" + colnm, Thumbase64, true);
  250. setImageRefInstance("/root/temp/thumblist/" + colnm);
  251. var base64 = obj_thumnail.SaveImageBase64();
  252. model.makeValue("/root/temp/imgelist/" + colnm, base64, true);
  253. grd_imgelist.fixedcellcheckbox(0, grd_imgelist.col) = true;
  254. grd_imgelist.rebuild();
  255. }
  256. /**
  257. * @ver : 2008-03-18
  258. * @desc : 상단 이미지리스트에서 이미지를 삭제한다.
  259. * @
  260. * @by : 이경희
  261. * @param:
  262. * @return:
  263. * @---------------------------------------------------
  264. */
  265. function fDelImgeList()
  266. {
  267. // 그리드에서 컬럼이 삭제되면 체크박스가 체크되었는지 확인하는 분기에서 제대로
  268. // 확인이 안되므로, 컬럼을 뒤쪽에서 삭제하도록 한다.
  269. for(var i = grd_imgelist.cols; i >= 0 ; i--)
  270. {
  271. if(grd_imgelist.fixedcellischeck(0, i + 1))
  272. {
  273. // 이미지 인스턴스 삭제
  274. var imgeno = grd_imgelist.colAttribute(i + 1, "ref");
  275. imgeno = imgeno.replace("imge", "");
  276. if (imgeno == model.getValue("/root/init/selectnode/imgeno"))
  277. {
  278. obj_imge.LoadImage("");
  279. model.makeValue("/root/init/selectnode/imgeno", "");
  280. model.makeValue("/root/init/selectnode/imgenm", "");
  281. ipt_filenm.refresh();
  282. }
  283. model.removeNodeset(gPageInfo.recItemRef + "[degnitemno = '"+imgeno+"']");
  284. grd_imgelist.deleteColumn(i + 1, false);
  285. }
  286. }
  287. grd_imgelist.rebuild();
  288. }
  289. function fDelImgeList_Old()
  290. {
  291. for(var i = 0; i < grd_imgelist.cols; i++)
  292. {
  293. if(grd_imgelist.fixedcellischeck(0, i + 1))
  294. {
  295. var imgeno = grd_imgelist.colAttribute(i + 1, "ref");
  296. imgeno = imgeno.replace("imge", "");
  297. if (imgeno == model.getValue("/root/init/selectnode/imgeno"))
  298. {
  299. obj_imge.LoadImage("");
  300. model.makeValue("/root/init/selectnode/imgeno", "");
  301. model.makeValue("/root/init/selectnode/imgenm", "");
  302. ipt_filenm.refresh();
  303. }
  304. model.removeNodeset(gPageInfo.recItemRef + "[degnitemno = '"+imgeno+"']");
  305. grd_imgelist.deleteColumn(i + 1);
  306. }
  307. }
  308. }
  309. /**
  310. * @ver : 2008-03-18
  311. * @desc : 상단 이미지리스트에서 이미지를 삭제한다.
  312. * @
  313. * @by : 이경희
  314. * @param:
  315. * @return:
  316. * @---------------------------------------------------
  317. */
  318. var gImgeInfo = null;
  319. var gOnImgeInfo = new IMGE_INFO();
  320. function fChgViewMode()
  321. {
  322. obj_imge.SetViewMode(parseInt(model.getValue("/root/init/selectnode/viewmode")));
  323. if (gImgeInfo != null)
  324. {
  325. if (obj_imge.IsLoadedImage())
  326. gImgeInfo.shape = obj_imge.GetShapeString(); // 라이브이미지에 그려진 도형정보를 반환한다.
  327. //fClearImge();
  328. //fSetImge();
  329. }
  330. // if (gImgeInfo != null)
  331. // {
  332. // gImgeInfo.shape = obj_imge.GetShapeString();
  333. // fClearImge();
  334. // fSetImge();
  335. // }
  336. }
  337. /**
  338. * @ver : 2008-03-18
  339. * @desc : 라이브이미지 ActiveX 컨트롤에 로드된 이미지를 Clear한다.
  340. * @
  341. * @by : 이경희
  342. * @param:
  343. * @return:
  344. * @---------------------------------------------------
  345. */
  346. function fClearImge()
  347. {
  348. if (model.getValue("/root/init/selectnode/imgeno") != "")
  349. {
  350. if(gImgeInfo != null)
  351. {
  352. var arrSz = fGetImgeSizeEx();
  353. gImgeInfo.width = arrSz[0];
  354. gImgeInfo.height = arrSz[1];
  355. if(gImgeInfo.colno == "MAST")
  356. {
  357. //if(getSrchStrCnt(obj_imge.GetShapeString(), ">") > 2)
  358. var tmpShape = removeXvgTag(obj_imge.GetShapeString());
  359. if(tmpShape != "")
  360. {
  361. if (gOnlyOneImge)
  362. {
  363. model.removeNodeset(gPageInfo.recItemRef);
  364. gOnImgeInfo.shape = obj_imge.GetShapeString();
  365. gOnImgeInfo.recbase64 = obj_imge.SaveJpegBase64();
  366. //gOnImgeInfo.recbase64 = obj_imge.SaveImageBase64();
  367. fAddImgeList(gOnImgeInfo); // 이미지 리스트에 이미지를 추가한다.
  368. }
  369. else
  370. {
  371. if (getNodesetCnt(model, gPageInfo.recItemRef + "[degnitemno = '"+model.getValue("/root/init/selectnode/imgeno")+"']") == 0)
  372. {
  373. gOnImgeInfo.shape = obj_imge.GetShapeString();
  374. gOnImgeInfo.recbase64 = obj_imge.SaveJpegBase64();
  375. //gOnImgeInfo.recbase64 = obj_imge.SaveImageBase64();
  376. fAddImgeList(gOnImgeInfo);
  377. }
  378. else
  379. {
  380. model.setValue(gPageInfo.recItemRef + "[degnitemno = '"+model.getValue("/root/init/selectnode/imgeno")+"']/reccnts", obj_imge.GetShapeString());
  381. model.setValue(gPageInfo.recItemRef + "[degnitemno = '"+model.getValue("/root/init/selectnode/imgeno")+"']/recimge", obj_imge.SaveJpegBase64());
  382. }
  383. }
  384. }
  385. }
  386. if(gImgeInfo.colno == "FILE")
  387. {
  388. if (gOnlyOneImge)
  389. {
  390. model.removeNodeset(gPageInfo.recItemRef);
  391. gOnImgeInfo.shape = obj_imge.GetShapeString();
  392. //gOnImgeInfo.recbase64 = obj_imge.SaveJpegBase64();
  393. gOnImgeInfo.recbase64 = obj_imge.SaveImageBase64();
  394. fAddImgeList(gOnImgeInfo); // 이미지 리스트에 이미지를 추가한다.
  395. }
  396. else
  397. {
  398. // 최초 작성시
  399. if (getNodesetCnt(model, gPageInfo.recItemRef + "[degnitemno = '"+model.getValue("/root/init/selectnode/imgeno")+"']") == 0)
  400. {
  401. gOnImgeInfo.shape = obj_imge.GetShapeString();
  402. //gOnImgeInfo.recbase64 = obj_imge.SaveJpegBase64();
  403. gOnImgeInfo.recbase64 = obj_imge.SaveImageBase64();
  404. fAddImgeList(gOnImgeInfo);
  405. }
  406. else
  407. {
  408. // 재 수정시
  409. model.setValue(gPageInfo.recItemRef + "[degnitemno = '"+model.getValue("/root/init/selectnode/imgeno")+"']/unitnm", obj_imge.GetImageSizeEx(false));
  410. model.setValue(gPageInfo.recItemRef + "[degnitemno = '"+model.getValue("/root/init/selectnode/imgeno")+"']/reccnts", obj_imge.GetShapeString());
  411. model.setValue(gPageInfo.recItemRef + "[degnitemno = '"+model.getValue("/root/init/selectnode/imgeno")+"']/recimge", obj_imge.SaveImageBase64());
  412. }
  413. }
  414. }
  415. }
  416. }
  417. obj_imge.Clear();
  418. isLoadImage = false;
  419. }
  420. function fLoadBase64str(imgecd, imgenm, base64str)
  421. {
  422. imgeInfo = new IMGE_INFO();
  423. imgeInfo.imgecd = imgecd;
  424. imgeInfo.imgenm = imgenm;
  425. imgeInfo.srcbase64 = base64str;
  426. imgeInfo.colno = "MAST";
  427. obj_imge.LoadImageBase64(base64str);
  428. var arrSz = fGetImgeSize();
  429. imgeInfo.width = arrSz[0];
  430. imgeInfo.height = arrSz[1];
  431. if(model.getValue("/root/init/selectnode/viewmode") != obj_imge.GetViewMode() )
  432. {
  433. obj_imge.SetViewMode(parseInt(model.getValue("/root/init/selectnode/viewmode")));
  434. model.refresh();
  435. }
  436. document.controls("obj_imge").attribute("visibility") = "visible";
  437. gImgeInfo = imgeInfo;
  438. gOnImgeInfo = imgeInfo;
  439. }
  440. /**
  441. * @ver : 2008-03-18
  442. * @desc : 라이브이미지 ActiveX 컨트롤에 로드된 이미지를 Clear한다.
  443. * @
  444. * @by : 이경희
  445. * @param:
  446. * @return:
  447. * @---------------------------------------------------
  448. */
  449. function fSetImge(imgeInfo)
  450. {
  451. try
  452. {
  453. if (imgeInfo == null)
  454. {
  455. imgeInfo = gImgeInfo;
  456. }
  457. model.makeValue("/root/init/selectnode/imgeno", imgeInfo.imgeno);
  458. model.makeValue("/root/init/selectnode/imgenm", imgeInfo.imgenm, true);
  459. ipt_filenm.refresh();
  460. // 뷰모드 체크
  461. var viewMode = obj_imge.GetViewMode();
  462. if(viewMode != model.getValue("/root/init/selectnode/viewmode"))
  463. {
  464. obj_imge.SetViewMode(model.getValue("/root/init/selectnode/viewmode"));
  465. }
  466. // 로컬 이미지인지 DB이미지인지 판단
  467. var localimgeYN = imgeInfo.colno;
  468. if(localimgeYN == "FILE") // 로컬 이미지
  469. {
  470. if(imgeInfo.srcbase64 == "" && imgeInfo.filePath != "")
  471. {
  472. obj_imge.LoadImage(imgeInfo.filePath);
  473. }
  474. else if(imgeInfo.srcbase64 != "")
  475. {
  476. obj_imge.LoadImageBase64(imgeInfo.srcbase64);
  477. }
  478. else if(imgeInfo.srcbase64 == "" && imgeInfo.recbase64 != "") // 원본이미지가 저장되지 않고 기록이미지만 저장된 경우
  479. {
  480. imgeInfo.srcbase64 = imgeInfo.recbase64;
  481. obj_imge.LoadImageBase64(imgeInfo.srcbase64);
  482. }
  483. else
  484. return;
  485. var arrSz = fGetImgeSizeEx();
  486. imgeInfo.width = arrSz[0];
  487. imgeInfo.height = arrSz[1];
  488. imgeInfo.srcbase64 = obj_imge.SaveImageBase64();
  489. if(imgeInfo.shape != "")
  490. {
  491. obj_imge.SetShapeString(imgeInfo.shape);
  492. }
  493. isLoadImage = true;
  494. }
  495. else if(localimgeYN = "MAST") // DB 이미지
  496. {
  497. // 이미지를 DB로부터 불러온다.
  498. if(imgeInfo.srcbase64 != "")
  499. {
  500. obj_imge.LoadImageBase64(imgeInfo.srcbase64);
  501. isLoadImage = true;
  502. }
  503. else
  504. {
  505. if(fRefImgeDateByImgeCd(imgeInfo.imgecd))
  506. {
  507. imgeInfo.srcbase64 = model.getValue("/root/main/imgview/image");
  508. obj_imge.LoadImageBase64(imgeInfo.srcbase64);
  509. isLoadImage = true;
  510. }
  511. }
  512. if(imgeInfo.shape != "")
  513. {
  514. obj_imge.SetShapeString(imgeInfo.shape);
  515. }
  516. }
  517. if ( model.getValue("/root/init/selectnode/viewmode") != obj_imge.GetViewMode() )
  518. {
  519. //model.setValue("/root/init/selectnode/viewmode", obj_imge.GetViewMode());
  520. obj_imge.SetViewMode(parseInt(model.getValue("/root/init/selectnode/viewmode")));
  521. model.refresh();
  522. }
  523. document.controls("obj_imge").attribute("visibility") = "visible";
  524. gImgeInfo = imgeInfo;
  525. gOnImgeInfo = imgeInfo;
  526. }
  527. catch (e)
  528. {
  529. }
  530. }
  531. function fAddImgeByRec()
  532. {
  533. var std = gPageInfo.recItemRef + "[#iIdx#]/#colnm#";
  534. var con = "";
  535. var cnt = getNodesetCnt(model, gPageInfo.recItemRef);
  536. if (cnt > 0)
  537. {
  538. for (var i = 1; i <= cnt; i++)
  539. {
  540. con = std.replace("#iIdx#", i);
  541. fAddthumnail(model.getValue(con.replace("#colnm#", "degnitemno")),
  542. model.getValue(con.replace("#colnm#", "degnitemnm")),
  543. model.getValue(con.replace("#colnm#", "recimge")));
  544. }
  545. model.refresh();
  546. }
  547. }
  548. /**
  549. * @ver : 2008-03-18
  550. * @desc : 라이브이미지 ActiveX 컨트롤에 이미지를 로드한다.
  551. * @
  552. * @by : 이경희
  553. * @param: 1) imgecd - 이미지코드
  554. 2) imgenm - 이미지이름
  555. 3) imgedata - 이미지데이터
  556. 4) shape - 도형정보
  557. * @return:
  558. * @---------------------------------------------------
  559. */
  560. function fAddImgeByData(imgecd, imgenm, imgedata, shape)
  561. {
  562. var imgeInfo = new IMGE_INFO();
  563. imgeInfo.imgeno = ++gNewImgeNo;
  564. imgeInfo.imgecd = imgecd;
  565. imgeInfo.imgenm = imgenm;
  566. imgeInfo.srcbase64 = imgedata;
  567. imgeInfo.degnitemlevlcd = gPageInfo.degnItemLevlCd +"."+ imgeInfo.imgecd;
  568. imgeInfo.degnitemlevlno = parseInt(gPageInfo.degnitemlevlno) + 1;
  569. imgeInfo.rowno = "NUIMG";
  570. imgeInfo.colno = "MAST";
  571. if (shape != null)
  572. {
  573. imgeInfo.shape = shape;
  574. }
  575. fClearImge(); // 화면을 Clear한다.
  576. fSetImge(imgeInfo); // 이미지를 로드한다.
  577. }
  578. /**
  579. * @ver : 2008-03-18
  580. * @desc : 라이브이미지 ActiveX 컨트롤에 이미지 파일을 불러들인다.
  581. * @
  582. * @by : 이경희
  583. * @param:
  584. * @return:
  585. * @---------------------------------------------------
  586. */
  587. function fAddImgeByFile(filepath)
  588. {
  589. var bMulti = false;
  590. if(model.getValue("/root/temp/directstatus") == "direct")
  591. bMulti = true;
  592. //var selfile = openImageFileDialogEx(4096000, bMulti);
  593. // BLOB 사이즈가 2M로 설정됨에 따라 업로드 파일사이즈를 제한함.
  594. //var selfile = openImageFileDialogEx(2048000, bMulti);
  595. //이윤주 수정(20150202) ==> 4M로
  596. var selfile = openImageFileDialogEx(4194304, bMulti);
  597. if (selfile == "")
  598. return;
  599. var arrfile = selfile.split("|");
  600. for(var i = 0; i < arrfile.length; i++)
  601. {
  602. var filepath = arrfile[i];
  603. var pos = filepath.lastIndexOf("\\");
  604. var filenm = filepath.substring(pos+1, filepath.length);
  605. pos = filenm.lastIndexOf(".");
  606. filenm = filenm.substring(0, pos);
  607. imgeInfo = new IMGE_INFO();
  608. imgeInfo.imgeno = ++gNewImgeNo;
  609. imgeInfo.imgecd = "Z000000001";
  610. //imgeInfo.imgenm = filenm;
  611. imgeInfo.imgenm = "LOCALIMG";
  612. imgeInfo.srcbase64 = "";
  613. imgeInfo.recbase64 = "";
  614. imgeInfo.shape = ""; //filepath;
  615. imgeInfo.filePath = filepath;
  616. imgeInfo.degnitemlevlcd = gPageInfo.degnItemLevlCd +"."+ imgeInfo.imgecd;
  617. imgeInfo.degnitemlevlno = parseInt(gPageInfo.degnitemlevlno) + 1;
  618. imgeInfo.rowno = "NUIMG";
  619. imgeInfo.colno = "FILE";
  620. if(bMulti)
  621. {
  622. obj_thumnail.LoadImage(filepath);
  623. imgeInfo.shape = "";
  624. var viewMode = obj_imge.GetViewMode();
  625. if(viewMode != model.getValue("/root/init/selectnode/viewmode"))
  626. {
  627. obj_imge.SetViewMode(model.getValue("/root/init/selectnode/viewmode"));
  628. }
  629. var livectrl = document.controls("obj_imge");
  630. if(livectrl != null)
  631. {
  632. livectrl.attribute("visible") == false;
  633. }
  634. obj_imge.LoadImage(imgeInfo.filePath);
  635. var arrSz = fGetImgeSizeEx();
  636. imgeInfo.width = arrSz[0];
  637. imgeInfo.height = arrSz[1];
  638. imgeInfo.srcbase64 = obj_imge.SaveImageBase64();
  639. //imgeInfo.srcbase64 = obj_thumnail.SaveImageBase64();
  640. imgeInfo.recbase64 = imgeInfo.srcbase64;
  641. imgeInfo.shape = obj_imge.GetShapeString();
  642. if(livectrl != null)
  643. {
  644. obj_imge.clear();
  645. livectrl.attribute("visible") == true;
  646. }
  647. fAddImgeList(imgeInfo);
  648. }
  649. else
  650. {
  651. fClearImge();
  652. fSetImge(imgeInfo);
  653. }
  654. }
  655. }
  656. /**
  657. * @ver : 2008-03-18
  658. * @desc : 이미지 사이즈를 반환한다.
  659. * @
  660. * @by : 이경희
  661. * @param:
  662. * @return:
  663. * @---------------------------------------------------
  664. */
  665. function fGetImgeSize()
  666. {
  667. var sz = obj_imge.GetImageSize();
  668. var arrSz = sz.split("|");
  669. return arrSz;
  670. }
  671. /**
  672. * @ver : 2008-03-18
  673. * @desc : ActiveX 컨트롤 크기에 맞춰진 이미지 사이즈를 반환한다.
  674. * @
  675. * @by : 이경희
  676. * @param:
  677. * @return:
  678. * @---------------------------------------------------
  679. */
  680. function fGetImgeSizeEx()
  681. {
  682. var sz = obj_imge.GetImageSizeEx(false);
  683. var arrSz = sz.split("|");
  684. return arrSz;
  685. }
  686. /**
  687. * @ver : 2008-03-18
  688. * @desc : 색상을 입히기 위해 팔레트를 클릭했을때 발생하는 함수
  689. * @
  690. * @by : 이경희
  691. * @param:
  692. * @return:
  693. * @---------------------------------------------------
  694. */
  695. function fColorClicked(bDetail)
  696. {
  697. if(bDetail == null)
  698. bDetail = false;
  699. var ctrl = document.controls(event.target);
  700. var color;
  701. if(bDetail) {
  702. color = obj_imge.GetRGBColorDlg();
  703. if(color == "") {
  704. return ;
  705. }
  706. }
  707. else
  708. color = ctrl.attribute("background-color");
  709. //alert(event.target + " : " + color);
  710. var clickbtn = colorpicker.attribute("mode");//model.getValue("/root/init/selectnode/colorbt");
  711. if(color == "transparent")
  712. {
  713. color = "";
  714. }
  715. if(clickbtn == "btn_bgcolor") // 배경색
  716. {
  717. obj_imge.SetShapeStyle("background-color", color);
  718. // 마지막으로 선택한 배경색을 인스턴스에 저장해둠.
  719. model.makeValue("/root/temp2/lastBackgroundColor", color);
  720. }
  721. else if(clickbtn == "btn_fontcolor" || clickbtn == "btn_text") // 텍스트
  722. {
  723. obj_imge.SetShapeStyle("color", color);
  724. model.makeValue("/root/temp2/lastFontColor", color);
  725. }
  726. else if(clickbtn == "btn_linecolor" || clickbtn == "btn_line" || clickbtn == "btn_freeline" || clickbtn == "btn_rect" || clickbtn == "btn_round" || clickbtn == "btn_point") // 선색
  727. {
  728. obj_imge.SetShapeStyle("border-color", color);
  729. obj_imge.SetShapeStyle("color", color);
  730. model.makeValue("/root/temp2/lastLineColor", color);
  731. }
  732. document.controls("C_SEL").attribute("background-color") = color;
  733. //colorpicker.attribute("visibility") = "hidden"
  734. }
  735. /**
  736. * @ver : 2008-03-18
  737. * @desc : 저장을 클릭했을 때 실행되는 함수
  738. * @
  739. * @by : 이경희
  740. * @param:
  741. * @return:
  742. * @---------------------------------------------------
  743. */
  744. function fConfirm()
  745. {
  746. if(gImgeInfo != null)
  747. {
  748. if(gImgeInfo.colno == "FILE")
  749. {
  750. var strShape = obj_imge.GetShapeString();
  751. gImgeInfo.shape = strShape;
  752. }
  753. }
  754. obj_imge.SelectDrawType(0, true);
  755. fClearImge();
  756. fClearFile();
  757. if(gImgeInfo != null)
  758. {
  759. if(gImgeInfo.colno == "MAST")
  760. {
  761. // DB에서 불러온 이미지므로 원본이미지 Base64코드는 삭제한다.
  762. gImgeInfo.srcbase64 = "";
  763. }
  764. }
  765. // '<', '>', '&' 변환
  766. //var tempShape = gPageInfo.shape;
  767. //gPageInfo.shape = fConvertSpecialText(tempShape);
  768. parent.window.javascript.fConfirm(gPageInfo.fstLevlItemCd);
  769. }
  770. /**
  771. * @ver : 2008-03-18
  772. * @desc : 팔레트를 보여주는 함수
  773. * @
  774. * @by : 이경희
  775. * @param:
  776. * @return:
  777. * @---------------------------------------------------
  778. */
  779. function fShowPltte()
  780. {
  781. var btnid = window.event.target;
  782. if(btnid == "btn_text" || btnid == "btn_fontcolor")
  783. {
  784. cap_colorpicker.text = "글자색";
  785. var color = "#000000";
  786. var lastFontColor = model.getValue("/root/temp2/lastFontColor");
  787. // 기본 글자색 설정
  788. if(lastFontColor != "")
  789. color = lastFontColor;
  790. model.setValue("/root/init/selectnode/fontcolor", color);
  791. obj_imge.SetShapeStyle("color", color);
  792. if(document.controls("C_SEL") != null)
  793. document.controls("C_SEL").attribute("background-color") = color;
  794. if(document.controls("combo_fontName") != null)
  795. document.controls("combo_fontName").disabled = false;
  796. if(document.controls("combo_fontSize") != null)
  797. document.controls("combo_fontSize").disabled = false;
  798. if(document.controls("img_font-style") != null)
  799. document.controls("img_font-style").disabled = false;
  800. if(document.controls("img_font-weight") != null)
  801. {
  802. document.controls("img_font-weight").disabled = false;
  803. document.controls("img_font-weight").attribute("background-image") = "../../../emr/commonweb/images/icon_13_select.gif";
  804. document.controls("img_font-weight").attribute("font-weight") = "bold";
  805. }
  806. }
  807. else if(btnid == "btn_linecolor" || btnid == "btn_line" || btnid == "btn_freeline" || btnid == "btn_rect" || btnid == "btn_round" || btnid == "btn_point")
  808. {
  809. cap_colorpicker.text = "선색";
  810. var color = "#ff0000";
  811. var lastLineColor = model.getValue("/root/temp2/lastLineColor");
  812. // 기본 선색 설정
  813. if(lastLineColor != "")
  814. color = lastLineColor;
  815. model.setValue("/root/init/selectnode/linecolor", color);
  816. obj_imge.SetShapeStyle("border-color", color);
  817. obj_imge.SetShapeStyle("color", color);
  818. document.controls("C_SEL").attribute("background-color") = color;
  819. // 기본 배경색 설정
  820. if(btnid != "btn_linecolor")
  821. obj_imge.SetShapeStyle("background-color", "");
  822. if(document.controls("combo_fontName") != null)
  823. document.controls("combo_fontName").disabled = true;
  824. if(document.controls("combo_fontSize") != null)
  825. document.controls("combo_fontSize").disabled = true;
  826. if(document.controls("img_font-weight") != null)
  827. document.controls("img_font-weight").disabled = true;
  828. if(document.controls("img_font-style") != null)
  829. document.controls("img_font-style").disabled = true;
  830. }
  831. else if(btnid == "btn_bgcolor")
  832. {
  833. cap_colorpicker.text = "배경색";
  834. var color = "";
  835. var lastBgColor = model.getValue("/root/temp2/lastBackgroundColor");
  836. // 기본 배경색 설정
  837. if(lastBgColor != "")
  838. color = lastBgColor;
  839. obj_imge.SetShapeStyle("background-color", "");
  840. if(color == "")
  841. document.controls("C_SEL").attribute("background-color") = "#ffffff";
  842. else
  843. document.controls("C_SEL").attribute("background-color") = color;
  844. }
  845. else if(btnid == "btn_select" || btnid == "btn_del" || btnid == "btn_drawcancel" || btnid == "btn_turnleft" || btnid == "btn_turnright" || btnid == "btn_undo" || btnid == "btn_redo")
  846. {
  847. colorpicker.visible = false;
  848. colorpicker.attribute("mode") = btnid;
  849. return;
  850. }
  851. if(colorpicker.attribute("mode") == "" || colorpicker.attribute("mode") != btnid)
  852. {
  853. colorpicker.visible = true;
  854. }
  855. else if(colorpicker.attribute("mode") == btnid)
  856. {
  857. if (colorpicker.visible)
  858. {
  859. //colorpicker.visible = false;
  860. colorpicker.visible = true;
  861. }
  862. else
  863. {
  864. colorpicker.visible = true;
  865. }
  866. }
  867. colorpicker.attribute("mode") = btnid;
  868. model.refresh();
  869. }
  870. /**
  871. * @ver : 2008-03-18
  872. * @desc : 여러 이미지를 하나의 이미지로 합쳐 로드한다.
  873. * @
  874. * @by : 이경희
  875. * @param:
  876. * @return:
  877. * @---------------------------------------------------
  878. */
  879. function fMergeImge()
  880. {
  881. var cnt = 0;
  882. for(var col = 0; col < grd_imgelist.cols; col++)
  883. {
  884. if(grd_imgelist.fixedcellischeck(0, col + 1))
  885. {
  886. cnt++;
  887. }
  888. }
  889. if(isLoadImage == true)
  890. {
  891. if(cnt == 0)
  892. {
  893. messageBox("선택된 이미지가 최소 2개 이상인지 " ,"I007");
  894. //alert("이미지가 최소 2개 이상이어야 합니다.");
  895. checkbox1.deselect(0);
  896. return;
  897. }
  898. }
  899. else
  900. {
  901. if(cnt < 2)
  902. {
  903. messageBox("선택된 이미지가 최소 2개 이상인지 " ,"I007");
  904. //alert("선택된 이미지가 최소 2개 이상이어야 합니다.");
  905. checkbox1.deselect(0);
  906. return;
  907. }
  908. }
  909. if(!obj_imge.SetCanvas())
  910. {
  911. checkbox1.deselect(0);
  912. model.setValue("/root/temp/mergestatus", "cancel");
  913. //alert("한장으로 모으기 취소");
  914. return;
  915. }
  916. for(var i = 0; i < grd_imgelist.cols; i++)
  917. {
  918. if(grd_imgelist.fixedcellischeck(0, i + 1))
  919. {
  920. //alert("merge" + i + " : " + grd_imgelist.colAttribute(i + 1, "ref"));
  921. var AttriName = grd_imgelist.attribute("nodeset") + "/";
  922. var nodeName = AttriName.setReplaceWord("thumblist", "imgelist");
  923. //var imgeData = model.getValue(grd_imgelist.attribute("nodeset") + "/" + grd_imgelist.colAttribute(i + 1, "ref"));
  924. var degnitemno = grd_imgelist.colAttribute(i + 1, "ref");
  925. degnitemno = degnitemno.setReplaceWord("imge", "");
  926. var imgeData = model.getValue("/root/main/recinfo/recitem[degnitemno='" + degnitemno + "']/recimge");
  927. //var imgeData = model.getValue(nodeName + grd_imgelist.colAttribute(i + 1, "ref"));
  928. if(imgeData != "")
  929. {
  930. obj_imge.AddImageToCanvas(imgeData);
  931. }
  932. }
  933. }
  934. obj_imge.LoadCanvas(); // 합쳐진 이미지를 로드한다
  935. cmb_viewmode.disabled = true;
  936. model.setValue("/root/temp/mergestatus", "merge");
  937. model.refresh();
  938. }
  939. /**
  940. * @ver : 2008-08-01
  941. * @desc : 이미지 합친 상태를 취소
  942. * @
  943. * @by : 이경희
  944. * @param:
  945. * @return:
  946. * @---------------------------------------------------
  947. */
  948. function fCancelMergeImage()
  949. {
  950. if(model.getValue("/root/temp/mergestatus") == "merge")
  951. {
  952. obj_imge.RestoreStatus();
  953. checkbox1.deselect(0);
  954. cmb_viewmode.disabled = false;
  955. model.setValue("/root/temp/mergestatus", "");
  956. return;
  957. }
  958. }
  959. /**
  960. * @ver : 2008-03-18
  961. * @desc : 상단 이미지 리스트에서 이미지를 선택했을때 발생하는 이벤트 함수
  962. * @
  963. * @by : 이경희
  964. * @param:
  965. * @return:
  966. * @---------------------------------------------------
  967. */
  968. function fSelectImge()
  969. {
  970. //var status = grd_imgelist.fixedcellischeck(0, grd_imgelist.col);
  971. if(grd_imgelist.row == 0)
  972. {
  973. if(grd_imgelist.fixedcellischeck(0, grd_imgelist.col))
  974. grd_imgelist.fixedcellischeck(0, grd_imgelist.col) = true;
  975. else
  976. grd_imgelist.fixedcellischeck(0, grd_imgelist.col) = false;
  977. }
  978. else
  979. {
  980. if(grd_imgelist.fixedcellischeck(0, grd_imgelist.col))
  981. grd_imgelist.fixedcellischeck(0, grd_imgelist.col) = false;
  982. else
  983. grd_imgelist.fixedcellischeck(0, grd_imgelist.col) = true;
  984. }
  985. /*
  986. if(grd_imgelist.fixedcellischeck(0, grd_imgelist.col))
  987. grd_imgelist.fixedcellischeck(0, grd_imgelist.col) = false;
  988. else
  989. grd_imgelist.fixedcellischeck(0, grd_imgelist.col) = true;
  990. */
  991. }
  992. /**
  993. * @desc : 메타데이터에서 caption을 CDATA로 감싼다.
  994. * @id :
  995. * @event :
  996. * @return :
  997. * @authur : 이경희
  998. */
  999. function fSetCdata(metadata)
  1000. {
  1001. var strMeta = metadata;
  1002. // 1. CDATA로 감싸져 있는지 확인.
  1003. if(isSearchString(strMeta, "CDATA") == false)
  1004. {
  1005. var strStCaptionOld = "";
  1006. var strEdCaptionOld = "";
  1007. var strStCaptionNew = "";
  1008. var strEdCaptionNew = "";
  1009. // 배열로 반환
  1010. strStCaptionOld = fGetXvgStCaption(strMeta);
  1011. strEdCaptionOld = fGetXvgEdCaption(strMeta);
  1012. // for문으로 반복
  1013. for(var idx = 0; idx < strStCaptionOld.length; idx++)
  1014. {
  1015. if(idx == 0)
  1016. {
  1017. // 모든 </caption> 을 ]]></caption> 으로 변경
  1018. strEdCaptionNew = "]]>" + strEdCaptionOld[idx];
  1019. strMeta = strMeta.setReplaceWord(strEdCaptionOld[idx], strEdCaptionNew);
  1020. }
  1021. strStCaptionNew = strStCaptionOld[idx] + "<![CDATA[";
  1022. strMeta = strMeta.setReplaceWord(strStCaptionOld[idx], strStCaptionNew);
  1023. }
  1024. }
  1025. return strMeta;
  1026. }
  1027. /**
  1028. * @desc : 메타데이터에서 caption의 시작 태그를 반환한다.
  1029. * @id :
  1030. * @event :
  1031. * @return :
  1032. * @authur : 이경희
  1033. */
  1034. function fGetXvgStCaption(metadata)
  1035. {
  1036. var strMeta = metadata;
  1037. var getStCaption = new Array();
  1038. var grpexpSt = new RegExp('(<caption[^<>]+>)', 'igm');
  1039. if(grpexpSt.test(strMeta) == true)
  1040. {
  1041. getStCaption = strMeta.match(grpexpSt);
  1042. strMeta = strMeta.replace(grpexpSt, "");
  1043. }
  1044. if(getStCaption.length > 0)
  1045. return getStCaption;
  1046. else
  1047. return "";
  1048. }
  1049. /**
  1050. * @desc : 메타데이터에서 caption의 종료 태그를 반환한다.
  1051. * @id :
  1052. * @event :
  1053. * @return :
  1054. * @authur : 이경희
  1055. */
  1056. function fGetXvgEdCaption(metadata)
  1057. {
  1058. var strMeta = metadata;
  1059. var getEdCaption = new Array();
  1060. var grpexpEd = new RegExp('(</caption>)', 'igm');
  1061. if (grpexpEd.test(strMeta) == true)
  1062. {
  1063. getEdCaption = strMeta.match(grpexpEd);
  1064. strMeta = strMeta.replace(grpexpEd, "");
  1065. }
  1066. if(getEdCaption.length > 0)
  1067. return getEdCaption;
  1068. else
  1069. return "";
  1070. }
  1071. /*
  1072. function fConvertSpecialText(metadata)
  1073. {
  1074. var strMeta = metadata;
  1075. strMeta = strMeta.setReplaceWord("<", "&lt;");
  1076. strMeta = strMeta.setReplaceWord(">", "&gt;");
  1077. strMeta = strMeta.setReplaceWord("&", "&amp;");
  1078. strMeta = strMeta.setReplaceWord("\"", "&quot;");
  1079. }
  1080. */
  1081. /**
  1082. * @ver : 2009-06-12 오후 9:16:34
  1083. * @desc : 라이브이미지 ActiveX 컨트롤에 이미지 파일을 불러들인다.
  1084. * @
  1085. * @by : 강지훈
  1086. * @param:
  1087. * @return:
  1088. * @---------------------------------------------------
  1089. */
  1090. function fAddFixImgeByFile()
  1091. {
  1092. try{
  1093. //저장되어있는 파일형식 : 저장일_저장시간_환자번호_파일명
  1094. var fso = new ActiveXObject("Scripting.FileSystemObject");
  1095. var f = fso.GetFolder("C:\\CdisImage");
  1096. var fc = new Enumerator(f.files);
  1097. var s = "";
  1098. var selfile = "";
  1099. var files = f.files;
  1100. if(files.Count > 0){
  1101. model.setValue("/root/hidden/updateflag", "Y");
  1102. for (; !fc.atEnd(); fc.moveNext())
  1103. {
  1104. s = fc.item();
  1105. var selfileName = s.name;
  1106. var fstIndex = selfileName.indexOf("_");
  1107. var scnIndex = selfileName.indexOf("_", fstIndex+1);
  1108. var trdIndex = selfileName.indexOf("_", scnIndex+1);
  1109. var selDate = selfileName.substr(0, fstIndex); //파일이 저장된 날짜를 가져온다.
  1110. var selPid = selfileName.substring(scnIndex + 1, trdIndex); //파일이 저장된 날짜를 가져온다.
  1111. var curDate = getCurrentDate();
  1112. var curPid = getPatientId();
  1113. if(selDate == curDate){
  1114. if(selPid == curPid){
  1115. selfile += s.path;
  1116. selfile += "|";
  1117. }
  1118. }
  1119. }
  1120. selfile = selfile.substring(0, selfile.lastIndexOf("|"));
  1121. if(selfile.length > 0){
  1122. var arrfile = selfile.split("|");
  1123. for(var i = 0; i < arrfile.length; i++)
  1124. {
  1125. var filepath = arrfile[i];
  1126. var pos = filepath.lastIndexOf("\\");
  1127. var filenm = filepath.substring(pos+1, filepath.length);
  1128. pos = filenm.lastIndexOf(".");
  1129. filenm = filenm.substring(0, pos);
  1130. imgeInfo = new IMGE_INFO();
  1131. imgeInfo.imgeno = ++gNewImgeNo;
  1132. imgeInfo.imgecd = "Z000000001";
  1133. //imgeInfo.imgenm = filenm;
  1134. imgeInfo.imgenm = "LOCALIMG";
  1135. imgeInfo.srcbase64 = "";
  1136. imgeInfo.recbase64 = "";
  1137. imgeInfo.shape = ""; //filepath;
  1138. imgeInfo.filePath = filepath;
  1139. imgeInfo.degnitemlevlcd = gPageInfo.degnItemLevlCd +"."+ imgeInfo.imgecd;
  1140. imgeInfo.degnitemlevlno = parseInt(gPageInfo.degnitemlevlno) + 1;
  1141. imgeInfo.rowno = "NUIMG";
  1142. imgeInfo.colno = "FILE";
  1143. obj_thumnail.LoadImage(filepath);
  1144. imgeInfo.shape = "";
  1145. var viewMode = obj_imge.GetViewMode();
  1146. if(viewMode != model.getValue("/root/init/selectnode/viewmode"))
  1147. {
  1148. obj_imge.SetViewMode(model.getValue("/root/init/selectnode/viewmode"));
  1149. }
  1150. var livectrl = document.controls("obj_imge");
  1151. if(livectrl != null)
  1152. {
  1153. livectrl.attribute("visible") == false;
  1154. }
  1155. obj_imge.LoadImage(imgeInfo.filePath);
  1156. var arrSz = fGetImgeSizeEx();
  1157. imgeInfo.width = arrSz[0];
  1158. imgeInfo.height = arrSz[1];
  1159. imgeInfo.srcbase64 = obj_imge.SaveImageBase64();
  1160. //imgeInfo.srcbase64 = obj_thumnail.SaveImageBase64();
  1161. imgeInfo.recbase64 = imgeInfo.srcbase64;
  1162. imgeInfo.shape = obj_imge.GetShapeString();
  1163. if(livectrl != null)
  1164. {
  1165. obj_imge.clear();
  1166. livectrl.attribute("visible") == true;
  1167. }
  1168. fAddImgeList(imgeInfo);
  1169. }
  1170. }
  1171. else{
  1172. messageBox("금일 등록된 이미지가 " ,"I004");
  1173. }
  1174. }
  1175. else{
  1176. messageBox("금일 등록된 이미지가 " ,"I004");
  1177. }
  1178. }
  1179. catch(e){
  1180. }
  1181. }
  1182. /**
  1183. * @ver : 2009-06-12 오후 9:16:34
  1184. * @desc : 라이브이미지 ActiveX 컨트롤에 이미지 파일을 불러들인다.
  1185. * @
  1186. * @by : 강지훈
  1187. * @param:
  1188. * @return:
  1189. * @---------------------------------------------------
  1190. */
  1191. function fClearFile(){
  1192. //저장되어있는 파일형식 : 저장일_저장시간_환자번호_파일명
  1193. var fso = new ActiveXObject("Scripting.FileSystemObject");
  1194. try{
  1195. var f = fso.GetFolder("C:\\CdisImage");
  1196. var fc = new Enumerator(f.files);
  1197. var s = "";
  1198. var selfile = "";
  1199. var files = f.files;
  1200. if(files.Count > 0){
  1201. for (; !fc.atEnd(); fc.moveNext())
  1202. {
  1203. s = fc.item();
  1204. var selfileName = s.name;
  1205. var fstIndex = selfileName.indexOf("_");
  1206. var scnIndex = selfileName.indexOf("_", fstIndex+1);
  1207. var trdIndex = selfileName.indexOf("_", scnIndex+1);
  1208. var selDate = selfileName.substr(0, fstIndex); //파일이 저장된 날짜를 가져온다.
  1209. var selPid = selfileName.substring(scnIndex + 1, trdIndex); //파일이 저장된 날짜를 가져온다.
  1210. var curDate = getCurrentDate();
  1211. var curPid = getPatientId();
  1212. //1. 과거날짜에 저장된 파일은 모두 지운다. 2. 현재날짜에 업로드된 파일또한 모두 지운다.
  1213. if(selPid == curPid){
  1214. if(selDate < curDate){
  1215. fso.deletefile(s.path);
  1216. }
  1217. else if(selDate == curDate){
  1218. var updateflag = model.getValue("/root/hidden/updateflag");
  1219. if(updateflag == "Y"){
  1220. fso.deletefile(s.path);
  1221. }
  1222. }
  1223. }
  1224. }
  1225. }
  1226. }
  1227. catch(e){
  1228. }
  1229. }
  1230. /**
  1231. * @ver :
  1232. * @desc : 클립보드상의 이미지를 로딩한다
  1233. * @
  1234. * @by : 박종훈
  1235. * @param:
  1236. * @return:
  1237. * @---------------------------------------------------
  1238. */
  1239. function fClipBoardImgLoad()
  1240. {
  1241. var bMulti = false;
  1242. if(model.getValue("/root/temp/directstatus") == "direct")
  1243. bMulti = true;
  1244. var clipbase64 = obj_imge.GetClipboardImage();
  1245. if (clipbase64 == "")
  1246. {
  1247. return;
  1248. }
  1249. var selfile = obj_imge.GetClipboardImageFile();
  1250. var fso = new ActiveXObject("Scripting.FileSystemObject");
  1251. var clipf = fso.GetFile(selfile);
  1252. var clipSize = clipf.size;
  1253. if (clipSize > 2048000)
  1254. {
  1255. messageBox("허용용량(2MB)을" ,"E003");
  1256. return;
  1257. }
  1258. if (selfile == "")
  1259. return;
  1260. var arrfile = selfile.split("|");
  1261. for(var i = 0; i < arrfile.length; i++)
  1262. {
  1263. var filepath = arrfile[i];
  1264. var pos = filepath.lastIndexOf("\\");
  1265. var filenm = filepath.substring(pos+1, filepath.length);
  1266. pos = filenm.lastIndexOf(".");
  1267. filenm = filenm.substring(0, pos);
  1268. imgeInfo = new IMGE_INFO();
  1269. imgeInfo.imgeno = ++gNewImgeNo;
  1270. imgeInfo.imgecd = "Z000000001";
  1271. //imgeInfo.imgenm = filenm;
  1272. imgeInfo.imgenm = "LOCALIMG";
  1273. imgeInfo.srcbase64 = "";
  1274. imgeInfo.recbase64 = "";
  1275. imgeInfo.shape = ""; //filepath;
  1276. imgeInfo.filePath = filepath;
  1277. imgeInfo.degnitemlevlcd = gPageInfo.degnItemLevlCd +"."+ imgeInfo.imgecd;
  1278. imgeInfo.degnitemlevlno = parseInt(gPageInfo.degnitemlevlno) + 1;
  1279. imgeInfo.rowno = "NUIMG";
  1280. imgeInfo.colno = "FILE";
  1281. if(bMulti)
  1282. {
  1283. obj_thumnail.LoadImage(filepath);
  1284. imgeInfo.shape = "";
  1285. var viewMode = obj_imge.GetViewMode();
  1286. if(viewMode != model.getValue("/root/init/selectnode/viewmode"))
  1287. {
  1288. obj_imge.SetViewMode(model.getValue("/root/init/selectnode/viewmode"));
  1289. }
  1290. var livectrl = document.controls("obj_imge");
  1291. if(livectrl != null)
  1292. {
  1293. livectrl.attribute("visible") == false;
  1294. }
  1295. obj_imge.LoadImage(imgeInfo.filePath);
  1296. var arrSz = fGetImgeSizeEx();
  1297. imgeInfo.width = arrSz[0];
  1298. imgeInfo.height = arrSz[1];
  1299. imgeInfo.srcbase64 = obj_imge.SaveImageBase64();
  1300. //imgeInfo.srcbase64 = obj_thumnail.SaveImageBase64();
  1301. imgeInfo.recbase64 = imgeInfo.srcbase64;
  1302. imgeInfo.shape = obj_imge.GetShapeString();
  1303. if(livectrl != null)
  1304. {
  1305. obj_imge.clear();
  1306. livectrl.attribute("visible") == true;
  1307. }
  1308. fAddImgeList(imgeInfo);
  1309. }
  1310. else
  1311. {
  1312. fClearImge();
  1313. fSetImge(imgeInfo);
  1314. }
  1315. }
  1316. /*///////////////////////////////////////////////////////////////////////////////////////////////////////////
  1317. var sB64Code = obj_imge.GetClipboardImage();
  1318. if(sB64Code != "")
  1319. {
  1320. obj_imge.SetViewMode(model.getValue("/root/init/selectnode/viewmode"));
  1321. //obj_image.SetControlSize("437", "555");
  1322. obj_imge.LoadImageBase64(sB64Code);
  1323. }
  1324. //alert(sB64Code);
  1325. */
  1326. }