SMLQP10200_핵의학QC그래프조회.xrw 80 KB

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