12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733 |
- <?xml version="1.0" encoding="EUC-KR"?>
- <!--
- * 제 목 : SMLQP00700_혈당QC그래프조회.xrw
- * 설 명 : 혈당QC그래프조회
- * 설 계 자 :
- * 작 성 자 :
- * 작 성 일 :
- * 수정이력 :
- * 기 타 :
- -->
- <?xml-stylesheet href="../../../com/commonweb/css/common.css" ztype="text/css" ?>
- <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">
- <xhtml:head>
- <xhtml:title/>
- <model id="model1">
- <instance id="instance1">
- <root xmlns="">
- <main>
- <rsltlist>
- <row>
- </row>
- <hearder/>
- </rsltlist>
- <matrinfo>
- <matrnm/>
- <levlnm/>
- <lotno/>
- <prodcmpy/>
- <wgmrscop/>
- <wgmrstat/>
- <measfactcnts test="Attribute" test2="Attribute2"/>
- <measfactcd/>
- </matrinfo>
- </main>
- <send>
- <codeflag/>
- <basecdid/>
- <data1/>
- <levlcd/>
- <factcntlist/>
- <deptflag/>
- <signdata/>
- <page/>
- </send>
- <init>
- </init>
- <hidden>
- <ref>
- <acptfromdd/>
- <acpttodd/>
- <testroom>00</testroom>
- <eqmtcd>-전체-</eqmtcd>
- <levlcd>00</levlcd>
- <lotno>00</lotno>
- <releqmtyn/>
- </ref>
- <temp>
- <rsltlist/>
- <factcnts>
- <finddata/>
- <matrcd/>
- <testcd/>
- <levlcd/>
- <measfactcnts/>
- <measfactcd/>
- <bcno/>
- <acptdt/>
- <viewrslt/>
- <cnfmdt/>
- <testnm/>
- <levlnm/>
- <userid/>
- <signdt/>
- <signnm/>
- <wgmrmark/>
- </factcnts>
- <toddlist>
- <matrkindcd/>
- <toddlist/>
- <fromddlist/>
- </toddlist>
- <page>
- <page/>
- </page>
- </temp>
- <gref>
- <grapegbn>1</grapegbn>
- <img/>
- <factcnts/>
- <testinfo/>
- <yn/>
- </gref>
- </hidden>
- </root>
- </instance>
- <script type="javascript" ev:event="xforms-model-construct-done">
- <![CDATA[
- fSetinit();
- ]]>
- </script>
- <script type="javascript" src="../js/LLZ001.js"/>
- <script type="javascript" src="../../../com/commonweb/js/dateHelper.js"/>
- <script type="javascript" src="../../../com/commonweb/js/common.js"/>
- <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
- <script type="javascript" src="../../../com/commonweb/js/stringHelper.js"/>
- <script type="javascript" src="../../../com/commonweb/js/numericHelper.js"/>
- <script type="javascript" src="../../../lis/commonweb/js/LLZ001.js"/>
- <script type="javascript" src="../../../com/commonweb/js/tchartHelper.js"/>
- <script type="javascript" src="../../../emr/carecomweb/js/ENRSignEngine.js"/>
- <submission id="TRLZZ00101" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/LB0111"/>
- <submission id="TRLQP00701" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" replace="instance" resultref="/root/hidden/temp"/>
- <submission id="TRLQP00203" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/hidden/temp/toddlist"/>
- <!--
- <submission id="TRLQP00202" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/main/matrinfo"/>
- <submission id="TRLQP00205" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" replace="instance" add="bottom" resultref="/root/hidden/temp/factcnts"/>
- <submission id="TXLQP00201" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" replace="instance"/>
- <submission id="TXLRR00401" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" replace="instance" resultref="/root/signdata"/>
- <submission id="TXLQP00202" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" replace="instance"/>
- -->
- </model>
- <script type="javascript">
- <![CDATA[
-
- var vCol = 15; //시작컬럼에 대한 Index
-
- function fSetinit(){
- var fromdate = getCurrentDate().toDate("YYYYMMDD").getAddDate(-30)
-
- model.setValue("/root/hidden/ref/acptfromdd", fromdate.getDateFormat("YYYYMMDD"));
- model.setValue("/root/hidden/ref/acpttodd", getCurrentDate());
-
- model.makeValue("/root/send/codeflag","0705|0706|0703|0707|"); //0000:사용자부서코드, 0705:시행부서 0706: 혈당기코드, 0703:조치사항코드, 0707 : LotList
- submit("TRLZZ00101", false);
-
- model.refresh();
- //createTChart("object1", 0, 5, 1184, 360, case1); //그래프 object 생성
- //createTChart("object2", 10, 5, 1150, 360, case1);
- //createTChart("object3", 10, 5, 1150, 360, case1);
- //fInitChart();
- }
-
-
- function fSetEqmtCd(){
- var vDept = model.getValue("/root/hidden/ref/testroom");
-
- combo3.choices.itemset.attribute("nodeset") = "/root/init/LB0706[etc01 = '" + vDept + "' or cd = '-전체-']";
- combo3.refresh();
- }
-
-
- //장비별 검사항목 조회 팝업
- function fTestListSch(){
- var eqmtcd = model.getValue("/root/hidden/ref/eqmtcd"); //장비코드
- var deptflag = model.getValue("/root/init/LB0000/nm"); //사용자부서코드
- var sflag = "nu" + "▦" + eqmtcd + "▦" + deptflag;
- setParameter("opener_parameter_id", sflag);
- modal("SPLQP00100", "", "", "", "", "", "");
-
- var testcd = model.getValue("/root/hidden/ref/testlist/testcd");
- /* 10개 항목 제한 풀기
- if(testcd.split("▦").length > 10){
- alert("최대조회 항목 수는 10개입니다\n검사항목을 다시 선택하세요!!");
- fTestListSch();
- }*/
-
- model.setValue("/root/hidden/ref/testnm", model.getValue("/root/hidden/ref/testlist/testnm")); //검사명
- //model.setValue("/root/send/testcd", model.getValue("/root/hidden/ref/testlist/testcd")); //검사코드를 받아와서 셋팅~
- //model.setValue("/root/hidden/ref/testcdlist", "'" + model.getValue("/root/hidden/ref/testlist/testcd2") + "'");
- model.refresh();
-
- }
-
- //검사항목별 레벨 조회 팝업
- function fTestLevlSch(){
- var eqmtcd = model.getValue("/root/send/eqmtcd"); //장비코드
- var deptflag = model.getValue("/root/init/LB0000/nm"); //사용자부서코드
- var sflag = "nu" + "▦" + eqmtcd + "▦" + deptflag;
- setParameter("opener_parameter_id", sflag);
- modal("SPLQP00200", "", "", "", "", "", "");
-
- //model.makeValue("/root/send/levlnm" , model.getValue("/root/hidden/ref/levllist/levlnm")); //레벨명
- model.setValue("/root/hidden/ref/levlcd" , model.getValue("/root/hidden/ref/levllist/levlcd")); //레벨코드
- //model.makeValue("/root/send/levlcd2" , model.getValue("/root/hidden/ref/levllist/levlcd2"));
- model.refresh();
-
- }
-
- //결과 그리드 컬럼 초기화
- function fSetGrdInit(){
-
- model.resetInstanceNode("/root/main/rsltlist/row");
-
- var cols = datagrid1.cols-datagrid1.fixedCols;
- var rows = datagrid1.rows-datagrid1.fixedRows;
-
- for( var i = 0; i < cols; i++ ) {
- datagrid1.removeColumn(false);
- }
- for( var i = 0; i < rows; i++ ) {
- datagrid1.removeRow(false);
- }
- model.removeNodeset("/root/main/");
- model.refresh();
- }
-
- function fGetGrapeRsltList(){
-
- datagrid2.clearStatus(); //조치사항 그리드 초기화
- model.resetInstanceNode("/root/hidden/temp/factcnts"); //조치사항 초기화
- fSetGrdInit();// 그리드 컬럼 초기화
-
- var eqmtcd = model.getValue("/root/hidden/ref/eqmtcd");
- var testroom = model.getValue("/root/hidden/ref/testroom");
-
- if((eqmtcd == "-전체-") && (testroom == "00" )){
- messageBox("장비나 검사실을", "C002","");
- return;
- }
-
- model.copyNode("/root/send/data1", "/root/hidden/ref");
-
- submit("TRLQP00701")
-
- //alert(model.getXPathValue('count(/root/hidden/temp/factcnts)'));
- var gridCaption = model.getValue("/root/hidden/temp/rsltlist/header/caption");
-
- if(gridCaption == "") return;
- //ref 정보
- var gridColRef = model.getValue("/root/hidden/temp/rsltlist/header/colref");
- var gridColRefArray = gridColRef.split("^");
-
- var gridColType = model.getValue("/root/hidden/temp/rsltlist/header/type");
- var gridColTypeArray = gridColType.split("^");
-
- for( var i = 0; i < gridColRefArray.length; i++ ) {
- datagrid1.addColumn("ref:" + gridColRefArray[i] + "; type:"+gridColTypeArray[i]+"; ", false);
- }
-
- //컬럼 width Set..
- for( i = 1; i < datagrid1.cols; i++ ) {
- if(i == 1){
- datagrid1.colWidth(i) = 25; //chk
- }else if( i == 2){ //장비코드
- datagrid1.colWidth(i) = 100;
- }else if( i == vCol-11){ //검사항목
- datagrid1.colWidth(i) = 120;
- }else if( i < vCol){ //결과 전까지는 60
- datagrid1.colWidth(i) = 60;
- }else{
- datagrid1.colWidth(i) = 75;
- }
- }
- datagrid1.caption = gridCaption;
-
- var node = instance1.selectSingleNode("/root/main");
- node.replaceChild(instance1.root.hidden.temp.rsltlist, instance1.root.main.rsltlist);
-
- datagrid1.rowheight(0) = 30;
- datagrid1.rebuild();
- //datagrid1.colHidden(1) = true; //체크
- datagrid1.colHidden(vCol-3) = true; //검사코드
- datagrid1.colHidden(vCol-2) = true; //레벨코드
- datagrid1.colHidden(vCol-1) = true; //물질코드
-
- //WGMR 에 걸린 결과값 색 변경
- for(i = 1; i < datagrid1.rows; i++){
- for(j = vCol; j < datagrid1.cols; j++){
- if(datagrid1.valueMatrix(i, j).indexOf("W") != -1){
- datagrid1.cellStyle("background-color", i , j) = "#99cf16";
- }
- }
- }
- datagrid1.rightCol = datagrid1.cols; //조회 후 가장 최근 결과가 보여지게 해달라는 요구사항때문에..
- datagrid1.gridToInstance();
- model.refresh();
- }
-
- //물질상세정보 조회
- function fGetMatrInfo(){
-
- var rslt = datagrid1.valueMatrix(datagrid1.row, datagrid1.col);
- if(datagrid1.col > (vCol-1) && rslt != ""){ //15번째 컬럼부터 결과 && rslt != "" 일단제외
-
- var testcd = model.getValue("/root/main/rsltlist/row["+ datagrid1.row +"]/testcd");
- var levlcd = model.getValue("/root/main/rsltlist/row["+ datagrid1.row +"]/levlcd");
- var matrcd = model.getValue("/root/main/rsltlist/row["+ datagrid1.row +"]/matrcd");
- var testdt = datagrid1.valueMatrix(0, datagrid1.col);
- 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);
-
- model.makeValue("/root/send/matrcd" , matrcd);
- model.makeValue("/root/send/levlcda" , levlcd);
- model.makeValue("/root/send/tclscd" , testcd);
- model.makeValue("/root/send/acptdt" , acptdt);
-
- submit("TRLQP00202");
- //소견 저장하지 않았을때 검사 결과 선택시 조치사항 조회 위함
- var findData = testcd+matrcd+levlcd+acptdt;
- var findRow = datagrid2.findRow(findData, 0, 1);
- if(findRow != -1){
- model.setValue("/root/main/matrinfo/measfactcnts", model.getValue("/root/hidden/temp/factcnts["+ findRow+"]/measfactcnts"));
- model.setValue("/root/main/matrinfo/measfactcd", model.getValue("/root/hidden/temp/factcnts["+ findRow+"]/measfactcd"));
- }
-
- }else{
- model.removeNodeset("/root/main/matrinfo");
- }
- model.refresh();
- }
-
- //그래프를 그려보자(1)정규화 그래프
- function fInitChartRegl(sGrapFlag){
- //sGrapFalg 1: 정규화, 2: 로하이, 3: 민에스디
- var Obj_Chart = object1; //시리즈 번호
- //var vEnd = datagrid1.cols - 15; //끝좌표
- var count = model.getXPathValue('count(/root/main/rsltlist/row[chk="true"])'); //선택된 항목의 갯수
- if(count == 0){
- alert("그래프를 작성할 항목을 선택하세요");
- return;
- }else if(count ==1){
- var vEnd = -1;
- var chkrow = datagrid1.findRow("true", 1, 1);
-
- for(i = vCol; i < datagrid1.cols; i++){ //14번째 컬럼부터 column0~ 시작
- var x = datagrid1.valueMatrix(chkrow, i); //결과값
- if(x != ""){
- vEnd += 1; //결과 값이 있다면 1씩 더해
- }
- }
- }else{
- var vEnd = datagrid1.cols - (vCol+1); //끝 좌표
- }
- Obj_Chart.Aspect.View3D = 0; // 2d 로 표현하기
- Obj_Chart.Zoom.Enable = false; // zoom 사용하지 않기
- Obj_Chart.Scroll.Enable = 2;
- Obj_Chart.Environment.MouseWheelScroll = false;
- Obj_Chart.Legend.Visible = false; // 그래프 참조 박스 띄우지 않기
- Obj_Chart.Panel.Gradient.Visible = true; // 페널에 그라디언트 적용
- Obj_Chart.Panel.Gradient.StartColor = 0xffffff;
- Obj_Chart.Panel.Gradient.EndColor=0xffffff;
- Obj_Chart.Legend.Visible = true; //범례표시 여부
- Obj_Chart.Legend.Alignment = 3; // Legend 위치 설정 :: 0 = left | 1 = right | 2 = top| 3 = bottom
- Obj_Chart.Legend.CheckBoxes = false; //범례 체크박스
-
- Obj_Chart.RemoveAllSeries();
- Obj_Chart.Axis.RemoveAllCustom();
- //margin 값 정하기
- Obj_Chart.Panel.MarginTop = 5;
- Obj_Chart.Panel.MarginLeft = 2;
- Obj_Chart.Panel.MarginRight = 0;
- Obj_Chart.Panel.MarginBottom = 2;
-
- Obj_Chart.Header.Visible = false; //헤더 타이틀 보이지 않기
- Obj_Chart.Axis.Left.Labels.Style = 2;
- Obj_Chart.Axis.Right.Labels.Style = 1;
- Obj_Chart.Axis.Bottom.Labels.Style = 0; // 0:auto or value, 1:No, 2 :민 맥스, 3: marks style, 4:text
- Obj_Chart.Axis.Bottom.Labels.Angle = 90; //90도 돌려서 라벨 표시
- Obj_Chart.Axis.Bottom.Labels.Size = 95; //하단 라벨의 사이즈 조치사항 추가하면서 자동으로 늘어나서 추가함
-
- Obj_Chart.Axis.Left.Title.Caption = "Fixed SD";
- Obj_Chart.Axis.Left.Automatic = false;
- Obj_Chart.Axis.Left.Maximum = 3.5;
- Obj_Chart.Axis.Left.Minimum = -3.5;
- Obj_Chart.Axis.Left.Increment = 1;
-
- //Avg 라인
- Obj_Chart.AddSeries(0); //asLine
- Obj_Chart.Series(0).asLine.LinePen.Width = 2;
- Obj_Chart.Series(0).Color = 0x000000;
- Obj_Chart.Series(0).AddXY (0 , 0 , "", Obj_Chart.Series(0).Color );
- Obj_Chart.Series(0).AddXY (vEnd , 0 , "", Obj_Chart.Series(0).Color );
-
- //+1SD 라인
- Obj_Chart.AddSeries(0); //asLine
- Obj_Chart.Series(1).asLine.LinePen.Width = 1;
- Obj_Chart.Series(1).Color = 0x000000;
- Obj_Chart.Series(1).AddXY (0 , 1 , "", Obj_Chart.Series(1).Color );
- Obj_Chart.Series(1).AddXY (vEnd , 1 , "", Obj_Chart.Series(1).Color );
-
- //-1SD 라인
- Obj_Chart.AddSeries(0); //asLine
- Obj_Chart.Series(2).asLine.LinePen.Width = 1;
- Obj_Chart.Series(2).Color = 0x000000;
- Obj_Chart.Series(2).AddXY (0 , -1 , "", Obj_Chart.Series(2).Color );
- Obj_Chart.Series(2).AddXY (vEnd , -1 , "", Obj_Chart.Series(2).Color );
-
- //+2SD 라인
- Obj_Chart.AddSeries(0); //asLine
- Obj_Chart.Series(3).asLine.LinePen.Width = 2;
- Obj_Chart.Series(3).Color = 0x00ccff;
- Obj_Chart.Series(3).AddXY (0 , 2 , "", Obj_Chart.Series(3).Color );
- Obj_Chart.Series(3).AddXY (vEnd , 2 , "", Obj_Chart.Series(3).Color );
-
- //-2SD 라인
- Obj_Chart.AddSeries(0); //asLine
- Obj_Chart.Series(4).asLine.LinePen.Width = 2;
- Obj_Chart.Series(4).Color = 0x00ccff;
- Obj_Chart.Series(4).AddXY (0 , -2 , "", Obj_Chart.Series(4).Color );
- Obj_Chart.Series(4).AddXY (vEnd , -2 , "", Obj_Chart.Series(4).Color );
-
- //+3SD 라인
- Obj_Chart.AddSeries(0); //asLine
- Obj_Chart.Series(5).asLine.LinePen.Width = 2;
- Obj_Chart.Series(5).Color = 0x0000ee;
- Obj_Chart.Series(5).AddXY (0 , 3 , "", Obj_Chart.Series(5).Color );
- Obj_Chart.Series(5).AddXY (vEnd , 3 , "", Obj_Chart.Series(5).Color );
-
- //-3SD 라인
- Obj_Chart.AddSeries(0); //asLine
- Obj_Chart.Series(6).asLine.LinePen.Width = 2;
- Obj_Chart.Series(6).Color = 0x0000ee;
- Obj_Chart.Series(6).AddXY (0 , -3 , "", Obj_Chart.Series(6).Color );
- Obj_Chart.Series(6).AddXY (vEnd , -3 , "", Obj_Chart.Series(6).Color );
-
- //날짜 10번째 시리즈
- Obj_Chart.AddSeries(0); //asLine
- Obj_Chart.Series(7).Color = 0x000000;
- Obj_Chart.Series(7).asLine.LinePen.Width = 1; //펜 두께
- Obj_Chart.Series(7).asLine.Pointer.Visible = false; //값에 대한 포인터
-
- for(i=0; i <= 7 ; i++){ //라인들에 대한 범례 보이지 않게
- Obj_Chart.Series(i).ShowInLegend = false;
- }
-
- fMakeChartRegl(); //정규화 챠트 그리기
- }
-
- //그래프를 그려보자(2,3)
- function fInitChart(sGrapFlag){
- //sGrapFalg 1: 정규화, 2: 로하이, 3: 민에스디
-
- var count = model.getXPathValue('count(/root/main/rsltlist/row[chk="true"])'); //선택된 항목의 갯수
- if(count == 0){
- alert("그래프를 작성할 항목을 선택하세요");
- return;
- }else if(count ==1){
- var vEnd = -1;
- var chkrow = datagrid1.findRow("true", 1, 1);
-
- for(i = vCol; i < datagrid1.cols; i++){ //14번째 컬럼부터 column0~ 시작
- var x = datagrid1.valueMatrix(chkrow, i); //결과값
- if(x != ""){
- vEnd += 1; //결과 값이 있다면 1씩 더해
- }
- }
- var vAvg = parseFloat(model.getValue("/root/main/rsltlist/row["+ chkrow +"]/mean"));
- var vSD = parseFloat(model.getValue("/root/main/rsltlist/row["+ chkrow +"]/sd"));
- var vTitle = model.getValue("/root/main/rsltlist/row["+ chkrow +"]/testnm");
- var vLevlnm = model.getValue("/root/main/rsltlist/row["+ chkrow +"]/levlnm");
- var ref = model.getValue("/root/main/rsltlist/row["+ chkrow +"]/ref").split("~");
- var vLow = ref[0];
- var vHigh = ref[1];
- var v1SDH = vAvg + vSD;
- var v2SDH = vAvg + vSD*2;
- var v3SDH = vAvg + vSD*3;
- var v4SDH = vAvg + vSD*4;
- var v1SDL = vAvg - vSD;
- var v2SDL = vAvg - vSD*2;
- var v3SDL = vAvg - vSD*3;
- var v4SDL = vAvg - vSD*4;
- }else{
- var vEnd;// = datagrid1.cols - 13; //끝 좌표
- }
-
- var Obj_Chart = object2;
- var vStart = 0; //시리즈 번호
-
- Obj_Chart.Aspect.View3D = 0; // 2d 로 표현하기
- Obj_Chart.Zoom.Enable = false; // zoom 사용하지 않기
- Obj_Chart.Scroll.Enable = 2;
- Obj_Chart.Environment.MouseWheelScroll = false;
- Obj_Chart.Legend.Visible = false; // 그래프 참조 박스 띄우지 않기
- Obj_Chart.Panel.Gradient.Visible = true; // 페널에 그라디언트 적용
- Obj_Chart.Panel.Gradient.StartColor = 0xffffff;
- Obj_Chart.Panel.Gradient.EndColor=0xffffff;
- Obj_Chart.Legend.Visible = true; //범례표시 여부
- Obj_Chart.Legend.Alignment = 3; // Legend 위치 설정 :: 0 = left | 1 = right | 2 = top| 3 = bottom
- Obj_Chart.Legend.CheckBoxes = false; //범례 체크박스
-
- Obj_Chart.RemoveAllSeries();
- Obj_Chart.Axis.RemoveAllCustom();
- //margin 값 정하기
- Obj_Chart.Panel.MarginTop = 0;
- Obj_Chart.Panel.MarginLeft = 2;
- Obj_Chart.Panel.MarginRight = 0;
- Obj_Chart.Panel.MarginBottom = 2;
-
- Obj_Chart.Header.Visible = false;
- //Obj_Chart.Header.Text(0) = vTitle+"_"+vLevlnm;
- //Obj_Chart.Header.Font.Size = 14;
- //Obj_Chart.Header.Font.Color = 0x000000;
- Obj_Chart.Axis.Left.Labels.Style = 2;
- Obj_Chart.Axis.Right.Labels.Style = 1;
- Obj_Chart.Axis.Bottom.Labels.Style = 4; // 0:auto or value, 1:No, 2 :민 맥스, 3: marks style, 4:text
- Obj_Chart.Axis.Bottom.Labels.Angle = 90; //90도 돌려서 라벨 표시
- Obj_Chart.Axis.Bottom.Labels.Size = 95; //하단 라벨의 사이즈 조치사항 추가하면서 자동으로 늘어나서 추가함
- Obj_Chart.Axis.Left.Title.Caption = "실측값";
- Obj_Chart.Axis.Left.Automatic = true;
-
- //날짜그래프
- Obj_Chart.AddSeries(0); //asLine
- Obj_Chart.Series(0).asLine.LinePen.Width = 1; //펜 두께
- Obj_Chart.Series(0).asLine.Pointer.Visible = false; //값에 대한 포인터
- Obj_Chart.Series(0).ShowInLegend = false;
-
- var find, row, tmp;
- var findRows = "";
-
- for(r = 1; r <datagrid1.rows; r++){ //선택된 검사항목 그래프 그리기 위함
- if(model.getValue("/root/main/rsltlist/row["+ r +"]/chk") == "true"){
- findRows = findRows + r + "▦";
- }
- }
- row = findRows.substr(0, findRows.length-1).split("▦"); //체크된 항목의 row▦row...
-
- if(sGrapFlag == "3"){ //Mean/SD그래푸
- if(row.length == 1){
- //alert("vCnt = "+vCnt + " vAvg = " + vAvg + " vSD = " + vSD + " vStart = " +vStart + " vEnd = " + vEnd);
- fMakeLineSD(vAvg, vSD, vStart, vEnd); //라인그리기
- }else{ //중복된 검사항목이 있을 경우에 평균이나 편차에 대해서 여러줄 그려
- for(i = 0; i < row.length; i++){
- vAvg = parseFloat(model.getValue("/root/main/rsltlist/row["+ row[i] +"]/mean"));
- vSD = parseFloat(model.getValue("/root/main/rsltlist/row["+ row[i] +"]/sd"));
- tmp = 0;
- vEnd = 0; //각 검사항목의 라인 끝점
- for(j = vCol; j < datagrid1.cols; j++){ //14번째 컬럼부터 column0~ 시작
- x = datagrid1.valueMatrix(row[i], j);
- if(x != ""){
- if(tmp == 0){
- vStart = j - vCol; //라인의 시작점
- }
- tmp++;
- vEnd = j - vCol; //라인의 끝점
- }
- }//alert( "vStart :" + vStart+ " tmpEnd:"+ tmpEnd+" j:"+j);
- fMakeLineSD(vAvg, vSD, vStart, vEnd); //라인그리기
- }
- }
- }else if(sGrapFlag == "2"){ //Low/High그래푸
- if(row.length == 1){
- fMakeLineLH(vAvg, vHigh, vLow, vStart, vEnd);
- }else{ //여러항목일 경우 평균이나 편차에 대한 라인 여러줄 그려
- for(i = 0; i < row.length; i++){
- vAvg = parseFloat(model.getValue("/root/main/rsltlist/row["+ row[i] +"]/mean"));
- ref = model.getValue("/root/main/rsltlist/row["+ row[i] +"]/ref").split("~");
- vLow = ref[0];
- vHigh = ref[1];
- tmp = 0;
- vEnd = 0; //각 검사항목의 라인 끝점
- for(j = vCol; j < datagrid1.cols; j++){ //14번째 컬럼부터 column0~ 시작
- x = datagrid1.valueMatrix(row[i], j);
- if(x != ""){
- //vEnd += 1; //결과 값이 있다면 1씩 더해
- if(tmp == 0){
- vStart = j - vCol; //라인의 시작점
- }
- tmp++;
- vEnd = j - vCol;
- }
- }
- fMakeLineLH(vAvg, vHigh, vLow, vStart, vEnd);
- }
- }
- }
-
- fMakeChartOrgRslt(row); //L/H 및 Mean/SD 챠트 그리기
-
-
- /* //그래프가 그려질 시리즈 그래프그리는로 옮김
- Obj_Chart.AddSeries(37); //asHorizLine
- Obj_Chart.Series(vCnt).Color = 0xBE5B42; //
- Obj_Chart.Series(vCnt).asHorizLine.LinePen.Width = 2; //펜 두께
- Obj_Chart.Series(vCnt).asHorizLine.Pointer.Visible = true; //값에 대한 포인터
- Obj_Chart.Series(vCnt).asHorizLine.Pointer.Brush.Color = 0x6698FF;
- Obj_Chart.Series(vCnt).asHorizLine.Pointer.Style = 0;
- Obj_Chart.Series(vCnt).asHorizLine.Pointer.VerticalSize = 3;
- Obj_Chart.Series(vCnt).asHorizLine.Pointer.HorizontalSize = 3;
- Obj_Chart.Series(vCnt).VerticalAxis = 2; //좌표 y축에대한 스타일 2:both??
- Obj_Chart.Series(vCnt).Title = vTitle;
-
- //결과값에 대한 주석 보이기
- Obj_Chart.Series(vCnt).Marks.Visible = false; //요거 true로 해야 아래꺼 보임
- Obj_Chart.Series(vCnt).Marks.Style = 8; //수치값에 대한 값보이기 8아니면 다른수치보임
- Obj_Chart.Series(vCnt).Marks.ArrowLength = 0;
- */
- //fMakeChart(vCnt, row); //L/H 및 Mean/SD 챠트 그리기 위로 이동
- }
-
- //Mean/SD 그래프에 대한 SD단위 라인 그리기
- function fMakeLineSD(vAvg, vSD, vStart, vEnd){
-
- var Obj_Chart = object2;
- var v1SDH = vAvg + vSD;
- var v2SDH = vAvg + vSD*2;
- var v3SDH = vAvg + vSD*3;
- var v4SDH = vAvg + vSD*4;
- var v1SDL = vAvg - vSD;
- var v2SDL = vAvg - vSD*2;
- var v3SDL = vAvg - vSD*3;
- var v4SDL = vAvg - vSD*4;
- var idx = Obj_Chart.SeriesCount ;
-
- Obj_Chart.AddSeries(0); //asLine
- Obj_Chart.Series(idx).asLine.LinePen.Width = 2;
- Obj_Chart.Series(idx).Color = 0x000000; //Avg 라인
- Obj_Chart.Series(idx).AddXY (vStart , vAvg , "", Obj_Chart.Series(idx).Color );
- Obj_Chart.Series(idx).AddXY (vEnd , vAvg , "", Obj_Chart.Series(idx).Color );
-
- Obj_Chart.AddSeries(0); //asLine
- Obj_Chart.Series(1+idx).asLine.LinePen.Width = 1;
- Obj_Chart.Series(1+idx).Color = 0x000000; //+1SD 라인
- Obj_Chart.Series(1+idx).AddXY (vStart , v1SDH , "", Obj_Chart.Series(1+idx).Color );
- Obj_Chart.Series(1+idx).AddXY (vEnd , v1SDH , "", Obj_Chart.Series(1+idx).Color );
-
- Obj_Chart.AddSeries(0); //asLine
- Obj_Chart.Series(2+idx).asLine.LinePen.Width = 1;
- Obj_Chart.Series(2+idx).Color = 0x000000; //-1SD 라인
- Obj_Chart.Series(2+idx).AddXY (vStart , v1SDL , "", Obj_Chart.Series(2+idx).Color );
- Obj_Chart.Series(2+idx).AddXY (vEnd , v1SDL , "", Obj_Chart.Series(2+idx).Color );
-
- Obj_Chart.AddSeries(0); //asLine
- Obj_Chart.Series(3+idx).asLine.LinePen.Width = 2;
- Obj_Chart.Series(3+idx).Color = 0x00ccff; //+2SD 라인
- Obj_Chart.Series(3+idx).AddXY (vStart , v2SDH , "", Obj_Chart.Series(3+idx).Color );
- Obj_Chart.Series(3+idx).AddXY (vEnd , v2SDH , "", Obj_Chart.Series(3+idx).Color );
-
- Obj_Chart.AddSeries(0); //asLine
- Obj_Chart.Series(4+idx).asLine.LinePen.Width = 2;
- Obj_Chart.Series(4+idx).Color = 0x00ccff; //-2SD 라인
- Obj_Chart.Series(4+idx).AddXY (vStart , v2SDL , "", Obj_Chart.Series(4+idx).Color );
- Obj_Chart.Series(4+idx).AddXY (vEnd , v2SDL , "", Obj_Chart.Series(4+idx).Color );
-
- Obj_Chart.AddSeries(0); //asLine
- Obj_Chart.Series(5+idx).asLine.LinePen.Width = 2;
- Obj_Chart.Series(5+idx).Color = 0x0000ee; //+3SD 라인
- Obj_Chart.Series(5+idx).AddXY (vStart , v3SDH , "", Obj_Chart.Series(5+idx).Color );
- Obj_Chart.Series(5+idx).AddXY (vEnd , v3SDH , "", Obj_Chart.Series(5+idx).Color );
-
- Obj_Chart.AddSeries(0); //asLine
- Obj_Chart.Series(6+idx).asLine.LinePen.Width = 2;
- Obj_Chart.Series(6+idx).Color = 0x0000ee; //-3SD 라인
- Obj_Chart.Series(6+idx).AddXY (vStart , v3SDL , "", Obj_Chart.Series(6+idx).Color );
- Obj_Chart.Series(6+idx).AddXY (vEnd , v3SDL , "", Obj_Chart.Series(6+idx).Color );
-
- for(k=idx;k<idx+7;k++){ //라인들에 대한 범례 보이지 않게
- Obj_Chart.Series(k).ShowInLegend = false;
- }
- }
-
- //Low/High 그래프에 대한 라인 그리기
- function fMakeLineLH(vAvg, vHigh, vLow, vStart, vEnd){
- var Obj_Chart = object2;
- var idx = Obj_Chart.SeriesCount ;
-
- Obj_Chart.AddSeries(0); //asLine
- Obj_Chart.Series(idx).asLine.LinePen.Width = 2;
- Obj_Chart.Series(idx).Color = 0x000000; //Avg 라인
- Obj_Chart.Series(idx).ShowInLegend = false;
- Obj_Chart.Series(idx).AddXY (vStart , vAvg , "", Obj_Chart.Series(idx).Color );
- Obj_Chart.Series(idx).AddXY (vEnd , vAvg , "", Obj_Chart.Series(idx).Color );
-
- if(vHigh != ""){
- idx = Obj_Chart.SeriesCount ;
- Obj_Chart.AddSeries(0); //asLine
- Obj_Chart.Series(idx).asLine.LinePen.Width = 2;
- Obj_Chart.Series(idx).Color = 0x0000FF; //High 라인
- Obj_Chart.Series(idx).ShowInLegend = false;
- Obj_Chart.Series(idx).AddXY (vStart , vHigh , "", Obj_Chart.Series(idx).Color);
- Obj_Chart.Series(idx).AddXY (vEnd , vHigh , "", Obj_Chart.Series(idx).Color);
- }
- if(vLow != ""){
- idx = Obj_Chart.SeriesCount ;
- Obj_Chart.AddSeries(0); //asLine
- Obj_Chart.Series(idx).asLine.LinePen.Width = 2;
- Obj_Chart.Series(idx).Color = 0xFF0000; //Low 라인
- Obj_Chart.Series(idx).ShowInLegend = false;
- Obj_Chart.Series(idx).AddXY (vStart , vLow , "", Obj_Chart.Series(idx).Color);
- Obj_Chart.Series(idx).AddXY (vEnd , vLow , "", Obj_Chart.Series(idx).Color);
- }
- }
-
- //L/H 및 Mean/SD 챠트 그리기
- function fMakeChartOrgRslt(row){
- var Obj_Chart = object2;
- var Rnd1, Rnd2, Rnd3, cColor;
- var vAvg, vSD, v4SDH, v4SDL, vTestnm, vLotno, vLevlNm, vCnt, vEqmtCd;
- var vTestCd, vMatrCd, vLevlCd, vDate, vFindData, vFact; //조치사항을 찾기 위한 변수들
- var x = 0;
- //var count = model.getXPathValue('count(/root/main/rsltlist/row[testnm="'+vTestnm+'"])'); //같은 검사명을 가진 row 카운트
- var title = "";
-
- //그래프가 그려질 시리즈
- for (series = 0; series < row.length; series++){
- vLotno = model.getValue("/root/main/rsltlist/row["+ row[series] +"]/lotno"); //검사명(LotNo)
- vTestnm = model.getValue("/root/main/rsltlist/row["+ row[series] +"]/testnm"); //조회할 검사명, Title에 집어넣을놈
- vLevlNm = model.getValue("/root/main/rsltlist/row["+ row[series] +"]/levlnm"); //조회할 레벨명, Title에 집어넣을놈
- vEqmtCd = model.getValue("/root/main/rsltlist/row["+ row[series] +"]/eqmtcd"); //조회할 장비코드, Title에 집어넣을놈
- vTestCd = model.getValue("/root/main/rsltlist/row["+ row[series] +"]/testcd");
- vMatrCd = model.getValue("/root/main/rsltlist/row["+ row[series] +"]/matrcd");
- vLevlCd = model.getValue("/root/main/rsltlist/row["+ row[series] +"]/levlcd");
- Rnd1 = Math.random();
- Rnd2 = Math.random();
- Rnd3 = Math.random();
- cColor = window.rgb( (235 - 1) * Rnd1 + 1, (235 - 1) * Rnd2 + 1 , (235 - 1) * Rnd3 + 1); //각 검사항목별로 포인터 색깔 변경
- vCnt = Obj_Chart.SeriesCount ;
-
- Obj_Chart.AddSeries(37); //asHorizLine
- Obj_Chart.Series(vCnt).Color = 0xBE5B42;
- Obj_Chart.Series(vCnt).asHorizLine.LinePen.Width = 2; //펜 두께
- Obj_Chart.Series(vCnt).asHorizLine.Pointer.Visible = true; //값에 대한 포인터
- Obj_Chart.Series(vCnt).asHorizLine.Pointer.Brush.Color = cColor; //포인트 컬러
- Obj_Chart.Series(vCnt).asHorizLine.Pointer.Style = 0;
- Obj_Chart.Series(vCnt).asHorizLine.Pointer.VerticalSize = 1;
- Obj_Chart.Series(vCnt).asHorizLine.Pointer.HorizontalSize = 1;
- Obj_Chart.Series(vCnt).VerticalAxis = 2; //좌표 y축에대한 스타일 2:both??
- Obj_Chart.Series(vCnt).Title = vEqmtCd + " : " + vTestnm+ "(" + vLotno + ")";
- title = vEqmtCd + " : " + vTestnm+ "(" + vLotno + ")_"+vLevlNm; //보여주지 말게20091019
- //결과값에 대한 주석 보이기
- Obj_Chart.Series(vCnt).Marks.Visible = false; //요거 true로 해야 아래꺼 보임
- Obj_Chart.Series(vCnt).Marks.Style = 8; //수치값에 대한 값보이기 8아니면 다른수치보임
- Obj_Chart.Series(vCnt).Marks.ArrowLength = 0;
-
- fAddPointSeries(); //WGMR, 2SD, 3SD 포인터 시리즈 추가
-
- x =0;
- for(var i = vCol; i < datagrid1.cols; i++ ) {
- vAvg = parseFloat(model.getValue("/root/main/rsltlist/row["+ row[series] +"]/avg"));
- vSD = parseFloat(model.getValue("/root/main/rsltlist/row["+ row[series] +"]/sdval"));
- v4SDH = vAvg+vSD*4;
- v4SDL = vAvg-vSD*4;
-
- var y = parseFloat(datagrid1.valueMatrix(row[series], i)); //결과값 : y 좌표
- var cap = datagrid1.valueMatrix(0, i);
-
- //=================================
- vDate = cap.replace("-", "").replace("-", "").replace(" ", "").replace(":", "").replace(":", "");
- vFindData = vTestCd+vMatrCd+vLevlCd+vDate;
- vFact = title + " " + cap + " - " +model.getValue("/root/hidden/temp/factcnts[finddata ='" + vFindData + "']/measfactcnts") + "\n";
- //=================================
-
- if (!isNaN(y) && y < v4SDH && y > v4SDL) {
- Obj_Chart.Series(vCnt).AddXY (x, y, "" , Obj_Chart.Series(vCnt).Color );
- x += 1;
- }else if(!isNaN(y) && y > v4SDH){
- y = v4SDH;
- Obj_Chart.Series(vCnt).AddXY (x, y, "", Obj_Chart.Series(vCnt).Color );
- x += 1;
- }else if(!isNaN(y) && y < v4SDH){
- y = v4SDL;
- Obj_Chart.Series(vCnt).AddXY (x, y, "", Obj_Chart.Series(vCnt).Color );
- x += 1;
- }else if(isNaN(y) && row.length != 1){
- x += 1;
- }
- if(!isNaN(y)){
- Obj_Chart.Series(0).AddNullXY (x-1, vAvg,cap); //두개이상 그릴때 날짜가 제대로 보여지지 않는것 때문에 날짜는 따로 찍음
- }
- //룰이나 2SD, 3SD벗어난 포인트 찍어주기
- if(datagrid1.valueMatrix(row[series], i).indexOf("W") != -1 || model.getValue("/root/hidden/temp/factcnts[finddata ='" + vFindData + "']/measfactcnts") != ""){
- //WGMR포인트 찍어
- Obj_Chart.Series(vCnt+3).AddXY (x-1, y, vFact, Obj_Chart.Series(vCnt+3).Color );
- }else if(y > vAvg+vSD*3 || y < vAvg-vSD*3){
- //3SD
- Obj_Chart.Series(vCnt+2).AddXY (x-1, y, vFact, Obj_Chart.Series(vCnt+2).Color );
- }else if(y > vAvg+vSD*2 || y < vAvg-vSD*2){
- //2SD
- Obj_Chart.Series(vCnt+1).AddXY (x-1, y, vFact, Obj_Chart.Series(vCnt+1).Color );
- }
-
- }
- }
- //Obj_Chart.Header.Text(0) = title.substr(0, title.length-2); //그래프 타이틀 그냥 보여주지 말자20091019
-
- fMakeLotGrp(); //Lot관리하는 그래프 그려
- }
-
- //정규화 그래프 그리기
- function fMakeChartRegl(){
- var Obj_Chart = object1;
- var vAvg, vSD, v4SDH, v4SDL, v3SDH, v3SDL, v2SDH, v2SDL, v1SDH, v1SDL, y, cap, tmpY, vTitle, vLotNo, vLevlNm, vRslt, vEqmtCd;
- var vTestCd, vMatrCd, vLevlCd, vDate, vFindData, vFact; //조치사항을 찾기 위한 변수들
- var Rnd1, Rnd2, Rnd3, cColor, vCnt;
- var count = model.getXPathValue('count(/root/main/rsltlist/row[chk="true"])'); //선택된 항목의 갯수
-
- if( count == 1){ //선택된 항목이 하나일 경우
- //조회된 항목중 선택된 항목에 대한 그래프 그리기
- var chkrow = datagrid1.findRow("true", 1, 1);
- var xx = 0;
- vCnt = Obj_Chart.SeriesCount ; //생성된 시리즈 갯수
- vTitle = model.getValue("/root/main/rsltlist/row["+ chkrow +"]/testnm");
- vAvg = parseFloat(model.getValue("/root/main/rsltlist/row["+ chkrow +"]/avg"));
- vSD = parseFloat(model.getValue("/root/main/rsltlist/row["+ chkrow +"]/sdval"));
- vLotNo = model.getValue("/root/main/rsltlist/row["+ chkrow +"]/lotno");
- vLevlNm = model.getValue("/root/main/rsltlist/row["+ chkrow +"]/levlnm");
- vEqmtCd = model.getValue("/root/main/rsltlist/row["+ chkrow +"]/eqmtcd");
- vTestCd = model.getValue("/root/main/rsltlist/row["+ chkrow +"]/testcd"); //
- vMatrCd = model.getValue("/root/main/rsltlist/row["+ chkrow +"]/matrcd"); //
- vLevlCd = model.getValue("/root/main/rsltlist/row["+ chkrow +"]/levlcd"); //
- v3SDH = vAvg+vSD*3;
- v3SDL = vAvg-vSD*3;
- v2SDH = vAvg+vSD*2;
- v2SDL = vAvg-vSD*2;
- v1SDH = vAvg+vSD*1;
- v1SDL = vAvg-vSD*1;
-
- //시리즈별 컬러
- Rnd1 = Math.random();
- Rnd2 = Math.random();
- Rnd3 = Math.random();
- cColor = window.rgb( (255 - 1) * Rnd1 + 1, (255 - 1) * Rnd2 + 1 , (255 - 1) * Rnd3 + 1);
-
- //그래프가 그려질 시리즈
- Obj_Chart.AddSeries(37); //asHorizLine
- Obj_Chart.Series(vCnt).Color = cColor;
- Obj_Chart.Series(vCnt).asHorizLine.LinePen.Width = 2; //펜 두께
- Obj_Chart.Series(vCnt).asHorizLine.Pointer.Visible = true; //값에 대한 포인터
- Obj_Chart.Series(vCnt).asHorizLine.Pointer.Brush.Color = cColor;
- Obj_Chart.Series(vCnt).asHorizLine.Pointer.Style = 0;
- Obj_Chart.Series(vCnt).asHorizLine.Pointer.VerticalSize = 1;
- Obj_Chart.Series(vCnt).asHorizLine.Pointer.HorizontalSize = 1;
- Obj_Chart.Series(vCnt).Title = vEqmtCd + " : " + vTitle + "(" + vLotNo + ")_"+vLevlNm;
-
- Obj_Chart.Series(vCnt).Clear(); //라인 초기화
-
- fAddPointSeries(); //WGMR, 2SD, 3SD 포인터 시리즈 추가
-
- Obj_Chart.Series(vCnt).Marks.Visible = false;
- Obj_Chart.Series(vCnt+1).Marks.Visible = false;
- Obj_Chart.Series(vCnt+2).Marks.Visible = false;
- Obj_Chart.Series(vCnt+3).Marks.Visible = false;
-
- for(var x = vCol; x < datagrid1.cols; x++ ) {
-
- vRslt = parseFloat(datagrid1.valueMatrix(chkrow, x)); //결과값
- cap = datagrid1.valueMatrix(0, x);
-
- //=================================
- vDate = cap.replace("-", "").replace("-", "").replace(" ", "").replace(":", "").replace(":", "");
- vFindData = vTestCd+vMatrCd+vLevlCd+vDate;
- vFact = vTitle + " " + cap + " - " +model.getValue("/root/hidden/temp/factcnts[finddata ='" + vFindData + "']/measfactcnts") + "\n";
- //=================================
-
- if (!isNaN(vRslt)){
- tmpY = (vRslt - vAvg) / vSD; //y좌표
-
- if(tmpY > 3){
- y = 3.1;
- }else if(tmpY < -3){
- y = -3.1
- }else{
- y = tmpY;
- }
- //결과에대한 그래프 찍기
- Obj_Chart.Series(vCnt).AddXY (xx, y, "", Obj_Chart.Series(vCnt).Color );
-
- if(datagrid1.valueMatrix(chkrow, x).indexOf("W") != -1 || model.getValue("/root/hidden/temp/factcnts[finddata ='" + vFindData + "']/measfactcnts") != ""){
- //WGMR포인트 찍어
- Obj_Chart.Series(vCnt+3).AddXY (xx, y, vFact, Obj_Chart.Series(vCnt+3).Color );
- }else if( y == 3.1 || y == -3.1){
- //3SD
- Obj_Chart.Series(vCnt+2).AddXY (xx, y, vFact, Obj_Chart.Series(vCnt+2).Color );
- }else if(y > 2 || y < -2){
- //2SD
- Obj_Chart.Series(vCnt+1).AddXY (xx, y, vFact, Obj_Chart.Series(vCnt+1).Color );
- }
- Obj_Chart.Series(7).AddXY (xx, -3.5, cap, Obj_Chart.Series(7).Color ); //날짜 보였다 안보였다해서 시리즈 따로 추가함
- xx += 1;
- }
- }
- }else{
- //조회된 항목중 선택된 항목에 대한 그래프 그리기
- for( i = datagrid1.fixedRows; i < datagrid1.rows; i++ ){
- if(model.getValue("/root/main/rsltlist/row["+ i +"]/chk") == "true"){
-
- vCnt = Obj_Chart.SeriesCount ; //생성된 시리즈 갯수
- vTitle = model.getValue("/root/main/rsltlist/row["+ i +"]/testnm");
- vAvg = parseFloat(model.getValue("/root/main/rsltlist/row["+ i +"]/avg"));
- vSD = parseFloat(model.getValue("/root/main/rsltlist/row["+ i +"]/sdval"));
- vLotNo = model.getValue("/root/main/rsltlist/row["+ i +"]/lotno");
- vLevlNm = model.getValue("/root/main/rsltlist/row["+ i +"]/levlnm");
- vEqmtCd = model.getValue("/root/main/rsltlist/row["+ i +"]/eqmtcd");
- vTestCd = model.getValue("/root/main/rsltlist/row["+ i +"]/testcd");
- vMatrCd = model.getValue("/root/main/rsltlist/row["+ i +"]/matrcd");
- vLevlCd = model.getValue("/root/main/rsltlist/row["+ i +"]/levlcd");
- v3SDH = vAvg+vSD*3;
- v3SDL = vAvg-vSD*3;
- v2SDH = vAvg+vSD*2;
- v2SDL = vAvg-vSD*2;
- v1SDH = vAvg+vSD*1;
- v1SDL = vAvg-vSD*1;
-
- //시리즈별 컬러
- Rnd1 = Math.random();
- Rnd2 = Math.random();
- Rnd3 = Math.random();
- cColor = window.rgb( (255 - 1) * Rnd1 + 1, (255 - 1) * Rnd2 + 1 , (255 - 1) * Rnd3 + 1);
-
- //그래프가 그려질 시리즈
- Obj_Chart.AddSeries(37); //asHorizLine
- Obj_Chart.Series(vCnt).Color = cColor;
- Obj_Chart.Series(vCnt).asHorizLine.LinePen.Width = 2; //펜 두께
- Obj_Chart.Series(vCnt).asHorizLine.Pointer.Visible = true; //값에 대한 포인터
- Obj_Chart.Series(vCnt).asHorizLine.Pointer.Brush.Color = cColor;
- Obj_Chart.Series(vCnt).asHorizLine.Pointer.Style = 0;
- Obj_Chart.Series(vCnt).asHorizLine.Pointer.VerticalSize = 1;
- Obj_Chart.Series(vCnt).asHorizLine.Pointer.HorizontalSize = 1;
- Obj_Chart.Series(vCnt).Title = vEqmtCd + " : " + vTitle + "(" + vLotNo + ")_"+vLevlNm;
-
- Obj_Chart.Series(vCnt).Clear(); //라인 초기화
-
- fAddPointSeries(); //WGMR, 2SD, 3SD 포인터 시리즈 추가
-
- for(var x = vCol; x < datagrid1.cols; x++ ) {
-
- vRslt = parseFloat(datagrid1.valueMatrix(i, x)); //결과값
- cap = datagrid1.valueMatrix(0, x);
-
- //=================================
- vDate = cap.replace("-", "").replace("-", "").replace(" ", "").replace(":", "").replace(":", "");
- vFindData = vTestCd+vMatrCd+vLevlCd+vDate;
- vFact = vTitle + " " + cap + " - " +model.getValue("/root/hidden/temp/factcnts[finddata ='" + vFindData + "']/measfactcnts") + "\n";
- //=================================
-
- if (!isNaN(vRslt)){
- tmpY = (vRslt - vAvg) / vSD; //y좌표
-
- if(tmpY > 3){
- y = 3.1;
- }else if(tmpY < -3){
- y = -3.1
- }else{
- y = tmpY;
- }
- //결과에대한 그래프 찍기
- Obj_Chart.Series(vCnt).AddXY (x-vCol, y, "", Obj_Chart.Series(vCnt).Color );
-
- if(datagrid1.valueMatrix(i, x).indexOf("W") != -1 || model.getValue("/root/hidden/temp/factcnts[finddata ='" + vFindData + "']/measfactcnts") != ""){
- //WGMR포인트 찍어
- Obj_Chart.Series(vCnt+3).AddXY (x-vCol, y, vFact, Obj_Chart.Series(vCnt+3).Color );
- }else if( y == 3.1 || y == -3.1){
- //3SD
- Obj_Chart.Series(vCnt+2).AddXY (x-vCol, y, vFact, Obj_Chart.Series(vCnt+2).Color );
- }else if(y > 2 || y < -2){
- //2SD
- Obj_Chart.Series(vCnt+1).AddXY (x-vCol, y, vFact, Obj_Chart.Series(vCnt+1).Color );
- }
- }
-
- /* //4SD에서 3SD로 변경 *요구사항
- if (!isNaN(tmpY) && tmpY >= v3SDH) {
- y = 3;
- //}else if(!isNaN(tmpY) && tmpY < v4SDH && tmpY >= v3SDH){
- // y = 3;
- }else if(!isNaN(tmpY) && tmpY < v3SDH && tmpY >= v2SDH){
- y = 2;
- }else if(!isNaN(tmpY) && tmpY < v2SDH && tmpY >= v1SDH){
- y = 1;
- }else if(!isNaN(tmpY) && tmpY < v1SDH && tmpY > v1SDL){
- y = 0;
- }else if(!isNaN(tmpY) && tmpY <= v1SDL && tmpY > v2SDL){
- y = -1;
- }else if(!isNaN(tmpY) && tmpY <= v2SDL && tmpY > v3SDL){
- y = -2;
- //}else if(!isNaN(tmpY) && tmpY <= v3SDL && tmpY > v4SDL){
- // y = -3;
- }else if(!isNaN(tmpY) && tmpY <= v3SDL){
- y = -3;
- }
- if (!isNaN(tmpY)){
- Obj_Chart.Series(vCnt).AddXY (x-14, y, "", Obj_Chart.Series(vCnt).Color );
- }
- */
- Obj_Chart.Series(7).AddXY (x-vCol, -3.5, cap, Obj_Chart.Series(7).Color ); //날짜 보였다 안보였다해서 시리즈 따로 추가함
- }
- }//end if
- }//end for(i)
- }
- fMakeLotGrp(); //Lot관리하는 그래프 그려
- }
-
- //Lot변경관련 그래프
- function fMakeLotGrp(){
-
- var count = model.getXPathValue('count(/root/main/rsltlist/row[chk="true"])');
-
- if(count == 1 || grpChk()){
- var findRow = datagrid1.findRow("true", 1, 1);
- model.makeValue("/root/send/testcd0", "LOS101");
-
- submit("TRLQP00203");
- if(datagrid3.rows == 1){ //조회된 내용이 없을때.. 기준자료 등록되지 않았을때..
- return;
- }
- }else{ //여러항목이 선택되었을때는 그리지 않는다.
- return;
- }
-
- var Obj_Chart;
- if(radio1.value == 1){
- Obj_Chart = object1;
- }else{
- Obj_Chart = object2;
- }
-
- var numVertaxis, numHorizaxis, LotFlag, testDD, toDD, fromDD;
- var Series = Obj_Chart.SeriesCount ; //요놈은 그래프 그릴놈
- var vCount = Obj_Chart.SeriesCount ; //마지막에 결과값 그래프를 제외한 그래프 범례 안보이게 하기 위해
- var toddSeq = 0;
-
- Obj_Chart.Axis.Left.StartPosition = 25;
- numVertaxis= Obj_Chart.Axis.AddCustom(false);
- numHorizaxis = Obj_Chart.Axis.AddCustom(true);
-
- Obj_Chart.Axis.Custom(numVertaxis).Automatic = false;
- Obj_Chart.Axis.Custom(numVertaxis).Maximum = 2;
- Obj_Chart.Axis.Custom(numVertaxis).Minimum = 0;
- Obj_Chart.Axis.Custom(numVertaxis).Increment = 1;
- Obj_Chart.Axis.Custom(numVertaxis).Labels.Style = 2; //1:lot만 2: lot+숫자
-
- Obj_Chart.Axis.Custom(numVertaxis).Title.Angle = 90;
- Obj_Chart.Axis.Custom(numVertaxis).EndPosition = 15;
- Obj_Chart.Axis.Custom(numVertaxis).Title.Caption = "LOT";
-
- Obj_Chart.Axis.Custom(numHorizaxis).PositionPercent = 85;
- Obj_Chart.Axis.Custom(numHorizaxis).Labels.Visible = false;
-
- for(i = 1; i < datagrid3.rows; i++){ //기준자료 관리되는 갯수만큼 물질유형코드(0:REAGENT LOT, 1:CALIBRATOR LOT, 2:CONTROL MATERIAL LOT)
- toDD = datagrid3.valueMatrix(i, 2).split("▦"); //toddlist
- fromDD = datagrid3.valueMatrix(i, 3).split("▦"); //fromddlist
- LotFlag = datagrid3.valueMatrix(i, 1); //matrkindcd
-
- for(j = 0; j <= toDD.length; j++){
- fAddSeries(numVertaxis, numHorizaxis); //조회된 matrkindcd별 todd 갯수에 따라 시리즈 추가한다
- }
-
- //if(radio1.value == 1 && count != 1){//정규화이거나 count가 1이 아닐때 count -> 선택된 갯수
- if(count != 1){ //정규화구분 상관없이 count가 1이아니면
- for(var x = vCol; x < datagrid1.cols; x++ ) {
- testDD = (datagrid1.valueMatrix(0, x)).substr(0, 4) + (datagrid1.valueMatrix(0, x)).substr(5, 2) + (datagrid1.valueMatrix(0, x)).substr(8, 2); //검사일시에서 YYYYMMDD만
- if(parseInt(testDD) >= parseInt(fromDD[toddSeq]) && parseInt(testDD) <= parseInt(toDD[toddSeq])){
- Obj_Chart.Series(Series).AddXY (x-vCol, LotFlag, "", Obj_Chart.Series(Series).Color );
- }else if(parseInt(testDD) < parseInt(fromDD[toddSeq])){
- //검사일시가 시작일자보다 작다면 Null
- Obj_Chart.Series(Series).AddNullXY (x-vCol, LotFlag, "");
- }else if(parseInt(testDD) > parseInt(toDD[toddSeq])){
- //검사일시가 종료일자보다 크다면
- Obj_Chart.Series(Series).AddXY (x-vCol, LotFlag, "", Obj_Chart.Series(Series).Color );
- Obj_Chart.Series(Series+1).AddXY (x-vCol, LotFlag, "", Obj_Chart.Series(Series+1).Color ); //그래프 연결 위함
- toddSeq += 1; //todd[]를 하나 더하고
- Series += 1; //다음 시리즈로 넘어간다
- }else{ //종료일자가 없을때..
- Obj_Chart.Series(Series).AddNullXY (x-vCol, LotFlag, "");
- //Obj_Chart.Series(Series).AddXY (x-14, LotFlag, "", Obj_Chart.Series(Series).Color ); //그냥 그려
- }
- }
- }else{ //실측값이고 count가 1일때
- var xx = 0; //실측값 x좌표
- for(var x = vCol; x <= datagrid1.cols; x++ ) {
- if(datagrid1.valueMatrix(findRow, x) != ""){
-
- testDD = (datagrid1.valueMatrix(0, x)).substr(0, 4) + (datagrid1.valueMatrix(0, x)).substr(5, 2) + (datagrid1.valueMatrix(0, x)).substr(8, 2); //검사일시에서 YYYYMMDD만
- if(parseInt(testDD) >= parseInt(fromDD[toddSeq]) && parseInt(testDD) <= parseInt(toDD[toddSeq])){
- Obj_Chart.Series(Series).AddXY (xx, LotFlag, "", Obj_Chart.Series(Series).Color );
- xx += 1; //값이 있으면 xx좌표 +1
- }else if(parseInt(testDD) < parseInt(fromDD[toddSeq])){
- //검사일시가 시작일자보다 작다면 Null
- Obj_Chart.Series(Series).AddNullXY (xx, LotFlag, "");
- xx += 1;
- }else if(parseInt(testDD) > parseInt(toDD[toddSeq])){
- //검사일시가 종료일자보다 크다면
- Obj_Chart.Series(Series).AddXY (xx, LotFlag, "", Obj_Chart.Series(Series).Color );
- Obj_Chart.Series(Series+1).AddXY (xx, LotFlag, "", Obj_Chart.Series(Series+1).Color ); //그래프 연결 위함
- toddSeq += 1; //todd[]를 하나 더하고
- Series += 1; //다음 시리즈로 넘어간다
- xx += 1; //값이 있으면 xx좌표 +1
- }else{
- Obj_Chart.Series(Series).AddNullXY (xx, LotFlag, "");
- //Obj_Chart.Series(Series).AddXY (xx, LotFlag, "", Obj_Chart.Series(Series).Color ); //그냥 그려
- xx += 1;
- }
- }
- }
- }
-
- toddSeq = 0; //다음 matrkindcd 의 todd[0]을 비교하기 위함
- Series += 1; //종료일자는 99991231이기 때문에 else문 안타서 하나 더해줌
- }
- /*fAddSeries(numVertaxis, numHorizaxis); //마지막 그래프가 그래프 상단 라인과 겹쳐지는 현상때문에 그래프 하나 더 추가 -_-
- Obj_Chart.Series(Series).AddXY (0, parseInt(LotFlag)+1, "", 0x000000 ); //y+1 에 포인트 하나 찍기
-
- fAddSeries(numVertaxis, numHorizaxis); //첫번째 그래프가 그래프 하단 라인과 겹쳐지는 현상때문에 그래프 하나 더 추가 -_-
- Obj_Chart.Series(Series+1).AddXY (0, -1, "", 0x000000 ); //-1 에 포인트 하나 찍기
- */
-
- Obj_Chart.Axis.Custom(numVertaxis).Labels.Add (0, "Rea");
- Obj_Chart.Axis.Custom(numVertaxis).Labels.Add (1, "Cal");
-
- //요거는 그래프 시작과 끝점쪽에 기본적으로 마진이 있어 sd그래프와 lot그래프간 살짝 안맞는 문제가 있는데 고놈 해결하기 위함
- for(icnt = 0; icnt < Obj_Chart.SeriesCount ; icnt++){
- if(Obj_Chart.Series(icnt).SeriesType == 0 ){
- Obj_Chart.Series(icnt).asLine.Pointer.InflateMargins = false;
- }else if(Obj_Chart.Series(icnt).SeriesType == 37){
- Obj_Chart.Series(icnt).asHorizLine.Pointer.InflateMargins = false;
- }else{
- Obj_Chart.Series(icnt).asPoint.Pointer.InflateMargins = false;
- }
- }
- }
-
- //Lot기준자료 관련 그래프 시리즈 추가
- function fAddSeries(numVertaxis, numHorizaxis){
- var Rnd1, Rnd2, Rnd3, cColor
- var Obj_Chart;
-
- if(radio1.value == 1){
- Obj_Chart = object1;
- }else{
- Obj_Chart = object2;
- }
- var idx = Obj_Chart.SeriesCount ;
-
- //시리즈별 컬러
- Rnd1 = Math.random();
- Rnd2 = Math.random();
- Rnd3 = Math.random();
- cColor = window.rgb( (255 - 1) * Rnd1 + 1, (255 - 1) * Rnd2 + 1 , (255 - 1) * Rnd3 + 1);
-
- Obj_Chart.AddSeries(0);
- Obj_Chart.Series(idx).Color = cColor;
- Obj_Chart.Series(idx).asLine.LinePen.Width = 10;
- Obj_Chart.Series(idx).VerticalAxisCustom = numVertaxis;
- Obj_Chart.Series(idx).HorizontalAxisCustom = numHorizaxis;
- Obj_Chart.Series(idx).Marks.Visible = false;
- Obj_Chart.Series(idx).ShowInLegend = false;
-
- }
-
- //2SD, 3SD, WGMR에 대한 포인트 그래프 추가
- function fAddPointSeries(){
-
- var Obj_Chart;
- if(radio1.value == 1){
- Obj_Chart = object1;
- }else{
- Obj_Chart = object2;
- }
- var idx = Obj_Chart.SeriesCount ;
-
- //Wgmr 포인트
- Obj_Chart.AddSeries(4);
- Obj_Chart.Series(idx).Cursor =2020;
- Obj_Chart.Series(idx).asPoint.Pointer.Pen.Color = window.RGB(255, 0, 0)
- Obj_Chart.Series(idx).asPoint.Pointer.Brush.Color = window.RGB(255, 0, 0)
- Obj_Chart.Series(idx).asPoint.Pointer.Style = 0
- Obj_Chart.Series(idx).asPoint.Pointer.HorizontalSize = 3
- Obj_Chart.Series(idx).asPoint.Pointer.VerticalSize = 3
- Obj_Chart.Series(idx).ShowInLegend = false;
-
- //2SD포인트
- Obj_Chart.AddSeries(4);
- Obj_Chart.Series(idx+1).Cursor =2020;
- Obj_Chart.Series(idx+1).asPoint.Pointer.Pen.Color = window.RGB(255, 0, 0)
- Obj_Chart.Series(idx+1).asPoint.Pointer.Brush.Color = window.RGB(255, 0, 0)
- Obj_Chart.Series(idx+1).asPoint.Pointer.Style = 0
- Obj_Chart.Series(idx+1).asPoint.Pointer.HorizontalSize = 3
- Obj_Chart.Series(idx+1).asPoint.Pointer.VerticalSize = 3
- Obj_Chart.Series(idx+1).ShowInLegend = false;
-
- //3SD포인트
- Obj_Chart.AddSeries(4);
- Obj_Chart.Series(idx+2).Cursor =2020;
- Obj_Chart.Series(idx+2).asPoint.Pointer.Pen.Color = window.RGB(0, 255, 0)
- Obj_Chart.Series(idx+2).asPoint.Pointer.Brush.Color = window.RGB(0, 255, 0)
- Obj_Chart.Series(idx+2).asPoint.Pointer.Style = 0
- Obj_Chart.Series(idx+2).asPoint.Pointer.HorizontalSize = 3
- Obj_Chart.Series(idx+2).asPoint.Pointer.VerticalSize = 3
- Obj_Chart.Series(idx+2).ShowInLegend = false;
-
- }
-
- //Lot그래프 그리기 위해 체크된 검사항목 확인 (여러항목 중복 선택되어있어도 같은 검사항목이면 그래프 그림)
- function grpChk(){
-
- var row = datagrid1.findRow("true", 1, 1);
- var testcd = model.getValue("/root/main/rsltlist/row["+ row +"]/testcd");
-
- for(i = row; i < datagrid1.rows; i++){
- if( model.getValue("/root/main/rsltlist/row["+ i +"]/chk") == "true"){
- if(testcd != model.getValue("/root/main/rsltlist/row["+ i +"]/testcd")){
- return false;
- }
- }
- }
- return true;
- }
-
- //소견세팅
- function fCntsSet(row, col, flag){
-
- var testcd = model.getValue("/root/main/rsltlist/row[" + row + "]/testcd");
- var matrcd = model.getValue("/root/main/rsltlist/row[" + row + "]/matrcd");;
- var levlcd = model.getValue("/root/main/rsltlist/row[" + row + "]/levlcd");;
- var testdt = datagrid1.valueMatrix(0, col);
- 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);
- var findData = testcd+matrcd+levlcd+acptdt;
- var findRow = datagrid2.findRow(findData, 0, 1);
-
- if(findRow != -1){
- if(flag == 1){ //조치사항 코드
- var measfactcd = model.getValue("/root/main/matrinfo/measfactcd");
- model.setValue("/root/hidden/temp/factcnts[" + findRow + "]/measfactcd", combo13.value);
- model.setValue("/root/hidden/temp/factcnts[" + findRow + "]/measfactcnts", combo13.label);
- textarea1.value = combo13.label;
-
- }else{ //조치사항
- var measfactcnts = model.getValue("/root/main/matrinfo/measfactcnts");
- model.setValue("/root/hidden/temp/factcnts[" + findRow + "]/measfactcnts", measfactcnts);
- }
- datagrid2.addStatus(findRow, "update");
- }
- }
-
- //사유저장
- function fSetSave(){
- //alert(datagrid2.getUpdateData()); return;
- if(messageBox("", "Q004")==6){ //실행하시겠습니까? 6:ok
- if(checkGridUpdate(datagrid2)){ //저장데이터 유무 체크
- model.setValue("/root/send/factcntlist", datagrid2.getUpdateData());
- if(submit("TXLQP00201")){
- datagrid2.clearStatus();
- alert("저장 완료");
- }
- }else{
- alert("저장할 자료가 존재하지 않습니다!");
- }
- }
- }
-
- //저장 데이터 확인
- function checkGridUpdate(grid){
- var uData = grid.getUpdateDataXml("update");
- if (uData==""){
- return false;
- }else{
- return true;
- }
- }
-
- function fSignPross(){
- /*if(model.getXPathValue('count(/root/main/rsltlist/row[chk="true"])') == 0){
- alert("인증 대상 항목을 선택하세요");
- return;
- }*/
- if(messageBox("", "Q004")==6){
- if(model.getXPathValue('count(/root/main/rsltlist/row[chk="true"])') == 0){
- messageBox("인증 대상 항목을", "C002");
- return;
- }
- }else{
- return;
- }
- if(Sign.signprocess()){
- /*var signno = 0;
- var recsaveflag = "N";
-
- model.makeValue("/root/send/signno" , signno); //서명번호
- model.makeValue("/root/send/cretno" , "1");
-
- //model.makeNode("/root/send/signdata");
- model.makeValue("/root/send/signdata/pid" , "QC"); //등록번호
- model.makeValue("/root/send/signdata/orddd" , getCurrentDate()); //입원, 응급 : 입원일자, 외래 : 진료일자
- model.makeValue("/root/send/signdata/signno" , signno);
-
- model.makeValue("/root/send/signdata/cretno" , "1"); //생성번호
- model.makeValue("/root/send/signdata/recdd" , getCurrentDate()); //실제기록이 이루어진 기록일자
- model.makeValue("/root/send/signdata/rectm" , getCurrentTime()); //실제기록이 이루어진 기록시간
- model.makeValue("/root/send/signdata/recsaveflag" , recsaveflag); //전자서명 인적정보 변경여부(기록일시 변경되는 경우 : Y, 그외 : N)
- model.makeValue("/root/send/signdata/signflag" , "02"); //서명자료구분(01 : 진료, 02 : 간호)
- model.makeValue("/root/send/signdata/signgenrflag" , "I"); //입원, 외래구분
- model.makeValue("/root/send/signdata/orddeptcd" , ""); //진료과
- model.makeValue("/root/send/signdata/orddrid" , ""); //진료의ID
- model.makeValue("/root/send/signdata/formcd" , "-"); //서식코드
-
- model.makeValue("/root/send/signdata/signbfcnts" , Sign.signedInfos[1]); // 인증할 데이터 정보(미기록 노드 제거된 정보), 미기록 노드 제거전 원본 노드 정보 : Sign.signedInfos[3]
- model.makeValue("/root/send/signdata/signaftcnts" , Sign.signedInfos[2]); //공인인증 처리후 데이터
- }else{
- alert("인증실패");
- return false;
- }
- if(submit("TXLRR00401")){
- // 인증 끝
-
- //인증됐으면 인증번호 ★ ★ ★
- model.setValue("/root/send/signno", model.getValue("/root/signdata/signno"));
- alert("인증완료!!");
- //update*/
- var vEqmtcd = "";
- var vTestcd = "";
- var vLevlcd = "";
- var vMatrcd = "";
-
- for(i = 1; i <= datagrid1.rows; i++){
- if(model.getValue("/root/main/rsltlist/row[" + i +"]/chk") == "true"){
- vEqmtcd += model.getValue("/root/main/rsltlist/row[" + i +"]/eqmtcd") + "▦";
- vTestcd += model.getValue("/root/main/rsltlist/row[" + i +"]/testcd") + "▦";
- vLevlcd += model.getValue("/root/main/rsltlist/row[" + i +"]/levlcd") + "▦";
- vMatrcd += model.getValue("/root/main/rsltlist/row[" + i +"]/matrcd") + "▦";
- }
- }
- model.makeValue("/root/send/signeqmtlist", vEqmtcd);
- model.makeValue("/root/send/signtestlist", vTestcd);
- model.makeValue("/root/send/signlevllist", vLevlcd);
- model.makeValue("/root/send/signmatrlist", vMatrcd);
-
- if(submit("TXLQP00202")){
- alert("인증완료!!");
- }
- }else{
- alert("인증실패");
- }
- }
-
- function fMake_SignData(){
- model.removeNodeset("/root/hidden/signdata"); //인증저장 정보 초기화
- model.makeNode("/root/hidden/signdata/signlist");
- //model.makeNode("/root/hidden/signdata/dnortestlist");
-
- copyNodeListType("/root/hidden/signdata/signlist" , "/root/main/rsltlist/row[chk = 'true']");
- //copyNodeListType("/root/hidden/signdata/dnortestlist" , "/root/main/dnor/dnortestlist"); //공여자검사결과
-
- Sign.addnode("/root/hidden/signdata"); //인증저장 정보 공여자정보+공여자검사결과
- }
- ]]>
- </script>
- </xhtml:head>
- <xhtml:body style="margin-left:8; margin-top:0; margin-right:8; margin-bottom:0; ">
- <group id="group1" style="left:0px; top:0px; width:1195px; height:13px; ">
- <caption id="caption6" class="tit_1" style="left:0px; top:0px; width:170px; height:13px; ">
- <![CDATA[혈당기 QC 그래프조회]]>
- <script type="javascript" ev:event="ondblclick">
- <![CDATA[
- if(datagrid2.visible == true){
- datagrid2.visible = false;
- }else{
- datagrid2.visible = true;
- }
- ]]>
- </script>
- </caption>
- </group>
- <group id="group5" scroll="auto" style="left:0px; top:13px; width:1195px; height:27px; ">
- <line id="line32" class="line_6" style="x1:0px; y1:25px; x2:1194px; y2:25px; "/>
- <button id="button10" class="btn4_letter3" style="left:1127px; top:3px; width:68px; height:22px; ">
- <caption>초기화</caption>
- <script type="javascript" ev:event="DOMActivate">
- <![CDATA[
- window.reload();
- ]]>
- </script>
- </button>
- <button id="btn_save" class="btn4_letter2" visibility="hidden" style="left:1069px; top:3px; width:56px; height:22px; ">
- <caption>저장</caption>
- <script type="javascript" ev:event="onclick">
- <![CDATA[
- fSetSave();
- ]]>
- </script>
- </button>
- <button id="btn_sighsave" class="btn4_letter4" visibility="hidden" style="left:987px; top:3px; width:80px; height:22px; ">
- <caption>인증저장</caption>
- <script type="javascript" ev:event="onclick">
- <![CDATA[
- fSignPross();
- ]]>
- </script>
- </button>
- <button id="button2" class="btn6_letter2" visibility="visible" style="left:0px; top:3px; width:56px; height:22px; ">
- <caption>출력</caption>
- <script type="javascript" ev:event="DOMActivate">
- <![CDATA[
- if(model.getXPathValue('count(/root/main/rsltlist/row[chk="true"])') == 0){
- alert("출력 대상 항목을 선택하세요");
- return;
- }
-
- var Obj_Chart;
- if(model.getValue("/root/hidden/gref/grapegbn") == 1){
- Obj_Chart = object1;
- }else{
- Obj_Chart = object2;
- }
- Obj_Chart.Tools.Clear();
-
- //결과 정보
- var vTestcd, vLevlcd;
- var vCnt = 0;
- for(i = 1; i <= datagrid1.rows; i++){
- if(model.getValue("/root/main/rsltlist/row[" + i +"]/chk") == "true"){
- vLevlcd = model.getValue("/root/main/rsltlist/row[" + i +"]/levlcd");
- vEqmtcd = model.getValue("/root/main/rsltlist/row[" + i +"]/eqmtcd");
- vLotno = model.getValue("/root/main/rsltlist/row[" + i +"]/lotno");
- vCnt += 1;
-
- if(model.getXPathValue('count(/root/main/rsltlist/row[chk="true" and eqmtcd != "' + vEqmtcd + '"])') > 0){
- messageBox("출력물은 장비별로 가능합니다!!", "I");
- return;
- }
-
- if(vCnt == 1){
- copyNodesetType("/root/hidden/gref/factcnts", "/root/hidden/temp/factcnts[lotno ='"+vLotno+"' and eqmtcd ='"+vEqmtcd+"' and levlcd = '"+vLevlcd+"']", "replace");
- }else{
- copyNodesetType("/root/hidden/gref/factcnts", "/root/hidden/temp/factcnts[lotno ='"+vLotno+"' and eqmtcd ='"+vEqmtcd+"' and levlcd = '"+vLevlcd+"']", "after");
- }
- //alert(model.getXPathValue('count(/root/hidden/gref/factcnts)'));
-
- }
- }
-
- Obj_Chart.Export.CopyToClipboardBitmap(); //클립보드로 이미지 넘겨
- model.setValue("/root/hidden/gref/img", window.clipBoardData); //이미지 넘김
- //검사 정보
- copyNodesetType("/root/hidden/gref/testinfo", "/root/main/rsltlist/row[chk ='true']", "replace");
-
- //return;
- exeReportPreview("RPLQJ00101", "XMLSTR");
- model.setValue("/root/hidden/gref/img", ""); //이미지 초기화
- model.resetInstanceNode("/root/hidden/gref/factcnts");
- model.resetInstanceNode("/root/hidden/gref/testinfo");
- ]]>
- </script>
- </button>
- </group>
- <group id="group2" scroll="auto" style="left:0px; top:40px; width:1195px; height:744px; ">
- <group id="group_info" visibility="hidden" scroll="auto" style="left:0px; top:0px; width:1195px; height:150px; ">
- <caption id="caption13" class="tit_2" style="left:5px; top:77px; width:125px; height:13px; ">QC물질 상세 정보</caption>
- <line id="line6" class="line_1" style="x1:0px; y1:92px; x2:1194px; y2:92px; "/>
- <caption id="caption23" class="cell_1" style="left:0px; top:97px; width:100px; height:23px; ">QC물질</caption>
- <caption id="caption24" class="cell_1" style="left:261px; top:97px; width:100px; height:23px; ">레벨</caption>
- <caption id="caption25" class="cell_1" style="left:522px; top:97px; width:100px; height:23px; ">LOT NO</caption>
- <caption id="caption26" class="cell_1" style="left:0px; top:121px; width:100px; height:23px; ">제조회사</caption>
- <caption id="caption27" class="cell_1" style="left:261px; top:121px; width:100px; height:23px; ">적용률</caption>
- <caption id="caption28" class="cell_1" style="left:522px; top:121px; width:100px; height:23px; ">룰</caption>
- <caption id="caption29" class="cell_1" style="left:783px; top:97px; width:100px; height:24px; ">조치사항 코드</caption>
- <caption id="caption1" class="cell_1" style="left:783px; top:122px; width:100px; height:24px; ">조치사항</caption>
- <textarea id="textarea1" ref="/root/main/matrinfo/measfactcnts" style="left:886px; top:123px; width:308px; height:22px; ">
- <script type="javascript" ev:event="xforms-value-changed">
- <![CDATA[
- fCntsSet(datagrid1.row, datagrid1.col, 2);
- ]]>
- </script>
- </textarea>
- <select1 id="combo13" ref="/root/main/matrinfo/measfactcd" class="combo_search" appearance="minimal" style="left:886px; top:100px; width:308px; height:14px; ">
- <choices>
- <itemset nodeset="/root/init/LB0703">
- <label ref="nm"/>
- <value ref="cd"/>
- </itemset>
- </choices>
- <script type="javascript" ev:event="xforms-value-changed">
- <![CDATA[
- fCntsSet(datagrid1.row, datagrid1.col, 1);
- ]]>
- </script>
- </select1>
- <line id="line5" class="line_2" style="x1:0px; y1:149px; x2:780; y2:149px; "/>
- <output id="output1" ref="/root/main/matrinfo/matrnm" class="output_fix" style="left:103px; top:98px; width:155px; height:19px; "/>
- <output id="output2" ref="/root/main/matrinfo/levlnm" class="output_fix" style="left:364px; top:98px; width:155px; height:19px; "/>
- <output id="output3" ref="/root/main/matrinfo/lotno" class="output_fix" style="left:625px; top:100px; width:155px; height:19px; "/>
- <output id="output4" ref="/root/main/matrinfo/prodcmpy" class="output_fix" style="left:103px; top:122px; width:155px; height:19px; "/>
- <output id="output5" ref="/root/main/matrinfo/wgmrscop" class="output_fix" style="left:364px; top:122px; width:155px; height:19px; "/>
- <output id="output6" ref="/root/main/matrinfo/wgmrstat" class="output_fix" style="left:625px; top:122px; width:155px; height:19px; "/>
- <line id="line1" class="line_3" style="x1:0px; y1:148px; x2:1194px; y2:148px; "/>
- </group>
- <caption id="caption30" class="tit_2" style="left:5px; top:78px; width:127px; height:13px; ">QC물질 검사정보</caption>
- <line id="line7" class="line_1" style="x1:0px; y1:93px; x2:1194px; y2:93px; "/>
- <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; ">
- <script type="javascript" ev:event="onclick">
- <![CDATA[
- return; //이벤트 태우지말기 ㅋㅋ
- if(model.getValue("/root/hidden/ref/releqmtyn") == "Y"){ //연관장비 조회시 물질 상세정보 조회 false
- return;
- }else{
- if (isDataCell()){
- fGetMatrInfo();
- }
- }
- ]]>
- </script>
- </datagrid>
- <caption id="caption31" class="tit_2" style="left:0px; top:339px; width:125px; height:13px; ">QC물질별 그래프</caption>
- <line id="line8" class="line_1" style="x1:0px; y1:354px; x2:1194px; y2:354px; "/>
- <line id="line9" class="line_3" style="x1:0px; y1:735px; x2:1194px; y2:735px; "/>
- <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; ">
- <choices>
- <item>
- <label>정규화그래프</label>
- <value>1</value>
- </item>
- <item>
- <label>실측값 그래프 Mean/SD</label>
- <value>3</value>
- </item>
- <item>
- <label>실측값그래프 Low/High</label>
- <value>2</value>
- </item>
- </choices>
- <script type="javascript" ev:event="xforms-value-changed">
- <![CDATA[
-
- if(radio1.value == 1){
- model.toggle("case1");
- clearTChart(object1); //챠트 초기화
- }else{
- model.toggle("case2");
- clearTChart(object2); //챠트 초기화
- }
- ]]>
- </script>
- </select1>
- <button id="btn_grp" class="btn2_letter3" style="left:541px; top:334px; width:53px; height:19px; ">
- <caption>그래프</caption>
- <script type="javascript" ev:event="DOMActivate">
- <![CDATA[
- var count = model.getXPathValue('count(/root/main/rsltlist/row[chk="true"])'); //선택된 항목의 갯수
- if(count == 0){
- alert("그래프를 작성할 항목을 선택하세요");
- return;
- }else{
- var grapflag = model.getValue("/root/hidden/gref/grapegbn");
- var Obj_Chart;
- if ( grapflag == 1 ){
- Obj_Chart = object1;
- }else{
- Obj_Chart = object2;
- }
- Obj_Chart.Tools.Clear();
- Obj_Chart.Axis.RemoveAllCustom();
- Obj_Chart.Axis.Left.StartPosition = 0;
- clearTChart(object1); //챠트 초기화
- clearTChart(object2); //챠트 초기화
-
- if(grapflag == 1){
- fInitChartRegl(grapflag);
- }else{
- var grapflag = model.getValue("/root/hidden/gref/grapegbn");
- fInitChart(grapflag);
- }
- }
- ]]>
- </script>
- </button>
- <button id="btn_grprnt" class="btn2_letter2" visibility="hidden" style="left:597px; top:334px; width:42px; height:19px; ">
- <caption>출력</caption>
- <script type="javascript" ev:event="DOMActivate">
- <![CDATA[
- var Obj_Chart;
- if(model.getValue("/root/hidden/gref/grapegbn") == 1){
- Obj_Chart = object1;
- }else{
- Obj_Chart = object2;
- }
- Obj_Chart.Tools.Clear();
- Obj_Chart.Printer.MarginLeft = 5 //여백
- Obj_Chart.Printer.MarginBottom = 25
- Obj_Chart.Printer.MarginRight = 5
- Obj_Chart.Printer.MarginTop = 25
- Obj_Chart.Printer.ShowPreview(); //미리보기
- ]]>
- </script>
- </button>
- <group id="group4" style="left:0px; top:10px; width:1195px; height:61px; ">
- <shape id="roundrect1" class="roundrect_search" appearance="roundrect" style="left:0px; top:0px; width:1195px; height:61px; "/>
- <input id="input7" ref="/root/hidden/ref/acpttodd" class="input_search" inputtype="date" style="left:215px; top:8px; width:90px; height:19px; "/>
- <caption id="caption20" class="search_name" style="left:390px; top:9px; width:94px; height:17px; ">검사실 :</caption>
- <caption id="caption21" class="search_name" style="left:745px; top:9px; width:94px; height:17px; ">장비 :</caption>
- <caption id="caption22" class="search_name" visibility="visible" style="left:745px; top:35px; width:94px; height:17px; ">LOT NO :</caption>
- <select1 id="combo2" ref="/root/hidden/ref/testroom" class="combo_search" appearance="minimal" style="left:470px; top:8px; width:200px; height:19px; ">
- <choices>
- <itemset nodeset="/root/init/LB0705">
- <label ref="nm"/>
- <value ref="cd"/>
- </itemset>
- </choices>
- <script type="javascript" ev:event="xforms-select">
- <![CDATA[
- fSetEqmtCd(); //검사실에 대한 장비 조회
- ]]>
- </script>
- </select1>
- <select1 id="combo3" ref="/root/hidden/ref/eqmtcd" class="combo_search" appearance="minimal" style="left:835px; top:8px; width:200px; height:19px; ">
- <choices>
- <itemset nodeset="/root/init/LB0706">
- <label ref="nm"/>
- <value ref="cd"/>
- </itemset>
- </choices>
- </select1>
- <caption id="caption14" class="search_name" style="left:390px; top:35px; width:75px; height:17px; ">레 벨 :</caption>
- <caption id="caption15" class="search_no_b" style="left:199px; top:9px; width:15px; height:17px; vertical-align:middle; ">~</caption>
- <select1 id="combo6" ref="/root/init/num" class="combo_search" visibility="hidden" appearance="minimal" style="left:1110px; top:35px; width:70px; height:19px; ">
- <choices>
- <label ref="nm"/>
- <value ref="cd"/>
- </choices>
- </select1>
- <caption id="caption17" class="search_name" style="left:15px; top:9px; width:94px; height:17px; ">접수일자 :</caption>
- <input id="input6" ref="/root/hidden/ref/acptfromdd" class="input_search" inputtype="date" style="left:105px; top:8px; width:90px; height:19px; "/>
- <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; ">
- <choices>
- <item>
- <label>-전체-</label>
- <value>00</value>
- </item>
- <item>
- <label>Low</label>
- <value>04</value>
- </item>
- <item>
- <label>High</label>
- <value>05</value>
- </item>
- </choices>
- </select1>
- <button id="button1" class="btn1_letter2" style="left:1119px; top:34px; width:56px; height:22px; ">
- <caption>조회</caption>
- <script type="javascript" ev:event="onclick">
- <![CDATA[
- clearTChart(object1); //챠트 초기화
- fGetGrapeRsltList();
- ]]>
- </script>
- </button>
- <line id="line2" class="line_4" style="x1:1109px; y1:35px; x2:1109px; y2:57px; "/>
- <select1 id="combo1" ref="/root/hidden/ref/lotno" class="combo_search" appearance="minimal" style="left:835px; top:33px; width:200px; height:19px; ">
- <choices>
- <itemset nodeset="/root/init/LB0707">
- <label ref="nm"/>
- <value ref="cd"/>
- </itemset>
- </choices>
- </select1>
- <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; ">
- <choices>
- <item>
- <label>연관장비조회</label>
- <value>Y</value>
- </item>
- </choices>
- <script type="javascript" ev:event="onclick">
- <![CDATA[
- if(model.getValue("/root/hidden/ref/releqmtyn") == "Y"){
- btn_save.disabled = true;
- }else{
- btn_save.disabled = false;
- }
- clearTChart(object1); //차트 초기화
- fSetGrdInit(); //그리드 초기화
- model.refresh();
- ]]>
- </script>
- </select>
- </group>
- <switch id="switch1" style="left:0px; top:360px; width:1190px; height:370px; ">
- <case id="case1" selected="true">
- <object id="object1" clsid="{fab9b41c-87d6-474d-ab7e-f07d78f2422e}" style="left:0px; top:5px; width:1184px; height:360px; ">
- <![CDATA[-->]]>
- <script type="vbscript" ev:event="OnClickSeries(SeriesIndex, ValueIndex,Button, Shift,X ,Y)">
- <![CDATA[
- 'msgbox SeriesIndex
- 'msgbox ValueIndex
- 'msgbox Button
- 'msgbox Shift
- 'msgbox X
- 'msgbox Y
- object1.Tools.Clear()
- object1.Tools.Add(10)
- object1.Tools.Items(0).asAnnotation.Text = object1.Series(SeriesIndex).PointLabel(ValueIndex)
- ]]>
- </script>
- <script type="javascript" ev:event="OnClickSeries(SeriesIndex,ValueIndex, Button, Shift, X, Y)">
- <![CDATA[
- alert(SeriesIndex);
- ]]>
- </script>
- </object>
- </case>
- <case id="case2">
- <object id="object2" clsid="{fab9b41c-87d6-474d-ab7e-f07d78f2422e}" style="left:0px; top:5px; width:1184px; height:360px; ">
- <script type="vbscript" ev:event="OnClickSeries(SeriesIndex, ValueIndex,Button, Shift,X ,Y)">
- <![CDATA[
- object2.Tools.Clear()
- object2.Tools.Add(10)
- object2.Tools.Items(0).asAnnotation.Text = object2.Series(SeriesIndex).PointLabel(ValueIndex)
- ]]>
- </script>
- </object>
- </case>
- <case id="case3"/>
- </switch>
- <button id="button3" class="btn4_letter3" visibility="hidden" style="left:1110px; top:145px; width:68px; height:22px; ">
- <caption>테스트</caption>
- <script type="javascript" ev:event="onclick">
- <![CDATA[
- alert(model.getValue("/root/main/matrinfo/measfactcnts/@test"));
- alert(model.getValue("/root/main/matrinfo/measfactcnts/@test2"));
- ]]>
- </script>
- </button>
- <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; ">
- <col ref="finddata"/>
- <col ref="bcno"/>
- <col ref="matrcd"/>
- <col ref="testcd"/>
- <col ref="levlcd"/>
- <col ref="measfactcd"/>
- <col ref="measfactcnts"/>
- </datagrid>
- <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; ">
- <col ref="matrkindcd"/>
- <col ref="toddlist"/>
- <col ref="fromddlist"/>
- </datagrid>
- <img id="img1" ref="/root/hidden/gref/img" style="left:350px; top:75px; width:145px; height:110px; background-stretch:stretch; "/>
- </group>
- </xhtml:body>
- </xhtml:html>
|