SPMRC03110.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545
  1. /*
  2. - =======================================================================================
  3. Image EMR Viewer Program (SPMRC03100.js)
  4. - Version :
  5. 1) : Ver.1.00.00
  6. - =======================================================================================
  7. /**
  8. * @group :
  9. * @ver : 2007.05.21
  10. * @by : 김재홍
  11. * @---------------------------------------------------
  12. * @type : function
  13. * @access : public
  14. * @desc : 초기화 함수
  15. * @return :
  16. * @---------------------------------------------------
  17. */
  18. function fInitilize()
  19. {
  20. // 사용하는 개체를 초기화 한다.
  21. //window.width = 640;
  22. //window.height = 930;
  23. var windowleft = 0;
  24. var windowtop = 0;
  25. var windowcount;
  26. var count;
  27. window.modelessTopmost = true;
  28. windowcount = window.parent.children.length;
  29. for(count = 0; count < windowcount; count++)
  30. {
  31. if (count == 1)
  32. {
  33. window.parent.children.item(count).left = window.parent.children.item(0).left + window.parent.children.item(0).width;
  34. window.parent.children.item(count).top = windowtop;
  35. }
  36. else
  37. {
  38. if (count == 0)
  39. {
  40. window.parent.children.item(count).left = windowleft + (count)*25;
  41. window.parent.children.item(count).top = windowtop + (count)*25;
  42. }
  43. else
  44. {
  45. window.parent.children.item(count).left = windowleft + (count - 1)*25;
  46. window.parent.children.item(count).top = windowtop + (count - 1)*25;
  47. }
  48. }
  49. }
  50. fSet_OCX_PageViewer();
  51. // 모든 버튼 이미지를 설정한다.
  52. setupAllButtons();
  53. // 토글 버튼의 기본값 설정
  54. processToggleButton("btnFitBest");
  55. processToggleButton("btnPageMouseMagnifyingGlass");
  56. // 차트를 로드한다
  57. loadChart(model.getValue("/root/main/chartpath"));
  58. // fitToWindowSize();
  59. }
  60. /**
  61. * @group :
  62. * @ver : 2007.05.21
  63. * @by : 김재홍
  64. * @---------------------------------------------------
  65. * @type : function
  66. * @access : public
  67. * @desc : PageViewer OCX 초기화
  68. * @return :
  69. * @---------------------------------------------------
  70. */
  71. function fSet_OCX_PageViewer()
  72. {
  73. objPageView.BorderStyle = 1;
  74. objPageView.BackColor = 0xffffff;//0xe0e0e0;
  75. objPageView.BestFit();
  76. objPageView.HorzAlignMode = 1;
  77. objPageView.VertAlignMode = 1;
  78. objPageView.MouseMode = 4;
  79. objPageView.MagnifyingGlassWidth = 600;
  80. objPageView.MagnifyingGlassHeight = 300;
  81. objPageView.MagnifyingGlassRatio = 1.0;
  82. }
  83. /**
  84. * @group :
  85. * @ver : 2007.05.21
  86. * @by : 김재홍
  87. * @---------------------------------------------------
  88. * @type : function
  89. * @access : public
  90. * @desc : 등록되어 있는 모든 버튼 이미지를 설정한다.
  91. * @return :
  92. * @---------------------------------------------------
  93. */
  94. function setupAllButtons()
  95. {
  96. var node = instance1.selectSingleNode(getXPathButtonImage());
  97. var list = node.childNodes;
  98. var total = list.length;
  99. var i;
  100. for (i = 0; i < total; i++)
  101. {
  102. setupButton( list.item(i).nodeName );
  103. }
  104. }
  105. /**
  106. * @group :
  107. * @ver : 2007.05.21
  108. * @by : 김재홍
  109. * @---------------------------------------------------
  110. * @type : function
  111. * @access : public
  112. * @desc : XPath로 부터 Button image Load
  113. * @return :
  114. * @---------------------------------------------------
  115. */
  116. function getXPathButtonImage(button)
  117. {
  118. return button == null ? "/root/hidden/buttonImage" : "/root/hidden/buttonImage/" + button;
  119. }
  120. /**
  121. * @group :
  122. * @ver : 2007.05.21
  123. * @by : 김재홍
  124. * @---------------------------------------------------
  125. * @type : function
  126. * @access : public
  127. * @desc : 버튼의 현재 상황에 맞게 이미지를 설정한다.
  128. * @return :
  129. * @---------------------------------------------------
  130. */
  131. function setupButton(button)
  132. {
  133. var path = model.getValue("/root/hidden/buttonImageHome") + model.getValue(getXPathButtonImage(button));
  134. var ext = model.getValue("/root/hidden/buttonImageExt");
  135. var objButton = document.controls.item(button);
  136. // 버튼 상태에 따라 이미지 설정
  137. if(toggleButton(button, "value") == "1")
  138. {
  139. objButton.attribute("background-image") = path + "_c" + ext;
  140. objButton.attribute("down.background-image") = path + "_c" + ext;
  141. objButton.attribute("hover.background-image") = path + "_c" + ext;
  142. objButton.attribute("disable.background-image") = path + "_d" + ext;
  143. }
  144. else
  145. {
  146. objButton.attribute("background-image") = path + ext;
  147. objButton.attribute("down.background-image") = path + "_c" + ext;
  148. objButton.attribute("hover.background-image") = path + "_h" + ext;
  149. objButton.attribute("disable.background-image") = path + "_d" + ext;
  150. }
  151. // disable 처리
  152. var btnDis = toggleButton(button, "disable") == "1" ? true : false;
  153. objButton.disabled = btnDis;
  154. // 버튼을 화면에 갱신
  155. objButton.refresh();
  156. }
  157. /**
  158. * @group :
  159. * @ver : 2007.05.21
  160. * @by : 김재홍
  161. * @---------------------------------------------------
  162. * @type : function
  163. * @access : public
  164. * @desc : 토글 버튼의 속성을 반환하거나 설정한다.
  165. * @return :
  166. * @---------------------------------------------------
  167. */
  168. function toggleButton(button, property, value)
  169. {
  170. if (button == null || property == null) return;
  171. var path = getXPathToggleButton(button) + "/" + property;
  172. if (value == null)
  173. {
  174. return model.getValue(path);
  175. }
  176. else
  177. {
  178. if (model.getValue(path) != value)
  179. {
  180. model.setValue(path, value);
  181. setupButton(button);
  182. }
  183. }
  184. }
  185. /**
  186. * @group :
  187. * @ver : 2007.05.21
  188. * @by : 김재홍
  189. * @---------------------------------------------------
  190. * @type : function
  191. * @access : public
  192. * @desc : XPath로 부터 ToggleButton image Load
  193. * @return :
  194. * @---------------------------------------------------
  195. */
  196. function getXPathToggleButton(button)
  197. {
  198. return button == null ? "/root/hidden/buttonToggle" : "/root/hidden/buttonToggle/" + button;
  199. }
  200. /**
  201. * @group :
  202. * @ver : 2007.05.21
  203. * @by : 김재홍
  204. * @---------------------------------------------------
  205. * @type : function
  206. * @access : public
  207. * @desc : 토글 버튼을 처리한다.
  208. * @return :
  209. * @---------------------------------------------------
  210. */
  211. function processToggleButton(button)
  212. {
  213. var node = instance1.selectSingleNode(getXPathToggleButton());
  214. var list = node.childNodes;
  215. var total = list.length;
  216. var curName;
  217. var name;
  218. var i;
  219. // 이미 켜져 있다면 처리가 필요 없음
  220. if(toggleButton(button, "value") == "1") return;
  221. // 영역확대, 확대, 축소 버튼일 경우 실제크기보기, 최적크기보기, 가로크기보기 버튼 끔
  222. if(button == "btnPageMouseRegionZoom" || button == "btnZoomIn" || button == "btnZoomOut")
  223. {
  224. if(toggleButton("btnFitBest", "value") == "1")
  225. {
  226. toggleButton("btnFitBest", "value", "0");
  227. }
  228. if(toggleButton("btnFitActual", "value") == "1")
  229. {
  230. toggleButton("btnFitActual", "value", "0");
  231. }
  232. if(toggleButton("btnFitWidth", "value") == "1")
  233. {
  234. toggleButton("btnFitWidth", "value", "0");
  235. }
  236. }
  237. // 확대, 축소 버튼의 경우 의미없음
  238. if(button == "btnZoomIn" || button == "btnZoomOut") return;
  239. curName = toggleButton(button, "name");
  240. for (i = 0; i < total; i++)
  241. {
  242. name = list.item(i).nodeName;
  243. if(toggleButton(name, "name") == curName && toggleButton(name, "value") == "1")
  244. {
  245. toggleButton(name, "value", "0");
  246. // 핸들러 호출
  247. eval(name + "_Changed()");
  248. }
  249. }
  250. toggleButton(button, "value", "1");
  251. // 핸들러 호출
  252. eval(button + "_Changed()");
  253. }
  254. /**
  255. * @group :
  256. * @ver : 2007.05.21
  257. * @by : 김재홍
  258. * @---------------------------------------------------
  259. * @type : function
  260. * @access : public
  261. * @desc : 토글 버튼을 처리한다.
  262. * @return :
  263. * @---------------------------------------------------
  264. */
  265. function loadChart(path)
  266. {
  267. objPageView.load(path, 1);
  268. objPageView.BestFit();
  269. }
  270. /**
  271. * @group :
  272. * @ver : 2007.05.21
  273. * @by : 김재홍
  274. * @---------------------------------------------------
  275. * @type : function
  276. * @access : public
  277. * @desc : 실제 크기 맞추기 버튼 핸들러
  278. * @return :
  279. * @---------------------------------------------------
  280. */
  281. function btnFitActual_Changed()
  282. {
  283. if(getToggleValue("ModeFit") == "btnFitActual")
  284. {
  285. objPageView.ActualSize();
  286. processToggleButton("btnPageMousePanning");
  287. }
  288. }
  289. /**
  290. * @group :
  291. * @ver : 2007.05.21
  292. * @by : 김재홍
  293. * @---------------------------------------------------
  294. * @type : function
  295. * @access : public
  296. * @desc : 최적 크기 맞추기 버튼 핸들러
  297. * @return :
  298. * @---------------------------------------------------
  299. */
  300. function btnFitBest_Changed()
  301. {
  302. if(getToggleValue("ModeFit") == "btnFitBest")
  303. {
  304. objPageView.BestFit();
  305. processToggleButton("btnPageMouseMagnifyingGlass");
  306. }
  307. }
  308. /**
  309. * @group :
  310. * @ver : 2007.05.21
  311. * @by : 김재홍
  312. * @---------------------------------------------------
  313. * @type : function
  314. * @access : public
  315. * @desc : 가로 크기 맞추기 버튼 핸들러
  316. * @return :
  317. * @---------------------------------------------------
  318. */
  319. function btnFitWidth_Changed()
  320. {
  321. if(getToggleValue("ModeFit") == "btnFitWidth")
  322. {
  323. objPageView.FitToWidth();
  324. processToggleButton("btnPageMousePanning");
  325. }
  326. }
  327. /**
  328. * @group :
  329. * @ver : 2007.05.21
  330. * @by : 김재홍
  331. * @---------------------------------------------------
  332. * @type : function
  333. * @access : public
  334. * @desc : 일반 마우스 커서 버튼 핸들러
  335. * @return :
  336. * @---------------------------------------------------
  337. */
  338. function btnPageMouseNormal_Changed()
  339. {
  340. if(getToggleValue("ModePageMouse") == "btnPageMouseNormal")
  341. {
  342. objPageView.MouseMode = 0;
  343. }
  344. }
  345. /**
  346. * @group :
  347. * @ver : 2007.05.21
  348. * @by : 김재홍
  349. * @---------------------------------------------------
  350. * @type : function
  351. * @access : public
  352. * @desc : 영역 확대 마우스 커서 버튼 핸들러
  353. * @return :
  354. * @---------------------------------------------------
  355. */
  356. function btnPageMouseRegionZoom_Changed()
  357. {
  358. if(getToggleValue("ModePageMouse") == "btnPageMouseRegionZoom")
  359. {
  360. objPageView.MouseMode = 2;
  361. }
  362. }
  363. /**
  364. * @group :
  365. * @ver : 2007.05.21
  366. * @by : 김재홍
  367. * @---------------------------------------------------
  368. * @type : function
  369. * @access : public
  370. * @desc : 돋보기 마우스 커서 버튼 핸들러
  371. * @return :
  372. * @---------------------------------------------------
  373. */
  374. function btnPageMouseMagnifyingGlass_Changed()
  375. {
  376. if(getToggleValue("ModePageMouse") == "btnPageMouseMagnifyingGlass")
  377. {
  378. objPageView.MouseMode = 4;
  379. }
  380. }
  381. /**
  382. * @group :
  383. * @ver : 2007.05.21
  384. * @by : 김재홍
  385. * @---------------------------------------------------
  386. * @type : function
  387. * @access : public
  388. * @desc : 끌기 마우스 커서 버튼 핸들러
  389. * @return :
  390. * @---------------------------------------------------
  391. */
  392. function btnPageMousePanning_Changed()
  393. {
  394. if(getToggleValue("ModePageMouse") == "btnPageMousePanning")
  395. {
  396. objPageView.MouseMode = 1;
  397. }
  398. }
  399. /**
  400. * @group :
  401. * @ver : 2007.05.21
  402. * @by : 김재홍
  403. * @---------------------------------------------------
  404. * @type : function
  405. * @access : public
  406. * @desc : 토글 버튼 그룹에서 눌려져 있는 버튼 이름을 반환한다.
  407. * @return :
  408. * @---------------------------------------------------
  409. */
  410. function getToggleValue(group)
  411. {
  412. var node = instance1.selectSingleNode( getXPathToggleButton() );
  413. var list = node.childNodes;
  414. var total = list.length;
  415. var name;
  416. var i;
  417. for(i = 0; i < total; i++)
  418. {
  419. name = list.item(i).nodeName;
  420. if(toggleButton(name, "name") == group && toggleButton(name, "value") == "1")
  421. {
  422. return name;
  423. }
  424. }
  425. return "";
  426. }
  427. /**
  428. * @group :
  429. * @ver : 2007.05.21
  430. * @by : 김재홍
  431. * @---------------------------------------------------
  432. * @type : function
  433. * @access : public
  434. * @desc : 화면 사이즈를 차트 크기에 최적화
  435. * @return :
  436. * @---------------------------------------------------
  437. */
  438. function fitToWindowSize()
  439. {
  440. var obj;
  441. obj = document.controls.item("objPageView");
  442. // objPageView의 이미지 크기 산출
  443. //var imgwidth = obj.ImageWidth;
  444. //var imgheight = obj.ImageHeight;
  445. var imgwidth = objPageView.ImageWidth;
  446. var imgheight = objPageView.ImageHeight;
  447. alert("imgwidth : " + imgwidth);
  448. alert("objwidth : " + obj.attribute("width"));
  449. alert("imgheight : " + imgheight);
  450. alert("objheight : " + obj.attribute("height"));
  451. }
  452. /**
  453. * @group :
  454. * @ver : 2007.05.21
  455. * @by : 김재홍
  456. * @---------------------------------------------------
  457. * @type : function
  458. * @access : public
  459. * @desc : 이미지파일 다운로드
  460. * @return :
  461. * @---------------------------------------------------
  462. */
  463. function downloadFile()
  464. {
  465. var strpath = "";
  466. var fso;
  467. var count;
  468. var downloadcount = 1;
  469. fso = new ActiveXObject("Scripting.FileSystemObject");
  470. if (objThumbView.TotalSelectedThumbnail == 0)
  471. {
  472. return;
  473. }
  474. strpath = window.folderDialog("Choose a folder to save Image");
  475. if (strpath == "")
  476. {
  477. return;
  478. }
  479. for (count = 1; count <= objThumbView.TotalThumbnail; count++)
  480. {
  481. if (objThumbView.Select(count) == true)
  482. {
  483. alert(objThumbView.FileName(count));
  484. alert(objThumbView.ThumbText(count));
  485. // fso.CopyFile(model.getValue("/root/main/chartpath"), strpath + "/" + objThumbView.ThumbText(count) + "_" + downloadcount + ".jpg", true);
  486. fso.CopyFile(model.getValue("/root/main/chartpath"), strpath + "/ComparePageMode_" + downloadcount + ".jpg", true);
  487. downloadcount++;
  488. }
  489. }
  490. }