SMLQP00700_혈당기QC그래프조회.xrw 75 KB

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