SMLQP00200_QC그래프조회.xfdl 94 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <FDL version="1.5">
  3. <TypeDefinition url="..\..\..\default_typedef.xml"/>
  4. <Form id="SMLQP00200" position="absolute 0 0 1226 817" titletext="New Form" onload="SMLQP00200_onload">
  5. <Layouts>
  6. <Layout>
  7. <Static id="Static03" position="absolute -1 125 1230 176" anchor="default"/>
  8. <Static id="caption6" text="QC그래프조회" position="absolute -1 0 117 25" onkeydown="caption6_onkeydown" positiontype="position" class="tit_1" anchor="default"/>
  9. <Button id="button2" taborder="1" text="출력" class="btn6" position="absolute 124 2 180 22" style="align:left middle;" anchor="default" visible="true" positiontype="position" onclick="button2_onclick"/>
  10. <CheckBox id="checkbox2" taborder="2" text="상세출력" truevalue="Y" visible="false" position="absolute 562 2 670 22" style="align:left middle;" anchor="default" positiontype="position"/>
  11. <Button id="button8" taborder="3" text="확인내역조회" class="btn3" position="absolute 735 3 839 23" style="align:left middle;" anchor="default" positiontype="position" onclick="button8_onclick"/>
  12. <Button id="button5" taborder="4" class="btn4" position="absolute 841 3 921 23" style="padding:0 18 0 0;align:right middle;" anchor="default" positiontype="position" onclick="button5_onclick" text="UM확인"/>
  13. <Button id="button6" taborder="5" text="팀장확인" class="btn4" position="absolute 922 3 1002 23" style="align:right middle;" anchor="default" positiontype="position" onclick="button6_onclick"/>
  14. <Button id="button7" taborder="6" text="전문의확인" class="btn4" position="absolute 1003 3 1095 23" anchor="default" positiontype="position" onclick="button7_onclick"/>
  15. <Button id="btn_save" taborder="7" text="저장" class="btn4" position="absolute 1097 3 1153 23" anchor="default" positiontype="position" onclick="btn_save_onclick"/>
  16. <Button id="button10" taborder="8" text="초기화" class="btn4" position="absolute 1155 3 1223 23" anchor="default" positiontype="position" onclick="button10_onclick"/>
  17. <Div id="Div_search" anchor="default" taborder="22" class="div_SA" position="absolute 0 28 1223 95">
  18. <Layouts>
  19. <Layout>
  20. <Static id="caption17" text="접수일자" class="search_name" position="absolute 8 10 82 27" style="align:left middle;" anchor="default" positiontype="position"/>
  21. <Static id="caption20" text="검사실" class="search_name" position="absolute 379 10 473 27" style="align:left middle;" anchor="default" positiontype="position"/>
  22. <Combo id="combo2" taborder="3" class="combo_search" position="absolute 440 9 642 29" style="align:left middle;" anchor="default" innerdataset="@ds_init_lb0111" codecolumn="cd" datacolumn="nm" onitemchanged="Div_search_combo2_onitemchanged" positiontype="position"/>
  23. <Static id="caption19" text="검사항목" class="search_name" position="absolute 8 35 102 55" style="align:left middle;" anchor="default" positiontype="position"/>
  24. <Edit id="input8" taborder="4" readonly="true" position="absolute 82 35 332 55" style="align:left middle;" anchor="default" positiontype="position"/>
  25. <Static id="caption14" text="레벨" class="search_name" position="absolute 379 35 454 55" style="align:left middle;" anchor="default" positiontype="position"/>
  26. <Button id="btn_testListSch" taborder="5" class="icon_search" position="absolute 335 35 355 55" style="align:left middle;" anchor="default" text="" onclick="Div_search_btn_testListSch_onclick" positiontype="position"/>
  27. <Edit id="ipt_levl" taborder="6" readonly="true" position="absolute 440 35 619 55" style="align:left middle;" anchor="default" positiontype="position"/>
  28. <Button id="button4" taborder="7" class="icon_search" position="absolute 622 35 642 55" style="align:left middle;" anchor="default" text="" visible="true" onclick="Div_search_button4_onclick" positiontype="position"/>
  29. <Static id="caption21" text="장비" class="search_name" position="absolute 666 10 760 27" style="align:left middle;" anchor="default" positiontype="position"/>
  30. <Static id="caption22" text="LOT NO" class="search_name" visible="false" position="absolute 666 36 760 53" style="align:left middle;" anchor="default" positiontype="position"/>
  31. <Combo id="combo3" taborder="8" class="combo_search" position="absolute 740 9 940 29" style="align:left middle;" anchor="default" innerdataset="@ds_init_lb0701" codecolumn="cd" datacolumn="nm" onitemchanged="Div_search_combo3_onitemchanged" positiontype="position"/>
  32. <Edit id="input10" taborder="10" class="input_search" visible="false" position="absolute 740 35 990 55" style="align:left middle;" anchor="default" imemode="hangul" positiontype="position"/>
  33. <CheckBox id="checkbox1" taborder="11" text="연관장비조회" truevalue="Y" onclick="checkbox1_onclick" visible="false" position="absolute 943 9 1042 29" style="align:left middle;" anchor="default" positiontype="position"/>
  34. <Button id="button1" taborder="12" text="조회" class="btn1" position="absolute 1156 10 1212 30" style="align:left middle;" anchor="default" onclick="Div_search_button1_onclick" positiontype="position"/>
  35. <Static id="caption2" text="접수구분" class="search_name" position="absolute 666 35 740 55" style="align:left middle;" anchor="default" positiontype="position"/>
  36. <Combo id="combo1" taborder="9" class="combo_search" position="absolute 740 35 940 55" style="align:left middle;" anchor="default" innerdataset="@ds_init_lb0704" codecolumn="cd" datacolumn="nm" positiontype="position"/>
  37. <Combo id="combo6" taborder="14" class="combo_search" visible="false" position="absolute 943 35 1013 55" anchor="default" innerdataset="@ds_init_lb0111" codecolumn="cd" datacolumn="nm" positiontype="position"/>
  38. <Calendar id="ipt_hopesdd" taborder="15" class="input_search" position="absolute 82 10 182 30" mask="####-##-##" dateformat="yyyy-MM-dd" value="null" onchanged="lf_chkDate" anchor="default"/>
  39. <Static id="caption9" text="~" class="search_no_b" position="absolute 186 10 202 30" style="align:center middle;font:Dotum,9;" anchor="default"/>
  40. <Calendar id="ipt_hopeedd" taborder="16" class="input_search" position="absolute 203 10 303 30" mask="####-##-##" dateformat="yyyy-MM-dd" value="null" onchanged="lf_chkDate" anchor="default"/>
  41. </Layout>
  42. </Layouts>
  43. </Div>
  44. <Static id="caption13" text="QC물질 상세 정보" class="tit_2" position="absolute 1 106 136 126" positiontype="position" anchor="default"/>
  45. <Static id="caption23" text="QC물질" class="cell_1" position="absolute 0 126 100 150" positiontype="position" anchor="default"/>
  46. <Static id="caption26" text="제조회사" class="cell_1" position="absolute 0 151 100 175" positiontype="position" anchor="default"/>
  47. <Edit id="output1" taborder="23" readonly="true" position="absolute 103 128 282 148" positiontype="position" anchor="default"/>
  48. <Edit id="output4" taborder="24" readonly="true" position="absolute 103 153 282 173" positiontype="position" anchor="default"/>
  49. <Static id="caption24" text="레벨" class="cell_1" position="absolute 285 126 385 150" positiontype="position" anchor="default"/>
  50. <Static id="caption27" text="적용률" class="cell_1" position="absolute 285 151 385 175" positiontype="position" anchor="default"/>
  51. <Edit id="output2" taborder="26" readonly="true" position="absolute 388 128 559 148" positiontype="position" anchor="default"/>
  52. <Edit id="output5" taborder="27" readonly="true" position="absolute 388 153 559 173" positiontype="position" anchor="default"/>
  53. <Static id="caption25" text="LOT NO" class="cell_1" position="absolute 562 126 662 150" positiontype="position" anchor="default"/>
  54. <Static id="caption28" text="룰" class="cell_1" position="absolute 562 151 662 175" positiontype="position" anchor="default"/>
  55. <Edit id="output3" taborder="28" readonly="true" position="absolute 665 128 828 148" positiontype="position" anchor="default"/>
  56. <Edit id="output6" taborder="29" readonly="true" position="absolute 665 153 828 173" positiontype="position" anchor="default"/>
  57. <Static id="caption29" text="조치사항 코드" class="cell_1" position="absolute 831 126 931 150" positiontype="position" anchor="default"/>
  58. <Static id="caption1" text="조치사항" class="cell_1" position="absolute 831 151 931 175" positiontype="position" anchor="default"/>
  59. <Combo id="combo13" taborder="30" class="combo_search" position="absolute 934 128 1221 148" positiontype="position" innerdataset="@ds_init_lb0703" codecolumn="cd" datacolumn="nm" anchor="default" onitemchanged="combo13_onitemchanged"/>
  60. <TextArea id="textarea1" taborder="31" position="absolute 934 153 1221 173" imemode="hangul" positiontype="position" style="align:left middle;" ontextchanged="textarea1_ontextchanged" anchor="default" wordwrap="word"/>
  61. <Grid id="datagrid1" class="datagrid2" taborder="32" useinputpanel="false" position="absolute 1 206 1221 389" onclick="datagrid1_onclick" anchor="left top right" binddataset="ds_grid_grd_rsltlistRow" positiontype="position" oncellclick="datagrid1_oncellclick" selecttype="cell" autosizingtype="none" cellsizingtype="both">
  62. <Formats>
  63. <Format id="default">
  64. <Columns>
  65. <Column size="30" band="left"/>
  66. <Column size="0"/>
  67. </Columns>
  68. <Rows>
  69. <Row size="35" band="head"/>
  70. <Row size="20"/>
  71. </Rows>
  72. <Band id="head">
  73. <Cell/>
  74. <Cell col="1" displaytype="checkbox" edittype="checkbox"/>
  75. </Band>
  76. <Band id="body">
  77. <Cell celltype="head" expr="currow+1"/>
  78. <Cell col="1" displaytype="checkbox" edittype="checkbox" text="bind:chk"/>
  79. </Band>
  80. </Format>
  81. </Formats>
  82. </Grid>
  83. <Grid id="datagrid3" class="datagrid2" taborder="33" useinputpanel="false" visible="false" position="absolute 290 214 562 371" autofittype="col" binddataset="ds_grid_grd_toddlist" positiontype="position" anchor="default">
  84. <Formats>
  85. <Format id="default">
  86. <Columns>
  87. <Column size="50"/>
  88. <Column size="100"/>
  89. <Column size="100"/>
  90. </Columns>
  91. <Rows>
  92. <Row size="24" band="head"/>
  93. <Row size="24"/>
  94. </Rows>
  95. <Band id="head">
  96. <Cell text="matrkindcd"/>
  97. <Cell col="1" text=" toddlist"/>
  98. <Cell col="2" text="fromddlist"/>
  99. </Band>
  100. <Band id="body">
  101. <Cell text="bind:matrkindcd"/>
  102. <Cell col="1" text="bind:toddlist"/>
  103. <Cell col="2" text="bind:fromddlist"/>
  104. </Band>
  105. </Format>
  106. </Formats>
  107. </Grid>
  108. <Grid id="datagrid2" class="datagrid2" taborder="34" useinputpanel="false" visible="false" position="absolute 497 222 1191 379" autofittype="col" binddataset="ds_grid_grd_factcnts" positiontype="position" anchor="default">
  109. <Formats>
  110. <Format id="default">
  111. <Columns>
  112. <Column size="250"/>
  113. <Column size="80"/>
  114. <Column size="100"/>
  115. <Column size="80"/>
  116. <Column size="70"/>
  117. <Column size="80"/>
  118. <Column size="100"/>
  119. </Columns>
  120. <Rows>
  121. <Row size="24" band="head"/>
  122. <Row size="24"/>
  123. </Rows>
  124. <Band id="head">
  125. <Cell text="finddata"/>
  126. <Cell col="1" text="bcno"/>
  127. <Cell col="2" text="물질코드"/>
  128. <Cell col="3" text="검사코드"/>
  129. <Cell col="4" text="레벨코드"/>
  130. <Cell col="5" text="사유코드"/>
  131. <Cell col="6" text="사유"/>
  132. </Band>
  133. <Band id="body">
  134. <Cell text="bind:finddata"/>
  135. <Cell col="1" text="bind:bcno"/>
  136. <Cell col="2" text="bind:matrcd"/>
  137. <Cell col="3" text="bind:testcd"/>
  138. <Cell col="4" text="bind:levlcd"/>
  139. <Cell col="5" text="bind:measfactcd"/>
  140. <Cell col="6" text="bind:measfactcnts"/>
  141. </Band>
  142. </Format>
  143. </Formats>
  144. </Grid>
  145. <Button id="button3" taborder="35" text="테스트" onclick="button3_onclick" class="btn4" visible="false" position="absolute 1145 177 1213 197" anchor="default" positiontype="position"/>
  146. <Static id="caption30" text="QC물질 검사정보" class="tit_2" position="absolute 1 186 128 206" positiontype="position" anchor="default"/>
  147. <Static id="caption31" text="QC물질별 그래프" class="tit_2" position="absolute 1 401 126 417" style="align:left middle;" positiontype="position" anchor="default"/>
  148. <Radio id="radio1" taborder="36" columncount="3" rowcount="0" codecolumn="codecolumn" datacolumn="datacolumn" position="absolute 130 398 642 418" style="align:left middle;" visible="true" positiontype="position" onitemchanged="radio1_onitemchanged" anchor="default">
  149. <Dataset id="innerdataset">
  150. <ColumnInfo>
  151. <Column id="codecolumn" size="256"/>
  152. <Column id="datacolumn" size="256"/>
  153. </ColumnInfo>
  154. <Rows>
  155. <Row>
  156. <Col id="codecolumn">1</Col>
  157. <Col id="datacolumn">정규화그래프</Col>
  158. </Row>
  159. <Row>
  160. <Col id="codecolumn">3</Col>
  161. <Col id="datacolumn">실측값 그래프 Mean/SD</Col>
  162. </Row>
  163. <Row>
  164. <Col id="codecolumn">2</Col>
  165. <Col id="datacolumn">실측값그래프 Low/High</Col>
  166. </Row>
  167. </Rows>
  168. </Dataset>
  169. </Radio>
  170. <Button id="btn_grp" taborder="37" text="그래프" class="btn2" position="absolute 646 396 702 416" style="align:center middle;" anchor="default" positiontype="position" onclick="btn_grp_onclick"/>
  171. <Button id="btn_grprnt" taborder="38" text="출력" class="btn2" position="absolute 705 396 749 416" style="align:center middle;" anchor="default" positiontype="position" onclick="btn_grprnt_onclick"/>
  172. <ActiveX id="object1" position="absolute -1 419 1223 808" progid="{fab9b41c-87d6-474d-ab7e-f07d78f2422e}" useautobitmapcache="1" anchor="default" taborder="39" positiontype="position" OnClickSeries="object1_OnClickSeries"/>
  173. <ActiveX id="object2" position="absolute -1 419 1223 808" progid="{fab9b41c-87d6-474d-ab7e-f07d78f2422e}" useautobitmapcache="1" taborder="41" visible="false" anchor="all" OnClickSeries="object2_OnClickSeries"/>
  174. <ImageViewer id="img1" taborder="43" position="absolute 349 212 1167 370" visible="false" onclick="img1_onclick" anchor="default"/>
  175. <Shape id="line2" class="line_10" position="absolute 0 122 1222 128" anchor="default"/>
  176. <Shape id="line00" class="line_10" position="absolute 1 202 1221 208" anchor="left top right"/>
  177. <Button id="Button00" taborder="44" text="고정해제" position="absolute 154 179 220 200" onclick="Button00_onclick"/>
  178. <Button id="Button01" taborder="45" text="고정" onclick="Button01_onclick" position="absolute 154 179 220 200" visible="false"/>
  179. </Layout>
  180. </Layouts>
  181. <Objects>
  182. <Dataset id="ds_init_lb0111" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  183. <ColumnInfo>
  184. <Column id="cd" type="STRING" size="256"/>
  185. <Column id="nm" type="STRING" size="256"/>
  186. </ColumnInfo>
  187. </Dataset>
  188. <Dataset id="ds_init_lb0000" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  189. <ColumnInfo>
  190. <Column id="cd" type="STRING" size="256"/>
  191. <Column id="nm" type="STRING" size="256"/>
  192. </ColumnInfo>
  193. </Dataset>
  194. <Dataset id="ds_init_lb0701" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  195. <ColumnInfo>
  196. <Column id="cd" type="STRING" size="256"/>
  197. <Column id="nm" type="STRING" size="256"/>
  198. </ColumnInfo>
  199. </Dataset>
  200. <Dataset id="ds_init_lb0703" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  201. <ColumnInfo>
  202. <Column id="cd" type="STRING" size="256"/>
  203. <Column id="nm" type="STRING" size="256"/>
  204. </ColumnInfo>
  205. </Dataset>
  206. <Dataset id="ds_init_lb0501" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  207. <ColumnInfo>
  208. <Column id="cd" type="STRING" size="256"/>
  209. <Column id="nm" type="STRING" size="256"/>
  210. </ColumnInfo>
  211. </Dataset>
  212. <Dataset id="ds_init_lb0704" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  213. <ColumnInfo>
  214. <Column id="cd" type="STRING" size="256"/>
  215. <Column id="nm" type="STRING" size="256"/>
  216. </ColumnInfo>
  217. </Dataset>
  218. <Dataset id="ds_send_data" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  219. <ColumnInfo>
  220. <Column id="sflag" type="STRING" size="256"/>
  221. <Column id="deptflag" type="STRING" size="256"/>
  222. </ColumnInfo>
  223. </Dataset>
  224. <Dataset id="ds_get_data" firefirstcount="0" firenextcount="0" useclientlayout="true" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  225. <ColumnInfo>
  226. <Column id="testnm" type="STRING" size="256"/>
  227. <Column id="testnm2" type="STRING" size="256"/>
  228. <Column id="testcd" type="STRING" size="256"/>
  229. <Column id="testcd2" type="STRING" size="256"/>
  230. <Column id="levlnm" type="STRING" size="256"/>
  231. <Column id="levlcd" type="STRING" size="256"/>
  232. <Column id="levlcd2" type="STRING" size="256"/>
  233. </ColumnInfo>
  234. </Dataset>
  235. <Dataset id="ds_grid_grd_rsltlistHeader" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false"/>
  236. <Dataset id="ds_grid_grd_factcnts" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false"/>
  237. <Dataset id="ds_grid_page" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false"/>
  238. <Dataset id="ds_grid_grd_temp" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false"/>
  239. <Dataset id="ds_grid_grd_rsltlistRow" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false"/>
  240. <Dataset id="ds_grid_grd_matrinfo" firefirstcount="0" firenextcount="0" useclientlayout="true" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  241. <ColumnInfo>
  242. <Column id="matrnm" type="STRING" size="256"/>
  243. <Column id="levlnm" type="STRING" size="256"/>
  244. <Column id="lotno" type="STRING" size="256"/>
  245. <Column id="prodcmpy" type="STRING" size="256"/>
  246. <Column id="wgmrscop" type="STRING" size="256"/>
  247. <Column id="wgmrstat" type="STRING" size="256"/>
  248. <Column id="measfactcd" type="STRING" size="256"/>
  249. <Column id="measfactcnts" type="STRING" size="256"/>
  250. </ColumnInfo>
  251. <Rows>
  252. <Row/>
  253. </Rows>
  254. </Dataset>
  255. <Dataset id="ds_send_data_param" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  256. <ColumnInfo>
  257. <Column id="userflag" type="STRING" size="256"/>
  258. <Column id="cnfmtodd" type="STRING" size="256"/>
  259. <Column id="cnfmfromdd" type="STRING" size="256"/>
  260. <Column id="eqmtcd" type="STRING" size="256"/>
  261. <Column id="testcdlist" type="STRING" size="256"/>
  262. <Column id="testnmlist" type="STRING" size="256"/>
  263. <Column id="levlcdlist" type="STRING" size="256"/>
  264. <Column id="levlnmlist" type="STRING" size="256"/>
  265. <Column id="matrcdlist" type="STRING" size="256"/>
  266. <Column id="lotnolist" type="STRING" size="256"/>
  267. <Column id="viewtestnmlist" type="STRING" size="256"/>
  268. <Column id="viewlevlnmlist" type="STRING" size="256"/>
  269. </ColumnInfo>
  270. </Dataset>
  271. <Dataset id="ds_grid_grd_cnfmlist" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false"/>
  272. <Dataset id="ds_grid_grd_toddlist" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  273. <ColumnInfo>
  274. <Column id="toddlist" type="STRING" size="256" sumtext="종료질자"/>
  275. <Column id="fromddlist" type="STRING" size="256" sumtext="종료질자"/>
  276. <Column id="matrkindcd" type="STRING" size="256" sumtext="종류"/>
  277. </ColumnInfo>
  278. </Dataset>
  279. <Dataset id="ds_hidden_gref_testinfo" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  280. <ColumnInfo>
  281. <Column id="lotno" type="STRING" size="256"/>
  282. </ColumnInfo>
  283. </Dataset>
  284. <Dataset id="ds_hidden_gref_factcnts" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false"/>
  285. <Dataset id="ds_hidden_gref" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  286. <ColumnInfo>
  287. <Column id="grapegbn" type="STRING" size="256"/>
  288. <Column id="img" type="STRING" size="256"/>
  289. <Column id="factcnts" type="STRING" size="256"/>
  290. <Column id="testinfo" type="STRING" size="256"/>
  291. <Column id="yn" type="STRING" size="256"/>
  292. <Column id="cnfmlist" type="STRING" size="256"/>
  293. </ColumnInfo>
  294. <Rows>
  295. <Row>
  296. <Col id="grapegbn">1</Col>
  297. </Row>
  298. </Rows>
  299. </Dataset>
  300. <Dataset id="ds_get_data2" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  301. <ColumnInfo>
  302. <Column id="levlcd" type="STRING" size="256"/>
  303. </ColumnInfo>
  304. <Rows>
  305. <Row/>
  306. </Rows>
  307. </Dataset>
  308. <Dataset id="ds_send2" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  309. <ColumnInfo>
  310. <Column id="eqmtcd" type="STRING" size="256"/>
  311. <Column id="testcdlist" type="STRING" size="256"/>
  312. <Column id="levlcdlist" type="STRING" size="256"/>
  313. <Column id="fromdd" type="STRING" size="256"/>
  314. <Column id="todd" type="STRING" size="256"/>
  315. <Column id="refflag" type="STRING" size="256"/>
  316. </ColumnInfo>
  317. <Rows>
  318. <Row>
  319. <Col id="eqmtcd"/>
  320. <Col id="testcdlist"/>
  321. <Col id="levlcdlist"/>
  322. <Col id="fromdd"/>
  323. <Col id="todd"/>
  324. <Col id="refflag">1</Col>
  325. </Row>
  326. </Rows>
  327. </Dataset>
  328. </Objects>
  329. <Bind>
  330. <BindItem id="item0" compid="output4" propid="value" datasetid="ds_grid_grd_matrinfo" columnid="prodcmpy"/>
  331. <BindItem id="item1" compid="output1" propid="value" datasetid="ds_grid_grd_matrinfo" columnid="matrnm"/>
  332. <BindItem id="item2" compid="output2" propid="value" datasetid="ds_grid_grd_matrinfo" columnid="levlnm"/>
  333. <BindItem id="item3" compid="output3" propid="value" datasetid="ds_grid_grd_matrinfo" columnid="lotno"/>
  334. <BindItem id="item4" compid="combo13" propid="value" datasetid="ds_grid_grd_matrinfo" columnid="measfactcd"/>
  335. <BindItem id="item5" compid="textarea1" propid="value" datasetid="ds_grid_grd_matrinfo" columnid="measfactcnts"/>
  336. <BindItem id="item6" compid="output6" propid="value" datasetid="ds_grid_grd_matrinfo" columnid="wgmrstat"/>
  337. <BindItem id="item7" compid="output5" propid="value" datasetid="ds_grid_grd_matrinfo" columnid="wgmrscop"/>
  338. <BindItem id="item8" compid="radio1" propid="value" datasetid="ds_hidden_gref" columnid="grapegbn"/>
  339. <BindItem id="item9" compid="checkbox2" propid="value" datasetid="ds_hidden_gref" columnid="yn"/>
  340. </Bind>
  341. <Script type="xscript4.0"><![CDATA[/***************************************************************************************
  342. * System Name :
  343. * Job Name :
  344. * Creator :
  345. * Make Date : 2015-05-01
  346. * Description :
  347. *---------------------------------------------------------------------------------------
  348. * Modify Date Modifier Modify Description
  349. *---------------------------------------------------------------------------------------
  350. * 2015-05-01 Live Converter TF->XP
  351. *
  352. *---------------------------------------------------------------------------------------
  353. ****************************************************************************************/
  354. include "com_commonxp::comm_main.xjs";
  355. var vCol = 16;
  356. function lf_initDataSet()
  357. {
  358. //0000:사용자부서코드, 0111:시행부서계 0701: 장비코드, 0703:조치사항코드
  359. var sInDsName = dsf_createDsRow("ds_temp_search", [{col: "codeflag", val: "0000|0111|0701|0703|"}]);
  360. tranf_submit({
  361. id: "TRLZZ00101"
  362. , service: "diagtestapplib.DiagTestBaseInfoMngt"
  363. , method: "reqGetInitCodeInfo"
  364. , inds : "cond="+sInDsName
  365. , outds: "ds_init_lb0000=0000 ds_init_lb0111=0111 ds_init_lb0701=0701 ds_init_lb0703=0703"
  366. , async: false
  367. });
  368. var sInDsName2 = dsf_createDsRow("ds_temp_search2"
  369. , [{col: "codeflag", val: "0501|0704|"} //사용자 부서별로 레벨코드를 조회하기 위해 사용자부서 코드를 가져온 다음 다시 레벨코드 조회
  370. , {col: "basecdid", val: ds_init_lb0000.getColumn(0,"nm")}]);
  371. tranf_submit({
  372. id: "TRLZZ00101"
  373. , service: "diagtestapplib.DiagTestBaseInfoMngt"
  374. , method: "reqGetInitCodeInfo"
  375. , inds : "cond="+sInDsName2
  376. , outds: "ds_init_lb0501=0501 ds_init_lb0704=0704"
  377. , async: false
  378. });
  379. }
  380. // 초기화
  381. function lf_setinit()
  382. {
  383. Div_search.ipt_hopesdd.value = utlf_addDate(utlf_getCurrentDate(),-30);
  384. Div_search.ipt_hopeedd.value = utlf_getCurrentDate();
  385. // Div_search.ipt_hopesdd.value = "20170501";
  386. // Div_search.ipt_hopeedd.value = "20170510";
  387. Div_search.combo2.index = "0";
  388. Div_search.combo3.index = "0";
  389. Div_search.input8.value = "";
  390. Div_search.ipt_levl.value = "";
  391. Div_search.combo1.index = "0";
  392. radio1.value = "1";
  393. ds_grid_grd_rsltlistRow.clearData();
  394. ds_grid_grd_rsltlistHeader.clearData();
  395. ds_grid_grd_factcnts.clearData();
  396. ds_grid_grd_matrinfo.clearData();
  397. ds_grid_grd_matrinfo.addRow();
  398. ds_grid_grd_cnfmlist.clearData();
  399. object1.visible = true;
  400. object2.visible = false;
  401. inff_clearTChart(object1);
  402. inff_clearTChart(object2);
  403. ds_get_data.clearData();
  404. ds_get_data.addRow();
  405. lf_setGrdInit();
  406. // Div_search.ipt_hopesdd.value = "20171031";
  407. // Div_search.ipt_hopeedd.value = "20171130";
  408. // Div_search.combo2.value = "00";
  409. // Div_search.combo3.value = "C06";
  410. // Div_search.input8.value = "ASO (Anti Streptokinae-O), quan.";
  411. // ds_get_data.setColumn(0,"testnm", "ASO (Anti Streptokinae-O), quan.")
  412. // ds_get_data2.setColumn(0,"levlcd","1▦1.▦10▦11▦12▦13▦14▦15▦16▦17▦18▦19▦2▦2.▦20▦21▦22▦23▦24▦25▦26▦27▦28▦29▦3▦3.▦30▦31▦32▦33▦34▦35▦36▦37▦38▦39▦4▦4.▦40▦41▦42▦43▦44▦45▦46▦47▦48▦49▦5▦50▦51▦52▦53▦54▦55▦56▦57▦58▦59▦6▦60▦61▦62▦63▦64▦65▦66▦67▦68▦7▦70▦71▦72▦73▦75▦76▦77▦78▦79▦8▦80▦81▦82▦83▦84▦85▦86▦87▦88▦89▦9▦90▦91▦92▦93▦94▦95▦96▦97▦98▦99");
  413. // Div_search.ipt_levl.value = "1▦1.▦10▦11▦12▦13▦14▦15▦16▦17▦18▦19▦2▦2.▦20▦21▦22▦23▦24▦25▦26▦27▦28▦29▦3▦3.▦30▦31▦32▦33▦34▦35▦36▦37▦38▦39▦4▦4.▦40▦41▦42▦43▦44▦45▦46▦47▦48▦49▦5▦50▦51▦52▦53▦54▦55▦56▦57▦58▦59▦6▦60▦61▦62▦63▦64▦65▦66▦67▦68▦7▦70▦71▦72▦73▦75▦76▦77▦78▦79▦8▦80▦81▦82▦83▦84▦85▦86▦87▦88▦89▦9▦90▦91▦92▦93▦94▦95▦96▦97▦98▦99";
  414. // ds_get_data.setColumn(0,"testcd","LIR100");
  415. // Div_search.combo1.value = "00";
  416. // Div_search.checkbox1.value = "false";
  417. //
  418. //
  419. // inff_clearTChart(object1);
  420. // lf_getGrapeRsltList();
  421. }
  422. function lf_setEqmtCd(){
  423. var sInDsName = dsf_createDsRow("ds_temp_search"
  424. , [{col: "codeflag", val: "0701|"}
  425. , {col: "basecdid", val: Div_search.combo2.value }]); //검사실구분 코드(장비코드앞자리)
  426. ds_init_lb0701.clearData();
  427. tranf_submit({
  428. id: "TRLZZ00101"
  429. , service: "diagtestapplib.DiagTestBaseInfoMngt"
  430. , method: "reqGetInitCodeInfo"
  431. , inds : "cond="+sInDsName
  432. , outds: "ds_init_lb0701=0701"
  433. , async: false
  434. });
  435. }
  436. //장비별 검사항목 조회 팝업
  437. function lf_testListSch() //장비코드
  438. {
  439. var eqmtcd = Div_search.combo3.value ;
  440. var deptflag = ds_init_lb0000.getColumn(0,"nm"); //사용자부서코드
  441. var sflag = "nu" + "▦" + eqmtcd + "▦" + deptflag;
  442. ds_send_data.clearData();
  443. ds_send_data.addRow();
  444. ds_send_data.setColumn(0,"deptflag",deptflag);
  445. ds_send_data.setColumn(0,"sflag",sflag);
  446. var objArg = new Object();
  447. objArg.ds_arg_temp_reqdata = ds_send_data;
  448. frmf_modal("SPLQP00100", "SPLQP00100", objArg, "", 0, 100, 150, "", "", "", "", "", "M");
  449. Div_search.input8.value = ds_get_data.getColumn(0,"testnm");
  450. }
  451. //검사항목별 레벨 조회 팝업p
  452. function lf_testLevlSch()
  453. {
  454. var eqmtcd = Div_search.combo3.value ; //장비코드
  455. var deptflag = ds_init_lb0000.getColumn(0,"nm"); //사용자부서코드
  456. var sflag = "nu" + "▦" + eqmtcd + "▦" + deptflag;
  457. ds_send_data.clearData();
  458. ds_send_data.addRow();
  459. ds_send_data.setColumn(0,"deptflag",deptflag);
  460. ds_send_data.setColumn(0,"sflag",sflag);
  461. var objArg = new Object();
  462. objArg.ds_arg_temp_reqdata = ds_send_data;
  463. frmf_modal("SPLQP00200", "SPLQP00200", objArg, "", 0, 100, 150, "", "", "", "", "", "M");
  464. ds_get_data.addColumn("levlnm", "string" );
  465. ds_get_data.addColumn("levlcd", "string" );
  466. ds_get_data.addColumn("levlcd2", "string" );
  467. ds_get_data.setColumn(0,"levlnm", ds_get_data2.getColumn(0,"levlnm"));
  468. ds_get_data.setColumn(0,"levlcd", ds_get_data2.getColumn(0,"levlcd"));
  469. ds_get_data.setColumn(0,"levlcd2", ds_get_data2.getColumn(0,"levlcd2"));
  470. Div_search.ipt_levl.value = ds_get_data2.getColumn(0,"levlnm");
  471. }
  472. // 조회
  473. function lf_getGrapeRsltList()
  474. {
  475. if(ds_grid_grd_factcnts.rowcount != 0)
  476. {
  477. for(var l = datagrid1.getCellCount("Head"); l > -1; l--)
  478. {
  479. datagrid1.setFormatColProperty(l, "band", "body");
  480. }
  481. }
  482. lf_setGrdInit();// 그리드 컬럼 초기화
  483. var eqmtcd = Div_search.combo3.value;
  484. var testnm = Div_search.input8.value;
  485. var levlcd = Div_search.ipt_levl.value;
  486. if(eqmtcd == "00")
  487. {
  488. sysf_messageBox("장비를", "C002","");
  489. return;
  490. }
  491. if(utlf_isNull(testnm))
  492. {
  493. sysf_messageBox("검사항목을", "C002","");
  494. return;
  495. }
  496. if(utlf_isNull(levlcd))
  497. {
  498. sysf_messageBox("레벨을", "C002","");
  499. return;
  500. }
  501. var sInDsName = dsf_createDsRow("ds_temp_search", [{col: "acptfromdd", val: Div_search.ipt_hopesdd.value}
  502. , {col: "acpttodd", val: Div_search.ipt_hopeedd.value}
  503. , {col: "testroom", val: Div_search.combo2.value}
  504. , {col: "eqmtcd", val: Div_search.combo3.value }
  505. , {col: "testcdlist", val: Div_search.input8.value }
  506. , {col: "testnm", val: ds_get_data.getColumn(0,"testnm") }
  507. , {col: "levlcd", val: ds_get_data2.getColumn(0,"levlcd")}
  508. , {col: "testcd", val: ds_get_data.getColumn(0,"testcd")}
  509. , {col: "deptflag", val: ds_init_lb0000.getColumn(0,"nm")}
  510. , {col: "acptflag", val: Div_search.combo1.value}
  511. , {col: "releqmtyn", val: Div_search.checkbox1.value}
  512. , {col: "page", val: "1"}]); //검사실구분 코드(장비코드앞자리)
  513. ds_grid_grd_rsltlistRow.clearData();
  514. ds_grid_grd_rsltlistHeader.clearData();
  515. //trace("ds_temp_search = " + ds_temp_search.saveXML());
  516. tranf_submit({
  517. id: "TRLQP00201"
  518. , service: "grademngtprintapp.QCRsltReference"
  519. , method: "reqGetTestGrapeRslt"
  520. , inds : "cond="+sInDsName
  521. , outds: "ds_grid_grd_rsltlistRow=row ds_grid_grd_rsltlistHeader=header"
  522. , async: false
  523. });
  524. ds_grid_grd_rsltlistRow.addColumn("chk","String");
  525. ds_grid_grd_factcnts.clearData();
  526. ds_grid_page.clearData();
  527. var oParam = {};
  528. oParam.id = "TRLQP00205";
  529. oParam.service = "grademngtprintapp.QCRsltReference";
  530. oParam.method = "reqGetTestGrapeRsltFact";
  531. oParam.inds = "cond="+sInDsName;
  532. oParam.outds = "ds_grid_grd_factcnts=factcnts ds_grid_page=page"
  533. oParam.async = false;
  534. //oParam.callback = "cf_TRLQP00205";
  535. tranf_submit(oParam);
  536. var lastPage = ds_grid_page.getColumn(0,"lastPage");
  537. ds_grid_grd_temp.clearData();
  538. for(var page = 2; page <= lastPage; page++)
  539. {
  540. ds_temp_search.setColumn(0,"page",page);
  541. var oParam = {};
  542. oParam.id = "TRLQP00205";
  543. oParam.service = "grademngtprintapp.QCRsltReference";
  544. oParam.method = "reqGetTestGrapeRsltFact";
  545. oParam.inds = "cond="+sInDsName;
  546. oParam.outds = "ds_grid_grd_temp=factcnts ds_grid_page=page";
  547. oParam.async = false;
  548. //oParam.callback = "cf_TRLQP00205";
  549. tranf_submit(oParam);
  550. ds_grid_grd_factcnts.appendData(ds_grid_grd_temp);
  551. }
  552. var gridCaption = utlf_transNullToEmpty(ds_grid_grd_rsltlistHeader.getColumn(0, "caption"));
  553. var gridCaptionArray = gridCaption.split("^");
  554. //trace("gridCaptionArray = " + gridCaptionArray);
  555. if(utlf_isNull(gridCaption)) return;
  556. //ref 정보
  557. var gridColRef = ds_grid_grd_rsltlistHeader.getColumn(0, "colref");
  558. var gridColRefArray = gridColRef.split("^");
  559. var gridColType = ds_grid_grd_rsltlistHeader.getColumn(0, "type");
  560. var gridColTypeArray = gridColType.split("^");
  561. for(var i = 1; i < gridCaptionArray.length; i++)
  562. {
  563. grdf_setColumn(datagrid1, "I", i+1, gridCaptionArray[i], gridCaptionArray[i]);
  564. datagrid1.setCellProperty("Body", i+1, "text", "bind:"+gridColRefArray[i]);
  565. }
  566. for(var i =0; i < 15; i++)
  567. {
  568. datagrid1.setFormatColProperty(i, "band", "left");
  569. }
  570. // 컬럼 width Set..
  571. for(var i = 1; i < datagrid1.getCellCount("Head"); i++)
  572. {
  573. if(i == 1) //chk
  574. {
  575. datagrid1.setFormatColProperty(i, "size", 25);
  576. //datagrid1.setFormatColProperty(i, "band", "left");
  577. }
  578. else if( i == 2) //장비코드
  579. {
  580. datagrid1.setFormatColProperty(i, "size", 30);
  581. //datagrid1.setFormatColProperty(i, "band", "left");
  582. }
  583. else if( i == 4) //검사항목
  584. {
  585. datagrid1.setFormatColProperty(i, "size", 100);
  586. //datagrid1.setFormatColProperty(i, "band", "left");
  587. }
  588. else if( i == 5)
  589. {
  590. datagrid1.setFormatColProperty(i, "size", 100);
  591. //datagrid1.setFormatColProperty(i, "band", "left");
  592. }
  593. else if(i == 8) //참고치
  594. {
  595. datagrid1.setFormatColProperty(i, "size", 80);
  596. //datagrid1.setFormatColProperty(i, "band", "left");
  597. }
  598. else if( i < 15) //결과 전까지는 60
  599. {
  600. datagrid1.setFormatColProperty(i, "size", 60);
  601. //datagrid1.setFormatColProperty(i, "band", "left");
  602. }
  603. else
  604. {
  605. datagrid1.setFormatColProperty(i, "size", 70);
  606. datagrid1.setCellProperty("head", i, "wordwrap", "word");
  607. }
  608. //datagrid1.setFormatColProperty(i, "band", "body");
  609. }
  610. //trace("gridCaptionArray.length = " + gridCaptionArray.length);
  611. datagrid1.setFormatColProperty(13, "size", 0); //물질코드
  612. datagrid1.setFormatColProperty(14, "size", 0); //레벨코드
  613. datagrid1.setFormatColProperty(15, "size", 0); //검사코드
  614. //WGMR 에 걸린 결과값 색 변경
  615. for(var i = 0; i < ds_grid_grd_rsltlistRow.rowcount; i++)
  616. {
  617. for(var j = 0; j < ds_grid_grd_rsltlistRow.colcount-15; j++)
  618. {
  619. var colID = "column"+j;
  620. if(!utlf_isNull(ds_grid_grd_rsltlistRow.getColumn(i, colID)))
  621. {
  622. if(utlf_transNullToEmpty(ds_grid_grd_rsltlistRow.getColumn(i,colID)).indexOf("W") != -1)
  623. {
  624. datagrid1.setCellProperty("body", j+16, "background", "expr:utlf_isNull("+colID+") ? '' : '#99CF16'");
  625. datagrid1.setCellProperty("body", j+16, "background2", "expr:utlf_isNull("+colID+") ? '' : '#99CF16'");
  626. }
  627. }
  628. }
  629. }
  630. }
  631. //결과 그리드 컬럼 초기화
  632. function lf_setGrdInit()
  633. {
  634. for(var i=datagrid1.getCellCount("Head")-1; i>1; i--)
  635. {
  636. datagrid1.deleteContentsCol(i);
  637. }
  638. var bSucc = datagrid1.setCellProperty("Head",1,"text",0);
  639. }
  640. //물질상세정보 조회
  641. function lf_getMatrInfo(rslt, ecol)
  642. {
  643. ds_grid_grd_matrinfo.clearData();
  644. if(datagrid1.getCellPos() > 14 && !utlf_isNull(rslt)) //15번째 컬럼부터 결과 && rslt != "" 일단제외
  645. {
  646. var testcd = ds_grid_grd_rsltlistRow.getColumn(ds_grid_grd_rsltlistRow.rowposition, "testcd");
  647. var levlcd = ds_grid_grd_rsltlistRow.getColumn(ds_grid_grd_rsltlistRow.rowposition, "levlcd");
  648. var matrcd = ds_grid_grd_rsltlistRow.getColumn(ds_grid_grd_rsltlistRow.rowposition, "matrcd");
  649. var testdt = datagrid1.getCellProperty("Head", ecol, "text");
  650. 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);
  651. var sInDsName = dsf_createDsRow("ds_temp_search", [{col: "matrcd", val: matrcd}
  652. , {col: "levlcda", val: levlcd}
  653. , {col: "tclscd", val: testcd}
  654. , {col: "acptdt", val: acptdt}]);
  655. var oParam = {};
  656. oParam.id = "TRLQP00202";
  657. oParam.service = "grademngtprintapp.QCRsltReference";
  658. oParam.method = "reqGetMatrInfo";
  659. oParam.inds = "cond=ds_temp_search";
  660. oParam.outds = "ds_grid_grd_matrinfo=matrinfo";
  661. oParam.async = false;
  662. //oParam.callback = "cf_TRLQP00202";
  663. tranf_submit(oParam);
  664. //소견 저장하지 않았을때 검사 결과 선택시 조치사항 조회 위함
  665. var findData = testcd+matrcd+levlcd+acptdt;
  666. var findRow = ds_grid_grd_factcnts.findRow(findData);
  667. if(findRow != -1)
  668. {
  669. combo13.value = ds_grid_grd_factcnts.getColumn(findRow,"measfactcnts");
  670. textarea1.value = ds_grid_grd_factcnts.getColumn(findRow,"measfactcd");
  671. }
  672. }
  673. }
  674. //소견세팅
  675. function lf_cntsSet(flag)
  676. {
  677. var testcd = ds_grid_grd_rsltlistRow.getColumn(ds_grid_grd_rsltlistRow.rowposition, "testcd");
  678. var matrcd = ds_grid_grd_rsltlistRow.getColumn(ds_grid_grd_rsltlistRow.rowposition, "matrcd");
  679. var levlcd = ds_grid_grd_rsltlistRow.getColumn(ds_grid_grd_rsltlistRow.rowposition, "levlcd");
  680. var testdt = datagrid1.getCellProperty("Head", datagrid1.currentcol, "text");
  681. 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);
  682. var findData = testcd+matrcd+levlcd+acptdt;
  683. var findRow = ds_grid_grd_factcnts.findRow("finddata", findData);
  684. if(findRow != -1)
  685. {
  686. if(flag == 1) //조치사항 코드
  687. {
  688. var measfactcd = combo13.value;
  689. ds_grid_grd_factcnts.setColumn(findRow,"measfactcd",combo13.value);
  690. ds_grid_grd_factcnts.setColumn(findRow,"measfactcnts",combo13.text);
  691. textarea1.value = combo13.text;
  692. }
  693. else //조치사항
  694. {
  695. ds_grid_grd_factcnts.setColumn(findRow,"measfactcnts",textarea1.value);
  696. }
  697. ds_grid_grd_factcnts.setRowType(findRow,Dataset.ROWTYPE_UPDATE);
  698. }
  699. }
  700. //사유저장
  701. function lf_setSave()
  702. {
  703. if(sysf_messageBox("", "Q004")==6) //실행하시겠습니까? 6:ok
  704. {
  705. if(lf_checkGridUpdate()) //저장데이터 유무 체크
  706. {
  707. var oParam = {};
  708. oParam.id = "TXLQP00201";
  709. oParam.service = "grademngtprintapp.QCRsltReference";
  710. oParam.method = "reqSetFactcnt";
  711. oParam.inds = "cond=ds_grid_grd_factcnts:u";
  712. oParam.async = false;
  713. oParam.callback = "cf_TXLQP00201";
  714. tranf_submit(oParam);
  715. }
  716. else
  717. {
  718. alert("저장할 자료가 존재하지 않습니다!");
  719. }
  720. }
  721. }
  722. //저장 데이터 확인
  723. function lf_checkGridUpdate()
  724. {
  725. var cnt = 0;
  726. for(var i = 0; i < ds_grid_grd_factcnts.rowcount; i++)
  727. {
  728. if(ds_grid_grd_factcnts.getRowType(i) == 4)
  729. {
  730. cnt++;
  731. }
  732. }
  733. if(cnt == 0)
  734. {
  735. return false;
  736. }
  737. else if(cnt >0)
  738. {
  739. return true;
  740. }
  741. }
  742. //콜백함수
  743. function cf_TXLQP00201(strSvcID, nErrorCode, strErrorMag)
  744. {
  745. if(strSvcID == "TXLQP00201" && nErrorCode==0)
  746. {
  747. sysf_messageBox("","I001","");
  748. }
  749. }
  750. function fCnfm(pRef)
  751. {
  752. var cnt = 0;
  753. for(var i = 0; i < ds_grid_grd_rsltlistRow.rowcount; i++)
  754. {
  755. if(ds_grid_grd_rsltlistRow.getColumn(i,"chk") == 1)
  756. {
  757. cnt++;
  758. }
  759. }
  760. if(cnt == 0)
  761. {
  762. sysf_messageBox("확인 대상 항목을", "C002");
  763. return;
  764. }
  765. var strTestcd = "";
  766. var strLevlcd = "";
  767. var testcdlist = "";
  768. var testnmlist = "";
  769. var levlcdlist = "";
  770. var levlnmlist = "";
  771. var matrcdlist = "";
  772. var lotnolist = "";
  773. var viewtestnmlist = "";
  774. var viewlevlnmlist = "";
  775. for(var i = 0; i < ds_grid_grd_rsltlistRow.rowcount; i++)
  776. {
  777. if(ds_grid_grd_rsltlistRow.getColumn(i,"chk") == 1)
  778. //&& ds_grid_grd_rsltlistRow.getColumn(i,"testcd") != strTestcd || ds_grid_grd_rsltlistRow.getColumn(i,"levlcd") != strLevlcd)
  779. {
  780. testcdlist += "▦" + ds_grid_grd_rsltlistRow.getColumn(i,"testcd");
  781. testnmlist += "▦" + ds_grid_grd_rsltlistRow.getColumn(i,"testnm");
  782. levlcdlist += "▦" + ds_grid_grd_rsltlistRow.getColumn(i,"levlcd");
  783. levlnmlist += "▦" + ds_grid_grd_rsltlistRow.getColumn(i,"levlnm");
  784. matrcdlist += "▦" + ds_grid_grd_rsltlistRow.getColumn(i,"matrcd");
  785. lotnolist += "▦" + ds_grid_grd_rsltlistRow.getColumn(i,"lotno");
  786. viewtestnmlist += "," + ds_grid_grd_rsltlistRow.getColumn(i,"testnm")+ "(" + ds_grid_grd_rsltlistRow.getColumn(i,"levlnm") + ")";
  787. strTestcd = ds_grid_grd_rsltlistRow.getColumn(i,"testcd");
  788. strLevlcd = ds_grid_grd_rsltlistRow.getColumn(i,"levlcd");
  789. }
  790. }
  791. if(pRef != "P")//pRef = "" :확인내역조회, 1 : UM확인, 2 : 팀장확인, 3: 전문의 확인, P : 그래프출력
  792. {
  793. ds_send_data_param.clearData();
  794. ds_send_data_param.addRow();
  795. ds_send_data_param.setColumn(0,"userflag",pRef);
  796. ds_send_data_param.setColumn(0,"cnfmfromdd",Div_search.ipt_hopesdd.value);
  797. ds_send_data_param.setColumn(0,"cnfmtodd",Div_search.ipt_hopeedd.value);
  798. ds_send_data_param.setColumn(0,"eqmtcd",ds_grid_grd_rsltlistRow.getColumn(ds_grid_grd_rsltlistRow.rowposition,"eqmtcd") );
  799. ds_send_data_param.setColumn(0,"testcdlist",testcdlist.substring(1, testcdlist.length));
  800. ds_send_data_param.setColumn(0,"testnmlist",testnmlist.substring(1, testnmlist.length));
  801. ds_send_data_param.setColumn(0,"levlcdlist", levlcdlist.substring(1, levlcdlist.length));
  802. ds_send_data_param.setColumn(0,"levlnmlist",levlnmlist.substring(1, levlnmlist.length));
  803. ds_send_data_param.setColumn(0,"matrcdlist",matrcdlist.substring(1, matrcdlist.length));
  804. ds_send_data_param.setColumn(0,"lotnolist",lotnolist.substring(1, lotnolist.length));
  805. ds_send_data_param.setColumn(0,"viewtestnmlist",viewtestnmlist.substring(1, viewtestnmlist.length));
  806. ds_send_data_param.setColumn(0,"viewlevlnmlist",viewlevlnmlist.substring(1, viewlevlnmlist.length));
  807. //var s =frmf_modal("SPLQP00400", "SPLQP00400");
  808. var objArg = new Object();
  809. objArg.arg_ds_hidden_param = ds_send_data_param;
  810. frmf_modal("SPLQP00400", "SPLQP00400", objArg, "", "", "", "", "", "", "", "", "", "M");
  811. }
  812. else
  813. {
  814. //출력물에 필요한 cnfm list
  815. var sInDsName = dsf_createDsRow("ds_temp_search"
  816. , [{col: "fromdd", val: Div_search.ipt_hopesdd.value}
  817. , {col: "todd", val: Div_search.ipt_hopeedd.value}
  818. , {col: "refflag", val: "1"}
  819. , {col: "eqmtcd", val: Div_search.combo3.value}
  820. , {col: "testcdlist", val: testcdlist.substring(1, testcdlist.length)}
  821. , {col: "levlcdlist", val: levlcdlist.substring(1, levlcdlist.length)}]);
  822. ds_send2.setColumn(0, "fromdd", Div_search.ipt_hopesdd.value);
  823. ds_send2.setColumn(0, "todd", Div_search.ipt_hopeedd.value);
  824. ds_send2.setColumn(0, "eqmtcd", Div_search.combo3.value);
  825. ds_send2.setColumn(0, "testcdlist", testcdlist.substring(1, testcdlist.length));
  826. ds_send2.setColumn(0, "levlcdlist", levlcdlist.substring(1, levlcdlist.length));
  827. var oParam = {};
  828. oParam.id = "TRLQP00401";
  829. oParam.service = "grademngtprintapp.QCRsltReference";
  830. oParam.method = "reqGetCnfmList";
  831. oParam.inds = "cond=ds_send2"
  832. oParam.outds = "ds_grid_grd_cnfmlist=cnfmlist";
  833. oParam.async = false;
  834. //oParam.callback = "cf_TRLQP00401";
  835. tranf_submit(oParam);
  836. }
  837. }
  838. //그래프를 그려보자(1)정규화 그래프
  839. function lf_initChartRegl(sGrapFlag)
  840. {
  841. //sGrapFalg 1: 정규화, 2: 로하이, 3: 민에스디
  842. var Obj_Chart = object1; //시리즈 번호
  843. var count = 0;
  844. for(var i=0; i < ds_grid_grd_rsltlistRow.rowcount; i++)
  845. {
  846. if(ds_grid_grd_rsltlistRow.getColumn(i,"chk") == 1)
  847. {
  848. count++; //선택된 항목의 갯수
  849. }
  850. }
  851. if(count == 0)
  852. {
  853. alert("그래프를 작성할 항목을 선택하세요");
  854. return;
  855. }
  856. else if(count == 1)
  857. {
  858. var vEnd = -1;
  859. var chkrow = ds_grid_grd_rsltlistRow.findRow("chk", "1");
  860. for(var i = 0; i < ds_grid_grd_rsltlistRow.colcount-15; i++)
  861. {
  862. var colID = "column"+i;
  863. var x = ds_grid_grd_rsltlistRow.getColumn(chkrow, colID); //결과값
  864. if(!utlf_isNull(x))
  865. {
  866. vEnd += 1; //결과 값이 있다면 1씩 더하기
  867. }
  868. }
  869. }
  870. else
  871. {
  872. var vEnd = ds_grid_grd_rsltlistRow.colcount - 14; //끝 좌표
  873. }
  874. trace("vEnd = " + vEnd);
  875. Obj_Chart.Aspect.View3D = 0; // 2d 로 표현하기
  876. Obj_Chart.Zoom.Enable = false; // zoom 사용하지 않기
  877. Obj_Chart.Scroll.Enable = 2;
  878. Obj_Chart.Environment.MouseWheelScroll = false;
  879. Obj_Chart.Legend.Visible = false; // 그래프 참조 박스 띄우지 않기
  880. Obj_Chart.Panel.Gradient.Visible = true; // 페널에 그라디언트 적용
  881. Obj_Chart.Panel.Gradient.StartColor = 0xffffff;
  882. Obj_Chart.Panel.Gradient.EndColor = 0xffffff;
  883. Obj_Chart.Legend.Visible = true; //범례표시 여부
  884. Obj_Chart.Legend.Alignment = 3; // Legend 위치 설정 :: 0 = left | 1 = right | 2 = top| 3 = bottom
  885. Obj_Chart.Legend.CheckBoxes = false; //범례 체크박스
  886. Obj_Chart.RemoveAllSeries();
  887. Obj_Chart.Axis.RemoveAllCustom();
  888. //margin 값 정하기
  889. Obj_Chart.Panel.MarginTop = 5;
  890. Obj_Chart.Panel.MarginLeft = 2;
  891. Obj_Chart.Panel.MarginRight = 0;
  892. Obj_Chart.Panel.MarginBottom = 2;
  893. Obj_Chart.Header.Visible = false; //헤더 타이틀 보이지 않기
  894. Obj_Chart.Axis.Left.Labels.Style = 2;
  895. Obj_Chart.Axis.Right.Labels.Style = 1;
  896. Obj_Chart.Axis.Bottom.Labels.Style = 0; // 0:auto or value, 1:No, 2 :민 맥스, 3: marks style, 4:text
  897. Obj_Chart.Axis.Bottom.Labels.Angle = 90; //90도 돌려서 라벨 표시
  898. Obj_Chart.Axis.Bottom.Labels.Size = 95; //하단 라벨의 사이즈 조치사항 추가하면서 자동으로 늘어나서 추가함
  899. Obj_Chart.Axis.Left.Title.Caption = "Fixed SD";
  900. Obj_Chart.Axis.Left.Automatic = false;
  901. Obj_Chart.Axis.Left.Maximum = 3.5;
  902. Obj_Chart.Axis.Left.Minimum = -3.5;
  903. Obj_Chart.Axis.Left.Increment = 1;
  904. //Avg 라인
  905. Obj_Chart.AddSeries(0); //asLine
  906. Obj_Chart.Series(0).asLine.LinePen.Width = 2;
  907. Obj_Chart.Series(0).Color = 0x000000;
  908. Obj_Chart.Series(0).AddXY (0 , 0 , "", Obj_Chart.Series(0).Color );
  909. Obj_Chart.Series(0).AddXY (vEnd , 0 , "", Obj_Chart.Series(0).Color );
  910. //+1SD 라인
  911. Obj_Chart.AddSeries(0); //asLine
  912. Obj_Chart.Series(1).asLine.LinePen.Width = 1;
  913. Obj_Chart.Series(1).Color = 0x000000;
  914. Obj_Chart.Series(1).AddXY (0 , 1 , "", Obj_Chart.Series(1).Color );
  915. Obj_Chart.Series(1).AddXY (vEnd , 1 , "", Obj_Chart.Series(1).Color );
  916. //-1SD 라인
  917. Obj_Chart.AddSeries(0); //asLine
  918. Obj_Chart.Series(2).asLine.LinePen.Width = 1;
  919. Obj_Chart.Series(2).Color = 0x000000;
  920. Obj_Chart.Series(2).AddXY (0 , -1 , "", Obj_Chart.Series(2).Color );
  921. Obj_Chart.Series(2).AddXY (vEnd , -1 , "", Obj_Chart.Series(2).Color );
  922. //+2SD 라인
  923. Obj_Chart.AddSeries(0); //asLine
  924. Obj_Chart.Series(3).asLine.LinePen.Width = 2;
  925. Obj_Chart.Series(3).Color = 0x00ccff;
  926. Obj_Chart.Series(3).AddXY (0 , 2 , "", Obj_Chart.Series(3).Color );
  927. Obj_Chart.Series(3).AddXY (vEnd , 2 , "", Obj_Chart.Series(3).Color );
  928. //-2SD 라인
  929. Obj_Chart.AddSeries(0); //asLine
  930. Obj_Chart.Series(4).asLine.LinePen.Width = 2;
  931. Obj_Chart.Series(4).Color = 0x00ccff;
  932. Obj_Chart.Series(4).AddXY (0 , -2 , "", Obj_Chart.Series(4).Color );
  933. Obj_Chart.Series(4).AddXY (vEnd , -2 , "", Obj_Chart.Series(4).Color );
  934. //+3SD 라인
  935. Obj_Chart.AddSeries(0); //asLine
  936. Obj_Chart.Series(5).asLine.LinePen.Width = 2;
  937. Obj_Chart.Series(5).Color = 0x0000ee;
  938. Obj_Chart.Series(5).AddXY (0 , 3 , "", Obj_Chart.Series(5).Color );
  939. Obj_Chart.Series(5).AddXY (vEnd , 3 , "", Obj_Chart.Series(5).Color );
  940. //-3SD 라인
  941. Obj_Chart.AddSeries(0); //asLine
  942. Obj_Chart.Series(6).asLine.LinePen.Width = 2;
  943. Obj_Chart.Series(6).Color = 0x0000ee;
  944. Obj_Chart.Series(6).AddXY (0 , -3 , "", Obj_Chart.Series(6).Color );
  945. Obj_Chart.Series(6).AddXY (vEnd , -3 , "", Obj_Chart.Series(6).Color );
  946. //날짜 10번째 시리즈
  947. Obj_Chart.AddSeries(0); //asLine
  948. Obj_Chart.Series(7).Color = 0x000000;
  949. Obj_Chart.Series(7).asLine.LinePen.Width = 1; //펜 두께
  950. Obj_Chart.Series(7).asLine.Pointer.Visible = false; //값에 대한 포인터
  951. //라인들에 대한 범례 보이지 않게
  952. for(i=0; i <= 7 ; i++)
  953. {
  954. Obj_Chart.Series(i).ShowInLegend = false;
  955. }
  956. fMakeChartRegl(); //정규화 챠트 그리기
  957. }
  958. //정규화 그래프 그리기
  959. function fMakeChartRegl()
  960. {
  961. trace("//정규화 그래프 그리기");
  962. var Obj_Chart = object1;
  963. var vAvg, vSD, v4SDH, v4SDL, v3SDH, v3SDL, v2SDH, v2SDL, v1SDH, v1SDL, y, cap, tmpY, vTitle, vLotNo, vLevlNm, vRslt, vEqmtCd;
  964. var vTestCd, vMatrCd, vLevlCd, vDate, vFindData, vFact; //조치사항을 찾기 위한 변수들
  965. var Rnd1, Rnd2, Rnd3, cColor, vCnt;
  966. var count = 0;
  967. for(var i = 0; i < ds_grid_grd_rsltlistRow.rowcount; i++)
  968. {
  969. if(ds_grid_grd_rsltlistRow.getColumn(i, "chk") == 1)
  970. {
  971. count++; //선택된 항목의 갯수
  972. }
  973. }
  974. //선택된 항목이 하나일 경우
  975. if(count == 1)
  976. {
  977. //조회된 항목중 선택된 항목에 대한 그래프 그리기
  978. var chkrow = ds_grid_grd_rsltlistRow.findRow("chk", "1");
  979. var xx = 0;
  980. vCnt = Obj_Chart.SeriesCount ; //생성된 시리즈 갯수
  981. vTitle = ds_grid_grd_rsltlistRow.getColumn(chkrow, "testnm");
  982. vAvg = parseFloat(ds_grid_grd_rsltlistRow.getColumn(chkrow, "avg"));
  983. vSD = parseFloat(ds_grid_grd_rsltlistRow.getColumn(chkrow, "sdval"));
  984. vLotNo = ds_grid_grd_rsltlistRow.getColumn(chkrow, "lotno");
  985. vLevlNm = ds_grid_grd_rsltlistRow.getColumn(chkrow, "levlnm");
  986. vEqmtCd = ds_grid_grd_rsltlistRow.getColumn(chkrow, "eqmtcd");
  987. vTestCd = ds_grid_grd_rsltlistRow.getColumn(chkrow, "testcd");
  988. vMatrCd = ds_grid_grd_rsltlistRow.getColumn(chkrow, "matrcd");
  989. vLevlCd = ds_grid_grd_rsltlistRow.getColumn(chkrow, "levlcd");
  990. v3SDH = vAvg+vSD*3;
  991. v3SDL = vAvg-vSD*3;
  992. v2SDH = vAvg+vSD*2;
  993. v2SDL = vAvg-vSD*2;
  994. v1SDH = vAvg+vSD*1;
  995. v1SDL = vAvg-vSD*1;
  996. //시리즈별 컬러
  997. Rnd1 = Math.random();
  998. Rnd2 = Math.random();
  999. Rnd3 = Math.random();
  1000. var nRed = (255 - 1) * Rnd1 + 1;
  1001. var nGreen = (255 - 1) * Rnd2 + 1;
  1002. var nBlue = (255 - 1) * Rnd3 + 1;
  1003. cColor = lf_getColor(nRed,nGreen,nBlue);
  1004. //그래프가 그려질 시리즈
  1005. Obj_Chart.AddSeries(37); //asHorizLine
  1006. Obj_Chart.Series(vCnt).Color = cColor;
  1007. Obj_Chart.Series(vCnt).asHorizLine.LinePen.Width = 2; //펜 두께
  1008. Obj_Chart.Series(vCnt).asHorizLine.Pointer.Visible = true; //값에 대한 포인터
  1009. Obj_Chart.Series(vCnt).asHorizLine.Pointer.Brush.Color = cColor;
  1010. Obj_Chart.Series(vCnt).asHorizLine.Pointer.Style = 0;
  1011. Obj_Chart.Series(vCnt).asHorizLine.Pointer.VerticalSize = 1;
  1012. Obj_Chart.Series(vCnt).asHorizLine.Pointer.HorizontalSize = 1;
  1013. Obj_Chart.Series(vCnt).Title = vEqmtCd + " : " + vTitle + "(" + vLotNo + ")_"+vLevlNm;
  1014. Obj_Chart.Series(vCnt).Clear(); //라인 초기화
  1015. lf_addPointSeries(); //WGMR, 2SD, 3SD 포인터 시리즈 추가
  1016. Obj_Chart.Series(vCnt).Marks.Visible = false;
  1017. Obj_Chart.Series(vCnt+1).Marks.Visible = false;
  1018. Obj_Chart.Series(vCnt+2).Marks.Visible = false;
  1019. Obj_Chart.Series(vCnt+3).Marks.Visible = false;
  1020. for(var i=0; i<ds_grid_grd_rsltlistRow.colcount-15; i++ ){
  1021. var colID = "column"+i;
  1022. vRslt = parseFloat(ds_grid_grd_rsltlistRow.getColumn(chkrow,colID)); //결과값
  1023. cap = datagrid1.getCellProperty("Head",i+15,"text");
  1024. vDate = cap.substr(0,4) + cap.substr(5,2) + cap.substr(8,2) + cap.substr(11,2) + cap.substr(14,2) + cap.substr(17,2);
  1025. vFindData = vTestCd+vMatrCd+vLevlCd+vDate;
  1026. var findRow = ds_grid_grd_factcnts.findRow("finddata",vFindData);
  1027. vFact = vTitle + " " + cap + " - " + ds_grid_grd_factcnts.getColumn(findRow,"measfactcnts") + "\n";
  1028. if (!isNaN(vRslt)){
  1029. tmpY = (vRslt - vAvg) / vSD; //y좌표
  1030. if(tmpY > 3){
  1031. y = 3.1;
  1032. }else if(tmpY < -3){
  1033. y = -3.1
  1034. }else{
  1035. y = tmpY;
  1036. }
  1037. //결과에대한 그래프 찍기
  1038. Obj_Chart.Series(vCnt).AddXY (xx, y, "", Obj_Chart.Series(vCnt).Color );
  1039. if(utlf_transNullToEmpty(ds_grid_grd_rsltlistRow.getColumn(chkrow,colID)).indexOf("W") != -1 || !utlf_isNull(ds_grid_grd_factcnts.getColumn(findRow,"measfactcnts"))){
  1040. //WGMR포인트 찍어
  1041. Obj_Chart.Series(vCnt+3).AddXY (xx, y, vFact, Obj_Chart.Series(vCnt+3).Color );
  1042. }else if( y == 3.1 || y == -3.1){
  1043. //3SD
  1044. Obj_Chart.Series(vCnt+2).AddXY (xx, y, vFact, Obj_Chart.Series(vCnt+2).Color );
  1045. }else if(y > 2 || y < -2){
  1046. //2SD
  1047. Obj_Chart.Series(vCnt+1).AddXY (xx, y, vFact, Obj_Chart.Series(vCnt+1).Color );
  1048. }
  1049. Obj_Chart.Series(7).AddXY (xx, -3.5, cap, Obj_Chart.Series(7).Color ); //날짜 보였다 안보였다해서 시리즈 따로 추가함
  1050. xx += 1;
  1051. }
  1052. }
  1053. }
  1054. else
  1055. {
  1056. //조회된 항목중 선택된 항목에 대한 그래프 그리기
  1057. for(var i = 0; i < ds_grid_grd_rsltlistRow.rowcount; i++ )
  1058. {
  1059. if(ds_grid_grd_rsltlistRow.getColumn(i, "chk") == 1)
  1060. {
  1061. vCnt = Obj_Chart.SeriesCount ; //생성된 시리즈 갯수
  1062. vTitle = ds_grid_grd_rsltlistRow.getColumn(i, "testnm");
  1063. vAvg = parseFloat(ds_grid_grd_rsltlistRow.getColumn(i, "avg"));
  1064. vSD = parseFloat(ds_grid_grd_rsltlistRow.getColumn(i, "sdval"));
  1065. vLotNo = ds_grid_grd_rsltlistRow.getColumn(i, "lotno");
  1066. vLevlNm = ds_grid_grd_rsltlistRow.getColumn(i, "levlnm");
  1067. vEqmtCd = ds_grid_grd_rsltlistRow.getColumn(i, "eqmtcd");
  1068. vTestCd = ds_grid_grd_rsltlistRow.getColumn(i, "testcd");
  1069. vMatrCd = ds_grid_grd_rsltlistRow.getColumn(i, "matrcd");
  1070. vLevlCd = ds_grid_grd_rsltlistRow.getColumn(i, "levlcd");
  1071. v3SDH = vAvg+vSD*3;
  1072. v3SDL = vAvg-vSD*3;
  1073. v2SDH = vAvg+vSD*2;
  1074. v2SDL = vAvg-vSD*2;
  1075. v1SDH = vAvg+vSD*1;
  1076. v1SDL = vAvg-vSD*1;
  1077. //시리즈별 컬러
  1078. Rnd1 = Math.random();
  1079. Rnd2 = Math.random();
  1080. Rnd3 = Math.random();
  1081. var nRed = (255 - 1) * Rnd1 + 1;
  1082. var nGreen = (255 - 1) * Rnd2 + 1;
  1083. var nBlue = (255 - 1) * Rnd3 + 1;
  1084. cColor = lf_getColor(nRed,nGreen,nBlue);
  1085. //그래프가 그려질 시리즈
  1086. Obj_Chart.AddSeries(37); //asHorizLine
  1087. Obj_Chart.Series(vCnt).Color = cColor;
  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).Title = vEqmtCd + " : " + vTitle + "(" + vLotNo + ")_"+vLevlNm;
  1095. Obj_Chart.Series(vCnt).Clear(); //라인 초기화
  1096. lf_addPointSeries(); //WGMR, 2SD, 3SD 포인터 시리즈 추가
  1097. vCol = 0;
  1098. for(var x = vCol; x < ds_grid_grd_rsltlistRow.colcount-15; x++)
  1099. {
  1100. var colID = "column"+x;
  1101. vRslt = parseFloat(ds_grid_grd_rsltlistRow.getColumn(i, colID)); //결과값
  1102. cap = datagrid1.getCellProperty("Head", x+16, "text");
  1103. vDate = cap.substr(0,4) + cap.substr(5,2) + cap.substr(8,2) + cap.substr(11,2) + cap.substr(14,2) + cap.substr(17,2);
  1104. vFindData = vTestCd+vMatrCd+vLevlCd+vDate;
  1105. var findRow = ds_grid_grd_factcnts.findRow("finddata", vFindData);
  1106. vFact = vTitle + " " + cap + " - " + utlf_transNullToEmpty(ds_grid_grd_factcnts.getColumn(findRow, "measfactcnts")) + "\n";
  1107. if (!isNaN(vRslt))
  1108. {
  1109. tmpY = (vRslt - vAvg) / vSD; //y좌표
  1110. if(tmpY > 3)
  1111. {
  1112. y = 3.1;
  1113. }
  1114. else if(tmpY < -3)
  1115. {
  1116. y = -3.1
  1117. }
  1118. else
  1119. {
  1120. y = tmpY;
  1121. }
  1122. //결과에대한 그래프 찍기
  1123. Obj_Chart.Series(vCnt).AddXY (x-vCol, y, "", Obj_Chart.Series(vCnt).Color );
  1124. if(utlf_transNullToEmpty(ds_grid_grd_rsltlistRow.getColumn(i, colID)).indexOf("W") != -1 || !utlf_isNull(ds_grid_grd_factcnts.getColumn(findRow, "measfactcnts")))
  1125. {
  1126. //WGMR포인트 찍어
  1127. Obj_Chart.Series(vCnt+3).AddXY (x-vCol, y, vFact, Obj_Chart.Series(vCnt+3).Color );
  1128. }
  1129. else if( y == 3.1 || y == -3.1)
  1130. {
  1131. //3SD
  1132. Obj_Chart.Series(vCnt+2).AddXY (x-vCol, y, vFact, Obj_Chart.Series(vCnt+2).Color );
  1133. }
  1134. else if(y > 2 || y < -2)
  1135. {
  1136. //2SD
  1137. Obj_Chart.Series(vCnt+1).AddXY (x-vCol, y, vFact, Obj_Chart.Series(vCnt+1).Color );
  1138. }
  1139. }
  1140. Obj_Chart.Series(7).AddXY (x-vCol, -3.5, cap, Obj_Chart.Series(7).Color ); //날짜 보였다 안보였다해서 시리즈 따로 추가함
  1141. }
  1142. }//end if
  1143. }//end for(i)
  1144. }
  1145. fMakeLotGrp(); //Lot관리하는 그래프 그리기
  1146. }
  1147. //2SD, 3SD, WGMR에 대한 포인트 그래프 추가
  1148. function lf_addPointSeries()
  1149. {
  1150. var Obj_Chart;
  1151. if(radio1.value == 1)
  1152. {
  1153. Obj_Chart = object1;
  1154. }else{
  1155. Obj_Chart = object2;
  1156. }
  1157. var idx = Obj_Chart.SeriesCount ;
  1158. //Wgmr 포인트
  1159. Obj_Chart.AddSeries(4);
  1160. Obj_Chart.Series(idx).Cursor =2020;
  1161. Obj_Chart.Series(idx).asPoint.Pointer.Pen.Color = lf_getColor(255,0,0);
  1162. Obj_Chart.Series(idx).asPoint.Pointer.Brush.Color = lf_getColor(255,0,0);
  1163. Obj_Chart.Series(idx).asPoint.Pointer.Style = 0;
  1164. Obj_Chart.Series(idx).asPoint.Pointer.HorizontalSize = 3;
  1165. Obj_Chart.Series(idx).asPoint.Pointer.VerticalSize = 3;
  1166. Obj_Chart.Series(idx).ShowInLegend = false;
  1167. //2SD포인트
  1168. Obj_Chart.AddSeries(4);
  1169. Obj_Chart.Series(idx+1).Cursor =2020;
  1170. Obj_Chart.Series(idx+1).asPoint.Pointer.Pen.Color = lf_getColor(255,0,0);
  1171. Obj_Chart.Series(idx+1).asPoint.Pointer.Brush.Color = lf_getColor(255,0,0);
  1172. Obj_Chart.Series(idx+1).asPoint.Pointer.Style = 0;
  1173. Obj_Chart.Series(idx+1).asPoint.Pointer.HorizontalSize = 3;
  1174. Obj_Chart.Series(idx+1).asPoint.Pointer.VerticalSize = 3;
  1175. Obj_Chart.Series(idx+1).ShowInLegend = false;
  1176. //3SD포인트
  1177. Obj_Chart.AddSeries(4);
  1178. Obj_Chart.Series(idx+2).Cursor =2020;
  1179. Obj_Chart.Series(idx+2).asPoint.Pointer.Pen.Color = lf_getColor(255,0,0);
  1180. Obj_Chart.Series(idx+2).asPoint.Pointer.Brush.Color = lf_getColor(255,0,0);
  1181. Obj_Chart.Series(idx+2).asPoint.Pointer.Style = 0;
  1182. Obj_Chart.Series(idx+2).asPoint.Pointer.HorizontalSize = 3;
  1183. Obj_Chart.Series(idx+2).asPoint.Pointer.VerticalSize = 3;
  1184. Obj_Chart.Series(idx+2).ShowInLegend = false;
  1185. }
  1186. //Lot변경관련 그래프
  1187. function fMakeLotGrp()
  1188. {
  1189. var count = 0;
  1190. for(var i=0; i<ds_grid_grd_rsltlistRow.rowcount; i++)
  1191. {
  1192. if(ds_grid_grd_rsltlistRow.getColumn(i, "chk") == 1)
  1193. {
  1194. count++; //선택된 항목의 갯수
  1195. }
  1196. }
  1197. trace("count = " + count);
  1198. if(count == 1 || lf_grpChk())
  1199. {
  1200. trace("if========");
  1201. var findRow = ds_grid_grd_rsltlistRow.findRow("chk", 1);
  1202. //0000:사용자부서코드, 0111:시행부서계 0701: 장비코드, 0703:조치사항코드
  1203. var sInDsName = dsf_createDsRow("ds_temp_search", [{col : "acptfromdd", val : Div_search.ipt_hopesdd.value}
  1204. ,{col : "acpttodd", val : Div_search.ipt_hopeedd.value}
  1205. ,{col : "testcd", val : ds_grid_grd_rsltlistRow.getColumn(findRow, "testcd")}
  1206. ,{col : "eqmtcd", val : Div_search.combo3.value}]);
  1207. var oParam = {};
  1208. oParam.id = "TRLQP00203";
  1209. oParam.service = "grademngtprintapp.QCRsltReference";
  1210. oParam.method = "reqGetToddList";
  1211. oParam.inds = "cond="+sInDsName;
  1212. oParam.outds = "ds_grid_grd_toddlist=toddlist";
  1213. oParam.async = false;
  1214. //oParam.callback = "cf_TRLQP00203";
  1215. tranf_submit(oParam);
  1216. //조회된 내용이 없을때.. 기준자료 등록되지 않았을때..
  1217. if(ds_grid_grd_toddlist.rowcount == 0)
  1218. {
  1219. return;
  1220. }
  1221. }
  1222. else //여러항목이 선택되었을때는 그리지 않는다.
  1223. {
  1224. return;
  1225. }
  1226. var Obj_Chart;
  1227. if(radio1.value == 1)
  1228. {
  1229. Obj_Chart = object1;
  1230. }else{
  1231. Obj_Chart = object2;
  1232. }
  1233. var numVertaxis, numHorizaxis, LotFlag, testDD, toDD, fromDD;
  1234. var Series = Obj_Chart.SeriesCount ; //요놈은 그래프 그릴놈
  1235. var vCount = Obj_Chart.SeriesCount ; //마지막에 결과값 그래프를 제외한 그래프 범례 안보이게 하기 위해
  1236. var toddSeq = 0;
  1237. Obj_Chart.Axis.Left.StartPosition = 25;
  1238. numVertaxis= Obj_Chart.Axis.AddCustom(false);
  1239. numHorizaxis = Obj_Chart.Axis.AddCustom(true);
  1240. Obj_Chart.Axis.get_Custom(numVertaxis).Automatic = false;
  1241. Obj_Chart.Axis.get_Custom(numVertaxis).Maximum = 2;
  1242. Obj_Chart.Axis.get_Custom(numVertaxis).Minimum = 0;
  1243. Obj_Chart.Axis.get_Custom(numVertaxis).Increment = 1;
  1244. Obj_Chart.Axis.get_Custom(numVertaxis).Labels.Style = 2; //1:lot만 2: lot+숫자
  1245. Obj_Chart.Axis.get_Custom(numVertaxis).Title.Angle = 90;
  1246. Obj_Chart.Axis.get_Custom(numVertaxis).EndPosition = 15;
  1247. Obj_Chart.Axis.get_Custom(numVertaxis).Title.Caption = "LOT";
  1248. Obj_Chart.Axis.get_Custom(numHorizaxis).PositionPercent = 85;
  1249. Obj_Chart.Axis.get_Custom(numHorizaxis).Labels.Visible = false;
  1250. //기준자료 관리되는 갯수만큼 물질유형코드(0:REAGENT LOT, 1:CALIBRATOR LOT, 2:CONTROL MATERIAL LOT)
  1251. for(var i = 0; i < ds_grid_grd_toddlist.rowcount; i++)
  1252. {
  1253. toDD = ds_grid_grd_toddlist.getColumn(i, "toddlist").split("▦"); //toddlist
  1254. fromDD = ds_grid_grd_toddlist.getColumn(i, "fromddlist").split("▦"); //fromddlist
  1255. LotFlag = ds_grid_grd_toddlist.getColumn(i, "matrkindcd"); //matrkindcd
  1256. for(j = 0; j <= toDD.length; j++)
  1257. {
  1258. lf_addSeries(numVertaxis, numHorizaxis); //조회된 matrkindcd별 todd 갯수에 따라 시리즈 추가한다
  1259. }
  1260. if(count != 1)
  1261. {
  1262. //정규화구분 상관없이 count가 1이아니면
  1263. for(var x=0; x<ds_grid_grd_rsltlistRow.colcount-15; x++)
  1264. {
  1265. var testDate = datagrid1.getCellProperty("Head",x+15,"text");
  1266. testDD = testDate.substr(0, 4) + testDate.substr(5, 2) + testDate.substr(8, 2); //검사일시에서 YYYYMMDD만
  1267. if(parseInt(testDD) >= parseInt(fromDD[toddSeq]) && parseInt(testDD) <= parseInt(toDD[toddSeq]))
  1268. {
  1269. Obj_Chart.Series(Series).AddXY (x, LotFlag, "", Obj_Chart.Series(Series).Color );
  1270. }
  1271. else if(parseInt(testDD) < parseInt(fromDD[toddSeq]))
  1272. {
  1273. //검사일시가 시작일자보다 작다면 Null
  1274. Obj_Chart.Series(Series).AddNullXY (x, LotFlag, "");
  1275. }
  1276. else if(parseInt(testDD) > parseInt(toDD[toddSeq]))
  1277. {
  1278. //검사일시가 종료일자보다 크다면
  1279. Obj_Chart.Series(Series).AddXY (x, LotFlag, "", Obj_Chart.Series(Series).Color );
  1280. Obj_Chart.Series(Series+1).AddXY (x, LotFlag, "", Obj_Chart.Series(Series+1).Color ); //그래프 연결 위함
  1281. toddSeq += 1; //todd[]를 하나 더하고
  1282. Series += 1; //다음 시리즈로 넘어간다
  1283. }
  1284. else
  1285. {
  1286. //종료일자가 없을때..
  1287. Obj_Chart.Series(Series).AddNullXY (i, LotFlag, "");
  1288. }
  1289. }
  1290. }
  1291. else
  1292. {
  1293. //실측값이고 count가 1일때
  1294. var xx = 0; //실측값 x좌표
  1295. for(var x = 0; x < ds_grid_grd_rsltlistRow.colcount-15; x++)
  1296. {
  1297. var colID = "column"+x;
  1298. if(!utlf_isNull(ds_grid_grd_rsltlistRow.getColumn(findRow, colID)))
  1299. {
  1300. var testDate = datagrid1.getCellProperty("Head", x+15, "text");
  1301. testDD = testDate.substr(0, 4) + testDate.substr(5, 2) + testDate.substr(8, 2); //검사일시에서 YYYYMMDD만
  1302. if(parseInt(testDD) >= parseInt(fromDD[toddSeq]) && parseInt(testDD) <= parseInt(toDD[toddSeq]))
  1303. {
  1304. Obj_Chart.Series(Series).AddXY (xx, LotFlag, "", Obj_Chart.Series(Series).Color );
  1305. xx += 1; //값이 있으면 xx좌표 +1
  1306. }
  1307. else if(parseInt(testDD) < parseInt(fromDD[toddSeq]))
  1308. {
  1309. //검사일시가 시작일자보다 작다면 Null
  1310. Obj_Chart.Series(Series).AddNullXY (xx, LotFlag, "");
  1311. xx += 1;
  1312. }
  1313. else if(parseInt(testDD) > parseInt(toDD[toddSeq]))
  1314. {
  1315. //검사일시가 종료일자보다 크다면
  1316. Obj_Chart.Series(Series).AddXY (xx, LotFlag, "", Obj_Chart.Series(Series).Color );
  1317. Obj_Chart.Series(Series+1).AddXY (xx, LotFlag, "", Obj_Chart.Series(Series+1).Color ); //그래프 연결 위함
  1318. toddSeq += 1; //todd[]를 하나 더하고
  1319. Series += 1; //다음 시리즈로 넘어간다
  1320. xx += 1; //값이 있으면 xx좌표 +1
  1321. }
  1322. else
  1323. {
  1324. Obj_Chart.Series(Series).AddNullXY (xx, LotFlag, "");
  1325. xx += 1;
  1326. }
  1327. }
  1328. }
  1329. }
  1330. toddSeq = 0; //다음 matrkindcd 의 todd[0]을 비교하기 위함
  1331. Series += 1; //종료일자는 99991231이기 때문에 else문 안타서 하나 더해줌
  1332. }
  1333. Obj_Chart.Axis.get_Custom(numVertaxis).Labels.Add (0, "Rea");
  1334. Obj_Chart.Axis.get_Custom(numVertaxis).Labels.Add (1, "Cal");
  1335. //요거는 그래프 시작과 끝점쪽에 기본적으로 마진이 있어 sd그래프와 lot그래프간 살짝 안맞는 문제가 있는데 고놈 해결하기 위함
  1336. for(var icnt = 0; icnt < Obj_Chart.SeriesCount ; icnt++)
  1337. {
  1338. if(Obj_Chart.Series(icnt).SeriesType == 0 )
  1339. {
  1340. Obj_Chart.Series(icnt).asLine.Pointer.InflateMargins = false;
  1341. }
  1342. else if(Obj_Chart.Series(icnt).SeriesType == 37)
  1343. {
  1344. Obj_Chart.Series(icnt).asHorizLine.Pointer.InflateMargins = false;
  1345. }else{
  1346. Obj_Chart.Series(icnt).asPoint.Pointer.InflateMargins = false;
  1347. }
  1348. }
  1349. }
  1350. //Lot그래프 그리기 위해 체크된 검사항목 확인 (여러항목 중복 선택되어있어도 같은 검사항목이면 그래프 그림)
  1351. function lf_grpChk()
  1352. {
  1353. var row = ds_grid_grd_rsltlistRow.findRow("chk", 1);
  1354. var testcd = ds_grid_grd_rsltlistRow.getColumn(row,"testcd");
  1355. for(var i = row; i <ds_grid_grd_rsltlistRow.rowcount; i++)
  1356. {
  1357. if(ds_grid_grd_rsltlistRow.getColumn(i,"chk") == 1)
  1358. {
  1359. if(testcd !=ds_grid_grd_rsltlistRow.getColumn(i,"testcd"))
  1360. {
  1361. return false;
  1362. }
  1363. }
  1364. }
  1365. return true;
  1366. }
  1367. //Lot기준자료 관련 그래프 시리즈 추가
  1368. function lf_addSeries(numVertaxis, numHorizaxis){
  1369. var Rnd1, Rnd2, Rnd3, cColor
  1370. var Obj_Chart;
  1371. if(radio1.value == 1){
  1372. Obj_Chart = object1;
  1373. }else{
  1374. Obj_Chart = object2;
  1375. }
  1376. var idx = Obj_Chart.SeriesCount ;
  1377. //시리즈별 컬러
  1378. Rnd1 = Math.random();
  1379. Rnd2 = Math.random();
  1380. Rnd3 = Math.random();
  1381. var nRed = (255 - 1) * Rnd1 + 1;
  1382. var nGreen = (255 - 1) * Rnd2 + 1;
  1383. var nBlue = (255 - 1) * Rnd3 + 1;
  1384. cColor = lf_getColor(nRed,nGreen,nBlue);
  1385. Obj_Chart.AddSeries(0);
  1386. Obj_Chart.Series(idx).Color = cColor;
  1387. Obj_Chart.Series(idx).asLine.LinePen.Width = 10;
  1388. Obj_Chart.Series(idx).VerticalAxisCustom = numVertaxis;
  1389. Obj_Chart.Series(idx).HorizontalAxisCustom = numHorizaxis;
  1390. Obj_Chart.Series(idx).Marks.Visible = false;
  1391. Obj_Chart.Series(idx).ShowInLegend = false;
  1392. }
  1393. //그래프를 그려보자(2,3)
  1394. function lf_initChart(sGrapFlag){
  1395. //sGrapFalg 1: 정규화, 2: 로하이, 3: 민에스디
  1396. var count = 0;
  1397. for(var i=0; i<ds_grid_grd_rsltlistRow.rowcount; i++)
  1398. {
  1399. if(ds_grid_grd_rsltlistRow.getColumn(i,"chk") == 1)
  1400. {
  1401. count++; //선택된 항목의 갯수
  1402. }
  1403. }
  1404. if(count == 0)
  1405. {
  1406. alert("그래프를 작성할 항목을 선택하세요");
  1407. return;
  1408. }
  1409. else if(count ==1)
  1410. {
  1411. var vEnd = -1;
  1412. var chkrow = ds_grid_grd_rsltlistRow.findRow("chk", 1);
  1413. for(var i=0; i < ds_grid_grd_rsltlistRow.colcount-15; i++ ) //14번째 컬럼부터 column0~ 시작
  1414. {
  1415. var colID = "column"+i;
  1416. var x = ds_grid_grd_rsltlistRow.getColumn(chkrow,colID); //결과값
  1417. if(!utlf_isNull(x))
  1418. {
  1419. vEnd += 1; //결과 값이 있다면 1씩 더하기
  1420. }
  1421. }
  1422. trace("vEnd = " + vEnd)
  1423. var vAvg = parseFloat(ds_grid_grd_rsltlistRow.getColumn(chkrow,"mean"));
  1424. var vSD = parseFloat(ds_grid_grd_rsltlistRow.getColumn(chkrow,"sd"));
  1425. var vTitle = ds_grid_grd_rsltlistRow.getColumn(chkrow,"testnm");
  1426. var vLevlnm = ds_grid_grd_rsltlistRow.getColumn(chkrow,"levlnm");
  1427. var ref = ds_grid_grd_rsltlistRow.getColumn(chkrow,"ref").split("~");
  1428. var vLow = ref[0];
  1429. var vHigh = ref[1];
  1430. var v1SDH = vAvg + vSD;
  1431. var v2SDH = vAvg + vSD*2;
  1432. var v3SDH = vAvg + vSD*3;
  1433. var v4SDH = vAvg + vSD*4;
  1434. var v1SDL = vAvg - vSD;
  1435. var v2SDL = vAvg - vSD*2;
  1436. var v3SDL = vAvg - vSD*3;
  1437. var v4SDL = vAvg - vSD*4;
  1438. }
  1439. else
  1440. {
  1441. var vEnd; //끝 좌표
  1442. }
  1443. var Obj_Chart = object2;
  1444. var vStart = 0; //시리즈 번호
  1445. Obj_Chart.Aspect.View3D = 0; // 2d 로 표현하기
  1446. Obj_Chart.Zoom.Enable = false; // zoom 사용하지 않기
  1447. Obj_Chart.Scroll.Enable = 2;
  1448. Obj_Chart.Environment.MouseWheelScroll = false;
  1449. Obj_Chart.Legend.Visible = false; // 그래프 참조 박스 띄우지 않기
  1450. Obj_Chart.Panel.Gradient.Visible = true; // 페널에 그라디언트 적용
  1451. Obj_Chart.Panel.Gradient.StartColor = 0xffffff;
  1452. Obj_Chart.Panel.Gradient.EndColor= 0xffffff;
  1453. Obj_Chart.Legend.Visible = true; //범례표시 여부
  1454. Obj_Chart.Legend.Alignment = 3; // Legend 위치 설정 :: 0 = left | 1 = right | 2 = top| 3 = bottom
  1455. Obj_Chart.Legend.CheckBoxes = false; //범례 체크박스
  1456. Obj_Chart.RemoveAllSeries();
  1457. Obj_Chart.Axis.RemoveAllCustom();
  1458. //margin 값 정하기
  1459. Obj_Chart.Panel.MarginTop = 0;
  1460. Obj_Chart.Panel.MarginLeft = 2;
  1461. Obj_Chart.Panel.MarginRight = 0;
  1462. Obj_Chart.Panel.MarginBottom = 2;
  1463. Obj_Chart.Header.Visible = false;
  1464. Obj_Chart.Axis.Left.Labels.Style = 2;
  1465. Obj_Chart.Axis.Right.Labels.Style = 1;
  1466. Obj_Chart.Axis.Bottom.Labels.Style = 4; // 0:auto or value, 1:No, 2 :민 맥스, 3: marks style, 4:text
  1467. Obj_Chart.Axis.Bottom.Labels.Angle = 90; //90도 돌려서 라벨 표시
  1468. Obj_Chart.Axis.Bottom.Labels.Size = 95; //하단 라벨의 사이즈 조치사항 추가하면서 자동으로 늘어나서 추가함
  1469. Obj_Chart.Axis.Left.Title.Caption = "실측값";
  1470. Obj_Chart.Axis.Left.Automatic = true;
  1471. //날짜그래프
  1472. Obj_Chart.AddSeries(0); //asLine
  1473. Obj_Chart.Series(0).asLine.LinePen.Width = 1; //펜 두께
  1474. Obj_Chart.Series(0).asLine.Pointer.Visible = false; //값에 대한 포인터
  1475. Obj_Chart.Series(0).ShowInLegend = false;
  1476. var find, row, tmp;
  1477. var findRows = "";
  1478. for(var r = 0; r <ds_grid_grd_rsltlistRow.rowcount; r++) //선택된 검사항목 그래프 그리기 위함
  1479. {
  1480. if(ds_grid_grd_rsltlistRow.getColumn(r,"chk") == 1)
  1481. {
  1482. findRows = findRows + r + "▦";
  1483. }
  1484. }
  1485. row = findRows.substr(0, findRows.length-1).split("▦"); //체크된 항목의 row▦row...
  1486. if(sGrapFlag == "3")
  1487. { //Mean/SD그래푸
  1488. if(row.length == 1)
  1489. {
  1490. lf_makeLineSD(vAvg, vSD, vStart, vEnd); //라인그리기
  1491. }
  1492. else //중복된 검사항목이 있을 경우에 평균이나 편차에 대해서 여러줄 그려
  1493. {
  1494. for(i = 0; i < row.length; i++)
  1495. {
  1496. vAvg = parseFloat(ds_grid_grd_rsltlistRow.getColumn(row[i],"mean"));
  1497. vSD = parseFloat(ds_grid_grd_rsltlistRow.getColumn(row[i],"sd"));
  1498. tmp = 0;
  1499. vEnd = 0; //각 검사항목의 라인 끝점
  1500. for(var j=0; j<ds_grid_grd_rsltlistRow.colcount-15; j++ )
  1501. {
  1502. var colID = "column"+j;
  1503. var x = ds_grid_grd_rsltlistRow.getColumn(row[i],colID); //결과값
  1504. if(!utlf_isNull(x))
  1505. {
  1506. if(tmp == 0)
  1507. {
  1508. vStart = j; //라인의 시작점
  1509. }
  1510. tmp++;
  1511. vEnd = j; //라인의 끝점
  1512. }
  1513. }
  1514. lf_makeLineSD(vAvg, vSD, vStart, vEnd); //라인그리기
  1515. }
  1516. }
  1517. }
  1518. else if(sGrapFlag == "2")
  1519. { //Low/High그래푸
  1520. if(row.length == 1)
  1521. {
  1522. lf_makeLineLH(vAvg, vHigh, vLow, vStart, vEnd);
  1523. }
  1524. else //여러항목일 경우 평균이나 편차에 대한 라인 여러줄 그려
  1525. {
  1526. for(i = 0; i < row.length; i++)
  1527. {
  1528. vAvg = parseFloat(ds_grid_grd_rsltlistRow.getColumn(row[i],"mean"));
  1529. ref = ds_grid_grd_rsltlistRow.getColumn(row[i],"ref").split("~");
  1530. vLow = ref[0];
  1531. vHigh = ref[1];
  1532. tmp = 0;
  1533. vEnd = 0; //각 검사항목의 라인 끝점
  1534. for(var j=0; j<ds_grid_grd_rsltlistRow.colcount-15; j++) //14번째 컬럼부터 column0~ 시작
  1535. {
  1536. var colID = "column"+j;
  1537. var x = ds_grid_grd_rsltlistRow.getColumn(row[i],colID); //결과값
  1538. if(utlf_isNull(x))
  1539. {
  1540. if(tmp == 0)
  1541. {
  1542. vStart = j; //라인의 시작점
  1543. }
  1544. tmp++;
  1545. vEnd = j;
  1546. }
  1547. }
  1548. lf_makeLineLH(vAvg, vHigh, vLow, vStart, vEnd);
  1549. }
  1550. }
  1551. }
  1552. lf_makeChartOrgRslt(row); //L/H 및 Mean/SD 챠트 그리기
  1553. }
  1554. //Mean/SD 그래프에 대한 SD단위 라인 그리기
  1555. function lf_makeLineSD(vAvg, vSD, vStart, vEnd)
  1556. {
  1557. var Obj_Chart = object2;
  1558. var v1SDH = vAvg + vSD;
  1559. var v2SDH = vAvg + vSD*2;
  1560. var v3SDH = vAvg + vSD*3;
  1561. var v4SDH = vAvg + vSD*4;
  1562. var v1SDL = vAvg - vSD;
  1563. var v2SDL = vAvg - vSD*2;
  1564. var v3SDL = vAvg - vSD*3;
  1565. var v4SDL = vAvg - vSD*4;
  1566. var idx = Obj_Chart.SeriesCount ;
  1567. Obj_Chart.AddSeries(0); //asLine
  1568. Obj_Chart.Series(idx).asLine.LinePen.Width = 2;
  1569. Obj_Chart.Series(idx).Color = 0x000000; //Avg 라인
  1570. Obj_Chart.Series(idx).AddXY (vStart , vAvg , "", Obj_Chart.Series(idx).Color );
  1571. Obj_Chart.Series(idx).AddXY (vEnd , vAvg , "", Obj_Chart.Series(idx).Color );
  1572. Obj_Chart.AddSeries(0); //asLine
  1573. Obj_Chart.Series(1+idx).asLine.LinePen.Width = 1;
  1574. Obj_Chart.Series(1+idx).Color = 0x000000; //+1SD 라인
  1575. Obj_Chart.Series(1+idx).AddXY (vStart , v1SDH , "", Obj_Chart.Series(1+idx).Color );
  1576. Obj_Chart.Series(1+idx).AddXY (vEnd , v1SDH , "", Obj_Chart.Series(1+idx).Color );
  1577. Obj_Chart.AddSeries(0); //asLine
  1578. Obj_Chart.Series(2+idx).asLine.LinePen.Width = 1;
  1579. Obj_Chart.Series(2+idx).Color = 0x000000; //-1SD 라인
  1580. Obj_Chart.Series(2+idx).AddXY (vStart , v1SDL , "", Obj_Chart.Series(2+idx).Color );
  1581. Obj_Chart.Series(2+idx).AddXY (vEnd , v1SDL , "", Obj_Chart.Series(2+idx).Color );
  1582. Obj_Chart.AddSeries(0); //asLine
  1583. Obj_Chart.Series(3+idx).asLine.LinePen.Width = 2;
  1584. Obj_Chart.Series(3+idx).Color = 0x00ccff; //+2SD 라인
  1585. Obj_Chart.Series(3+idx).AddXY (vStart , v2SDH , "", Obj_Chart.Series(3+idx).Color );
  1586. Obj_Chart.Series(3+idx).AddXY (vEnd , v2SDH , "", Obj_Chart.Series(3+idx).Color );
  1587. Obj_Chart.AddSeries(0); //asLine
  1588. Obj_Chart.Series(4+idx).asLine.LinePen.Width = 2;
  1589. Obj_Chart.Series(4+idx).Color = 0x00ccff; //-2SD 라인
  1590. Obj_Chart.Series(4+idx).AddXY (vStart , v2SDL , "", Obj_Chart.Series(4+idx).Color );
  1591. Obj_Chart.Series(4+idx).AddXY (vEnd , v2SDL , "", Obj_Chart.Series(4+idx).Color );
  1592. Obj_Chart.AddSeries(0); //asLine
  1593. Obj_Chart.Series(5+idx).asLine.LinePen.Width = 2;
  1594. Obj_Chart.Series(5+idx).Color = 0x0000ee; //+3SD 라인
  1595. Obj_Chart.Series(5+idx).AddXY (vStart , v3SDH , "", Obj_Chart.Series(5+idx).Color );
  1596. Obj_Chart.Series(5+idx).AddXY (vEnd , v3SDH , "", Obj_Chart.Series(5+idx).Color );
  1597. Obj_Chart.AddSeries(0); //asLine
  1598. Obj_Chart.Series(6+idx).asLine.LinePen.Width = 2;
  1599. Obj_Chart.Series(6+idx).Color = 0x0000ee; //-3SD 라인
  1600. Obj_Chart.Series(6+idx).AddXY (vStart , v3SDL , "", Obj_Chart.Series(6+idx).Color );
  1601. Obj_Chart.Series(6+idx).AddXY (vEnd , v3SDL , "", Obj_Chart.Series(6+idx).Color );
  1602. for(k=idx;k<idx+7;k++) //라인들에 대한 범례 보이지 않게
  1603. {
  1604. Obj_Chart.Series(k).ShowInLegend = false;
  1605. }
  1606. }
  1607. //Low/High 그래프에 대한 라인 그리기
  1608. function lf_makeLineLH(vAvg, vHigh, vLow, vStart, vEnd)
  1609. {
  1610. var Obj_Chart = object2;
  1611. var idx = Obj_Chart.SeriesCount ;
  1612. Obj_Chart.AddSeries(0); //asLine
  1613. Obj_Chart.Series(idx).asLine.LinePen.Width = 2;
  1614. Obj_Chart.Series(idx).Color = 0x000000; //Avg 라인
  1615. Obj_Chart.Series(idx).ShowInLegend = false;
  1616. Obj_Chart.Series(idx).AddXY (vStart , vAvg , "", Obj_Chart.Series(idx).Color );
  1617. Obj_Chart.Series(idx).AddXY (vEnd , vAvg , "", Obj_Chart.Series(idx).Color );
  1618. //if(vHigh != "")
  1619. if(!utlf_isNull(vHigh))
  1620. {
  1621. idx = Obj_Chart.SeriesCount ;
  1622. Obj_Chart.AddSeries(0); //asLine
  1623. Obj_Chart.Series(idx).asLine.LinePen.Width = 2;
  1624. Obj_Chart.Series(idx).Color = 0x0000FF; //High 라인
  1625. Obj_Chart.Series(idx).ShowInLegend = false;
  1626. Obj_Chart.Series(idx).AddXY (vStart , vHigh , "", Obj_Chart.Series(idx).Color);
  1627. Obj_Chart.Series(idx).AddXY (vEnd , vHigh , "", Obj_Chart.Series(idx).Color);
  1628. }
  1629. //if(vLow != "")
  1630. if(!utlf_isNull(vLow))
  1631. {
  1632. idx = Obj_Chart.SeriesCount ;
  1633. Obj_Chart.AddSeries(0); //asLine
  1634. Obj_Chart.Series(idx).asLine.LinePen.Width = 2;
  1635. Obj_Chart.Series(idx).Color = 0xFF0000; //Low 라인
  1636. Obj_Chart.Series(idx).ShowInLegend = false;
  1637. Obj_Chart.Series(idx).AddXY (vStart , vLow , "", Obj_Chart.Series(idx).Color);
  1638. Obj_Chart.Series(idx).AddXY (vEnd , vLow , "", Obj_Chart.Series(idx).Color);
  1639. }
  1640. }
  1641. //L/H 및 Mean/SD 챠트 그리기
  1642. function lf_makeChartOrgRslt(row)
  1643. {
  1644. trace("row = " + row);
  1645. var Obj_Chart = object2;
  1646. var Rnd1, Rnd2, Rnd3, cColor;
  1647. var vAvg, vSD, v4SDH, v4SDL, vTestnm, vLotno, vLevlNm, vCnt, vEqmtCd;
  1648. var vTestCd, vMatrCd, vLevlCd, vDate, vFindData, vFact; //조치사항을 찾기 위한 변수들
  1649. var x = 0;
  1650. var title = "";
  1651. //그래프가 그려질 시리즈
  1652. for (var series = 0; series < row.length; series++)
  1653. {
  1654. vLotno = ds_grid_grd_rsltlistRow.getColumn(row[series],"lotno"); //검사명(LotNo)
  1655. vTestnm = ds_grid_grd_rsltlistRow.getColumn(row[series],"testnm"); //조회할 검사명, Title에 집어넣을놈
  1656. vLevlNm = ds_grid_grd_rsltlistRow.getColumn(row[series],"levlnm"); //조회할 레벨명, Title에 집어넣을놈
  1657. vEqmtCd = ds_grid_grd_rsltlistRow.getColumn(row[series],"eqmtcd"); //조회할 장비코드, Title에 집어넣을놈
  1658. vTestCd = ds_grid_grd_rsltlistRow.getColumn(row[series],"testcd");
  1659. vMatrCd = ds_grid_grd_rsltlistRow.getColumn(row[series],"matrcd");
  1660. vLevlCd = ds_grid_grd_rsltlistRow.getColumn(row[series],"levlcd");
  1661. Rnd1 = Math.random();
  1662. Rnd2 = Math.random();
  1663. Rnd3 = Math.random();
  1664. var nRed = (235 - 1) * Rnd1 + 1;
  1665. var nGreen = (235 - 1) * Rnd2 + 1;
  1666. var nBlue = (235 - 1) * Rnd3 + 1;
  1667. cColor = lf_getColor(nRed,nGreen,nBlue); //각 검사항목별로 포인터 색깔 변경
  1668. vCnt = Obj_Chart.SeriesCount ;
  1669. Obj_Chart.AddSeries(37); //asHorizLine
  1670. Obj_Chart.Series(vCnt).Color = 0xBE5B42;
  1671. Obj_Chart.Series(vCnt).asHorizLine.LinePen.Width = 2; //펜 두께
  1672. Obj_Chart.Series(vCnt).asHorizLine.Pointer.Visible = true; //값에 대한 포인터
  1673. Obj_Chart.Series(vCnt).asHorizLine.Pointer.Brush.Color = cColor; //포인트 컬러
  1674. Obj_Chart.Series(vCnt).asHorizLine.Pointer.Style = 0;
  1675. Obj_Chart.Series(vCnt).asHorizLine.Pointer.VerticalSize = 1;
  1676. Obj_Chart.Series(vCnt).asHorizLine.Pointer.HorizontalSize = 1;
  1677. Obj_Chart.Series(vCnt).VerticalAxis = 2; //좌표 y축에대한 스타일 2:both??
  1678. Obj_Chart.Series(vCnt).Title = vEqmtCd + " : " + vTestnm+ "(" + vLotno + ")";
  1679. title = vEqmtCd + " : " + vTestnm+ "(" + vLotno + ")_"+vLevlNm; //보여주지 말게20091019
  1680. //결과값에 대한 주석 보이기
  1681. Obj_Chart.Series(vCnt).Marks.Visible = false; //요거 true로 해야 아래꺼 보임
  1682. Obj_Chart.Series(vCnt).Marks.Style = 8; //수치값에 대한 값보이기 8아니면 다른수치보임
  1683. Obj_Chart.Series(vCnt).Marks.ArrowLength = 0;
  1684. lf_addPointSeries(); //WGMR, 2SD, 3SD 포인터 시리즈 추가
  1685. x =0;
  1686. for(var i=0; i<ds_grid_grd_rsltlistRow.colcount-15; i++)
  1687. {
  1688. var colID = "column"+i;
  1689. vAvg = parseFloat(ds_grid_grd_rsltlistRow.getColumn(row[series],"avg"));
  1690. vSD = parseFloat(ds_grid_grd_rsltlistRow.getColumn(row[series],"sdval"));
  1691. v4SDH = vAvg+vSD*4;
  1692. v4SDL = vAvg-vSD*4;
  1693. var y = parseFloat(ds_grid_grd_rsltlistRow.getColumn(row[series],colID)); //결과값 : y 좌표
  1694. var cap = datagrid1.getCellProperty("Head",i+16,"text");
  1695. //=================================
  1696. vDate = cap.substr(0,4) + cap.substr(5,2) + cap.substr(8,2) + cap.substr(11,2) + cap.substr(14,2) + cap.substr(17,2);
  1697. vFindData = vTestCd+vMatrCd+vLevlCd+vDate;
  1698. var nRow = ds_grid_grd_factcnts.findRow("finddata",vFindData);
  1699. vFact = title + " " + cap + " - " + ds_grid_grd_factcnts.getColumn(nRow,"measfactcnts") + "\n";
  1700. //=================================
  1701. if (!isNaN(y) && y < v4SDH && y > v4SDL) {
  1702. Obj_Chart.Series(vCnt).AddXY (x, y, "" , Obj_Chart.Series(vCnt).Color );
  1703. x += 1;
  1704. }else if(!isNaN(y) && y > v4SDH){
  1705. y = v4SDH;
  1706. Obj_Chart.Series(vCnt).AddXY (x, y, "", Obj_Chart.Series(vCnt).Color );
  1707. x += 1;
  1708. }else if(!isNaN(y) && y < v4SDH){
  1709. y = v4SDL;
  1710. Obj_Chart.Series(vCnt).AddXY (x, y, "", Obj_Chart.Series(vCnt).Color );
  1711. x += 1;
  1712. }else if(isNaN(y) && row.length != 1)
  1713. {
  1714. x += 1;
  1715. }
  1716. if(!isNaN(y))
  1717. {
  1718. Obj_Chart.Series(0).AddNullXY (x-1, vAvg,cap); //두개이상 그릴때 날짜가 제대로 보여지지 않는것 때문에 날짜는 따로 찍음
  1719. }
  1720. //룰이나 2SD, 3SD벗어난 포인트 찍어주기
  1721. if(!utlf_isNull(ds_grid_grd_rsltlistRow.getColumn(row[series],colID)) && utlf_transNullToEmpty(ds_grid_grd_rsltlistRow.getColumn(row[series],colID)).indexOf("W") != -1 || !utlf_isNull(ds_grid_grd_factcnts.getColumn(nRow,"measfactcnts")))
  1722. {
  1723. //WGMR포인트 찍어
  1724. Obj_Chart.Series(vCnt+3).AddXY (x-1, y, vFact, Obj_Chart.Series(vCnt+3).Color );
  1725. }
  1726. else if(y > vAvg+vSD*3 || y < vAvg-vSD*3)
  1727. {
  1728. //3SD
  1729. Obj_Chart.Series(vCnt+2).AddXY (x-1, y, vFact, Obj_Chart.Series(vCnt+2).Color );
  1730. }
  1731. else if(y > vAvg+vSD*2 || y < vAvg-vSD*2)
  1732. {
  1733. //2SD
  1734. Obj_Chart.Series(vCnt+1).AddXY (x-1, y, vFact, Obj_Chart.Series(vCnt+1).Color );
  1735. }
  1736. }
  1737. }
  1738. fMakeLotGrp(); //Lot관리하는 그래프 그리기
  1739. }
  1740. // rgb -> hex
  1741. function lf_getColor(nRed,nGreen,nBlue)
  1742. {
  1743. var nA = fn_getHex(Math.floor(nRed / 16));
  1744. var nB = fn_getHex(nRed % 16);
  1745. var nC = fn_getHex(Math.floor(nGreen / 16));
  1746. var nD = fn_getHex(nGreen % 16);
  1747. var nE = fn_getHex(Math.floor(nBlue / 16));
  1748. var nF = fn_getHex(nBlue % 16);
  1749. var nHex = nA + nB + nC + nD + nE + nF;
  1750. var color="#" + nHex + "ff;";
  1751. return color;
  1752. }
  1753. /* 진수값을 Hex로 변환 */
  1754. function fn_getHex(nDec)
  1755. {
  1756. var sRtn;
  1757. switch (nDec)
  1758. {
  1759. case 10:
  1760. sRtn = "A";
  1761. break;
  1762. case 11:
  1763. sRtn = "B";
  1764. break;
  1765. case 12:
  1766. sRtn = "C";
  1767. break;
  1768. case 13:
  1769. sRtn = "D";
  1770. break;
  1771. case 14:
  1772. sRtn = "E";
  1773. break;
  1774. case 15:
  1775. sRtn = "F";
  1776. break;
  1777. default:
  1778. sRtn = "" + nDec;
  1779. break;
  1780. }
  1781. return sRtn;
  1782. }
  1783. function lf_pritnt()
  1784. {
  1785. var count = 0;
  1786. for(var i = 0; i < ds_grid_grd_rsltlistRow.rowcount; i++)
  1787. {
  1788. if(ds_grid_grd_rsltlistRow.getColumn(i,"chk") == 1)
  1789. {
  1790. count++; //선택된 항목의 갯수
  1791. }
  1792. }
  1793. if(count == 0)
  1794. {
  1795. alert("출력 대상 항목을 선택하세요");
  1796. return;
  1797. }
  1798. var Obj_Chart;
  1799. if(radio1.value == 1)
  1800. {
  1801. Obj_Chart = object1;
  1802. }
  1803. else
  1804. {
  1805. Obj_Chart = object2;
  1806. }
  1807. Obj_Chart.Tools.Clear();
  1808. Obj_Chart.Export.CopyToClipboardBitmap(); //클립보드로 이미지 넘겨
  1809. fCnfm("P"); //UM,팀장, 전문의 확인 내역 출력위해
  1810. ds_hidden_gref_testinfo.copyData(ds_grid_grd_rsltlistRow); // 컬럼명 맞춰주기 위해서
  1811. ds_hidden_gref_testinfo.clearData();
  1812. //검사 정보
  1813. for(var i=0; i<ds_grid_grd_rsltlistRow.rowcount; i++)
  1814. {
  1815. if(ds_grid_grd_rsltlistRow.getColumn(i,"chk") == 1)
  1816. {
  1817. var nRow = ds_hidden_gref_testinfo.addRow();
  1818. ds_hidden_gref_testinfo.copyRow(nRow, ds_grid_grd_rsltlistRow, i);
  1819. }
  1820. }
  1821. //결과 정보
  1822. var vTestcd, vLevlcd;
  1823. var vCnt = 0;
  1824. ds_hidden_gref_factcnts.copyData(ds_grid_grd_factcnts); // 컬럼명 맞춰주기 위해서
  1825. ds_hidden_gref_factcnts.clearData();
  1826. //검사 정보
  1827. for(var i=0; i<ds_grid_grd_rsltlistRow.rowcount; i++)
  1828. {
  1829. if(ds_grid_grd_rsltlistRow.getColumn(i, "chk") == 1)
  1830. {
  1831. vTestcd = ds_grid_grd_rsltlistRow.getColumn(i, "testcd");
  1832. trace("vTestcd==" + vTestcd);
  1833. vLevlcd = ds_grid_grd_rsltlistRow.getColumn(i, "levlcd");
  1834. trace("vLevlcd== " + vLevlcd);
  1835. vCnt += 1;
  1836. if(checkbox2.value == "Y")
  1837. {
  1838. for(var j = 0; j < ds_grid_grd_factcnts.rowcount; j++ )
  1839. {
  1840. if(ds_grid_grd_factcnts.getColumn(j, "testcd") == vTestcd)
  1841. {
  1842. if(ds_grid_grd_factcnts.getColumn(j, "levlcd") == vLevlcd)
  1843. {
  1844. var nRow = ds_hidden_gref_factcnts.addRow();
  1845. ds_hidden_gref_factcnts.copyRow(nRow, ds_grid_grd_factcnts, j);
  1846. }
  1847. }
  1848. }
  1849. }
  1850. else
  1851. {
  1852. for(var j = 0; j < ds_grid_grd_factcnts.rowcount; j++)
  1853. {
  1854. if(ds_grid_grd_factcnts.getColumn(j, "testcd") == vTestcd)
  1855. {
  1856. if(ds_grid_grd_factcnts.getColumn(j, "wgmrmark") == "W" || !utlf_isNull(ds_grid_grd_factcnts.getColumn(j, "measfactcnts")))
  1857. {
  1858. if(ds_grid_grd_factcnts.getColumn(j, "levlcd") == vLevlcd)
  1859. {
  1860. var nRow = ds_hidden_gref_factcnts.addRow();
  1861. ds_hidden_gref_factcnts.copyRow(nRow, ds_grid_grd_factcnts, j);
  1862. }
  1863. }
  1864. }
  1865. }
  1866. }
  1867. }
  1868. }
  1869. //이미지 저장후 리로드
  1870. var fladr = "C:/Users";
  1871. var objActiveX = new ActiveX();
  1872. var fso = objActiveX.createObject("Scripting.FileSystemObject");
  1873. if (fso.FolderExists(fladr))
  1874. {
  1875. if(radio1.value == 1)
  1876. {
  1877. var xx = object1.Export.SaveToJPEGFile(fladr+"/listchart.jpeg", false, 0, 30,1000, 250 );
  1878. trace("xx = " + xx);
  1879. }
  1880. else
  1881. {
  1882. object2.Export.SaveToJPEGFile(fladr+"/listchart.jpeg", false, 0, 30, 1000, 250 );
  1883. }
  1884. }
  1885. else
  1886. {
  1887. fladr = fso.CreateFolder(fladr);
  1888. if(radio1.value == 1)
  1889. {
  1890. object1.Export.SaveToJPEGFile(fladr+"/listchart.jpeg", false, 0, 30, 1000, 250 );
  1891. }
  1892. else
  1893. {
  1894. object2.Export.SaveToJPEGFile(fladr+"/listchart.jpeg", false, 0, 30, 1000, 250 );
  1895. }
  1896. }
  1897. ds_hidden_gref.setColumn(0, "img", fladr+"/listchart.jpeg");
  1898. var objDOM = rptf_createDOM();
  1899. rptf_setNodeListToDOM(objDOM, "/root/hidden/gref", ds_hidden_gref); //데이터 필드2
  1900. rptf_setNodeListToDOM(objDOM, "/root/hidden/gref/factcnts", ds_hidden_gref_factcnts); //데이터필드 1
  1901. rptf_setNodeListToDOM(objDOM, "/root/hidden/gref/cnfmlist", ds_grid_grd_cnfmlist); // 데이터필드 4
  1902. var objDOM1 = rptf_createDOM();
  1903. rptf_setNodeListToDOM(objDOM1, "/root/main/rsltlist/row", ds_hidden_gref_testinfo); // 데이터필드 3
  1904. var objParam = new Object();
  1905. objParam.xml_data_XML1 = objDOM.documentElement.source;
  1906. objParam.xml_data_XML2 = objDOM.documentElement.source;
  1907. objParam.xml_data_XML3 = objDOM1.documentElement.source;
  1908. objParam.xml_data_XML4 = objDOM.documentElement.source;
  1909. var option = "open=1;save=1;directprint=0;print=1;zoom=0";
  1910. rptf_exeReportPreview30(["RPLQJ00100"],[objParam], option);
  1911. }
  1912. function SMLQP00200_onload(obj:Form, e:LoadEventInfo)
  1913. {
  1914. frmf_initForm(obj); // 화면공통
  1915. lf_initDataSet();
  1916. lf_setinit();
  1917. grdf_initGrid(datagrid1);
  1918. }
  1919. // 검사실에 대한 장비 조화
  1920. function Div_search_combo2_onitemchanged(obj:Combo, e:ItemChangeEventInfo)
  1921. {
  1922. lf_setEqmtCd();
  1923. }
  1924. // 장비선택시 검사항목 팝업
  1925. function Div_search_combo3_onitemchanged(obj:Combo, e:ItemChangeEventInfo)
  1926. {
  1927. lf_testListSch()
  1928. }
  1929. // 검사항목팝업
  1930. function Div_search_btn_testListSch_onclick(obj:Button, e:ClickEventInfo)
  1931. {
  1932. if(Div_search.combo3.value == "00") //장비코드가 전체이면
  1933. {
  1934. sysf_messageBox("장비를", "C002","");
  1935. }
  1936. else
  1937. {
  1938. lf_testListSch(); //장비별 검사항목 팝업 뜨지롱
  1939. }
  1940. }
  1941. //레벨조회 팝업
  1942. function Div_search_button4_onclick(obj:Button, e:ClickEventInfo)
  1943. {
  1944. lf_testLevlSch();
  1945. }
  1946. // 조회
  1947. function Div_search_button1_onclick(obj:Button, e:ClickEventInfo)
  1948. {
  1949. var pos = datagrid1.hscrollbar.pos;
  1950. inff_clearTChart(object1);
  1951. //grdf_initGrid(datagrid1);
  1952. lf_getGrapeRsltList();
  1953. datagrid1.hscrollbar.pos = pos;
  1954. }
  1955. // 그리드 클릭 물질상세정보 조회
  1956. function datagrid1_oncellclick(obj:Grid, e:GridClickEventInfo)
  1957. {
  1958. if(Div_search.checkbox1.value == "Y") //연관장비 조회시 물질 상세정보 조회 false
  1959. {
  1960. return;
  1961. }
  1962. else
  1963. {
  1964. //trace("erow = " + e.row);
  1965. //trace("ecol = " + e.col);
  1966. lf_getMatrInfo(obj.getCellText(e.row,e.col), e.col);
  1967. }
  1968. }
  1969. // 확인내역조회
  1970. function button8_onclick(obj:Button, e:ClickEventInfo)
  1971. {
  1972. fCnfm();
  1973. }
  1974. // UM확인
  1975. function button5_onclick(obj:Button, e:ClickEventInfo)
  1976. {
  1977. fCnfm("1");
  1978. }
  1979. // 팀장확인
  1980. function button6_onclick(obj:Button, e:ClickEventInfo)
  1981. {
  1982. fCnfm("2");
  1983. }
  1984. // 전문의 확인
  1985. function button7_onclick(obj:Button, e:ClickEventInfo)
  1986. {
  1987. fCnfm("3");
  1988. }
  1989. // 조치사항코드 변경
  1990. function combo13_onitemchanged(obj:Combo, e:ItemChangeEventInfo)
  1991. {
  1992. lf_cntsSet("1");
  1993. }
  1994. // 조치사항 변경
  1995. function textarea1_ontextchanged(obj:TextArea, e:TextChangedEventInfo)
  1996. {
  1997. lf_cntsSet("2");
  1998. }
  1999. // 저장
  2000. function btn_save_onclick(obj:Button, e:ClickEventInfo)
  2001. {
  2002. lf_setSave();
  2003. }
  2004. // 초기화
  2005. function button10_onclick(obj:Button, e:ClickEventInfo)
  2006. {
  2007. lf_setinit();
  2008. }
  2009. // 그래프 라디오버튼 선택
  2010. function radio1_onitemchanged(obj:Radio, e:ItemChangeEventInfo)
  2011. {
  2012. if(ds_hidden_gref.getColumn(0, "grapegbn") == 1)
  2013. {
  2014. inff_clearTChart(object1);
  2015. object1.visible = true;
  2016. object2.visible = false;
  2017. //챠트 초기화
  2018. }
  2019. else
  2020. {
  2021. inff_clearTChart(object2);
  2022. object1.visible = false;
  2023. object2.visible = true;
  2024. }
  2025. }
  2026. // 그래프 버튼
  2027. function btn_grp_onclick(obj:Button, e:ClickEventInfo)
  2028. {
  2029. var count = 0;
  2030. for(var i = 0; i < ds_grid_grd_rsltlistRow.rowcount; i++)
  2031. {
  2032. if(ds_grid_grd_rsltlistRow.getColumn(i, "chk") == 1)
  2033. {
  2034. count++; //선택된 항목의 갯수
  2035. }
  2036. }
  2037. if(count == 0)
  2038. {
  2039. alert("그래프를 작성할 항목을 선택하세요");
  2040. return;
  2041. }
  2042. else
  2043. {
  2044. var grapflag = radio1.value;
  2045. var Obj_Chart;
  2046. if ( grapflag == 1 )
  2047. {
  2048. Obj_Chart = object1;
  2049. }
  2050. else
  2051. {
  2052. Obj_Chart = object2;
  2053. }
  2054. Obj_Chart.Tools.Clear();
  2055. Obj_Chart.Axis.RemoveAllCustom();
  2056. Obj_Chart.Axis.Left.StartPosition = 0;
  2057. inff_clearTChart(object1);
  2058. inff_clearTChart(object2);
  2059. if(grapflag == 1)
  2060. {
  2061. lf_initChartRegl(grapflag);
  2062. }
  2063. else
  2064. {
  2065. var grapflag = radio1.value;
  2066. lf_initChart(grapflag);
  2067. }
  2068. }
  2069. }
  2070. // 출력
  2071. function button2_onclick(obj:Button, e:ClickEventInfo)
  2072. {
  2073. lf_pritnt();
  2074. }
  2075. // 그래프 출력
  2076. function btn_grprnt_onclick(obj:Button, e:ClickEventInfo)
  2077. {
  2078. var Obj_Chart;
  2079. if(radio1.value == 1){
  2080. Obj_Chart = object1;
  2081. }else{
  2082. Obj_Chart = object2;
  2083. }
  2084. Obj_Chart.Tools.Clear();
  2085. Obj_Chart.Printer.MarginLeft = 5 //여백
  2086. Obj_Chart.Printer.MarginBottom = 25
  2087. Obj_Chart.Printer.MarginRight = 5
  2088. Obj_Chart.Printer.MarginTop = 25
  2089. Obj_Chart.Printer.ShowPreview(); //미리보기
  2090. }
  2091. //날짜 체크
  2092. function lf_chkDate(obj:Calendar, e:ChangeEventInfo)
  2093. {
  2094. if( utlf_diffDate(Div_search.ipt_hopesdd.value, Div_search.ipt_hopeedd.value) < 0 )
  2095. {
  2096. sysf_messageBox("시작일을 종료일보다 작게","C002");
  2097. Div_search.ipt_hopeedd.value = Div_search.ipt_hopesdd.value;
  2098. return;
  2099. }
  2100. }
  2101. function object2_OnClickSeries(obj:ActiveX, e)
  2102. {
  2103. //obj.tool
  2104. object2.Tools.Clear();
  2105. object2.Tools.Add(10);
  2106. object2.Tools.get_Items(0).asAnnotation.Text = object2.Series(e.SeriesIndex).get_PointLabel(e.ValueIndex);
  2107. }
  2108. function object1_OnClickSeries(obj:ActiveX, e)
  2109. {
  2110. object1.Tools.Clear();
  2111. object1.Tools.Add(10);
  2112. object1.Tools.get_Items(0).asAnnotation.Text = object1.Series(e.SeriesIndex).get_PointLabel(e.ValueIndex);
  2113. }
  2114. //고정해제
  2115. function Button00_onclick(obj:Button, e:ClickEventInfo)
  2116. {
  2117. if(ds_grid_grd_factcnts.rowcount != 0)
  2118. {
  2119. for(var l = datagrid1.getCellCount("Head"); l > 0; l--)
  2120. {
  2121. datagrid1.setFormatColProperty(l, "band", "body");
  2122. }
  2123. Button00.visible = false;
  2124. Button01.visible = true;
  2125. }
  2126. }
  2127. //고정
  2128. function Button01_onclick(obj:Button, e:ClickEventInfo)
  2129. {
  2130. for(var i =0; i < 15; i++)
  2131. {
  2132. datagrid1.setFormatColProperty(i, "band", "left");
  2133. }
  2134. Button00.visible = true;
  2135. Button01.visible = false;
  2136. }
  2137. ]]></Script>
  2138. </Form>
  2139. </FDL>