SMLQP00200_QC그래프조회.xrw 84 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948
  1. <?xml version="1.0" encoding="EUC-KR"?>
  2. <!--
  3. * 제 목 : SMLQP00200_QC그래프조회.xrw
  4. * 설 명 : QC그래프조회
  5. * 설 계 자 : (주)에이씨케이 -
  6. * 작 성 자 : (주)에이씨케이 -
  7. * 작 성 일 : 2006.12.04
  8. * 수정이력 :
  9. * 기 타 :
  10. -->
  11. <?xml-stylesheet href="../../../com/commonweb/css/common.css" ztype="text/css" ?>
  12. <xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2002/01/xforms" xmlns:ev="http://www.w3.org/2001/xml-events">
  13. <xhtml:head>
  14. <xhtml:title/>
  15. <model id="model1">
  16. <instance id="instance1">
  17. <root xmlns="">
  18. <main>
  19. <rsltlist>
  20. <row>
  21. </row>
  22. <hearder/>
  23. </rsltlist>
  24. <matrinfo>
  25. <matrnm/>
  26. <levlnm/>
  27. <lotno/>
  28. <prodcmpy/>
  29. <wgmrscop/>
  30. <wgmrstat/>
  31. <measfactcnts test="Attribute" test2="Attribute2"/>
  32. <measfactcd/>
  33. </matrinfo>
  34. </main>
  35. <send>
  36. <codeflag/>
  37. <basecdid/>
  38. <data1/>
  39. <levlcd/>
  40. <factcntlist/>
  41. <deptflag/>
  42. <signdata/>
  43. <page/>
  44. </send>
  45. <init>
  46. </init>
  47. <hidden>
  48. <ref>
  49. <acptfromdd/>
  50. <acpttodd/>
  51. <testroom>00</testroom>
  52. <eqmtcd>00</eqmtcd>
  53. <testnm/>
  54. <basecdid/>
  55. <testlist>
  56. <testnm/>
  57. <testcd/>
  58. <testcd2/>
  59. </testlist>
  60. <testcdlist/>
  61. <levllist>
  62. <levlnm/>
  63. <levlcd/>
  64. <levlcd2/>
  65. </levllist>
  66. <levlcd/>
  67. <acptflag>00</acptflag>
  68. <releqmtyn/>
  69. </ref>
  70. <temp>
  71. <rsltlist/>
  72. <factcnts>
  73. <finddata/>
  74. <matrcd/>
  75. <testcd/>
  76. <levlcd/>
  77. <measfactcnts/>
  78. <measfactcd/>
  79. <bcno/>
  80. <acptdt/>
  81. <viewrslt/>
  82. <cnfmdt/>
  83. <testnm/>
  84. <levlnm/>
  85. <userid/>
  86. <signdt/>
  87. <signnm/>
  88. <wgmrmark/>
  89. </factcnts>
  90. <toddlist>
  91. <matrkindcd/>
  92. <toddlist/>
  93. <fromddlist/>
  94. </toddlist>
  95. <page>
  96. <page/>
  97. </page>
  98. </temp>
  99. <gref>
  100. <grapegbn>1</grapegbn>
  101. <img/>
  102. <factcnts/>
  103. <testinfo/>
  104. <yn/>
  105. <cnfmlist/>
  106. </gref>
  107. <param>
  108. <cnfmfromdd/>
  109. <cnfmtodd/>
  110. <userflag/>
  111. <eqmtcd/>
  112. <testcdlist/>
  113. <testnmlist/>
  114. <levlcdlist/>
  115. <levlnmlist/>
  116. <matrcdlist/>
  117. <lotnolist/>
  118. <viewtestnmlist/>
  119. <viewlevlnmlist/>
  120. </param>
  121. </hidden>
  122. <send2>
  123. <eqmtcd/>
  124. <testcdlist/>
  125. <levlcdlist/>
  126. <fromdd/>
  127. <todd/>
  128. <refflag>1</refflag>
  129. </send2>
  130. </root>
  131. </instance>
  132. <script type="javascript" ev:event="xforms-model-construct-done">
  133. <![CDATA[
  134. fSetinit();
  135. ]]>
  136. </script>
  137. <script type="javascript" src="../js/LLZ001.js"/>
  138. <script type="javascript" src="../../../com/commonweb/js/dateHelper.js"/>
  139. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  140. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  141. <script type="javascript" src="../../../com/commonweb/js/stringHelper.js"/>
  142. <script type="javascript" src="../../../com/commonweb/js/numericHelper.js"/>
  143. <script type="javascript" src="../../../lis/commonweb/js/LLZ001.js"/>
  144. <script type="javascript" src="../../../com/commonweb/js/tchartHelper.js"/>
  145. <script type="javascript" src="../../../emr/carecomweb/js/ENRSignEngine.js"/>
  146. <submission id="TRLZZ00101" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/LB0111"/>
  147. <submission id="TRLQP00201" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" replace="instance" resultref="/root/hidden/temp"/>
  148. <submission id="TRLQP00202" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/main/matrinfo"/>
  149. <submission id="TRLQP00203" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/hidden/temp/toddlist"/>
  150. <submission id="TRLQP00205" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" replace="instance" add="bottom" resultref="/root/hidden/temp/factcnts"/>
  151. <submission id="TXLQP00201" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" replace="instance"/>
  152. <submission id="TXLRR00401" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" replace="instance" resultref="/root/signdata"/>
  153. <submission id="TXLQP00202" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" replace="instance"/>
  154. <submission id="TRLQP90401" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send2" replace="instance" resultref="/root/hidden/gref/cnfmlist"/>
  155. </model>
  156. <script type="javascript">
  157. <![CDATA[
  158. var vCol = 16; //시작컬럼에 대한 Index
  159. function fSetinit(){
  160. var fromdate = getCurrentDate().toDate("YYYYMMDD").getAddDate(-30)
  161. model.setValue("/root/hidden/ref/acptfromdd", fromdate.getDateFormat("YYYYMMDD"));
  162. model.setValue("/root/hidden/ref/acpttodd", getCurrentDate());
  163. model.makeValue("/root/send/codeflag","0000|0111|0701|0703|"); //0000:사용자부서코드, 0111:시행부서계 0701: 장비코드, 0703:조치사항코드
  164. submit("TRLZZ00101", false);
  165. model.makeValue("/root/send/basecdid", model.getValue("/root/init/LB0000/nm"));
  166. model.setValue("/root/send/codeflag", "0501|0704|"); //사용자 부서별로 레벨코드를 조회하기 위해 사용자부서 코드를 가져온 다음 다시 레벨코드 조회
  167. submit("TRLZZ00101");
  168. model.refresh();
  169. //createTChart("object1", 0, 5, 1184, 360, case1); //그래프 object 생성
  170. //createTChart("object2", 10, 5, 1150, 360, case1);
  171. //createTChart("object3", 10, 5, 1150, 360, case1);
  172. //fInitChart();
  173. }
  174. function fGetMatrInfo(){
  175. // alert("^^");
  176. var rslt = datagrid1.valueMatrix(datagrid1.row, datagrid1.col);
  177. // alert(datagrid1.col);
  178. if(datagrid1.col > (vCol-1) && rslt != ""){ //15번째 컬럼부터 결과 && rslt != "" 일단제외 //이재오 막다
  179. // alert("^^");
  180. var testcd = model.getValue("/root/main/rsltlist/row["+ datagrid1.row +"]/testcd");
  181. var levlcd = model.getValue("/root/main/rsltlist/row["+ datagrid1.row +"]/levlcd");
  182. var matrcd = model.getValue("/root/main/rsltlist/row["+ datagrid1.row +"]/matrcd");
  183. var testdt = datagrid1.valueMatrix(0, datagrid1.col);
  184. var acptdt = testdt.substr(0,4) + testdt.substr(5,2) + testdt.substr(8,2) + testdt.substr(11,2) + testdt.substr(14,2) + testdt.substr(17,2);
  185. model.makeValue("/root/send/matrcd" , matrcd);
  186. model.makeValue("/root/send/levlcda" , levlcd);
  187. model.makeValue("/root/send/tclscd" , testcd);
  188. model.makeValue("/root/send/acptdt" , acptdt);
  189. submit("TRLQP00202");
  190. //소견 저장하지 않았을때 검사 결과 선택시 조치사항 조회 위함
  191. var findData = testcd+matrcd+levlcd+acptdt;
  192. var findRow = datagrid2.findRow(findData, 0, 1);
  193. if(findRow != -1){
  194. model.setValue("/root/main/matrinfo/measfactcnts", model.getValue("/root/hidden/temp/factcnts["+ findRow+"]/measfactcnts"));
  195. model.setValue("/root/main/matrinfo/measfactcd", model.getValue("/root/hidden/temp/factcnts["+ findRow+"]/measfactcd"));
  196. }
  197. }else{
  198. model.removeNodeset("/root/main/matrinfo");
  199. }
  200. model.refresh();
  201. }
  202. function fSetEqmtCd(){
  203. model.removeNodeset("/root/init/LB0701");
  204. var testroom = model.getValue("/root/hidden/ref/testroom");
  205. model.makeValue("/root/send/basecdid", testroom); //검사실구분 코드(장비코드앞자리)
  206. model.setValue("/root/send/codeflag","0701|");
  207. model.setValue("/root/hidden/ref/eqmtcd", "00");
  208. submit("TRLZZ00101");
  209. }
  210. //장비별 검사항목 조회 팝업
  211. function fTestListSch(){
  212. var eqmtcd = model.getValue("/root/hidden/ref/eqmtcd"); //장비코드
  213. var deptflag = model.getValue("/root/init/LB0000/nm"); //사용자부서코드
  214. var sflag = "nu" + "▦" + eqmtcd + "▦" + deptflag;
  215. setParameter("opener_parameter_id", sflag);
  216. modal("SPLQP00100", "", "", "", "", "", "");
  217. var testcd = model.getValue("/root/hidden/ref/testlist/testcd");
  218. /* 10개 항목 제한 풀기
  219. if(testcd.split("▦").length > 10){
  220. alert("최대조회 항목 수는 10개입니다\n검사항목을 다시 선택하세요!!");
  221. fTestListSch();
  222. }*/
  223. model.setValue("/root/hidden/ref/testnm", model.getValue("/root/hidden/ref/testlist/testnm")); //검사명
  224. //model.setValue("/root/send/testcd", model.getValue("/root/hidden/ref/testlist/testcd")); //검사코드를 받아와서 셋팅~
  225. //model.setValue("/root/hidden/ref/testcdlist", "'" + model.getValue("/root/hidden/ref/testlist/testcd2") + "'");
  226. model.refresh();
  227. }
  228. //검사항목별 레벨 조회 팝업
  229. function fTestLevlSch(){
  230. var eqmtcd = model.getValue("/root/send/eqmtcd"); //장비코드
  231. var deptflag = model.getValue("/root/init/LB0000/nm"); //사용자부서코드
  232. var sflag = "nu" + "▦" + eqmtcd + "▦" + deptflag;
  233. setParameter("opener_parameter_id", sflag);
  234. modal("SPLQP00200", "", "", "", "", "", "");
  235. //model.makeValue("/root/send/levlnm" , model.getValue("/root/hidden/ref/levllist/levlnm")); //레벨명
  236. model.setValue("/root/hidden/ref/levlcd" , model.getValue("/root/hidden/ref/levllist/levlcd")); //레벨코드
  237. //model.makeValue("/root/send/levlcd2" , model.getValue("/root/hidden/ref/levllist/levlcd2"));
  238. model.refresh();
  239. }
  240. //결과 그리드 컬럼 초기화
  241. function fSetGrdInit(){
  242. model.resetInstanceNode("/root/main/rsltlist/row");
  243. var cols = datagrid1.cols-datagrid1.fixedCols;
  244. var rows = datagrid1.rows-datagrid1.fixedRows;
  245. // alert(datagrid1.cols);
  246. // alert(datagrid1.fixedCols);
  247. // alert(cols);
  248. for( var i = 0; i < cols; i++ ) {
  249. datagrid1.removeColumn(false);
  250. }
  251. for( var i = 0; i < rows; i++ ) {
  252. datagrid1.removeRow(false);
  253. }
  254. model.removeNodeset("/root/main/");
  255. model.refresh();
  256. }
  257. function fGetGrapeRsltList(){
  258. datagrid2.clearStatus(); //조치사항 그리드 초기화
  259. model.resetInstanceNode("/root/hidden/temp/factcnts"); //조치사항 초기화
  260. fSetGrdInit();// 그리드 컬럼 초기화
  261. var eqmtcd = model.getValue("/root/hidden/ref/eqmtcd");
  262. var testnm = model.getValue("/root/hidden/ref/testnm");
  263. var levlcd = model.getValue("/root/hidden/ref/levllist/levlcd");
  264. if(eqmtcd == "00"){
  265. messageBox("장비를", "C002","");
  266. return;
  267. }
  268. if(testnm == ""){
  269. messageBox("검사항목을", "C002","");
  270. return;
  271. }
  272. if(levlcd == ""){
  273. messageBox("레벨을", "C002","");
  274. return;
  275. }
  276. model.copyNode("/root/send/data1", "/root/hidden/ref");
  277. model.setValue("/root/send/deptflag", model.getValue("/root/init/LB0000/nm"));
  278. model.setValue("/root/send/page" , "1");
  279. if(submit("TRLQP00201", false)){
  280. //조치사항이 미칠듯이 많아 페이징 처리 함
  281. submit("TRLQP00205", false);
  282. var lastPage = model.getValue("/root/hidden/temp/page/page");
  283. for(page = 2 ; page <= lastPage ; page++){
  284. model.setValue("/root/send/page", page);
  285. submit("TRLQP00205", false);
  286. }
  287. }
  288. //alert(model.getXPathValue('count(/root/hidden/temp/factcnts)'));
  289. var gridCaption = model.getValue("/root/hidden/temp/rsltlist/header/caption");
  290. // debugger;
  291. // alert(model.getValue("/root/hidden/temp/rsltlist/header/caption"));
  292. if(gridCaption == "") return;
  293. //ref 정보
  294. var gridColRef = model.getValue("/root/hidden/temp/rsltlist/header/colref");
  295. var gridColRefArray = gridColRef.split("^");
  296. var gridColType = model.getValue("/root/hidden/temp/rsltlist/header/type");
  297. var gridColTypeArray = gridColType.split("^");
  298. for( var i = 0; i < gridColRefArray.length; i++ ) {
  299. datagrid1.addColumn("ref:" + gridColRefArray[i] + "; type:"+gridColTypeArray[i]+"; ", false);
  300. }
  301. //컬럼 width Set..
  302. for( i = 1; i < datagrid1.cols; i++ ) {
  303. if(i == 1){
  304. datagrid1.colWidth(i) = 25; //chk
  305. }else if( i == 2){ //장비코드
  306. datagrid1.colWidth(i) = 30;
  307. }else if( i == vCol-11){ //검사항목
  308. datagrid1.colWidth(i) = 120;
  309. }else if( i < vCol){ //결과 전까지는 60
  310. datagrid1.colWidth(i) = 60;
  311. }else{
  312. datagrid1.colWidth(i) = 75;
  313. }
  314. }
  315. datagrid1.caption = gridCaption;
  316. datagrid1.fixedcellcheckbox(0,1)=true; //전체선택기능 추가
  317. var node = instance1.selectSingleNode("/root/main");
  318. // alert(instance1.root.hidden.temp.rsltlist.nodeValue);
  319. node.replaceChild(instance1.root.hidden.temp.rsltlist, instance1.root.main.rsltlist);
  320. datagrid1.rowheight(0) = 30;
  321. datagrid1.rebuild();
  322. //datagrid1.colHidden(1) = true; //체크
  323. //* 이재오 막다
  324. // alert(vCol);
  325. datagrid1.colHidden(vCol-3) = true; //검사코드
  326. datagrid1.colHidden(vCol-2) = true; //레벨코드 //검사
  327. datagrid1.colHidden(vCol-1) = true; //물질코드 //레벨
  328. // datagrid1.colHidden(vCol) = true; //물질코드
  329. /*/
  330. //WGMR 에 걸린 결과값 색 변경
  331. for(i = 1; i < datagrid1.rows; i++){
  332. for(j = vCol; j < datagrid1.cols; j++){
  333. if(datagrid1.valueMatrix(i, j).indexOf("W") != -1){
  334. datagrid1.cellStyle("background-color", i , j) = "#99cf16";
  335. }
  336. }
  337. }
  338. datagrid1.rightCol = datagrid1.cols; //조회 후 가장 최근 결과가 보여지게 해달라는 요구사항때문에..
  339. datagrid1.gridToInstance();
  340. model.refresh();
  341. }
  342. function fInitChartRegl(sGrapFlag){
  343. //sGrapFalg 1: 정규화, 2: 로하이, 3: 민에스디
  344. var Obj_Chart = object1; //시리즈 번호
  345. //var vEnd = datagrid1.cols - 15; //끝좌표
  346. var count = model.getXPathValue('count(/root/main/rsltlist/row[chk="true"])'); //선택된 항목의 갯수
  347. if(count == 0){
  348. alert("그래프를 작성할 항목을 선택하세요");
  349. return;
  350. }else if(count ==1){
  351. var vEnd = -1;
  352. var chkrow = datagrid1.findRow("true", 1, 1);
  353. for(i = vCol; i < datagrid1.cols; i++){ //14번째 컬럼부터 column0~ 시작
  354. var x = datagrid1.valueMatrix(chkrow, i); //결과값
  355. if(x != ""){
  356. vEnd += 1; //결과 값이 있다면 1씩 더해
  357. }
  358. }
  359. }else{
  360. var vEnd = datagrid1.cols - (vCol+1); //끝 좌표
  361. }
  362. Obj_Chart.Aspect.View3D = 0; // 2d 로 표현하기
  363. Obj_Chart.Zoom.Enable = false; // zoom 사용하지 않기
  364. Obj_Chart.Scroll.Enable = 2;
  365. Obj_Chart.Environment.MouseWheelScroll = false;
  366. Obj_Chart.Legend.Visible = false; // 그래프 참조 박스 띄우지 않기
  367. Obj_Chart.Panel.Gradient.Visible = true; // 페널에 그라디언트 적용
  368. Obj_Chart.Panel.Gradient.StartColor = 0xffffff;
  369. Obj_Chart.Panel.Gradient.EndColor=0xffffff;
  370. Obj_Chart.Legend.Visible = true; //범례표시 여부
  371. Obj_Chart.Legend.Alignment = 3; // Legend 위치 설정 :: 0 = left | 1 = right | 2 = top| 3 = bottom
  372. Obj_Chart.Legend.CheckBoxes = false; //범례 체크박스
  373. Obj_Chart.RemoveAllSeries();
  374. Obj_Chart.Axis.RemoveAllCustom();
  375. //margin 값 정하기
  376. Obj_Chart.Panel.MarginTop = 5;
  377. Obj_Chart.Panel.MarginLeft = 2;
  378. Obj_Chart.Panel.MarginRight = 0;
  379. Obj_Chart.Panel.MarginBottom = 2;
  380. Obj_Chart.Header.Visible = false; //헤더 타이틀 보이지 않기
  381. Obj_Chart.Axis.Left.Labels.Style = 2;
  382. Obj_Chart.Axis.Right.Labels.Style = 1;
  383. Obj_Chart.Axis.Bottom.Labels.Style = 0; // 0:auto or value, 1:No, 2 :민 맥스, 3: marks style, 4:text
  384. Obj_Chart.Axis.Bottom.Labels.Angle = 90; //90도 돌려서 라벨 표시
  385. Obj_Chart.Axis.Bottom.Labels.Size = 95; //하단 라벨의 사이즈 조치사항 추가하면서 자동으로 늘어나서 추가함
  386. Obj_Chart.Axis.Left.Title.Caption = "Fixed SD";
  387. Obj_Chart.Axis.Left.Automatic = false;
  388. Obj_Chart.Axis.Left.Maximum = 3.5;
  389. Obj_Chart.Axis.Left.Minimum = -3.5;
  390. Obj_Chart.Axis.Left.Increment = 1;
  391. //Avg 라인
  392. Obj_Chart.AddSeries(0); //asLine
  393. Obj_Chart.Series(0).asLine.LinePen.Width = 2;
  394. Obj_Chart.Series(0).Color = 0x000000;
  395. Obj_Chart.Series(0).AddXY (0 , 0 , "", Obj_Chart.Series(0).Color );
  396. Obj_Chart.Series(0).AddXY (vEnd , 0 , "", Obj_Chart.Series(0).Color );
  397. //+1SD 라인
  398. Obj_Chart.AddSeries(0); //asLine
  399. Obj_Chart.Series(1).asLine.LinePen.Width = 1;
  400. Obj_Chart.Series(1).Color = 0x000000;
  401. Obj_Chart.Series(1).AddXY (0 , 1 , "", Obj_Chart.Series(1).Color );
  402. Obj_Chart.Series(1).AddXY (vEnd , 1 , "", Obj_Chart.Series(1).Color );
  403. //-1SD 라인
  404. Obj_Chart.AddSeries(0); //asLine
  405. Obj_Chart.Series(2).asLine.LinePen.Width = 1;
  406. Obj_Chart.Series(2).Color = 0x000000;
  407. Obj_Chart.Series(2).AddXY (0 , -1 , "", Obj_Chart.Series(2).Color );
  408. Obj_Chart.Series(2).AddXY (vEnd , -1 , "", Obj_Chart.Series(2).Color );
  409. //+2SD 라인
  410. Obj_Chart.AddSeries(0); //asLine
  411. Obj_Chart.Series(3).asLine.LinePen.Width = 2;
  412. Obj_Chart.Series(3).Color = 0x00ccff;
  413. Obj_Chart.Series(3).AddXY (0 , 2 , "", Obj_Chart.Series(3).Color );
  414. Obj_Chart.Series(3).AddXY (vEnd , 2 , "", Obj_Chart.Series(3).Color );
  415. //-2SD 라인
  416. Obj_Chart.AddSeries(0); //asLine
  417. Obj_Chart.Series(4).asLine.LinePen.Width = 2;
  418. Obj_Chart.Series(4).Color = 0x00ccff;
  419. Obj_Chart.Series(4).AddXY (0 , -2 , "", Obj_Chart.Series(4).Color );
  420. Obj_Chart.Series(4).AddXY (vEnd , -2 , "", Obj_Chart.Series(4).Color );
  421. //+3SD 라인
  422. Obj_Chart.AddSeries(0); //asLine
  423. Obj_Chart.Series(5).asLine.LinePen.Width = 2;
  424. Obj_Chart.Series(5).Color = 0x0000ee;
  425. Obj_Chart.Series(5).AddXY (0 , 3 , "", Obj_Chart.Series(5).Color );
  426. Obj_Chart.Series(5).AddXY (vEnd , 3 , "", Obj_Chart.Series(5).Color );
  427. //-3SD 라인
  428. Obj_Chart.AddSeries(0); //asLine
  429. Obj_Chart.Series(6).asLine.LinePen.Width = 2;
  430. Obj_Chart.Series(6).Color = 0x0000ee;
  431. Obj_Chart.Series(6).AddXY (0 , -3 , "", Obj_Chart.Series(6).Color );
  432. Obj_Chart.Series(6).AddXY (vEnd , -3 , "", Obj_Chart.Series(6).Color );
  433. //날짜 10번째 시리즈
  434. Obj_Chart.AddSeries(0); //asLine
  435. Obj_Chart.Series(7).Color = 0x000000;
  436. Obj_Chart.Series(7).asLine.LinePen.Width = 1; //펜 두께
  437. Obj_Chart.Series(7).asLine.Pointer.Visible = false; //값에 대한 포인터
  438. for(i=0; i <= 7 ; i++){ //라인들에 대한 범례 보이지 않게
  439. Obj_Chart.Series(i).ShowInLegend = false;
  440. }
  441. fMakeChartRegl(); //정규화 챠트 그리기
  442. }
  443. //그래프를 그려보자(2,3)
  444. function fInitChart(sGrapFlag){
  445. //sGrapFalg 1: 정규화, 2: 로하이, 3: 민에스디
  446. var count = model.getXPathValue('count(/root/main/rsltlist/row[chk="true"])'); //선택된 항목의 갯수
  447. if(count == 0){
  448. alert("그래프를 작성할 항목을 선택하세요");
  449. return;
  450. }else if(count ==1){
  451. var vEnd = -1;
  452. var chkrow = datagrid1.findRow("true", 1, 1);
  453. for(i = vCol; i < datagrid1.cols; i++){ //14번째 컬럼부터 column0~ 시작
  454. var x = datagrid1.valueMatrix(chkrow, i); //결과값
  455. if(x != ""){
  456. vEnd += 1; //결과 값이 있다면 1씩 더해
  457. }
  458. }
  459. var vAvg = parseFloat(model.getValue("/root/main/rsltlist/row["+ chkrow +"]/mean"));
  460. var vSD = parseFloat(model.getValue("/root/main/rsltlist/row["+ chkrow +"]/sd"));
  461. var vTitle = model.getValue("/root/main/rsltlist/row["+ chkrow +"]/testnm");
  462. var vLevlnm = model.getValue("/root/main/rsltlist/row["+ chkrow +"]/levlnm");
  463. var ref = model.getValue("/root/main/rsltlist/row["+ chkrow +"]/ref").split("~");
  464. var vLow = ref[0];
  465. var vHigh = ref[1];
  466. var v1SDH = vAvg + vSD;
  467. var v2SDH = vAvg + vSD*2;
  468. var v3SDH = vAvg + vSD*3;
  469. var v4SDH = vAvg + vSD*4;
  470. var v1SDL = vAvg - vSD;
  471. var v2SDL = vAvg - vSD*2;
  472. var v3SDL = vAvg - vSD*3;
  473. var v4SDL = vAvg - vSD*4;
  474. }else{
  475. var vEnd;// = datagrid1.cols - 13; //끝 좌표
  476. }
  477. var Obj_Chart = object2;
  478. var vStart = 0; //시리즈 번호
  479. Obj_Chart.Aspect.View3D = 0; // 2d 로 표현하기
  480. Obj_Chart.Zoom.Enable = false; // zoom 사용하지 않기
  481. Obj_Chart.Scroll.Enable = 2;
  482. Obj_Chart.Environment.MouseWheelScroll = false;
  483. Obj_Chart.Legend.Visible = false; // 그래프 참조 박스 띄우지 않기
  484. Obj_Chart.Panel.Gradient.Visible = true; // 페널에 그라디언트 적용
  485. Obj_Chart.Panel.Gradient.StartColor = 0xffffff;
  486. Obj_Chart.Panel.Gradient.EndColor=0xffffff;
  487. Obj_Chart.Legend.Visible = true; //범례표시 여부
  488. Obj_Chart.Legend.Alignment = 3; // Legend 위치 설정 :: 0 = left | 1 = right | 2 = top| 3 = bottom
  489. Obj_Chart.Legend.CheckBoxes = false; //범례 체크박스
  490. Obj_Chart.RemoveAllSeries();
  491. Obj_Chart.Axis.RemoveAllCustom();
  492. //margin 값 정하기
  493. Obj_Chart.Panel.MarginTop = 0;
  494. Obj_Chart.Panel.MarginLeft = 2;
  495. Obj_Chart.Panel.MarginRight = 0;
  496. Obj_Chart.Panel.MarginBottom = 2;
  497. Obj_Chart.Header.Visible = false;
  498. //Obj_Chart.Header.Text(0) = vTitle+"_"+vLevlnm;
  499. //Obj_Chart.Header.Font.Size = 14;
  500. //Obj_Chart.Header.Font.Color = 0x000000;
  501. Obj_Chart.Axis.Left.Labels.Style = 2;
  502. Obj_Chart.Axis.Right.Labels.Style = 1;
  503. Obj_Chart.Axis.Bottom.Labels.Style = 4; // 0:auto or value, 1:No, 2 :민 맥스, 3: marks style, 4:text
  504. Obj_Chart.Axis.Bottom.Labels.Angle = 90; //90도 돌려서 라벨 표시
  505. Obj_Chart.Axis.Bottom.Labels.Size = 95; //하단 라벨의 사이즈 조치사항 추가하면서 자동으로 늘어나서 추가함
  506. Obj_Chart.Axis.Left.Title.Caption = "실측값";
  507. Obj_Chart.Axis.Left.Automatic = true;
  508. //날짜그래프
  509. Obj_Chart.AddSeries(0); //asLine
  510. Obj_Chart.Series(0).asLine.LinePen.Width = 1; //펜 두께
  511. Obj_Chart.Series(0).asLine.Pointer.Visible = false; //값에 대한 포인터
  512. Obj_Chart.Series(0).ShowInLegend = false;
  513. var find, row, tmp;
  514. var findRows = "";
  515. for(r = 1; r <datagrid1.rows; r++){ //선택된 검사항목 그래프 그리기 위함
  516. if(model.getValue("/root/main/rsltlist/row["+ r +"]/chk") == "true"){
  517. findRows = findRows + r + "▦";
  518. }
  519. }
  520. row = findRows.substr(0, findRows.length-1).split("▦"); //체크된 항목의 row▦row...
  521. if(sGrapFlag == "3"){ //Mean/SD그래푸
  522. if(row.length == 1){
  523. //alert("vCnt = "+vCnt + " vAvg = " + vAvg + " vSD = " + vSD + " vStart = " +vStart + " vEnd = " + vEnd);
  524. fMakeLineSD(vAvg, vSD, vStart, vEnd); //라인그리기
  525. }else{ //중복된 검사항목이 있을 경우에 평균이나 편차에 대해서 여러줄 그려
  526. for(i = 0; i < row.length; i++){
  527. vAvg = parseFloat(model.getValue("/root/main/rsltlist/row["+ row[i] +"]/mean"));
  528. vSD = parseFloat(model.getValue("/root/main/rsltlist/row["+ row[i] +"]/sd"));
  529. tmp = 0;
  530. vEnd = 0; //각 검사항목의 라인 끝점
  531. for(j = vCol; j < datagrid1.cols; j++){ //14번째 컬럼부터 column0~ 시작
  532. x = datagrid1.valueMatrix(row[i], j);
  533. if(x != ""){
  534. if(tmp == 0){
  535. vStart = j - vCol; //라인의 시작점
  536. }
  537. tmp++;
  538. vEnd = j - vCol; //라인의 끝점
  539. }
  540. }//alert( "vStart :" + vStart+ " tmpEnd:"+ tmpEnd+" j:"+j);
  541. fMakeLineSD(vAvg, vSD, vStart, vEnd); //라인그리기
  542. }
  543. }
  544. }else if(sGrapFlag == "2"){ //Low/High그래푸
  545. if(row.length == 1){
  546. fMakeLineLH(vAvg, vHigh, vLow, vStart, vEnd);
  547. }else{ //여러항목일 경우 평균이나 편차에 대한 라인 여러줄 그려
  548. for(i = 0; i < row.length; i++){
  549. vAvg = parseFloat(model.getValue("/root/main/rsltlist/row["+ row[i] +"]/mean"));
  550. ref = model.getValue("/root/main/rsltlist/row["+ row[i] +"]/ref").split("~");
  551. vLow = ref[0];
  552. vHigh = ref[1];
  553. tmp = 0;
  554. vEnd = 0; //각 검사항목의 라인 끝점
  555. for(j = vCol; j < datagrid1.cols; j++){ //14번째 컬럼부터 column0~ 시작
  556. x = datagrid1.valueMatrix(row[i], j);
  557. if(x != ""){
  558. //vEnd += 1; //결과 값이 있다면 1씩 더해
  559. if(tmp == 0){
  560. vStart = j - vCol; //라인의 시작점
  561. }
  562. tmp++;
  563. vEnd = j - vCol;
  564. }
  565. }
  566. fMakeLineLH(vAvg, vHigh, vLow, vStart, vEnd);
  567. }
  568. }
  569. }
  570. fMakeChartOrgRslt(row); //L/H 및 Mean/SD 챠트 그리기
  571. /* //그래프가 그려질 시리즈 그래프그리는로 옮김
  572. Obj_Chart.AddSeries(37); //asHorizLine
  573. Obj_Chart.Series(vCnt).Color = 0xBE5B42; //
  574. Obj_Chart.Series(vCnt).asHorizLine.LinePen.Width = 2; //펜 두께
  575. Obj_Chart.Series(vCnt).asHorizLine.Pointer.Visible = true; //값에 대한 포인터
  576. Obj_Chart.Series(vCnt).asHorizLine.Pointer.Brush.Color = 0x6698FF;
  577. Obj_Chart.Series(vCnt).asHorizLine.Pointer.Style = 0;
  578. Obj_Chart.Series(vCnt).asHorizLine.Pointer.VerticalSize = 3;
  579. Obj_Chart.Series(vCnt).asHorizLine.Pointer.HorizontalSize = 3;
  580. Obj_Chart.Series(vCnt).VerticalAxis = 2; //좌표 y축에대한 스타일 2:both??
  581. Obj_Chart.Series(vCnt).Title = vTitle;
  582. //결과값에 대한 주석 보이기
  583. Obj_Chart.Series(vCnt).Marks.Visible = false; //요거 true로 해야 아래꺼 보임
  584. Obj_Chart.Series(vCnt).Marks.Style = 8; //수치값에 대한 값보이기 8아니면 다른수치보임
  585. Obj_Chart.Series(vCnt).Marks.ArrowLength = 0;
  586. */
  587. //fMakeChart(vCnt, row); //L/H 및 Mean/SD 챠트 그리기 위로 이동
  588. }
  589. //Mean/SD 그래프에 대한 SD단위 라인 그리기
  590. function fMakeLineSD(vAvg, vSD, vStart, vEnd){
  591. var Obj_Chart = object2;
  592. var v1SDH = vAvg + vSD;
  593. var v2SDH = vAvg + vSD*2;
  594. var v3SDH = vAvg + vSD*3;
  595. var v4SDH = vAvg + vSD*4;
  596. var v1SDL = vAvg - vSD;
  597. var v2SDL = vAvg - vSD*2;
  598. var v3SDL = vAvg - vSD*3;
  599. var v4SDL = vAvg - vSD*4;
  600. var idx = Obj_Chart.SeriesCount ;
  601. Obj_Chart.AddSeries(0); //asLine
  602. Obj_Chart.Series(idx).asLine.LinePen.Width = 2;
  603. Obj_Chart.Series(idx).Color = 0x000000; //Avg 라인
  604. Obj_Chart.Series(idx).AddXY (vStart , vAvg , "", Obj_Chart.Series(idx).Color );
  605. Obj_Chart.Series(idx).AddXY (vEnd , vAvg , "", Obj_Chart.Series(idx).Color );
  606. Obj_Chart.AddSeries(0); //asLine
  607. Obj_Chart.Series(1+idx).asLine.LinePen.Width = 1;
  608. Obj_Chart.Series(1+idx).Color = 0x000000; //+1SD 라인
  609. Obj_Chart.Series(1+idx).AddXY (vStart , v1SDH , "", Obj_Chart.Series(1+idx).Color );
  610. Obj_Chart.Series(1+idx).AddXY (vEnd , v1SDH , "", Obj_Chart.Series(1+idx).Color );
  611. Obj_Chart.AddSeries(0); //asLine
  612. Obj_Chart.Series(2+idx).asLine.LinePen.Width = 1;
  613. Obj_Chart.Series(2+idx).Color = 0x000000; //-1SD 라인
  614. Obj_Chart.Series(2+idx).AddXY (vStart , v1SDL , "", Obj_Chart.Series(2+idx).Color );
  615. Obj_Chart.Series(2+idx).AddXY (vEnd , v1SDL , "", Obj_Chart.Series(2+idx).Color );
  616. Obj_Chart.AddSeries(0); //asLine
  617. Obj_Chart.Series(3+idx).asLine.LinePen.Width = 2;
  618. Obj_Chart.Series(3+idx).Color = 0x00ccff; //+2SD 라인
  619. Obj_Chart.Series(3+idx).AddXY (vStart , v2SDH , "", Obj_Chart.Series(3+idx).Color );
  620. Obj_Chart.Series(3+idx).AddXY (vEnd , v2SDH , "", Obj_Chart.Series(3+idx).Color );
  621. Obj_Chart.AddSeries(0); //asLine
  622. Obj_Chart.Series(4+idx).asLine.LinePen.Width = 2;
  623. Obj_Chart.Series(4+idx).Color = 0x00ccff; //-2SD 라인
  624. Obj_Chart.Series(4+idx).AddXY (vStart , v2SDL , "", Obj_Chart.Series(4+idx).Color );
  625. Obj_Chart.Series(4+idx).AddXY (vEnd , v2SDL , "", Obj_Chart.Series(4+idx).Color );
  626. Obj_Chart.AddSeries(0); //asLine
  627. Obj_Chart.Series(5+idx).asLine.LinePen.Width = 2;
  628. Obj_Chart.Series(5+idx).Color = 0x0000ee; //+3SD 라인
  629. Obj_Chart.Series(5+idx).AddXY (vStart , v3SDH , "", Obj_Chart.Series(5+idx).Color );
  630. Obj_Chart.Series(5+idx).AddXY (vEnd , v3SDH , "", Obj_Chart.Series(5+idx).Color );
  631. Obj_Chart.AddSeries(0); //asLine
  632. Obj_Chart.Series(6+idx).asLine.LinePen.Width = 2;
  633. Obj_Chart.Series(6+idx).Color = 0x0000ee; //-3SD 라인
  634. Obj_Chart.Series(6+idx).AddXY (vStart , v3SDL , "", Obj_Chart.Series(6+idx).Color );
  635. Obj_Chart.Series(6+idx).AddXY (vEnd , v3SDL , "", Obj_Chart.Series(6+idx).Color );
  636. for(k=idx;k<idx+7;k++){ //라인들에 대한 범례 보이지 않게
  637. Obj_Chart.Series(k).ShowInLegend = false;
  638. }
  639. }
  640. //Low/High 그래프에 대한 라인 그리기
  641. function fMakeLineLH(vAvg, vHigh, vLow, vStart, vEnd){
  642. var Obj_Chart = object2;
  643. var idx = Obj_Chart.SeriesCount ;
  644. Obj_Chart.AddSeries(0); //asLine
  645. Obj_Chart.Series(idx).asLine.LinePen.Width = 2;
  646. Obj_Chart.Series(idx).Color = 0x000000; //Avg 라인
  647. Obj_Chart.Series(idx).ShowInLegend = false;
  648. Obj_Chart.Series(idx).AddXY (vStart , vAvg , "", Obj_Chart.Series(idx).Color );
  649. Obj_Chart.Series(idx).AddXY (vEnd , vAvg , "", Obj_Chart.Series(idx).Color );
  650. if(vHigh != ""){
  651. idx = Obj_Chart.SeriesCount ;
  652. Obj_Chart.AddSeries(0); //asLine
  653. Obj_Chart.Series(idx).asLine.LinePen.Width = 2;
  654. Obj_Chart.Series(idx).Color = 0x0000FF; //High 라인
  655. Obj_Chart.Series(idx).ShowInLegend = false;
  656. Obj_Chart.Series(idx).AddXY (vStart , vHigh , "", Obj_Chart.Series(idx).Color);
  657. Obj_Chart.Series(idx).AddXY (vEnd , vHigh , "", Obj_Chart.Series(idx).Color);
  658. }
  659. if(vLow != ""){
  660. idx = Obj_Chart.SeriesCount ;
  661. Obj_Chart.AddSeries(0); //asLine
  662. Obj_Chart.Series(idx).asLine.LinePen.Width = 2;
  663. Obj_Chart.Series(idx).Color = 0xFF0000; //Low 라인
  664. Obj_Chart.Series(idx).ShowInLegend = false;
  665. Obj_Chart.Series(idx).AddXY (vStart , vLow , "", Obj_Chart.Series(idx).Color);
  666. Obj_Chart.Series(idx).AddXY (vEnd , vLow , "", Obj_Chart.Series(idx).Color);
  667. }
  668. }
  669. //L/H 및 Mean/SD 챠트 그리기
  670. function fMakeChartOrgRslt(row){
  671. var Obj_Chart = object2;
  672. var Rnd1, Rnd2, Rnd3, cColor;
  673. var vAvg, vSD, v4SDH, v4SDL, vTestnm, vLotno, vLevlNm, vCnt, vEqmtCd;
  674. var vTestCd, vMatrCd, vLevlCd, vDate, vFindData, vFact; //조치사항을 찾기 위한 변수들
  675. var x = 0;
  676. //var count = model.getXPathValue('count(/root/main/rsltlist/row[testnm="'+vTestnm+'"])'); //같은 검사명을 가진 row 카운트
  677. var title = "";
  678. //그래프가 그려질 시리즈
  679. for (series = 0; series < row.length; series++){
  680. vLotno = model.getValue("/root/main/rsltlist/row["+ row[series] +"]/lotno"); //검사명(LotNo)
  681. vTestnm = model.getValue("/root/main/rsltlist/row["+ row[series] +"]/testnm"); //조회할 검사명, Title에 집어넣을놈
  682. vLevlNm = model.getValue("/root/main/rsltlist/row["+ row[series] +"]/levlnm"); //조회할 레벨명, Title에 집어넣을놈
  683. vEqmtCd = model.getValue("/root/main/rsltlist/row["+ row[series] +"]/eqmtcd"); //조회할 장비코드, Title에 집어넣을놈
  684. vTestCd = model.getValue("/root/main/rsltlist/row["+ row[series] +"]/testcd");
  685. vMatrCd = model.getValue("/root/main/rsltlist/row["+ row[series] +"]/matrcd");
  686. vLevlCd = model.getValue("/root/main/rsltlist/row["+ row[series] +"]/levlcd");
  687. Rnd1 = Math.random();
  688. Rnd2 = Math.random();
  689. Rnd3 = Math.random();
  690. cColor = window.rgb( (235 - 1) * Rnd1 + 1, (235 - 1) * Rnd2 + 1 , (235 - 1) * Rnd3 + 1); //각 검사항목별로 포인터 색깔 변경
  691. vCnt = Obj_Chart.SeriesCount ;
  692. Obj_Chart.AddSeries(37); //asHorizLine
  693. Obj_Chart.Series(vCnt).Color = 0xBE5B42;
  694. Obj_Chart.Series(vCnt).asHorizLine.LinePen.Width = 2; //펜 두께
  695. Obj_Chart.Series(vCnt).asHorizLine.Pointer.Visible = true; //값에 대한 포인터
  696. Obj_Chart.Series(vCnt).asHorizLine.Pointer.Brush.Color = cColor; //포인트 컬러
  697. Obj_Chart.Series(vCnt).asHorizLine.Pointer.Style = 0;
  698. Obj_Chart.Series(vCnt).asHorizLine.Pointer.VerticalSize = 1;
  699. Obj_Chart.Series(vCnt).asHorizLine.Pointer.HorizontalSize = 1;
  700. Obj_Chart.Series(vCnt).VerticalAxis = 2; //좌표 y축에대한 스타일 2:both??
  701. Obj_Chart.Series(vCnt).Title = vEqmtCd + " : " + vTestnm+ "(" + vLotno + ")";
  702. title = vEqmtCd + " : " + vTestnm+ "(" + vLotno + ")_"+vLevlNm; //보여주지 말게20091019
  703. //결과값에 대한 주석 보이기
  704. Obj_Chart.Series(vCnt).Marks.Visible = false; //요거 true로 해야 아래꺼 보임
  705. Obj_Chart.Series(vCnt).Marks.Style = 8; //수치값에 대한 값보이기 8아니면 다른수치보임
  706. Obj_Chart.Series(vCnt).Marks.ArrowLength = 0;
  707. fAddPointSeries(); //WGMR, 2SD, 3SD 포인터 시리즈 추가
  708. x =0;
  709. for(var i = vCol; i < datagrid1.cols; i++ ) {
  710. vAvg = parseFloat(model.getValue("/root/main/rsltlist/row["+ row[series] +"]/avg"));
  711. vSD = parseFloat(model.getValue("/root/main/rsltlist/row["+ row[series] +"]/sdval"));
  712. v4SDH = vAvg+vSD*4;
  713. v4SDL = vAvg-vSD*4;
  714. var y = parseFloat(datagrid1.valueMatrix(row[series], i)); //결과값 : y 좌표
  715. var cap = datagrid1.valueMatrix(0, i);
  716. //=================================
  717. vDate = cap.replace("-", "").replace("-", "").replace(" ", "").replace(":", "").replace(":", "");
  718. vFindData = vTestCd+vMatrCd+vLevlCd+vDate;
  719. vFact = title + " " + cap + " - " +model.getValue("/root/hidden/temp/factcnts[finddata ='" + vFindData + "']/measfactcnts") + "\n";
  720. //=================================
  721. if (!isNaN(y) && y < v4SDH && y > v4SDL) {
  722. Obj_Chart.Series(vCnt).AddXY (x, y, "" , Obj_Chart.Series(vCnt).Color );
  723. x += 1;
  724. }else if(!isNaN(y) && y > v4SDH){
  725. y = v4SDH;
  726. Obj_Chart.Series(vCnt).AddXY (x, y, "", Obj_Chart.Series(vCnt).Color );
  727. x += 1;
  728. }else if(!isNaN(y) && y < v4SDH){
  729. y = v4SDL;
  730. Obj_Chart.Series(vCnt).AddXY (x, y, "", Obj_Chart.Series(vCnt).Color );
  731. x += 1;
  732. }else if(isNaN(y) && row.length != 1){
  733. x += 1;
  734. }
  735. if(!isNaN(y)){
  736. Obj_Chart.Series(0).AddNullXY (x-1, vAvg,cap); //두개이상 그릴때 날짜가 제대로 보여지지 않는것 때문에 날짜는 따로 찍음
  737. }
  738. //룰이나 2SD, 3SD벗어난 포인트 찍어주기
  739. if(datagrid1.valueMatrix(row[series], i).indexOf("W") != -1 || model.getValue("/root/hidden/temp/factcnts[finddata ='" + vFindData + "']/measfactcnts") != ""){
  740. //WGMR포인트 찍어
  741. Obj_Chart.Series(vCnt+3).AddXY (x-1, y, vFact, Obj_Chart.Series(vCnt+3).Color );
  742. }else if(y > vAvg+vSD*3 || y < vAvg-vSD*3){
  743. //3SD
  744. Obj_Chart.Series(vCnt+2).AddXY (x-1, y, vFact, Obj_Chart.Series(vCnt+2).Color );
  745. }else if(y > vAvg+vSD*2 || y < vAvg-vSD*2){
  746. //2SD
  747. Obj_Chart.Series(vCnt+1).AddXY (x-1, y, vFact, Obj_Chart.Series(vCnt+1).Color );
  748. }
  749. }
  750. }
  751. //Obj_Chart.Header.Text(0) = title.substr(0, title.length-2); //그래프 타이틀 그냥 보여주지 말자20091019
  752. fMakeLotGrp(); //Lot관리하는 그래프 그려
  753. }
  754. //정규화 그래프 그리기
  755. function fMakeChartRegl(){
  756. var Obj_Chart = object1;
  757. var vAvg, vSD, v4SDH, v4SDL, v3SDH, v3SDL, v2SDH, v2SDL, v1SDH, v1SDL, y, cap, tmpY, vTitle, vLotNo, vLevlNm, vRslt, vEqmtCd;
  758. var vTestCd, vMatrCd, vLevlCd, vDate, vFindData, vFact; //조치사항을 찾기 위한 변수들
  759. var Rnd1, Rnd2, Rnd3, cColor, vCnt;
  760. var count = model.getXPathValue('count(/root/main/rsltlist/row[chk="true"])'); //선택된 항목의 갯수
  761. if( count == 1){ //선택된 항목이 하나일 경우
  762. //조회된 항목중 선택된 항목에 대한 그래프 그리기
  763. var chkrow = datagrid1.findRow("true", 1, 1);
  764. var xx = 0;
  765. vCnt = Obj_Chart.SeriesCount ; //생성된 시리즈 갯수
  766. vTitle = model.getValue("/root/main/rsltlist/row["+ chkrow +"]/testnm");
  767. vAvg = parseFloat(model.getValue("/root/main/rsltlist/row["+ chkrow +"]/avg"));
  768. vSD = parseFloat(model.getValue("/root/main/rsltlist/row["+ chkrow +"]/sdval"));
  769. vLotNo = model.getValue("/root/main/rsltlist/row["+ chkrow +"]/lotno");
  770. vLevlNm = model.getValue("/root/main/rsltlist/row["+ chkrow +"]/levlnm");
  771. vEqmtCd = model.getValue("/root/main/rsltlist/row["+ chkrow +"]/eqmtcd");
  772. vTestCd = model.getValue("/root/main/rsltlist/row["+ chkrow +"]/testcd"); //
  773. vMatrCd = model.getValue("/root/main/rsltlist/row["+ chkrow +"]/matrcd"); //
  774. vLevlCd = model.getValue("/root/main/rsltlist/row["+ chkrow +"]/levlcd"); //
  775. v3SDH = vAvg+vSD*3;
  776. v3SDL = vAvg-vSD*3;
  777. v2SDH = vAvg+vSD*2;
  778. v2SDL = vAvg-vSD*2;
  779. v1SDH = vAvg+vSD*1;
  780. v1SDL = vAvg-vSD*1;
  781. //시리즈별 컬러
  782. Rnd1 = Math.random();
  783. Rnd2 = Math.random();
  784. Rnd3 = Math.random();
  785. cColor = window.rgb( (255 - 1) * Rnd1 + 1, (255 - 1) * Rnd2 + 1 , (255 - 1) * Rnd3 + 1);
  786. //그래프가 그려질 시리즈
  787. Obj_Chart.AddSeries(37); //asHorizLine
  788. Obj_Chart.Series(vCnt).Color = cColor;
  789. Obj_Chart.Series(vCnt).asHorizLine.LinePen.Width = 2; //펜 두께
  790. Obj_Chart.Series(vCnt).asHorizLine.Pointer.Visible = true; //값에 대한 포인터
  791. Obj_Chart.Series(vCnt).asHorizLine.Pointer.Brush.Color = cColor;
  792. Obj_Chart.Series(vCnt).asHorizLine.Pointer.Style = 0;
  793. Obj_Chart.Series(vCnt).asHorizLine.Pointer.VerticalSize = 1;
  794. Obj_Chart.Series(vCnt).asHorizLine.Pointer.HorizontalSize = 1;
  795. Obj_Chart.Series(vCnt).Title = vEqmtCd + " : " + vTitle + "(" + vLotNo + ")_"+vLevlNm;
  796. Obj_Chart.Series(vCnt).Clear(); //라인 초기화
  797. fAddPointSeries(); //WGMR, 2SD, 3SD 포인터 시리즈 추가
  798. Obj_Chart.Series(vCnt).Marks.Visible = false;
  799. Obj_Chart.Series(vCnt+1).Marks.Visible = false;
  800. Obj_Chart.Series(vCnt+2).Marks.Visible = false;
  801. Obj_Chart.Series(vCnt+3).Marks.Visible = false;
  802. for(var x = vCol; x < datagrid1.cols; x++ ) {
  803. vRslt = parseFloat(datagrid1.valueMatrix(chkrow, x)); //결과값
  804. cap = datagrid1.valueMatrix(0, x);
  805. //=================================
  806. vDate = cap.replace("-", "").replace("-", "").replace(" ", "").replace(":", "").replace(":", "");
  807. vFindData = vTestCd+vMatrCd+vLevlCd+vDate;
  808. vFact = vTitle + " " + cap + " - " +model.getValue("/root/hidden/temp/factcnts[finddata ='" + vFindData + "']/measfactcnts") + "\n";
  809. //=================================
  810. if (!isNaN(vRslt)){
  811. tmpY = (vRslt - vAvg) / vSD; //y좌표
  812. if(tmpY > 3){
  813. y = 3.1;
  814. }else if(tmpY < -3){
  815. y = -3.1
  816. }else{
  817. y = tmpY;
  818. }
  819. //결과에대한 그래프 찍기
  820. Obj_Chart.Series(vCnt).AddXY (xx, y, "", Obj_Chart.Series(vCnt).Color );
  821. if(datagrid1.valueMatrix(chkrow, x).indexOf("W") != -1 || model.getValue("/root/hidden/temp/factcnts[finddata ='" + vFindData + "']/measfactcnts") != ""){
  822. //WGMR포인트 찍어
  823. Obj_Chart.Series(vCnt+3).AddXY (xx, y, vFact, Obj_Chart.Series(vCnt+3).Color );
  824. }else if( y == 3.1 || y == -3.1){
  825. //3SD
  826. Obj_Chart.Series(vCnt+2).AddXY (xx, y, vFact, Obj_Chart.Series(vCnt+2).Color );
  827. }else if(y > 2 || y < -2){
  828. //2SD
  829. Obj_Chart.Series(vCnt+1).AddXY (xx, y, vFact, Obj_Chart.Series(vCnt+1).Color );
  830. }
  831. Obj_Chart.Series(7).AddXY (xx, -3.5, cap, Obj_Chart.Series(7).Color ); //날짜 보였다 안보였다해서 시리즈 따로 추가함
  832. xx += 1;
  833. }
  834. }
  835. }else{
  836. //조회된 항목중 선택된 항목에 대한 그래프 그리기
  837. for( i = datagrid1.fixedRows; i < datagrid1.rows; i++ ){
  838. if(model.getValue("/root/main/rsltlist/row["+ i +"]/chk") == "true"){
  839. vCnt = Obj_Chart.SeriesCount ; //생성된 시리즈 갯수
  840. vTitle = model.getValue("/root/main/rsltlist/row["+ i +"]/testnm");
  841. vAvg = parseFloat(model.getValue("/root/main/rsltlist/row["+ i +"]/avg"));
  842. vSD = parseFloat(model.getValue("/root/main/rsltlist/row["+ i +"]/sdval"));
  843. vLotNo = model.getValue("/root/main/rsltlist/row["+ i +"]/lotno");
  844. vLevlNm = model.getValue("/root/main/rsltlist/row["+ i +"]/levlnm");
  845. vEqmtCd = model.getValue("/root/main/rsltlist/row["+ i +"]/eqmtcd");
  846. vTestCd = model.getValue("/root/main/rsltlist/row["+ i +"]/testcd");
  847. vMatrCd = model.getValue("/root/main/rsltlist/row["+ i +"]/matrcd");
  848. vLevlCd = model.getValue("/root/main/rsltlist/row["+ i +"]/levlcd");
  849. v3SDH = vAvg+vSD*3;
  850. v3SDL = vAvg-vSD*3;
  851. v2SDH = vAvg+vSD*2;
  852. v2SDL = vAvg-vSD*2;
  853. v1SDH = vAvg+vSD*1;
  854. v1SDL = vAvg-vSD*1;
  855. //시리즈별 컬러
  856. Rnd1 = Math.random();
  857. Rnd2 = Math.random();
  858. Rnd3 = Math.random();
  859. cColor = window.rgb( (255 - 1) * Rnd1 + 1, (255 - 1) * Rnd2 + 1 , (255 - 1) * Rnd3 + 1);
  860. //그래프가 그려질 시리즈
  861. Obj_Chart.AddSeries(37); //asHorizLine
  862. Obj_Chart.Series(vCnt).Color = cColor;
  863. Obj_Chart.Series(vCnt).asHorizLine.LinePen.Width = 2; //펜 두께
  864. Obj_Chart.Series(vCnt).asHorizLine.Pointer.Visible = true; //값에 대한 포인터
  865. Obj_Chart.Series(vCnt).asHorizLine.Pointer.Brush.Color = cColor;
  866. Obj_Chart.Series(vCnt).asHorizLine.Pointer.Style = 0;
  867. Obj_Chart.Series(vCnt).asHorizLine.Pointer.VerticalSize = 1;
  868. Obj_Chart.Series(vCnt).asHorizLine.Pointer.HorizontalSize = 1;
  869. Obj_Chart.Series(vCnt).Title = vEqmtCd + " : " + vTitle + "(" + vLotNo + ")_"+vLevlNm;
  870. Obj_Chart.Series(vCnt).Clear(); //라인 초기화
  871. fAddPointSeries(); //WGMR, 2SD, 3SD 포인터 시리즈 추가
  872. for(var x = vCol; x < datagrid1.cols; x++ ) {
  873. vRslt = parseFloat(datagrid1.valueMatrix(i, x)); //결과값
  874. cap = datagrid1.valueMatrix(0, x);
  875. //=================================
  876. vDate = cap.replace("-", "").replace("-", "").replace(" ", "").replace(":", "").replace(":", "");
  877. vFindData = vTestCd+vMatrCd+vLevlCd+vDate;
  878. vFact = vTitle + " " + cap + " - " +model.getValue("/root/hidden/temp/factcnts[finddata ='" + vFindData + "']/measfactcnts") + "\n";
  879. //=================================
  880. if (!isNaN(vRslt)){
  881. tmpY = (vRslt - vAvg) / vSD; //y좌표
  882. if(tmpY > 3){
  883. y = 3.1;
  884. }else if(tmpY < -3){
  885. y = -3.1
  886. }else{
  887. y = tmpY;
  888. }
  889. //결과에대한 그래프 찍기
  890. Obj_Chart.Series(vCnt).AddXY (x-vCol, y, "", Obj_Chart.Series(vCnt).Color );
  891. if(datagrid1.valueMatrix(i, x).indexOf("W") != -1 || model.getValue("/root/hidden/temp/factcnts[finddata ='" + vFindData + "']/measfactcnts") != ""){
  892. //WGMR포인트 찍어
  893. Obj_Chart.Series(vCnt+3).AddXY (x-vCol, y, vFact, Obj_Chart.Series(vCnt+3).Color );
  894. }else if( y == 3.1 || y == -3.1){
  895. //3SD
  896. Obj_Chart.Series(vCnt+2).AddXY (x-vCol, y, vFact, Obj_Chart.Series(vCnt+2).Color );
  897. }else if(y > 2 || y < -2){
  898. //2SD
  899. Obj_Chart.Series(vCnt+1).AddXY (x-vCol, y, vFact, Obj_Chart.Series(vCnt+1).Color );
  900. }
  901. }
  902. /* //4SD에서 3SD로 변경 *요구사항
  903. if (!isNaN(tmpY) && tmpY >= v3SDH) {
  904. y = 3;
  905. //}else if(!isNaN(tmpY) && tmpY < v4SDH && tmpY >= v3SDH){
  906. // y = 3;
  907. }else if(!isNaN(tmpY) && tmpY < v3SDH && tmpY >= v2SDH){
  908. y = 2;
  909. }else if(!isNaN(tmpY) && tmpY < v2SDH && tmpY >= v1SDH){
  910. y = 1;
  911. }else if(!isNaN(tmpY) && tmpY < v1SDH && tmpY > v1SDL){
  912. y = 0;
  913. }else if(!isNaN(tmpY) && tmpY <= v1SDL && tmpY > v2SDL){
  914. y = -1;
  915. }else if(!isNaN(tmpY) && tmpY <= v2SDL && tmpY > v3SDL){
  916. y = -2;
  917. //}else if(!isNaN(tmpY) && tmpY <= v3SDL && tmpY > v4SDL){
  918. // y = -3;
  919. }else if(!isNaN(tmpY) && tmpY <= v3SDL){
  920. y = -3;
  921. }
  922. if (!isNaN(tmpY)){
  923. Obj_Chart.Series(vCnt).AddXY (x-14, y, "", Obj_Chart.Series(vCnt).Color );
  924. }
  925. */
  926. Obj_Chart.Series(7).AddXY (x-vCol, -3.5, cap, Obj_Chart.Series(7).Color ); //날짜 보였다 안보였다해서 시리즈 따로 추가함
  927. }
  928. }//end if
  929. }//end for(i)
  930. }
  931. fMakeLotGrp(); //Lot관리하는 그래프 그려
  932. }
  933. //Lot변경관련 그래프
  934. function fMakeLotGrp(){
  935. var count = model.getXPathValue('count(/root/main/rsltlist/row[chk="true"])');
  936. if(count == 1 || grpChk()){
  937. var findRow = datagrid1.findRow("true", 1, 1);
  938. model.makeValue("/root/send/testcd0", model.getValue("/root/main/rsltlist/row["+ findRow +"]/testcd"));
  939. submit("TRLQP00203");
  940. if(datagrid3.rows == 1){ //조회된 내용이 없을때.. 기준자료 등록되지 않았을때..
  941. return;
  942. }
  943. }else{ //여러항목이 선택되었을때는 그리지 않는다.
  944. return;
  945. }
  946. var Obj_Chart;
  947. if(radio1.value == 1){
  948. Obj_Chart = object1;
  949. }else{
  950. Obj_Chart = object2;
  951. }
  952. var numVertaxis, numHorizaxis, LotFlag, testDD, toDD, fromDD;
  953. var Series = Obj_Chart.SeriesCount ; //요놈은 그래프 그릴놈
  954. var vCount = Obj_Chart.SeriesCount ; //마지막에 결과값 그래프를 제외한 그래프 범례 안보이게 하기 위해
  955. var toddSeq = 0;
  956. Obj_Chart.Axis.Left.StartPosition = 25;
  957. numVertaxis= Obj_Chart.Axis.AddCustom(false);
  958. numHorizaxis = Obj_Chart.Axis.AddCustom(true);
  959. Obj_Chart.Axis.Custom(numVertaxis).Automatic = false;
  960. Obj_Chart.Axis.Custom(numVertaxis).Maximum = 2;
  961. Obj_Chart.Axis.Custom(numVertaxis).Minimum = 0;
  962. Obj_Chart.Axis.Custom(numVertaxis).Increment = 1;
  963. Obj_Chart.Axis.Custom(numVertaxis).Labels.Style = 2; //1:lot만 2: lot+숫자
  964. Obj_Chart.Axis.Custom(numVertaxis).Title.Angle = 90;
  965. Obj_Chart.Axis.Custom(numVertaxis).EndPosition = 15;
  966. Obj_Chart.Axis.Custom(numVertaxis).Title.Caption = "LOT";
  967. Obj_Chart.Axis.Custom(numHorizaxis).PositionPercent = 85;
  968. Obj_Chart.Axis.Custom(numHorizaxis).Labels.Visible = false;
  969. for(i = 1; i < datagrid3.rows; i++){ //기준자료 관리되는 갯수만큼 물질유형코드(0:REAGENT LOT, 1:CALIBRATOR LOT, 2:CONTROL MATERIAL LOT)
  970. toDD = datagrid3.valueMatrix(i, 2).split("▦"); //toddlist
  971. fromDD = datagrid3.valueMatrix(i, 3).split("▦"); //fromddlist
  972. LotFlag = datagrid3.valueMatrix(i, 1); //matrkindcd
  973. for(j = 0; j <= toDD.length; j++){
  974. fAddSeries(numVertaxis, numHorizaxis); //조회된 matrkindcd별 todd 갯수에 따라 시리즈 추가한다
  975. }
  976. //if(radio1.value == 1 && count != 1){//정규화이거나 count가 1이 아닐때 count -> 선택된 갯수
  977. if(count != 1){ //정규화구분 상관없이 count가 1이아니면
  978. for(var x = vCol; x < datagrid1.cols; x++ ) {
  979. testDD = (datagrid1.valueMatrix(0, x)).substr(0, 4) + (datagrid1.valueMatrix(0, x)).substr(5, 2) + (datagrid1.valueMatrix(0, x)).substr(8, 2); //검사일시에서 YYYYMMDD만
  980. if(parseInt(testDD) >= parseInt(fromDD[toddSeq]) && parseInt(testDD) <= parseInt(toDD[toddSeq])){
  981. Obj_Chart.Series(Series).AddXY (x-vCol, LotFlag, "", Obj_Chart.Series(Series).Color );
  982. }else if(parseInt(testDD) < parseInt(fromDD[toddSeq])){
  983. //검사일시가 시작일자보다 작다면 Null
  984. Obj_Chart.Series(Series).AddNullXY (x-vCol, LotFlag, "");
  985. }else if(parseInt(testDD) > parseInt(toDD[toddSeq])){
  986. //검사일시가 종료일자보다 크다면
  987. Obj_Chart.Series(Series).AddXY (x-vCol, LotFlag, "", Obj_Chart.Series(Series).Color );
  988. Obj_Chart.Series(Series+1).AddXY (x-vCol, LotFlag, "", Obj_Chart.Series(Series+1).Color ); //그래프 연결 위함
  989. toddSeq += 1; //todd[]를 하나 더하고
  990. Series += 1; //다음 시리즈로 넘어간다
  991. }else{ //종료일자가 없을때..
  992. Obj_Chart.Series(Series).AddNullXY (x-vCol, LotFlag, "");
  993. //Obj_Chart.Series(Series).AddXY (x-14, LotFlag, "", Obj_Chart.Series(Series).Color ); //그냥 그려
  994. }
  995. }
  996. }else{ //실측값이고 count가 1일때
  997. var xx = 0; //실측값 x좌표
  998. for(var x = vCol; x <= datagrid1.cols; x++ ) {
  999. if(datagrid1.valueMatrix(findRow, x) != ""){
  1000. testDD = (datagrid1.valueMatrix(0, x)).substr(0, 4) + (datagrid1.valueMatrix(0, x)).substr(5, 2) + (datagrid1.valueMatrix(0, x)).substr(8, 2); //검사일시에서 YYYYMMDD만
  1001. if(parseInt(testDD) >= parseInt(fromDD[toddSeq]) && parseInt(testDD) <= parseInt(toDD[toddSeq])){
  1002. Obj_Chart.Series(Series).AddXY (xx, LotFlag, "", Obj_Chart.Series(Series).Color );
  1003. xx += 1; //값이 있으면 xx좌표 +1
  1004. }else if(parseInt(testDD) < parseInt(fromDD[toddSeq])){
  1005. //검사일시가 시작일자보다 작다면 Null
  1006. Obj_Chart.Series(Series).AddNullXY (xx, LotFlag, "");
  1007. xx += 1;
  1008. }else if(parseInt(testDD) > parseInt(toDD[toddSeq])){
  1009. //검사일시가 종료일자보다 크다면
  1010. Obj_Chart.Series(Series).AddXY (xx, LotFlag, "", Obj_Chart.Series(Series).Color );
  1011. Obj_Chart.Series(Series+1).AddXY (xx, LotFlag, "", Obj_Chart.Series(Series+1).Color ); //그래프 연결 위함
  1012. toddSeq += 1; //todd[]를 하나 더하고
  1013. Series += 1; //다음 시리즈로 넘어간다
  1014. xx += 1; //값이 있으면 xx좌표 +1
  1015. }else{
  1016. Obj_Chart.Series(Series).AddNullXY (xx, LotFlag, "");
  1017. //Obj_Chart.Series(Series).AddXY (xx, LotFlag, "", Obj_Chart.Series(Series).Color ); //그냥 그려
  1018. xx += 1;
  1019. }
  1020. }
  1021. }
  1022. }
  1023. toddSeq = 0; //다음 matrkindcd 의 todd[0]을 비교하기 위함
  1024. Series += 1; //종료일자는 99991231이기 때문에 else문 안타서 하나 더해줌
  1025. }
  1026. /*fAddSeries(numVertaxis, numHorizaxis); //마지막 그래프가 그래프 상단 라인과 겹쳐지는 현상때문에 그래프 하나 더 추가 -_-
  1027. Obj_Chart.Series(Series).AddXY (0, parseInt(LotFlag)+1, "", 0x000000 ); //y+1 에 포인트 하나 찍기
  1028. fAddSeries(numVertaxis, numHorizaxis); //첫번째 그래프가 그래프 하단 라인과 겹쳐지는 현상때문에 그래프 하나 더 추가 -_-
  1029. Obj_Chart.Series(Series+1).AddXY (0, -1, "", 0x000000 ); //-1 에 포인트 하나 찍기
  1030. */
  1031. Obj_Chart.Axis.Custom(numVertaxis).Labels.Add (0, "Rea");
  1032. Obj_Chart.Axis.Custom(numVertaxis).Labels.Add (1, "Cal");
  1033. //요거는 그래프 시작과 끝점쪽에 기본적으로 마진이 있어 sd그래프와 lot그래프간 살짝 안맞는 문제가 있는데 고놈 해결하기 위함
  1034. for(icnt = 0; icnt < Obj_Chart.SeriesCount ; icnt++){
  1035. if(Obj_Chart.Series(icnt).SeriesType == 0 ){
  1036. Obj_Chart.Series(icnt).asLine.Pointer.InflateMargins = false;
  1037. }else if(Obj_Chart.Series(icnt).SeriesType == 37){
  1038. Obj_Chart.Series(icnt).asHorizLine.Pointer.InflateMargins = false;
  1039. }else{
  1040. Obj_Chart.Series(icnt).asPoint.Pointer.InflateMargins = false;
  1041. }
  1042. }
  1043. }
  1044. //Lot기준자료 관련 그래프 시리즈 추가
  1045. function fAddSeries(numVertaxis, numHorizaxis){
  1046. var Rnd1, Rnd2, Rnd3, cColor
  1047. var Obj_Chart;
  1048. if(radio1.value == 1){
  1049. Obj_Chart = object1;
  1050. }else{
  1051. Obj_Chart = object2;
  1052. }
  1053. var idx = Obj_Chart.SeriesCount ;
  1054. //시리즈별 컬러
  1055. Rnd1 = Math.random();
  1056. Rnd2 = Math.random();
  1057. Rnd3 = Math.random();
  1058. cColor = window.rgb( (255 - 1) * Rnd1 + 1, (255 - 1) * Rnd2 + 1 , (255 - 1) * Rnd3 + 1);
  1059. Obj_Chart.AddSeries(0);
  1060. Obj_Chart.Series(idx).Color = cColor;
  1061. Obj_Chart.Series(idx).asLine.LinePen.Width = 10;
  1062. Obj_Chart.Series(idx).VerticalAxisCustom = numVertaxis;
  1063. Obj_Chart.Series(idx).HorizontalAxisCustom = numHorizaxis;
  1064. Obj_Chart.Series(idx).Marks.Visible = false;
  1065. Obj_Chart.Series(idx).ShowInLegend = false;
  1066. }
  1067. //2SD, 3SD, WGMR에 대한 포인트 그래프 추가
  1068. function fAddPointSeries(){
  1069. var Obj_Chart;
  1070. if(radio1.value == 1){
  1071. Obj_Chart = object1;
  1072. }else{
  1073. Obj_Chart = object2;
  1074. }
  1075. var idx = Obj_Chart.SeriesCount ;
  1076. //Wgmr 포인트
  1077. Obj_Chart.AddSeries(4);
  1078. Obj_Chart.Series(idx).Cursor =2020;
  1079. Obj_Chart.Series(idx).asPoint.Pointer.Pen.Color = window.RGB(255, 0, 0)
  1080. Obj_Chart.Series(idx).asPoint.Pointer.Brush.Color = window.RGB(255, 0, 0)
  1081. Obj_Chart.Series(idx).asPoint.Pointer.Style = 0
  1082. Obj_Chart.Series(idx).asPoint.Pointer.HorizontalSize = 3
  1083. Obj_Chart.Series(idx).asPoint.Pointer.VerticalSize = 3
  1084. Obj_Chart.Series(idx).ShowInLegend = false;
  1085. //2SD포인트
  1086. Obj_Chart.AddSeries(4);
  1087. Obj_Chart.Series(idx+1).Cursor =2020;
  1088. Obj_Chart.Series(idx+1).asPoint.Pointer.Pen.Color = window.RGB(255, 0, 0)
  1089. Obj_Chart.Series(idx+1).asPoint.Pointer.Brush.Color = window.RGB(255, 0, 0)
  1090. Obj_Chart.Series(idx+1).asPoint.Pointer.Style = 0
  1091. Obj_Chart.Series(idx+1).asPoint.Pointer.HorizontalSize = 3
  1092. Obj_Chart.Series(idx+1).asPoint.Pointer.VerticalSize = 3
  1093. Obj_Chart.Series(idx+1).ShowInLegend = false;
  1094. //3SD포인트
  1095. Obj_Chart.AddSeries(4);
  1096. Obj_Chart.Series(idx+2).Cursor =2020;
  1097. Obj_Chart.Series(idx+2).asPoint.Pointer.Pen.Color = window.RGB(0, 255, 0)
  1098. Obj_Chart.Series(idx+2).asPoint.Pointer.Brush.Color = window.RGB(0, 255, 0)
  1099. Obj_Chart.Series(idx+2).asPoint.Pointer.Style = 0
  1100. Obj_Chart.Series(idx+2).asPoint.Pointer.HorizontalSize = 3
  1101. Obj_Chart.Series(idx+2).asPoint.Pointer.VerticalSize = 3
  1102. Obj_Chart.Series(idx+2).ShowInLegend = false;
  1103. }
  1104. //Lot그래프 그리기 위해 체크된 검사항목 확인 (여러항목 중복 선택되어있어도 같은 검사항목이면 그래프 그림)
  1105. function grpChk(){
  1106. var row = datagrid1.findRow("true", 1, 1);
  1107. var testcd = model.getValue("/root/main/rsltlist/row["+ row +"]/testcd");
  1108. for(i = row; i < datagrid1.rows; i++){
  1109. if( model.getValue("/root/main/rsltlist/row["+ i +"]/chk") == "true"){
  1110. if(testcd != model.getValue("/root/main/rsltlist/row["+ i +"]/testcd")){
  1111. return false;
  1112. }
  1113. }
  1114. }
  1115. return true;
  1116. }
  1117. //소견세팅
  1118. function fCntsSet(row, col, flag){
  1119. var testcd = model.getValue("/root/main/rsltlist/row[" + row + "]/testcd");
  1120. var matrcd = model.getValue("/root/main/rsltlist/row[" + row + "]/matrcd");;
  1121. var levlcd = model.getValue("/root/main/rsltlist/row[" + row + "]/levlcd");;
  1122. var testdt = datagrid1.valueMatrix(0, col);
  1123. var acptdt = testdt.substr(0,4) + testdt.substr(5,2) + testdt.substr(8,2) + testdt.substr(11,2) + testdt.substr(14,2) + testdt.substr(17,2);
  1124. var findData = testcd+matrcd+levlcd+acptdt;
  1125. var findRow = datagrid2.findRow(findData, 0, 1);
  1126. if(findRow != -1){
  1127. if(flag == 1){ //조치사항 코드
  1128. var measfactcd = model.getValue("/root/main/matrinfo/measfactcd");
  1129. model.setValue("/root/hidden/temp/factcnts[" + findRow + "]/measfactcd", combo13.value);
  1130. model.setValue("/root/hidden/temp/factcnts[" + findRow + "]/measfactcnts", combo13.label);
  1131. textarea1.value = combo13.label;
  1132. }else{ //조치사항
  1133. var measfactcnts = model.getValue("/root/main/matrinfo/measfactcnts");
  1134. model.setValue("/root/hidden/temp/factcnts[" + findRow + "]/measfactcnts", measfactcnts);
  1135. }
  1136. datagrid2.addStatus(findRow, "update");
  1137. }
  1138. }
  1139. //사유저장
  1140. function fSetSave(){
  1141. //alert(datagrid2.getUpdateData()); return;
  1142. if(messageBox("", "Q004")==6){ //실행하시겠습니까? 6:ok
  1143. if(checkGridUpdate(datagrid2)){ //저장데이터 유무 체크
  1144. model.setValue("/root/send/factcntlist", datagrid2.getUpdateData());
  1145. if(submit("TXLQP00201")){
  1146. datagrid2.clearStatus();
  1147. alert("저장 완료");
  1148. }
  1149. }else{
  1150. alert("저장할 자료가 존재하지 않습니다!");
  1151. }
  1152. }
  1153. }
  1154. //저장 데이터 확인
  1155. function checkGridUpdate(grid){
  1156. var uData = grid.getUpdateDataXml("update");
  1157. if (uData==""){
  1158. return false;
  1159. }else{
  1160. return true;
  1161. }
  1162. }
  1163. function fSignPross(){
  1164. /*if(model.getXPathValue('count(/root/main/rsltlist/row[chk="true"])') == 0){
  1165. alert("인증 대상 항목을 선택하세요");
  1166. return;
  1167. }*/
  1168. if(messageBox("", "Q004")==6){
  1169. if(model.getXPathValue('count(/root/main/rsltlist/row[chk="true"])') == 0){
  1170. messageBox("인증 대상 항목을", "C002");
  1171. return;
  1172. }
  1173. }else{
  1174. return;
  1175. }
  1176. if(Sign.signprocess()){
  1177. /*var signno = 0;
  1178. var recsaveflag = "N";
  1179. model.makeValue("/root/send/signno" , signno); //서명번호
  1180. model.makeValue("/root/send/cretno" , "1");
  1181. //model.makeNode("/root/send/signdata");
  1182. model.makeValue("/root/send/signdata/pid" , "QC"); //등록번호
  1183. model.makeValue("/root/send/signdata/orddd" , getCurrentDate()); //입원, 응급 : 입원일자, 외래 : 진료일자
  1184. model.makeValue("/root/send/signdata/signno" , signno);
  1185. model.makeValue("/root/send/signdata/cretno" , "1"); //생성번호
  1186. model.makeValue("/root/send/signdata/recdd" , getCurrentDate()); //실제기록이 이루어진 기록일자
  1187. model.makeValue("/root/send/signdata/rectm" , getCurrentTime()); //실제기록이 이루어진 기록시간
  1188. model.makeValue("/root/send/signdata/recsaveflag" , recsaveflag); //전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
  1189. model.makeValue("/root/send/signdata/signflag" , "02"); //서명자료구분(01 : 진료, 02 : 간호)
  1190. model.makeValue("/root/send/signdata/signgenrflag" , "I"); //입원, 외래구분
  1191. model.makeValue("/root/send/signdata/orddeptcd" , ""); //진료과
  1192. model.makeValue("/root/send/signdata/orddrid" , ""); //진료의ID
  1193. model.makeValue("/root/send/signdata/formcd" , "-"); //서식코드
  1194. model.makeValue("/root/send/signdata/signbfcnts" , Sign.signedInfos[1]); // 인증할 데이터 정보(미기록 노드 제거된 정보), 미기록 노드 제거전 원본 노드 정보 : Sign.signedInfos[3]
  1195. model.makeValue("/root/send/signdata/signaftcnts" , Sign.signedInfos[2]); //공인인증 처리후 데이터
  1196. }else{
  1197. alert("인증실패");
  1198. return false;
  1199. }
  1200. if(submit("TXLRR00401")){
  1201. // 인증 끝
  1202. //인증됐으면 인증번호 ★ ★ ★
  1203. model.setValue("/root/send/signno", model.getValue("/root/signdata/signno"));
  1204. alert("인증완료!!");
  1205. //update*/
  1206. var vEqmtcd = "";
  1207. var vTestcd = "";
  1208. var vLevlcd = "";
  1209. var vMatrcd = "";
  1210. for(i = 1; i <= datagrid1.rows; i++){
  1211. if(model.getValue("/root/main/rsltlist/row[" + i +"]/chk") == "true"){
  1212. vEqmtcd += model.getValue("/root/main/rsltlist/row[" + i +"]/eqmtcd") + "▦";
  1213. vTestcd += model.getValue("/root/main/rsltlist/row[" + i +"]/testcd") + "▦";
  1214. vLevlcd += model.getValue("/root/main/rsltlist/row[" + i +"]/levlcd") + "▦";
  1215. vMatrcd += model.getValue("/root/main/rsltlist/row[" + i +"]/matrcd") + "▦";
  1216. }
  1217. }
  1218. model.makeValue("/root/send/signeqmtlist", vEqmtcd);
  1219. model.makeValue("/root/send/signtestlist", vTestcd);
  1220. model.makeValue("/root/send/signlevllist", vLevlcd);
  1221. model.makeValue("/root/send/signmatrlist", vMatrcd);
  1222. if(submit("TXLQP00202")){
  1223. alert("인증완료!!");
  1224. }
  1225. }else{
  1226. alert("인증실패");
  1227. }
  1228. }
  1229. function fMake_SignData(){
  1230. model.removeNodeset("/root/hidden/signdata"); //인증저장 정보 초기화
  1231. model.makeNode("/root/hidden/signdata/signlist");
  1232. //model.makeNode("/root/hidden/signdata/dnortestlist");
  1233. copyNodeListType("/root/hidden/signdata/signlist" , "/root/main/rsltlist/row[chk = 'true']");
  1234. //copyNodeListType("/root/hidden/signdata/dnortestlist" , "/root/main/dnor/dnortestlist"); //공여자검사결과
  1235. Sign.addnode("/root/hidden/signdata"); //인증저장 정보 공여자정보+공여자검사결과
  1236. }
  1237. function fCnfm(pRef){
  1238. if(model.getXPathValue('count(/root/main/rsltlist/row[chk="true"])') == 0){
  1239. messageBox("확인 대상 항목을", "C002");
  1240. return;
  1241. }
  1242. var strTestcd = "";
  1243. var strLevlcd = "";
  1244. var testcdlist = "";
  1245. var testnmlist = "";
  1246. var levlcdlist = "";
  1247. var levlnmlist = "";
  1248. var matrcdlist = "";
  1249. var lotnolist = "";
  1250. var viewtestnmlist = "";
  1251. var viewlevlnmlist = "";
  1252. for(i = 1; i < datagrid1.rows; i++){
  1253. if( model.getValue("/root/main/rsltlist/row["+ i +"]/chk") == "true"
  1254. && (model.getValue("/root/main/rsltlist/row["+ i +"]/testcd") != strTestcd || model.getValue("/root/main/rsltlist/row["+ i +"]/levlcd") != strLevlcd)){
  1255. testcdlist += "▦" + model.getValue("/root/main/rsltlist/row["+ i +"]/testcd");
  1256. testnmlist += "▦" + model.getValue("/root/main/rsltlist/row["+ i +"]/testnm");
  1257. levlcdlist += "▦" + model.getValue("/root/main/rsltlist/row["+ i +"]/levlcd");
  1258. levlnmlist += "▦" + model.getValue("/root/main/rsltlist/row["+ i +"]/levlnm");
  1259. matrcdlist += "▦" + model.getValue("/root/main/rsltlist/row["+ i +"]/matrcd");
  1260. lotnolist += "▦" + model.getValue("/root/main/rsltlist/row["+ i +"]/lotno");
  1261. viewtestnmlist += "," + model.getValue("/root/main/rsltlist/row["+ i +"]/testnm") + "(" + model.getValue("/root/main/rsltlist/row["+ i +"]/levlnm") + ")";
  1262. strTestcd = model.getValue("/root/main/rsltlist/row["+ i +"]/testcd");
  1263. strLevlcd = model.getValue("/root/main/rsltlist/row["+ i +"]/levlcd")
  1264. }
  1265. }
  1266. if(pRef != "P"){ //pRef = "" :확인내역조회, 1 : UM확인, 2 : 팀장확인, 3: 전문의 확인, P : 그래프출력
  1267. model.setValue("/root/hidden/param/userflag" , pRef);
  1268. model.setValue("/root/hidden/param/cnfmtodd" , model.getValue("/root/hidden/ref/acpttodd"));
  1269. model.setValue("/root/hidden/param/cnfmfromdd" , model.getValue("/root/hidden/ref/acptfromdd"));
  1270. model.setValue("/root/hidden/param/eqmtcd" , model.getValue("/root/hidden/ref/eqmtcd"));
  1271. model.setValue("/root/hidden/param/testcdlist" , testcdlist.substring(1, testcdlist.length));
  1272. model.setValue("/root/hidden/param/testnmlist" , testnmlist.substring(1, testnmlist.length));
  1273. model.setValue("/root/hidden/param/levlcdlist" , levlcdlist.substring(1, levlcdlist.length));
  1274. model.setValue("/root/hidden/param/levlnmlist" , levlnmlist.substring(1, levlnmlist.length));
  1275. model.setValue("/root/hidden/param/matrcdlist" , matrcdlist.substring(1, matrcdlist.length));
  1276. model.setValue("/root/hidden/param/lotnolist" , lotnolist.substring(1, lotnolist.length));
  1277. model.setValue("/root/hidden/param/viewtestnmlist" , viewtestnmlist.substring(1, viewtestnmlist.length));
  1278. model.setValue("/root/hidden/param/viewlevlnmlist" , viewlevlnmlist.substring(1, viewlevlnmlist.length));
  1279. modal("SPLQP00400","","","","","/root/hidden/param","/root/hidden/param");
  1280. }else{
  1281. //출력물에 필요한 cnfm list
  1282. model.setValue("/root/send2/eqmtcd" , model.getValue("/root/hidden/ref/eqmtcd"));
  1283. model.setValue("/root/send2/testcdlist" , testcdlist.substring(1, testcdlist.length));
  1284. model.setValue("/root/send2/levlcdlist" , levlcdlist.substring(1, levlcdlist.length));
  1285. model.setValue("/root/send2/fromdd" , model.getValue("/root/hidden/ref/acptfromdd"));
  1286. model.setValue("/root/send2/todd" , model.getValue("/root/hidden/ref/acpttodd"));
  1287. submit("TRLQP90401");
  1288. }
  1289. }
  1290. ]]>
  1291. </script>
  1292. </xhtml:head>
  1293. <xhtml:body style="margin-left:8; margin-top:0; margin-right:8; margin-bottom:0; ">
  1294. <group id="group1" style="left:0px; top:0px; width:1195px; height:13px; ">
  1295. <caption id="caption6" class="tit_1" style="left:0px; top:0px; width:111px; height:14px; ">
  1296. <![CDATA[QC그래프조회]]>
  1297. <script type="javascript" ev:event="ondblclick">
  1298. <![CDATA[
  1299. if(datagrid2.visible == true){
  1300. datagrid2.visible = false;
  1301. }else{
  1302. datagrid2.visible = true;
  1303. }
  1304. ]]>
  1305. </script>
  1306. </caption>
  1307. </group>
  1308. <group id="group5" scroll="auto" style="left:0px; top:13px; width:1195px; height:27px; ">
  1309. <line id="line32" class="line_6" style="x1:0px; y1:25px; x2:1194px; y2:25px; "/>
  1310. <button id="button10" class="btn4_letter3" style="left:1127px; top:3px; width:68px; height:22px; ">
  1311. <caption>초기화</caption>
  1312. <script type="javascript" ev:event="DOMActivate">
  1313. <![CDATA[
  1314. window.reload();
  1315. ]]>
  1316. </script>
  1317. </button>
  1318. <button id="btn_save" class="btn4_letter2" style="left:1069px; top:3px; width:56px; height:22px; ">
  1319. <caption>저장</caption>
  1320. <script type="javascript" ev:event="onclick">
  1321. <![CDATA[
  1322. fSetSave();
  1323. ]]>
  1324. </script>
  1325. </button>
  1326. <button id="btn_sighsave" class="btn4_letter4" visibility="hidden" style="left:987px; top:3px; width:80px; height:22px; ">
  1327. <caption>인증저장</caption>
  1328. <script type="javascript" ev:event="onclick">
  1329. <![CDATA[
  1330. fSignPross();
  1331. ]]>
  1332. </script>
  1333. </button>
  1334. <button id="button2" class="btn6_letter2" visibility="visible" style="left:0px; top:3px; width:56px; height:22px; ">
  1335. <caption>출력</caption>
  1336. <script type="javascript" ev:event="DOMActivate">
  1337. <![CDATA[
  1338. if(model.getXPathValue('count(/root/main/rsltlist/row[chk="true"])') == 0){
  1339. alert("출력 대상 항목을 선택하세요");
  1340. return;
  1341. }
  1342. var Obj_Chart;
  1343. if(model.getValue("/root/hidden/gref/grapegbn") == 1){
  1344. Obj_Chart = object1;
  1345. }else{
  1346. Obj_Chart = object2;
  1347. }
  1348. Obj_Chart.Tools.Clear();
  1349. Obj_Chart.Export.CopyToClipboardBitmap(); //클립보드로 이미지 넘겨
  1350. fCnfm("P"); //UM,팀장, 전문의 확인 내역 출력위해
  1351. //검사 정보
  1352. copyNodesetType("/root/hidden/gref/testinfo", "/root/main/rsltlist/row[chk ='true']", "replace");
  1353. //결과 정보
  1354. var vTestcd, vLevlcd;
  1355. var vCnt = 0;
  1356. for(i = 1; i <= datagrid1.rows; i++){
  1357. if(model.getValue("/root/main/rsltlist/row[" + i +"]/chk") == "true"){
  1358. vTestcd = model.getValue("/root/main/rsltlist/row[" + i +"]/testcd");
  1359. vLevlcd = model.getValue("/root/main/rsltlist/row[" + i +"]/levlcd");
  1360. vCnt += 1;
  1361. if(model.getValue("/root/hidden/gref/yn") == "Y"){
  1362. if(vCnt == 1){
  1363. copyNodesetType("/root/hidden/gref/factcnts", "/root/hidden/temp/factcnts[testcd ='"+vTestcd+"' and levlcd = '"+vLevlcd+"']", "replace");
  1364. }else{
  1365. copyNodesetType("/root/hidden/gref/factcnts", "/root/hidden/temp/factcnts[testcd ='"+vTestcd+"' and levlcd = '"+vLevlcd+"']", "after");
  1366. }
  1367. }else{
  1368. if(vCnt == 1){
  1369. copyNodesetType("/root/hidden/gref/factcnts", "/root/hidden/temp/factcnts[testcd ='"+vTestcd+"' and (wgmrmark = 'W' or measfactcnts != '') and levlcd = '"+vLevlcd+"']", "replace");
  1370. }else{
  1371. copyNodesetType("/root/hidden/gref/factcnts", "/root/hidden/temp/factcnts[testcd ='"+vTestcd+"' and (wgmrmark = 'W' or measfactcnts != '') and levlcd = '"+vLevlcd+"']", "after");
  1372. }
  1373. //alert(model.getXPathValue('count(/root/hidden/gref/factcnts)'));
  1374. }
  1375. }
  1376. }
  1377. //이미지를 마지막에 넘김.. 속도 문제때문에 위치 옮김
  1378. model.setValue("/root/hidden/gref/img", window.clipBoardData); //이미지 넘김
  1379. //return;
  1380. exeReportPreview("RPLQJ00100", "XMLSTR");
  1381. model.setValue("/root/hidden/gref/img", ""); //이미지 초기화
  1382. model.resetInstanceNode("/root/hidden/gref/factcnts");
  1383. model.resetInstanceNode("/root/hidden/gref/testinfo");
  1384. model.resetInstanceNode("/root/hidden/gref/cnfmlist");
  1385. ]]>
  1386. </script>
  1387. </button>
  1388. <select id="checkbox2" ref="/root/hidden/gref/yn" visibility="hidden" overflow="visible" appearance="full" style="left:65px; top:5px; width:110px; height:20px; border-style:none; ">
  1389. <choices>
  1390. <item>
  1391. <label>상세출력</label>
  1392. <value>Y</value>
  1393. </item>
  1394. </choices>
  1395. </select>
  1396. <button id="button5" class="btn4_letter4" style="left:813px; top:3px; width:80px; height:22px; ">
  1397. <caption>UM확인</caption>
  1398. <script type="javascript" ev:event="onclick">
  1399. <![CDATA[
  1400. fCnfm(1);
  1401. ]]>
  1402. </script>
  1403. </button>
  1404. <button id="button6" class="btn4_letter4" style="left:894px; top:3px; width:80px; height:22px; ">
  1405. <caption>팀장확인</caption>
  1406. <script type="javascript" ev:event="onclick">
  1407. <![CDATA[
  1408. fCnfm(2);
  1409. ]]>
  1410. </script>
  1411. </button>
  1412. <button id="button7" class="btn4_letter5" style="left:975px; top:3px; width:92px; height:22px; ">
  1413. <caption>전문의확인</caption>
  1414. <script type="javascript" ev:event="onclick">
  1415. <![CDATA[
  1416. fCnfm(3);
  1417. ]]>
  1418. </script>
  1419. </button>
  1420. <button id="button8" class="btn3_letter6" style="left:707px; top:3px; width:104px; height:22px; ">
  1421. <caption>확인내역조회</caption>
  1422. <script type="javascript" ev:event="onclick">
  1423. <![CDATA[
  1424. fCnfm();
  1425. ]]>
  1426. </script>
  1427. </button>
  1428. </group>
  1429. <group id="group2" scroll="auto" style="left:0px; top:40px; width:1195px; height:744px; ">
  1430. <caption id="caption13" class="tit_2" style="left:5px; top:77px; width:125px; height:13px; ">QC물질 상세 정보</caption>
  1431. <line id="line6" class="line_1" style="x1:0px; y1:92px; x2:1194px; y2:92px; "/>
  1432. <caption id="caption23" class="cell_1" style="left:0px; top:97px; width:100px; height:23px; ">QC물질</caption>
  1433. <caption id="caption24" class="cell_1" style="left:261px; top:97px; width:100px; height:23px; ">레벨</caption>
  1434. <caption id="caption25" class="cell_1" style="left:522px; top:97px; width:100px; height:23px; ">LOT NO</caption>
  1435. <caption id="caption26" class="cell_1" style="left:0px; top:121px; width:100px; height:23px; ">제조회사</caption>
  1436. <caption id="caption27" class="cell_1" style="left:261px; top:121px; width:100px; height:23px; ">적용률</caption>
  1437. <caption id="caption28" class="cell_1" style="left:522px; top:121px; width:100px; height:23px; ">룰</caption>
  1438. <caption id="caption29" class="cell_1" style="left:783px; top:97px; width:100px; height:24px; ">조치사항 코드</caption>
  1439. <textarea id="textarea1" ref="/root/main/matrinfo/measfactcnts" style="left:886px; top:123px; width:308px; height:22px; ">
  1440. <script type="javascript" ev:event="xforms-value-changed">
  1441. <![CDATA[
  1442. fCntsSet(datagrid1.row, datagrid1.col, 2);
  1443. ]]>
  1444. </script>
  1445. </textarea>
  1446. <select1 id="combo13" ref="/root/main/matrinfo/measfactcd" class="combo_search" appearance="minimal" style="left:886px; top:100px; width:308px; height:14px; ">
  1447. <choices>
  1448. <itemset nodeset="/root/init/LB0703">
  1449. <label ref="nm"/>
  1450. <value ref="cd"/>
  1451. </itemset>
  1452. </choices>
  1453. <script type="javascript" ev:event="xforms-value-changed">
  1454. <![CDATA[
  1455. fCntsSet(datagrid1.row, datagrid1.col, 1);
  1456. ]]>
  1457. </script>
  1458. </select1>
  1459. <line id="line5" class="line_2" style="x1:0px; y1:149px; x2:780; y2:149px; "/>
  1460. <output id="output1" ref="/root/main/matrinfo/matrnm" class="output_fix" style="left:103px; top:98px; width:155px; height:19px; "/>
  1461. <output id="output2" ref="/root/main/matrinfo/levlnm" class="output_fix" style="left:364px; top:98px; width:155px; height:19px; "/>
  1462. <output id="output3" ref="/root/main/matrinfo/lotno" class="output_fix" style="left:625px; top:100px; width:155px; height:19px; "/>
  1463. <output id="output4" ref="/root/main/matrinfo/prodcmpy" class="output_fix" style="left:103px; top:122px; width:155px; height:19px; "/>
  1464. <output id="output5" ref="/root/main/matrinfo/wgmrscop" class="output_fix" style="left:364px; top:122px; width:155px; height:19px; "/>
  1465. <output id="output6" ref="/root/main/matrinfo/wgmrstat" class="output_fix" style="left:625px; top:122px; width:155px; height:19px; "/>
  1466. <line id="line1" class="line_3" style="x1:0px; y1:148px; x2:1194px; y2:148px; "/>
  1467. <caption id="caption30" class="tit_2" style="left:5px; top:153px; width:127px; height:13px; ">QC물질 검사정보</caption>
  1468. <line id="line7" class="line_1" style="x1:0px; y1:168px; x2:1194px; y2:168px; "/>
  1469. <datagrid id="datagrid1" nodeset="/root/main/rsltlist/row" class="datagrid2" colsep="^" colwidth="25, 30, 60, 150, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60" dataheight="23" frozencols="12" mergecellsfixedrows="bycolrec" rowheader="seq" rowheight="23" rowsep="|" selectionmode="free" fixed.background-image="../../../com/commonweb/images/grid_bg.gif" style="left:0px; top:173px; width:1194px; height:157px; ">
  1470. <script type="javascript" ev:event="onclick">
  1471. <![CDATA[
  1472. if(model.getValue("/root/hidden/ref/releqmtyn") == "Y"){ //연관장비 조회시 물질 상세정보 조회 false
  1473. return;
  1474. }else{
  1475. if (isDataCell()){
  1476. fGetMatrInfo();
  1477. }
  1478. }
  1479. ]]>
  1480. </script>
  1481. </datagrid>
  1482. <caption id="caption31" class="tit_2" style="left:0px; top:339px; width:125px; height:13px; ">QC물질별 그래프</caption>
  1483. <line id="line8" class="line_1" style="x1:0px; y1:354px; x2:1194px; y2:354px; "/>
  1484. <line id="line9" class="line_3" style="x1:0px; y1:735px; x2:1194px; y2:735px; "/>
  1485. <select1 id="radio1" ref="/root/hidden/gref/grapegbn" visibility="visible" appearance="full" cols="3" overflow="visible" style="left:135px; top:338px; width:400px; height:13px; border-style:none; ">
  1486. <choices>
  1487. <item>
  1488. <label>정규화그래프</label>
  1489. <value>1</value>
  1490. </item>
  1491. <item>
  1492. <label>실측값 그래프 Mean/SD</label>
  1493. <value>3</value>
  1494. </item>
  1495. <item>
  1496. <label>실측값그래프 Low/High</label>
  1497. <value>2</value>
  1498. </item>
  1499. </choices>
  1500. <script type="javascript" ev:event="xforms-value-changed">
  1501. <![CDATA[
  1502. if(radio1.value == 1){
  1503. model.toggle("case1");
  1504. clearTChart(object1); //챠트 초기화
  1505. }else{
  1506. model.toggle("case2");
  1507. clearTChart(object2); //챠트 초기화
  1508. }
  1509. ]]>
  1510. </script>
  1511. </select1>
  1512. <button id="btn_grp" class="btn2_letter3" style="left:541px; top:334px; width:53px; height:19px; ">
  1513. <caption>그래프</caption>
  1514. <script type="javascript" ev:event="DOMActivate">
  1515. <![CDATA[
  1516. var count = model.getXPathValue('count(/root/main/rsltlist/row[chk="true"])'); //선택된 항목의 갯수
  1517. if(count == 0){
  1518. alert("그래프를 작성할 항목을 선택하세요");
  1519. return;
  1520. }else{
  1521. var grapflag = model.getValue("/root/hidden/gref/grapegbn");
  1522. var Obj_Chart;
  1523. if ( grapflag == 1 ){
  1524. Obj_Chart = object1;
  1525. }else{
  1526. Obj_Chart = object2;
  1527. }
  1528. Obj_Chart.Tools.Clear();
  1529. Obj_Chart.Axis.RemoveAllCustom();
  1530. Obj_Chart.Axis.Left.StartPosition = 0;
  1531. clearTChart(object1); //챠트 초기화
  1532. clearTChart(object2); //챠트 초기화
  1533. if(grapflag == 1){
  1534. fInitChartRegl(grapflag);
  1535. }else{
  1536. var grapflag = model.getValue("/root/hidden/gref/grapegbn");
  1537. fInitChart(grapflag);
  1538. }
  1539. }
  1540. ]]>
  1541. </script>
  1542. </button>
  1543. <button id="btn_grprnt" class="btn2_letter2" style="left:597px; top:334px; width:42px; height:19px; ">
  1544. <caption>출력</caption>
  1545. <script type="javascript" ev:event="DOMActivate">
  1546. <![CDATA[
  1547. var Obj_Chart;
  1548. if(model.getValue("/root/hidden/gref/grapegbn") == 1){
  1549. Obj_Chart = object1;
  1550. }else{
  1551. Obj_Chart = object2;
  1552. }
  1553. Obj_Chart.Tools.Clear();
  1554. Obj_Chart.Printer.MarginLeft = 5 //여백
  1555. Obj_Chart.Printer.MarginBottom = 25
  1556. Obj_Chart.Printer.MarginRight = 5
  1557. Obj_Chart.Printer.MarginTop = 25
  1558. Obj_Chart.Printer.ShowPreview(); //미리보기
  1559. ]]>
  1560. </script>
  1561. </button>
  1562. <group id="group4" style="left:0px; top:10px; width:1195px; height:61px; ">
  1563. <shape id="roundrect1" class="roundrect_search" appearance="roundrect" style="left:0px; top:0px; width:1195px; height:61px; "/>
  1564. <input id="input7" ref="/root/hidden/ref/acpttodd" class="input_search" inputtype="date" style="left:215px; top:8px; width:90px; height:19px; "/>
  1565. <output id="input8" ref="/root/hidden/ref/testnm" class="output_fix" style="left:105px; top:32px; width:250px; height:19px; "/>
  1566. <input id="input10" class="input_search" visibility="hidden" style="left:835px; top:35px; width:250px; height:19px; "/>
  1567. <button id="button4" class="icon_search" visibility="visible" style="left:712px; top:34px; width:16px; height:16px; background-image:../../../com/commonweb/images/icon_search.gif; ">
  1568. <caption/>
  1569. <script type="javascript" ev:event="DOMActivate">
  1570. <![CDATA[
  1571. fTestLevlSch(); //레벨조회 팝업 뜨지롱
  1572. ]]>
  1573. </script>
  1574. </button>
  1575. <caption id="caption20" class="search_name" style="left:390px; top:9px; width:94px; height:17px; ">검사실 :</caption>
  1576. <img id="img6" class="icon_search" visibility="hidden" style="left:1090px; top:35px; width:16px; height:16px; "/>
  1577. <caption id="caption21" class="search_name" style="left:745px; top:9px; width:94px; height:17px; ">장비 :</caption>
  1578. <caption id="caption22" class="search_name" visibility="hidden" style="left:745px; top:35px; width:94px; height:17px; ">LOT NO :</caption>
  1579. <select1 id="combo2" ref="/root/hidden/ref/testroom" class="combo_search" appearance="minimal" style="left:470px; top:8px; width:200px; height:19px; ">
  1580. <choices>
  1581. <itemset nodeset="/root/init/LB0111">
  1582. <label ref="nm"/>
  1583. <value ref="cd"/>
  1584. </itemset>
  1585. </choices>
  1586. <script type="javascript" ev:event="xforms-select">
  1587. <![CDATA[
  1588. fSetEqmtCd(); //검사실에 대한 장비 조회
  1589. ]]>
  1590. </script>
  1591. </select1>
  1592. <select1 id="combo3" ref="/root/hidden/ref/eqmtcd" class="combo_search" appearance="minimal" style="left:835px; top:8px; width:200px; height:19px; ">
  1593. <choices>
  1594. <itemset nodeset="/root/init/LB0701">
  1595. <label ref="nm"/>
  1596. <value ref="cd"/>
  1597. </itemset>
  1598. </choices>
  1599. <script type="javascript" ev:event="xforms-value-changed">
  1600. <![CDATA[
  1601. fTestListSch();
  1602. ]]>
  1603. </script>
  1604. </select1>
  1605. <caption id="caption14" class="search_name" style="left:390px; top:35px; width:75px; height:17px; ">레 벨 :</caption>
  1606. <caption id="caption15" class="search_no_b" style="left:199px; top:9px; width:15px; height:17px; vertical-align:middle; ">~</caption>
  1607. <select1 id="combo6" ref="/root/init/num" class="combo_search" visibility="hidden" appearance="minimal" style="left:1110px; top:35px; width:70px; height:19px; ">
  1608. <choices>
  1609. <itemset nodeset="/root/init/LB0111">
  1610. <label ref="nm"/>
  1611. <value ref="cd"/>
  1612. </itemset>
  1613. </choices>
  1614. </select1>
  1615. <caption id="caption17" class="search_name" style="left:15px; top:9px; width:94px; height:17px; ">접수일자 :</caption>
  1616. <caption id="caption19" class="search_name" style="left:15px; top:33px; width:94px; height:17px; ">검사항목 :</caption>
  1617. <input id="input6" ref="/root/hidden/ref/acptfromdd" class="input_search" inputtype="date" style="left:105px; top:8px; width:90px; height:19px; "/>
  1618. <button id="btn_testListSch" class="icon_search" style="left:358px; top:34px; width:16px; height:16px; background-image:../../../com/commonweb/images/icon_search.gif; ">
  1619. <caption/>
  1620. <script type="javascript" ev:event="DOMActivate">
  1621. <![CDATA[
  1622. if(model.getValue("/root/hidden/ref/eqmtcd") == "00"){ //장비코드가 전체이면
  1623. messageBox("장비를", "C002","");
  1624. }else{
  1625. fTestListSch(); //장비별 검사항목 팝업 뜨지롱
  1626. }
  1627. ]]>
  1628. </script>
  1629. </button>
  1630. <select1 id="cbo_levlCd" ref="/root/hidden/ref/levllist/levlnm" class="combo_search" visibility="hidden" appearance="minimal" style="left:470px; top:32px; width:240px; height:19px; ">
  1631. <choices>
  1632. <itemset nodeset="/root/init/LB0501">
  1633. <label ref="nm"/>
  1634. <value ref="cd"/>
  1635. </itemset>
  1636. </choices>
  1637. </select1>
  1638. <output id="ipt_levl" ref="/root/hidden/ref/levllist/levlnm" class="output_fix" appearance="minimal" style="left:470px; top:32px; width:240px; height:19px; "/>
  1639. <button id="button1" class="btn1_letter2" style="left:1119px; top:34px; width:56px; height:22px; ">
  1640. <caption>조회</caption>
  1641. <script type="javascript" ev:event="onclick">
  1642. <![CDATA[
  1643. clearTChart(object1); //챠트 초기화
  1644. fGetGrapeRsltList();
  1645. ]]>
  1646. </script>
  1647. </button>
  1648. <line id="line2" class="line_4" style="x1:1109px; y1:35px; x2:1109px; y2:57px; "/>
  1649. <caption id="caption2" class="search_name" style="left:745px; top:34px; width:94px; height:17px; ">접수구분 :</caption>
  1650. <select1 id="combo1" ref="/root/hidden/ref/acptflag" class="combo_search" appearance="minimal" style="left:835px; top:33px; width:200px; height:19px; ">
  1651. <choices>
  1652. <itemset nodeset="/root/init/LB0704">
  1653. <label ref="nm"/>
  1654. <value ref="cd"/>
  1655. </itemset>
  1656. </choices>
  1657. </select1>
  1658. <select id="checkbox1" ref="/root/hidden/ref/releqmtyn" visibility="hidden" overflow="visible" appearance="full" style="left:1045px; top:9px; width:15px; height:15px; border-style:none; ">
  1659. <choices>
  1660. <item>
  1661. <label>연관장비조회</label>
  1662. <value>Y</value>
  1663. </item>
  1664. </choices>
  1665. <script type="javascript" ev:event="onclick">
  1666. <![CDATA[
  1667. if(model.getValue("/root/hidden/ref/releqmtyn") == "Y"){
  1668. btn_save.disabled = true;
  1669. }else{
  1670. btn_save.disabled = false;
  1671. }
  1672. clearTChart(object1); //차트 초기화
  1673. fSetGrdInit(); //그리드 초기화
  1674. model.refresh();
  1675. ]]>
  1676. </script>
  1677. </select>
  1678. </group>
  1679. <switch id="switch1" style="left:0px; top:360px; width:1190px; height:370px; ">
  1680. <case id="case1" selected="true">
  1681. <object id="object1" clsid="{fab9b41c-87d6-474d-ab7e-f07d78f2422e}" style="left:0px; top:5px; width:1184px; height:360px; ">
  1682. <![CDATA[-->]]>
  1683. <script type="vbscript" ev:event="OnClickSeries(SeriesIndex, ValueIndex,Button, Shift,X ,Y)">
  1684. <![CDATA[
  1685. 'msgbox SeriesIndex
  1686. 'msgbox ValueIndex
  1687. 'msgbox Button
  1688. 'msgbox Shift
  1689. 'msgbox X
  1690. 'msgbox Y
  1691. object1.Tools.Clear()
  1692. object1.Tools.Add(10)
  1693. object1.Tools.Items(0).asAnnotation.Text = object1.Series(SeriesIndex).PointLabel(ValueIndex)
  1694. ]]>
  1695. </script>
  1696. <script type="javascript" ev:event="OnClickSeries(SeriesIndex,ValueIndex, Button, Shift, X, Y)">
  1697. <![CDATA[
  1698. alert(SeriesIndex);
  1699. ]]>
  1700. </script>
  1701. </object>
  1702. </case>
  1703. <case id="case2">
  1704. <object id="object2" clsid="{fab9b41c-87d6-474d-ab7e-f07d78f2422e}" style="left:0px; top:5px; width:1184px; height:360px; ">
  1705. <script type="vbscript" ev:event="OnClickSeries(SeriesIndex, ValueIndex,Button, Shift,X ,Y)">
  1706. <![CDATA[
  1707. object2.Tools.Clear()
  1708. object2.Tools.Add(10)
  1709. object2.Tools.Items(0).asAnnotation.Text = object2.Series(SeriesIndex).PointLabel(ValueIndex)
  1710. ]]>
  1711. </script>
  1712. </object>
  1713. </case>
  1714. <case id="case3"/>
  1715. </switch>
  1716. <button id="button3" class="btn4_letter3" visibility="hidden" style="left:1110px; top:145px; width:68px; height:22px; ">
  1717. <caption>테스트</caption>
  1718. <script type="javascript" ev:event="onclick">
  1719. <![CDATA[
  1720. alert(model.getValue("/root/main/matrinfo/measfactcnts/@test"));
  1721. alert(model.getValue("/root/main/matrinfo/measfactcnts/@test2"));
  1722. ]]>
  1723. </script>
  1724. </button>
  1725. <datagrid id="datagrid2" nodeset="/root/hidden/temp/factcnts" class="datagrid2" visibility="hidden" caption="finddata^bcno^물질코드^검사코드^레벨코드^사유코드^사유" colsep="^" colwidth="250, 80, 100, 80, 70, 80, 100" dataheight="23" extendlastcol="scroll" mergecellsfixedrows="bycolrec" rowheader="update" rowheight="23" rowsep="|" style="left:500px; top:173px; width:694px; height:157px; ">
  1726. <col ref="finddata"/>
  1727. <col ref="bcno"/>
  1728. <col ref="matrcd"/>
  1729. <col ref="testcd"/>
  1730. <col ref="levlcd"/>
  1731. <col ref="measfactcd"/>
  1732. <col ref="measfactcnts"/>
  1733. </datagrid>
  1734. <datagrid id="datagrid3" nodeset="/root/hidden/temp/toddlist" class="datagrid2" visibility="hidden" caption="matrkindcd^ toddlist^fromddlist" colsep="^" colwidth="50, 100, 100" dataheight="23" extendlastcol="scroll" mergecellsfixedrows="bycolrec" rowheader="update" rowheight="23" rowsep="|" style="left:230px; top:173px; width:272px; height:157px; ">
  1735. <col ref="matrkindcd"/>
  1736. <col ref="toddlist"/>
  1737. <col ref="fromddlist"/>
  1738. </datagrid>
  1739. <caption id="caption1" class="cell_1" style="left:783px; top:122px; width:100px; height:24px; ">조치사항</caption>
  1740. <img id="img1" ref="/root/hidden/gref/img" style="left:350px; top:75px; width:145px; height:110px; background-stretch:stretch; "/>
  1741. </group>
  1742. </xhtml:body>
  1743. </xhtml:html>