SMLQP00700_혈당기QC그래프조회.xfdl 59 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <FDL version="1.5">
  3. <TypeDefinition url="..\..\..\default_typedef.xml"/>
  4. <Form id="SMLQP00700" position="absolute 0 0 1201 786" titletext="New Form" oninit="SMLQP00700_oninit" onload="SMLQP00700_onload">
  5. <Layouts>
  6. <Layout>
  7. <Div id="group_info" anchor="left top right" taborder="14" visible="false" position="absolute 0 39 1195 197">
  8. <Layouts>
  9. <Layout>
  10. <Static id="caption13" text="QC물질 상세 정보" class="tit_2" position="absolute 0 76 133 97" anchor="default"/>
  11. <Shape id="line6" class="line_10" position="absolute 0 92 1194 98" anchor="left top right"/>
  12. <Static id="caption23" text="QC물질" class="cell_1" position="absolute 0 97 100 120" anchor="default"/>
  13. <Static id="caption24" text="레벨" class="cell_1" position="absolute 261 97 361 120" anchor="default"/>
  14. <Static id="caption25" text="LOT NO" class="cell_1" position="absolute 522 97 622 120" anchor="default"/>
  15. <Static id="caption26" text="제조회사" class="cell_1" position="absolute 0 121 100 144" anchor="default"/>
  16. <Static id="caption27" text="적용률" class="cell_1" position="absolute 261 121 361 144" anchor="default"/>
  17. <Static id="caption28" text="룰" class="cell_1" position="absolute 522 121 622 144" anchor="default"/>
  18. <Static id="caption29" text="조치사항 코드" class="cell_1" position="absolute 783 97 883 121" anchor="default"/>
  19. <Static id="caption1" text="조치사항" class="cell_1" position="absolute 783 122 883 146" anchor="default"/>
  20. <TextArea id="textarea1" taborder="1" position="absolute 885 123 1193 145" anchor="default" ontextchanged="group_info_textarea1_ontextchanged"/>
  21. <Combo id="combo13" taborder="2" innerdataset="@ds_init_lb0703" codecolumn="cd" datacolumn="nm" class="combo_search" position="absolute 885 98 1193 120" anchor="default" onitemchanged="group_info_combo13_onitemchanged"/>
  22. <Shape id="line5" linetype="vertical" class="line_2" position="absolute 0 146 780 152" anchor="default"/>
  23. <Edit id="output1" taborder="3" readonly="true" position="absolute 103 98 258 117" anchor="default"/>
  24. <Edit id="output2" taborder="4" readonly="true" position="absolute 364 98 519 117" anchor="default"/>
  25. <Edit id="output3" taborder="5" readonly="true" position="absolute 625 99 780 118" anchor="default"/>
  26. <Edit id="output4" taborder="6" readonly="true" position="absolute 103 122 258 141" anchor="default"/>
  27. <Edit id="output5" taborder="7" readonly="true" position="absolute 364 122 519 141" anchor="default"/>
  28. <Edit id="output6" taborder="8" readonly="true" position="absolute 625 122 780 141" anchor="default"/>
  29. <Shape id="line1" class="line_3" position="absolute 0 145 1194 151" anchor="left top right"/>
  30. </Layout>
  31. </Layouts>
  32. </Div>
  33. <Static id="caption6" text="혈당기 QC 그래프조회" class="tit_1" position="absolute 0 0 218 23"/>
  34. <Shape id="line32" class="line_6" position="absolute 0 45 1194 51" anchor="left top right"/>
  35. <Button id="btn_sighsave" taborder="1" text="인증저장" class="btn4" visible="false" position="absolute 987 24 1067 46" anchor="top right"/>
  36. <Button id="btn_save" taborder="2" text="저장" class="btn4" visible="false" position="absolute 1069 24 1125 46" anchor="top right"/>
  37. <Button id="button10" taborder="3" text="초기화" class="btn4" position="absolute 1127 24 1195 46" anchor="top right" onclick="button10_onclick"/>
  38. <Button id="button2" taborder="4" text="출력" class="btn6" position="absolute 0 24 56 46"/>
  39. <Static id="caption30" text="QC물질 검사정보" class="tit_2" position="absolute 0 115 127 136"/>
  40. <Grid id="datagrid1" class="datagrid2" taborder="5" binddataset="ds_main_rsltlist_row" useinputpanel="false" cellsizingtype="col" position="absolute 0 136 1194 366" anchor="left top right">
  41. <Formats>
  42. <Format id="default">
  43. <Columns/>
  44. <Band id="head"/>
  45. <Band id="body"/>
  46. </Format>
  47. </Formats>
  48. </Grid>
  49. <Static id="caption31" text="QC물질별 그래프" class="tit_2" position="absolute 0 378 125 399"/>
  50. <Shape id="line8" class="line_10" position="absolute 0 394 1194 400" anchor="left top right"/>
  51. <Shape id="line9" class="line_3" position="absolute 0 771 1194 777" anchor="left right bottom"/>
  52. <Radio id="radio1" taborder="6" codecolumn="codecolumn" datacolumn="datacolumn" position="absolute 135 376 551 397" columncount="-1" rowcount="-1" onitemchanged="radio1_onitemchanged">
  53. <Dataset id="innerdataset">
  54. <ColumnInfo>
  55. <Column id="codecolumn"/>
  56. <Column id="datacolumn"/>
  57. </ColumnInfo>
  58. <Rows>
  59. <Row>
  60. <Col id="codecolumn">1</Col>
  61. <Col id="datacolumn">정규화그래프</Col>
  62. </Row>
  63. <Row>
  64. <Col id="codecolumn">3</Col>
  65. <Col id="datacolumn">실측값 그래프 Mean/SD</Col>
  66. </Row>
  67. <Row>
  68. <Col id="codecolumn">2</Col>
  69. <Col id="datacolumn">실측값그래프 Low/High</Col>
  70. </Row>
  71. </Rows>
  72. </Dataset>
  73. </Radio>
  74. <Button id="btn_grp" taborder="7" text="그래프" class="btn2" position="absolute 541 375 594 394" onclick="btn_grp_onclick"/>
  75. <Button id="btn_grprnt" taborder="8" text="출력" class="btn6" visible="false" position="absolute 597 375 647 394" onclick="btn_grprnt_onclick"/>
  76. <Div id="group4" anchor="left top right" taborder="9" class="div_SA" position="absolute 0 49 1195 110">
  77. <Layouts>
  78. <Layout>
  79. <Calendar id="input7" taborder="1" class="input_search" position="absolute 215 8 305 27" autoselect="true" autoskip="true" dateformat="yyyy-MM-dd" value="null"/>
  80. <Static id="caption20" text="검사실 :" class="search_name" position="absolute 390 9 484 26"/>
  81. <Static id="caption21" text="장비 :" class="search_name" position="absolute 745 9 839 26"/>
  82. <Static id="caption22" text="LOT NO :" class="search_name" position="absolute 745 35 839 52"/>
  83. <Combo id="combo2" taborder="2" innerdataset="@ds_init_lb0705" codecolumn="cd" datacolumn="nm" class="combo_search" position="absolute 470 8 670 27" onitemchanged="group4_combo2_onitemchanged"/>
  84. <Combo id="combo3" taborder="3" innerdataset="@ds_init_lb0706" codecolumn="cd" datacolumn="nm" class="combo_search" position="absolute 835 8 1035 27"/>
  85. <Static id="caption14" text="레 벨 :" class="search_name" position="absolute 390 35 465 52"/>
  86. <Static id="caption15" text="~" class="search_no_b" position="absolute 199 9 214 26"/>
  87. <Static id="caption17" text="접수일자 :" class="search_name" position="absolute 15 9 109 26"/>
  88. <Calendar id="input6" taborder="4" class="input_search" position="absolute 105 8 195 27" autoselect="true" autoskip="true" dateformat="yyyy-MM-dd"/>
  89. <Combo id="cbo_levlCd" taborder="5" codecolumn="codecolumn" datacolumn="datacolumn" class="combo_search" position="absolute 470 32 670 51">
  90. <Dataset id="innerdataset">
  91. <ColumnInfo>
  92. <Column id="codecolumn"/>
  93. <Column id="datacolumn"/>
  94. </ColumnInfo>
  95. <Rows>
  96. <Row>
  97. <Col id="codecolumn">00</Col>
  98. <Col id="datacolumn">-전체-</Col>
  99. </Row>
  100. <Row>
  101. <Col id="codecolumn">04</Col>
  102. <Col id="datacolumn">Low</Col>
  103. </Row>
  104. <Row>
  105. <Col id="codecolumn">05</Col>
  106. <Col id="datacolumn">High</Col>
  107. </Row>
  108. </Rows>
  109. </Dataset>
  110. </Combo>
  111. <Button id="button1" taborder="6" text="조회" class="btn1" position="absolute 1119 34 1175 56" anchor="top right" onclick="group4_button1_onclick"/>
  112. <Shape id="line2" linetype="vertical" class="line_4" position="absolute 1106 35 1112 57" anchor="top right"/>
  113. <Combo id="combo1" taborder="7" innerdataset="@ds_init_lb0707" codecolumn="cd" datacolumn="nm" class="combo_search" position="absolute 835 33 1035 52"/>
  114. </Layout>
  115. </Layouts>
  116. </Div>
  117. <Tab id="switch1" anchor="all" taborder="10" tabindex="0" class="tab_Normal" position="absolute 0 399 1190 769">
  118. <Tabpages>
  119. <Tabpage id="case1">
  120. <Layouts>
  121. <Layout>
  122. <ActiveX id="object1" position="absolute 0 1 1184 353" progid="{fab9b41c-87d6-474d-ab7e-f07d78f2422e}" useautobitmapcache="1" anchor="all" taborder="0"/>
  123. </Layout>
  124. </Layouts>
  125. </Tabpage>
  126. <Tabpage id="case2">
  127. <Layouts>
  128. <Layout>
  129. <ActiveX id="object2" position="absolute 0 0 1184 352" progid="{fab9b41c-87d6-474d-ab7e-f07d78f2422e}" useautobitmapcache="1" anchor="all" taborder="0"/>
  130. </Layout>
  131. </Layouts>
  132. </Tabpage>
  133. <Tabpage id="case3"/>
  134. </Tabpages>
  135. </Tab>
  136. <Grid id="datagrid2" class="datagrid2" taborder="11" binddataset="ds_hidden_temp_factcnts" useinputpanel="false" cellsizingtype="col" visible="false" position="absolute 500 212 1194 369">
  137. <Formats>
  138. <Format id="default">
  139. <Columns>
  140. <Column size="22"/>
  141. <Column size="250"/>
  142. <Column size="80"/>
  143. <Column size="100"/>
  144. <Column size="80"/>
  145. <Column size="70"/>
  146. <Column size="80"/>
  147. <Column size="100"/>
  148. </Columns>
  149. <Rows>
  150. <Row size="24" band="head"/>
  151. <Row size="24"/>
  152. </Rows>
  153. <Band id="head">
  154. <Cell/>
  155. <Cell col="1" text="finddata"/>
  156. <Cell col="2" text="bcno"/>
  157. <Cell col="3" text="물질코드"/>
  158. <Cell col="4" text="검사코드"/>
  159. <Cell col="5" text="레벨코드"/>
  160. <Cell col="6" text="사유코드"/>
  161. <Cell col="7" text="사유"/>
  162. </Band>
  163. <Band id="body">
  164. <Cell celltype="head"/>
  165. <Cell col="1" text="bind:finddata"/>
  166. <Cell col="2" text="bind:bcno"/>
  167. <Cell col="3" text="bind:matrcd"/>
  168. <Cell col="4" text="bind:testcd"/>
  169. <Cell col="5" text="bind:levlcd"/>
  170. <Cell col="6" text="bind:measfactcd"/>
  171. <Cell col="7" text="bind:measfactcnts"/>
  172. </Band>
  173. </Format>
  174. </Formats>
  175. </Grid>
  176. <Grid id="datagrid3" class="datagrid2" taborder="12" binddataset="ds_hidden_temp_toddlist" useinputpanel="false" visible="false" position="absolute 230 212 502 369">
  177. <Formats>
  178. <Format id="default">
  179. <Columns>
  180. <Column size="26"/>
  181. <Column size="50"/>
  182. <Column size="100"/>
  183. <Column size="100"/>
  184. </Columns>
  185. <Rows>
  186. <Row size="27" band="head"/>
  187. <Row size="24"/>
  188. </Rows>
  189. <Band id="head">
  190. <Cell/>
  191. <Cell col="1" text="matrkind&#13;&#10;cd"/>
  192. <Cell col="2" text=" toddlist"/>
  193. <Cell col="3" text="fromddlist"/>
  194. </Band>
  195. <Band id="body">
  196. <Cell celltype="head"/>
  197. <Cell col="1" text="bind:matrkindcd"/>
  198. <Cell col="2" text="bind:toddlist"/>
  199. <Cell col="3" text="bind:fromddlist"/>
  200. </Band>
  201. </Format>
  202. </Formats>
  203. </Grid>
  204. <ImageViewer id="img1" taborder="13" visible="false" position="absolute 350 114 495 224"/>
  205. </Layout>
  206. </Layouts>
  207. <Objects>
  208. <Dataset id="ds_hidden_ref" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  209. <ColumnInfo>
  210. <Column id="acptfromdd" type="STRING" size="256"/>
  211. <Column id="acpttodd" type="STRING" size="256"/>
  212. <Column id="testroom" type="STRING" size="256"/>
  213. <Column id="eqmtcd" type="STRING" size="256"/>
  214. <Column id="levlcd" type="STRING" size="256"/>
  215. <Column id="lotno" type="STRING" size="256"/>
  216. <Column id="releqmtyn" type="STRING" size="256"/>
  217. </ColumnInfo>
  218. <Rows>
  219. <Row>
  220. <Col id="acptfromdd"/>
  221. <Col id="acpttodd"/>
  222. <Col id="testroom">00</Col>
  223. <Col id="eqmtcd">-전체-</Col>
  224. <Col id="levlcd">00</Col>
  225. <Col id="lotno">00</Col>
  226. <Col id="releqmtyn"/>
  227. </Row>
  228. </Rows>
  229. </Dataset>
  230. <Dataset id="ds_init_lb0707" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  231. <ColumnInfo>
  232. <Column id="cd" type="STRING" size="256"/>
  233. <Column id="nm" type="STRING" size="256"/>
  234. </ColumnInfo>
  235. </Dataset>
  236. <Dataset id="ds_init_lb0706" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  237. <ColumnInfo>
  238. <Column id="cd" type="STRING" size="256"/>
  239. <Column id="nm" type="STRING" size="256"/>
  240. </ColumnInfo>
  241. </Dataset>
  242. <Dataset id="ds_init_lb0705" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  243. <ColumnInfo>
  244. <Column id="cd" type="STRING" size="256"/>
  245. <Column id="nm" type="STRING" size="256"/>
  246. </ColumnInfo>
  247. </Dataset>
  248. <Dataset id="ds_main_matrinfo" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false" oncolumnchanged="ds_main_matrinfo_oncolumnchanged">
  249. <ColumnInfo>
  250. <Column id="matrnm" type="STRING" size="256"/>
  251. <Column id="levlnm" type="STRING" size="256"/>
  252. <Column id="lotno" type="STRING" size="256"/>
  253. <Column id="prodcmpy" type="STRING" size="256"/>
  254. <Column id="wgmrscop" type="STRING" size="256"/>
  255. <Column id="wgmrstat" type="STRING" size="256"/>
  256. <Column id="measfactcnts" type="STRING" size="256"/>
  257. <Column id="measfactcd" type="STRING" size="256"/>
  258. </ColumnInfo>
  259. <Rows>
  260. <Row>
  261. <Col id="matrnm"/>
  262. <Col id="levlnm"/>
  263. <Col id="lotno"/>
  264. <Col id="prodcmpy"/>
  265. <Col id="wgmrscop"/>
  266. <Col id="wgmrstat"/>
  267. <Col id="measfactcnts"/>
  268. <Col id="measfactcd"/>
  269. </Row>
  270. </Rows>
  271. </Dataset>
  272. <Dataset id="ds_init_lb0703" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  273. <ColumnInfo>
  274. <Column id="cd" type="STRING" size="256"/>
  275. <Column id="nm" type="STRING" size="256"/>
  276. </ColumnInfo>
  277. </Dataset>
  278. <Dataset id="ds_main_rsltlist_row" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false"/>
  279. <Dataset id="ds_hidden_temp_toddlist" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  280. <ColumnInfo>
  281. <Column id="toddlist" type="STRING" size="256" sumtext="종료질자"/>
  282. <Column id="fromddlist" type="STRING" size="256" sumtext="종료질자"/>
  283. <Column id="matrkindcd" type="STRING" size="256" sumtext="종류"/>
  284. </ColumnInfo>
  285. </Dataset>
  286. <Dataset id="ds_hidden_temp_factcnts" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false"/>
  287. <Dataset id="ds_hidden_gref" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  288. <ColumnInfo>
  289. <Column id="grapegbn" type="STRING" size="256"/>
  290. <Column id="img" type="STRING" size="256"/>
  291. <Column id="factcnts" type="STRING" size="256"/>
  292. <Column id="testinfo" type="STRING" size="256"/>
  293. <Column id="yn" type="STRING" size="256"/>
  294. </ColumnInfo>
  295. <Rows>
  296. <Row>
  297. <Col id="grapegbn">1</Col>
  298. <Col id="img"/>
  299. <Col id="factcnts"/>
  300. <Col id="testinfo"/>
  301. <Col id="yn"/>
  302. </Row>
  303. </Rows>
  304. </Dataset>
  305. <Dataset id="ds_hidden_temp_rsltlist_header" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false"/>
  306. <Dataset id="ds_send" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  307. <ColumnInfo>
  308. <Column id="codeflag" type="STRING" size="256"/>
  309. <Column id="basecdid" type="STRING" size="256"/>
  310. <Column id="data1" type="STRING" size="256"/>
  311. <Column id="levlcd" type="STRING" size="256"/>
  312. <Column id="factcntlist" type="STRING" size="256"/>
  313. <Column id="deptflag" type="STRING" size="256"/>
  314. <Column id="signdata" type="STRING" size="256"/>
  315. <Column id="page" type="STRING" size="256"/>
  316. </ColumnInfo>
  317. <Rows>
  318. <Row>
  319. <Col id="codeflag"/>
  320. <Col id="basecdid"/>
  321. <Col id="data1"/>
  322. <Col id="levlcd"/>
  323. <Col id="factcntlist"/>
  324. <Col id="deptflag"/>
  325. <Col id="signdata"/>
  326. <Col id="page"/>
  327. </Row>
  328. </Rows>
  329. </Dataset>
  330. </Objects>
  331. <Bind>
  332. <BindItem id="item0" compid="group4.input6" propid="value" datasetid="ds_hidden_ref" columnid="acptfromdd"/>
  333. <BindItem id="item1" compid="group4.input7" propid="value" datasetid="ds_hidden_ref" columnid="acpttodd"/>
  334. <BindItem id="item2" compid="group4.combo2" propid="value" datasetid="ds_hidden_ref" columnid="testroom"/>
  335. <BindItem id="item3" compid="group4.combo3" propid="value" datasetid="ds_hidden_ref" columnid="eqmtcd"/>
  336. <BindItem id="item4" compid="group4.cbo_levlCd" propid="value" datasetid="ds_hidden_ref" columnid="levlcd"/>
  337. <BindItem id="item5" compid="group4.combo1" propid="value" datasetid="ds_hidden_ref" columnid="lotno"/>
  338. <BindItem id="item6" compid="group_info.output1" propid="value" datasetid="ds_main_matrinfo" columnid=""/>
  339. <BindItem id="item7" compid="group_info.output4" propid="value" datasetid="ds_main_matrinfo" columnid="prodcmpy"/>
  340. <BindItem id="item8" compid="group_info.output5" propid="value" datasetid="ds_main_matrinfo" columnid="wgmrscop"/>
  341. <BindItem id="item9" compid="group_info.output2" propid="value" datasetid="ds_main_matrinfo" columnid="levlnm"/>
  342. <BindItem id="item10" compid="group_info.output3" propid="value" datasetid="ds_main_matrinfo" columnid="lotno"/>
  343. <BindItem id="item11" compid="group_info.output6" propid="value" datasetid="ds_main_matrinfo" columnid="wgmrstat"/>
  344. <BindItem id="item12" compid="group_info.textarea1" propid="value" datasetid="ds_main_matrinfo" columnid="measfactcnts"/>
  345. <BindItem id="item13" compid="group_info.combo13" propid="value" datasetid="ds_main_matrinfo" columnid="measfactcd"/>
  346. <BindItem id="item14" compid="radio1" propid="value" datasetid="ds_hidden_gref" columnid="grapegbn"/>
  347. <BindItem id="item15" compid="img1" propid="image" datasetid="ds_hidden_gref" columnid="img"/>
  348. </Bind>
  349. <Script type="xscript4.0"><![CDATA[/***************************************************************************************
  350. * System Name :
  351. * Job Name :
  352. * Creator :
  353. * Make Date : 2015-05-01
  354. * Description :
  355. *---------------------------------------------------------------------------------------
  356. * Modify Date Modifier Modify Description
  357. *---------------------------------------------------------------------------------------
  358. * 2015-05-01 Live Converter TF->XP
  359. *
  360. *---------------------------------------------------------------------------------------
  361. ****************************************************************************************/
  362. include "com_commonxp::comm_main.xjs";
  363. include "lis_commonxp::LLZ001.xjs";
  364. function SMLQP00700_oninit(obj:Form, e:InitEventInfo)
  365. {
  366. frmf_initForm(obj);
  367. }
  368. function SMLQP00700_onload(obj:Form, e:LoadEventInfo)
  369. {
  370. grdf_initGrid(datagrid1);
  371. grdf_setRowTypeIcon(datagrid3, 0);
  372. grdf_setRowTypeIcon(datagrid2, 0);
  373. fSetinit();
  374. }
  375. var vCol = 15;
  376. function fSetinit()
  377. {
  378. var fromdate = utlf_getCurrentDate().toDate("YYYYMMDD").getAddDate(-30)
  379. ds_hidden_ref.setColumn(0, "acptfromdd", fromdate.getDateFormat("YYYYMMDD"));
  380. ds_hidden_ref.setColumn(0, "acpttodd", utlf_getCurrentDate());
  381. lf_getDbDeptcd("0705|0706|0703|0707|", "");
  382. }
  383. function group4_combo2_onitemchanged(obj:Combo, e:ItemChangeEventInfo)
  384. {
  385. fSetEqmtCd();
  386. }
  387. function fSetEqmtCd()
  388. {
  389. var vDept = group4.combo2.value;
  390. ds_init_lb0706.filterstr = "etc01 == '"+vDept+"'||cd == '-전체-'";
  391. }
  392. function group4_button1_onclick(obj:Button, e:ClickEventInfo)
  393. {
  394. inff_clearTChart(switch1.case1.object1);
  395. fGetGrapeRsltList();
  396. }
  397. function fGetGrapeRsltList()
  398. {
  399. ds_hidden_temp_factcnts.clearData();
  400. fSetGrdInit();// 그리드 컬럼 초기화
  401. var eqmtcd = ds_hidden_ref.getColumn(0, "eqmtcd");
  402. var testroom = ds_hidden_ref.getColumn(0, "testroom");
  403. if((eqmtcd == "-전체-") && (testroom == "00" ))
  404. {
  405. sysf_messageBox("장비나 검사실을", "C002","");
  406. return;
  407. }
  408. var oParam = {};
  409. oParam.id = "TRLQP00701";
  410. oParam.service = "grademngtprintapp.QCRsltReference";
  411. oParam.method = "reqGetSureGrapeRslt";
  412. oParam.inds = "cond=ds_hidden_ref";
  413. oParam.outds = "ds_main_rsltlist_row=row ds_hidden_temp_rsltlist_header=header ds_hidden_temp_factcnts=rowdata";
  414. oParam.async = false;
  415. //oParam.callback = "cf_TRLQP00701";
  416. tranf_submit(oParam);
  417. var gridCaption = ds_hidden_temp_rsltlist_header.getColumn(0, "caption");
  418. if(utlf_isNull(gridCaption))
  419. {
  420. return;
  421. }
  422. var gridColRef = ds_hidden_temp_rsltlist_header.getColumn(0, "colref");
  423. var gridColRefArray = gridColRef.split("^");
  424. var gridColType = ds_hidden_temp_rsltlist_header.getColumn(0, "type");
  425. var gridColTypeArray = gridColType.split("^");
  426. for( var i = 0; i < gridColRefArray.length; i++ )
  427. {
  428. datagrid1.appendContentsCol();
  429. datagrid1.setCellProperty("Head", i, "text", gridColRefArray[i]);
  430. }
  431. for(var i = 1; i < datagrid1.getCellCount("head"); i++ )
  432. {
  433. if(i == 1)
  434. {
  435. datagrid1.setFormatColProperty(i, "size", 25);
  436. }
  437. else if( i == 2)
  438. {
  439. datagrid1.setFormatColProperty(i, "size", 100);
  440. }
  441. else if( i == vCol-11)
  442. {
  443. datagrid1.setFormatColProperty(i, "size", 120);
  444. }
  445. else if( i < vCol)
  446. {
  447. datagrid1.setFormatColProperty(i, "size", 60);
  448. }
  449. else
  450. {
  451. datagrid1.setFormatColProperty(i, "size", 75);
  452. }
  453. }
  454. datagrid1.setFormatRowProperty(-1, size, 30)
  455. datagrid1.setFormatColProperty(vCol-3, "size", 0);
  456. datagrid1.setFormatColProperty(vCol-3, "size", 0);
  457. datagrid1.setFormatColProperty(vCol-3, "size", 0);
  458. for(var i = 0; i < ds_main_rsltlist_row.rowcount; i++)
  459. {
  460. for(var j = vCol; j < datagrid1.getCellCount("head"); j++)
  461. {
  462. if(ds_main_rsltlist_row.getColumn(i, j).indexOf("X") != -1)
  463. {
  464. //datagrid1.cellStyle("background-color", i , j) = "#99cf16";
  465. }
  466. }
  467. }
  468. }
  469. function fSetGrdInit()
  470. {
  471. ds_main_rsltlist_row.clearData();
  472. var cols = datagrid1.getCellCount("Head");
  473. var rows = ds_main_rsltlist_row.rowcount;
  474. for( var i = 0; i < cols; i++ )
  475. {
  476. datagrid1.deleteContentsCol(i);
  477. }
  478. for( var i = 0; i < rows; i++ )
  479. {
  480. ds_main_rsltlist_row.deleteRow(i);
  481. }
  482. }
  483. function group_info_combo13_onitemchanged(obj:Combo, e:ItemChangeEventInfo)
  484. {
  485. fCntsSet(ds_main_rsltlist_row.rowposition, datagrid1.currentcol, 1);
  486. }
  487. function ds_main_matrinfo_oncolumnchanged(obj:Dataset, e:DSColChangeEventInfo)
  488. {
  489. if(e.columnid == "measfactcnts")
  490. {
  491. fCntsSet(ds_main_rsltlist_row.rowposition, datagrid1.currentcol, 1);
  492. }
  493. }
  494. function radio1_onitemchanged(obj:Radio, e:ItemChangeEventInfo)
  495. {
  496. if(radio1.value == 1)
  497. {
  498. switch1.tabindex = 0;
  499. inff_clearTChart(switch1.case1.object1);
  500. }
  501. else
  502. {
  503. switch1.tabindex = 1;
  504. inff_clearTChart(switch1.case2.object2);
  505. }
  506. }
  507. function btn_grp_onclick(obj:Button, e:ClickEventInfo)
  508. {
  509. var count = ds_main_rsltlist_row.getCaseCount("chk == 'true'");
  510. if(count == 0)
  511. {
  512. alert("그래프를 작성할 항목을 선택하세요");
  513. return;
  514. }
  515. else
  516. {
  517. var grapflag = ds_hidden_gref.getColumn(0, "grapegbn");
  518. var Obj_Chart;
  519. if ( grapflag == 1 )
  520. {
  521. Obj_Chart = switch1.case1.object1;
  522. }
  523. else
  524. {
  525. Obj_Chart = switch1.case2.object2;
  526. }
  527. Obj_Chart.Tools.Clear();
  528. Obj_Chart.Axis.RemoveAllCustom();
  529. Obj_Chart.Axis.Left.StartPosition = 0;
  530. clearTChart(switch1.case1.object1); //챠트 초기화
  531. clearTChart(switch1.case2.object2); //챠트 초기화
  532. if(grapflag == 1)
  533. {
  534. fInitChartRegl(grapflag);
  535. }
  536. else
  537. {
  538. var grapflag = model.getValue("/root/hidden/gref/grapegbn");
  539. fInitChart(grapflag);
  540. }
  541. }
  542. }
  543. function fInitChartRegl(sGrapFlag)
  544. {
  545. var Obj_Chart = switch1.case1.object1;
  546. var count = ds_main_rsltlist_row.getCaseCount("chk == 'true'");
  547. if(count == 0)
  548. {
  549. alert("그래프를 작성할 항목을 선택하세요");
  550. return;
  551. }
  552. else if(count ==1)
  553. {
  554. var vEnd = -1;
  555. var chkrow = ds_main_rsltlist_row.findRow("chk", "true");
  556. for(var i = vCol; i < datagrid1.getCellCount("Head"); i++)
  557. {
  558. var x = ds_main_rsltlist_row.getColumn(chkrow, i);
  559. if(!utlf_isNull(x))
  560. {
  561. vEnd += 1; //결과 값이 있다면 1씩 더해
  562. }
  563. }
  564. }
  565. else
  566. {
  567. var vEnd = datagrid1.cols - (vCol+1); //끝 좌표
  568. }
  569. Obj_Chart.Aspect.View3D = 0; // 2d 로 표현하기
  570. Obj_Chart.Zoom.Enable = false; // zoom 사용하지 않기
  571. Obj_Chart.Scroll.Enable = 2;
  572. Obj_Chart.Environment.MouseWheelScroll = false;
  573. Obj_Chart.Legend.Visible = false; // 그래프 참조 박스 띄우지 않기
  574. Obj_Chart.Panel.Gradient.Visible = true; // 페널에 그라디언트 적용
  575. Obj_Chart.Panel.Gradient.StartColor = 0xffffff;
  576. Obj_Chart.Panel.Gradient.EndColor=0xffffff;
  577. Obj_Chart.Legend.Visible = true; //범례표시 여부
  578. Obj_Chart.Legend.Alignment = 3; // Legend 위치 설정 :: 0 = left | 1 = right | 2 = top| 3 = bottom
  579. Obj_Chart.Legend.CheckBoxes = false; //범례 체크박스
  580. Obj_Chart.RemoveAllSeries();
  581. Obj_Chart.Axis.RemoveAllCustom();
  582. //margin 값 정하기
  583. Obj_Chart.Panel.MarginTop = 5;
  584. Obj_Chart.Panel.MarginLeft = 2;
  585. Obj_Chart.Panel.MarginRight = 0;
  586. Obj_Chart.Panel.MarginBottom = 2;
  587. Obj_Chart.Header.Visible = false; //헤더 타이틀 보이지 않기
  588. Obj_Chart.Axis.Left.Labels.Style = 2;
  589. Obj_Chart.Axis.Right.Labels.Style = 1;
  590. Obj_Chart.Axis.Bottom.Labels.Style = 0; // 0:auto or value, 1:No, 2 :민 맥스, 3: marks style, 4:text
  591. Obj_Chart.Axis.Bottom.Labels.Angle = 90; //90도 돌려서 라벨 표시
  592. Obj_Chart.Axis.Bottom.Labels.Size = 95; //하단 라벨의 사이즈 조치사항 추가하면서 자동으로 늘어나서 추가함
  593. Obj_Chart.Axis.Left.Title.Caption = "Fixed SD";
  594. Obj_Chart.Axis.Left.Automatic = false;
  595. Obj_Chart.Axis.Left.Maximum = 3.5;
  596. Obj_Chart.Axis.Left.Minimum = -3.5;
  597. Obj_Chart.Axis.Left.Increment = 1;
  598. //Avg 라인
  599. Obj_Chart.AddSeries(0); //asLine
  600. Obj_Chart.Series(0).asLine.LinePen.Width = 2;
  601. Obj_Chart.Series(0).Color = 0x000000;
  602. Obj_Chart.Series(0).AddXY (0 , 0 , "", Obj_Chart.Series(0).Color );
  603. Obj_Chart.Series(0).AddXY (vEnd , 0 , "", Obj_Chart.Series(0).Color );
  604. //+1SD 라인
  605. Obj_Chart.AddSeries(0); //asLine
  606. Obj_Chart.Series(1).asLine.LinePen.Width = 1;
  607. Obj_Chart.Series(1).Color = 0x000000;
  608. Obj_Chart.Series(1).AddXY (0 , 1 , "", Obj_Chart.Series(1).Color );
  609. Obj_Chart.Series(1).AddXY (vEnd , 1 , "", Obj_Chart.Series(1).Color );
  610. //-1SD 라인
  611. Obj_Chart.AddSeries(0); //asLine
  612. Obj_Chart.Series(2).asLine.LinePen.Width = 1;
  613. Obj_Chart.Series(2).Color = 0x000000;
  614. Obj_Chart.Series(2).AddXY (0 , -1 , "", Obj_Chart.Series(2).Color );
  615. Obj_Chart.Series(2).AddXY (vEnd , -1 , "", Obj_Chart.Series(2).Color );
  616. //+2SD 라인
  617. Obj_Chart.AddSeries(0); //asLine
  618. Obj_Chart.Series(3).asLine.LinePen.Width = 2;
  619. Obj_Chart.Series(3).Color = 0x00ccff;
  620. Obj_Chart.Series(3).AddXY (0 , 2 , "", Obj_Chart.Series(3).Color );
  621. Obj_Chart.Series(3).AddXY (vEnd , 2 , "", Obj_Chart.Series(3).Color );
  622. //-2SD 라인
  623. Obj_Chart.AddSeries(0); //asLine
  624. Obj_Chart.Series(4).asLine.LinePen.Width = 2;
  625. Obj_Chart.Series(4).Color = 0x00ccff;
  626. Obj_Chart.Series(4).AddXY (0 , -2 , "", Obj_Chart.Series(4).Color );
  627. Obj_Chart.Series(4).AddXY (vEnd , -2 , "", Obj_Chart.Series(4).Color );
  628. //+3SD 라인
  629. Obj_Chart.AddSeries(0); //asLine
  630. Obj_Chart.Series(5).asLine.LinePen.Width = 2;
  631. Obj_Chart.Series(5).Color = 0x0000ee;
  632. Obj_Chart.Series(5).AddXY (0 , 3 , "", Obj_Chart.Series(5).Color );
  633. Obj_Chart.Series(5).AddXY (vEnd , 3 , "", Obj_Chart.Series(5).Color );
  634. //-3SD 라인
  635. Obj_Chart.AddSeries(0); //asLine
  636. Obj_Chart.Series(6).asLine.LinePen.Width = 2;
  637. Obj_Chart.Series(6).Color = 0x0000ee;
  638. Obj_Chart.Series(6).AddXY (0 , -3 , "", Obj_Chart.Series(6).Color );
  639. Obj_Chart.Series(6).AddXY (vEnd , -3 , "", Obj_Chart.Series(6).Color );
  640. //날짜 10번째 시리즈
  641. Obj_Chart.AddSeries(0); //asLine
  642. Obj_Chart.Series(7).Color = 0x000000;
  643. Obj_Chart.Series(7).asLine.LinePen.Width = 1; //펜 두께
  644. Obj_Chart.Series(7).asLine.Pointer.Visible = false; //값에 대한 포인터
  645. for(i=0; i <= 7 ; i++)
  646. { //라인들에 대한 범례 보이지 않게
  647. Obj_Chart.Series(i).ShowInLegend = false;
  648. }
  649. fMakeChartRegl(); //정규화 챠트 그리기
  650. }
  651. function fMakeChartRegl()
  652. {
  653. var Obj_Chart = switch1.case1.object1;
  654. var vAvg, vSD, v4SDH, v4SDL, v3SDH, v3SDL, v2SDH, v2SDL, v1SDH, v1SDL, y, cap, tmpY, vTitle, vLotNo, vLevlNm, vRslt, vEqmtCd;
  655. var vTestCd, vMatrCd, vLevlCd, vDate, vFindData, vFact; //조치사항을 찾기 위한 변수들
  656. var Rnd1, Rnd2, Rnd3, cColor, vCnt;
  657. var count = ds_main_rsltlist_row.getCaseCount("chk == 'true'");
  658. if( count == 1)
  659. {
  660. var chkrow = ds_main_rsltlist_row.findRow("chk", "true");
  661. var xx = 0;
  662. vCnt = Obj_Chart.SeriesCount ; //생성된 시리즈 갯수
  663. vTitle = ds_main_rsltlist_row.getColumn(chkrow, "testnm");
  664. vAvg = parseFloat(ds_main_rsltlist_row.getColumn(chkrow, "avg"));
  665. vSD = parseFloat(ds_main_rsltlist_row.getColumn(chkrow, "sdval"));
  666. vLotNo = ds_main_rsltlist_row.getColumn(chkrow, "lotno");
  667. vLevlNm = ds_main_rsltlist_row.getColumn(chkrow, "levlnm");
  668. vEqmtCd = ds_main_rsltlist_row.getColumn(chkrow, "eqmtcd");
  669. vTestCd = ds_main_rsltlist_row.getColumn(chkrow, "testcd");
  670. vMatrCd = ds_main_rsltlist_row.getColumn(chkrow, "matrcd");
  671. vLevlCd = ds_main_rsltlist_row.getColumn(chkrow, "levlcd");
  672. v3SDH = vAvg+vSD*3;
  673. v3SDL = vAvg-vSD*3;
  674. v2SDH = vAvg+vSD*2;
  675. v2SDL = vAvg-vSD*2;
  676. v1SDH = vAvg+vSD*1;
  677. v1SDL = vAvg-vSD*1;
  678. Rnd1 = Math.random();
  679. Rnd2 = Math.random();
  680. Rnd3 = Math.random();
  681. cColor = window.rgb( (255 - 1) * Rnd1 + 1, (255 - 1) * Rnd2 + 1 , (255 - 1) * Rnd3 + 1);
  682. Obj_Chart.AddSeries(37); //asHorizLine
  683. Obj_Chart.Series(vCnt).Color = cColor;
  684. Obj_Chart.Series(vCnt).asHorizLine.LinePen.Width = 2; //펜 두께
  685. Obj_Chart.Series(vCnt).asHorizLine.Pointer.Visible = true; //값에 대한 포인터
  686. Obj_Chart.Series(vCnt).asHorizLine.Pointer.Brush.Color = cColor;
  687. Obj_Chart.Series(vCnt).asHorizLine.Pointer.Style = 0;
  688. Obj_Chart.Series(vCnt).asHorizLine.Pointer.VerticalSize = 1;
  689. Obj_Chart.Series(vCnt).asHorizLine.Pointer.HorizontalSize = 1;
  690. Obj_Chart.Series(vCnt).Title = vEqmtCd + " : " + vTitle + "(" + vLotNo + ")_"+vLevlNm;
  691. Obj_Chart.Series(vCnt).Clear(); //라인 초기화
  692. fAddPointSeries();
  693. Obj_Chart.Series(vCnt).Marks.Visible = false;
  694. Obj_Chart.Series(vCnt+1).Marks.Visible = false;
  695. Obj_Chart.Series(vCnt+2).Marks.Visible = false;
  696. Obj_Chart.Series(vCnt+3).Marks.Visible = false;
  697. for(var x = vCol; x < datagrid1.getCellCount("Head"); x++ )
  698. {
  699. vRslt = parseFloat(ds_main_rsltlist_row.getColumn(chkrow, x));
  700. cap = ds_main_rsltlist_row.getColumn(0, x);
  701. vDate = cap.replace("-", "").replace("-", "").replace(" ", "").replace(":", "").replace(":", "");
  702. vFindData = vTestCd+vMatrCd+vLevlCd+vDate;
  703. vFact = vTitle + " " + cap + " - " +ds_hidden_temp_factcnts.lookup("finddata", vFindData, "measfactcnts")+ "\n";
  704. if (!isNaN(vRslt))
  705. {
  706. tmpY = (vRslt - vAvg) / vSD; //y좌표
  707. if(tmpY > 3)
  708. {
  709. y = 3.1;
  710. }
  711. else if(tmpY < -3)
  712. {
  713. y = -3.1
  714. }
  715. else
  716. {
  717. y = tmpY;
  718. }
  719. Obj_Chart.Series(vCnt).AddXY (xx, y, "", Obj_Chart.Series(vCnt).Color );
  720. if(ds_main_rsltlist_row.getColumn(chkrow, x).indexOf("W") != -1 || !utlf_isNull(ds_hidden_temp_factcnts.lookup("finddata", vFindData, "measfactcnts")))
  721. {
  722. Obj_Chart.Series(vCnt+3).AddXY (xx, y, vFact, Obj_Chart.Series(vCnt+3).Color );
  723. }
  724. else if( y == 3.1 || y == -3.1)
  725. {
  726. Obj_Chart.Series(vCnt+2).AddXY (xx, y, vFact, Obj_Chart.Series(vCnt+2).Color );
  727. }
  728. else if(y > 2 || y < -2)
  729. {
  730. Obj_Chart.Series(vCnt+1).AddXY (xx, y, vFact, Obj_Chart.Series(vCnt+1).Color );
  731. }
  732. Obj_Chart.Series(7).AddXY (xx, -3.5, cap, Obj_Chart.Series(7).Color ); //날짜 보였다 안보였다해서 시리즈 따로 추가함
  733. xx += 1;
  734. }
  735. }
  736. }
  737. else
  738. {
  739. for(var i = 0; i < ds_main_rsltlist_row.rowcount; i++)
  740. {
  741. if(ds_main_rsltlist_row.getColumn(i, "chk") == "true")
  742. {
  743. vCnt = Obj_Chart.SeriesCount ; //생성된 시리즈 갯수
  744. vTitle = ds_main_rsltlist_row.getColumn(i, "testnm");
  745. vAvg = parseFloat(ds_main_rsltlist_row.getColumn(i, "avg"));
  746. vSD = parseFloat(ds_main_rsltlist_row.getColumn(i, "sdval"));
  747. vLotNo = ds_main_rsltlist_row.getColumn(i, "lotno");
  748. vLevlNm = ds_main_rsltlist_row.getColumn(i, "levlnm");
  749. vEqmtCd = ds_main_rsltlist_row.getColumn(i, "eqmtcd");
  750. vTestCd = ds_main_rsltlist_row.getColumn(i, "testcd");
  751. vMatrCd = ds_main_rsltlist_row.getColumn(i, "matrcd");
  752. vLevlCd = ds_main_rsltlist_row.getColumn(i, "levlcd");
  753. v3SDH = vAvg+vSD*3;
  754. v3SDL = vAvg-vSD*3;
  755. v2SDH = vAvg+vSD*2;
  756. v2SDL = vAvg-vSD*2;
  757. v1SDH = vAvg+vSD*1;
  758. v1SDL = vAvg-vSD*1;
  759. Rnd1 = Math.random();
  760. Rnd2 = Math.random();
  761. Rnd3 = Math.random();
  762. cColor = window.rgb( (255 - 1) * Rnd1 + 1, (255 - 1) * Rnd2 + 1 , (255 - 1) * Rnd3 + 1);
  763. Obj_Chart.AddSeries(37); //asHorizLine
  764. Obj_Chart.Series(vCnt).Color = cColor;
  765. Obj_Chart.Series(vCnt).asHorizLine.LinePen.Width = 2; //펜 두께
  766. Obj_Chart.Series(vCnt).asHorizLine.Pointer.Visible = true; //값에 대한 포인터
  767. Obj_Chart.Series(vCnt).asHorizLine.Pointer.Brush.Color = cColor;
  768. Obj_Chart.Series(vCnt).asHorizLine.Pointer.Style = 0;
  769. Obj_Chart.Series(vCnt).asHorizLine.Pointer.VerticalSize = 1;
  770. Obj_Chart.Series(vCnt).asHorizLine.Pointer.HorizontalSize = 1;
  771. Obj_Chart.Series(vCnt).Title = vEqmtCd + " : " + vTitle + "(" + vLotNo + ")_"+vLevlNm;
  772. Obj_Chart.Series(vCnt).Clear(); //라인 초기화
  773. fAddPointSeries();
  774. for(var x = vCol; x < datagrid1.getCellCount("Head"); x++ )
  775. {
  776. vRslt = parseFloat(ds_main_rsltlist_row.getColumn(i, x));
  777. cap = ds_main_rsltlist_row.getColumn(0, x);
  778. vDate = cap.replace("-", "").replace("-", "").replace(" ", "").replace(":", "").replace(":", "");
  779. vFindData = vTestCd+vMatrCd+vLevlCd+vDate;
  780. vFact = vTitle + " " + cap + " - " +ds_hidden_temp_factcnts.lookup("finddata", vFindData, "measfactcnts")+ "\n";
  781. if (!isNaN(vRslt))
  782. {
  783. tmpY = (vRslt - vAvg) / vSD; //y좌표
  784. if(tmpY > 3)
  785. {
  786. y = 3.1;
  787. }
  788. else if(tmpY < -3)
  789. {
  790. y = -3.1
  791. }
  792. else
  793. {
  794. y = tmpY;
  795. }
  796. Obj_Chart.Series(vCnt).AddXY (x-vCol, y, "", Obj_Chart.Series(vCnt).Color );
  797. if(ds_main_rsltlist_row.getColumn(i, x).indexOf("W") != -1 || !utlf_isNull(ds_hidden_temp_factcnts.lookup("finddata", vFindData, measfactcnts)))
  798. {
  799. Obj_Chart.Series(vCnt+3).AddXY (x-vCol, y, vFact, Obj_Chart.Series(vCnt+3).Color );
  800. }
  801. else if( y == 3.1 || y == -3.1)
  802. {
  803. Obj_Chart.Series(vCnt+2).AddXY (x-vCol, y, vFact, Obj_Chart.Series(vCnt+2).Color );
  804. }
  805. else if(y > 2 || y < -2)
  806. {
  807. Obj_Chart.Series(vCnt+1).AddXY (x-vCol, y, vFact, Obj_Chart.Series(vCnt+1).Color );
  808. }
  809. }
  810. Obj_Chart.Series(7).AddXY (x-vCol, -3.5, cap, Obj_Chart.Series(7).Color ); //날짜 보였다 안보였다해서 시리즈 따로 추가함
  811. }
  812. }//end if
  813. }//end for(i)
  814. }
  815. fMakeLotGrp(); //Lot관리하는 그래프 그려
  816. }
  817. function grpChk()
  818. {
  819. var row = ds_main_rsltlist_row.findRow("chk","true");
  820. var testcd = ds_main_rsltlist_row.getColumn(row, "testcd");
  821. for(var i = row; i < ds_main_rsltlist_row.rowcount; i++)
  822. {
  823. if(ds_main_rsltlist_row.getColumn(i, "chk") == "true")
  824. {
  825. if(testcd != ds_main_rsltlist_row.getColumn(i, "testcd"))
  826. {
  827. return false;
  828. }
  829. }
  830. }
  831. return true;
  832. }
  833. function fMakeLotGrp()
  834. {
  835. var count = ds_main_rsltlist_row.getCaseCount("chk == 'true'");
  836. if(count == 1 || grpChk())
  837. {
  838. var findRow = ds_main_rsltlist_row.findRow("chk","true");
  839. dsf_makeValue(ds_hidden_ref, "testcd", "string", "LOS101", 0);
  840. var oParam = {};
  841. oParam.id = "TRLQP00203";
  842. oParam.service = "grademngtprintapp.QCRsltReference";
  843. oParam.method = "reqGetToddList";
  844. oParam.inds = "cond=ds_hidden_ref";
  845. oParam.outds = "ds_hidden_temp_toddlist=toddlist";
  846. oParam.async = false;
  847. //oParam.callback = "cf_TRLQP00203";
  848. tranf_submit(oParam);
  849. if(ds_hidden_temp_toddlist.rowcount == 0)
  850. {
  851. return;
  852. }
  853. }
  854. else
  855. {
  856. return;
  857. }
  858. var Obj_Chart;
  859. if(radio1.value == 1)
  860. {
  861. Obj_Chart = switch1.case1.object1;
  862. }
  863. else
  864. {
  865. Obj_Chart = switch1.casee2.object2;
  866. }
  867. var numVertaxis, numHorizaxis, LotFlag, testDD, toDD, fromDD;
  868. var Series = Obj_Chart.SeriesCount ; //요놈은 그래프 그릴놈
  869. var vCount = Obj_Chart.SeriesCount ; //마지막에 결과값 그래프를 제외한 그래프 범례 안보이게 하기 위해
  870. var toddSeq = 0;
  871. Obj_Chart.Axis.Left.StartPosition = 25;
  872. numVertaxis= Obj_Chart.Axis.AddCustom(false);
  873. numHorizaxis = Obj_Chart.Axis.AddCustom(true);
  874. Obj_Chart.Axis.Custom(numVertaxis).Automatic = false;
  875. Obj_Chart.Axis.Custom(numVertaxis).Maximum = 2;
  876. Obj_Chart.Axis.Custom(numVertaxis).Minimum = 0;
  877. Obj_Chart.Axis.Custom(numVertaxis).Increment = 1;
  878. Obj_Chart.Axis.Custom(numVertaxis).Labels.Style = 2; //1:lot만 2: lot+숫자
  879. Obj_Chart.Axis.Custom(numVertaxis).Title.Angle = 90;
  880. Obj_Chart.Axis.Custom(numVertaxis).EndPosition = 15;
  881. Obj_Chart.Axis.Custom(numVertaxis).Title.Caption = "LOT";
  882. Obj_Chart.Axis.Custom(numHorizaxis).PositionPercent = 85;
  883. Obj_Chart.Axis.Custom(numHorizaxis).Labels.Visible = false;
  884. for(var i = 0; i < ds_hidden_temp_toddlist.rowcount; i++)
  885. {
  886. toDD = ds_hidden_temp_toddlist.getColumn(i, "toddlist").split("▦"); //toddlist
  887. fromDD = ds_hidden_temp_toddlist.getColumn(i, "fromddlist").split("▦"); //fromddlist
  888. LotFlag = ds_hidden_temp_toddlist.getColumn(i, "matrkindcd");
  889. for(j = 0; j <= toDD.length; j++)
  890. {
  891. fAddSeries(numVertaxis, numHorizaxis);
  892. }
  893. if(count != 1)
  894. {
  895. for(var x = vCol; x < datagrid1.getCellCount("Head"); x++ )
  896. {
  897. testDD = String(ds_main_rsltlist_row.getColumn(0, x)).substr(0, 4) + String(ds_main_rsltlist_row.getColumn(0, x)).substr(5, 2) + String(ds_main_rsltlist_row.getColumn(0,x)).substr(8, 2);
  898. if(parseInt(testDD) >= parseInt(fromDD[toddSeq]) && parseInt(testDD) <= parseInt(toDD[toddSeq]))
  899. {
  900. Obj_Chart.Series(Series).AddXY (x-vCol, LotFlag, "", Obj_Chart.Series(Series).Color );
  901. }
  902. else if(parseInt(testDD) < parseInt(fromDD[toddSeq]))
  903. {
  904. Obj_Chart.Series(Series).AddNullXY (x-vCol, LotFlag, "");
  905. }
  906. else if(parseInt(testDD) > parseInt(toDD[toddSeq]))
  907. {
  908. Obj_Chart.Series(Series).AddXY (x-vCol, LotFlag, "", Obj_Chart.Series(Series).Color );
  909. Obj_Chart.Series(Series+1).AddXY (x-vCol, LotFlag, "", Obj_Chart.Series(Series+1).Color ); //그래프 연결 위함
  910. toddSeq += 1;
  911. Series += 1;
  912. }
  913. else
  914. {
  915. Obj_Chart.Series(Series).AddNullXY (x-vCol, LotFlag, "");
  916. }
  917. }
  918. }
  919. else
  920. {
  921. var xx = 0;
  922. for(var x = vCol; x < datagrid1.getCellCount("Head"); x++ )
  923. {
  924. if(!utlf_isNull(ds_main_rsltlist_row.getColumn(findRow, x)))
  925. {
  926. testDD = String(ds_main_rsltlist_row.getColumn(0, x)).substr(0, 4) + String(ds_main_rsltlist_row.getColumn(0, x)).substr(5, 2) + String(ds_main_rsltlist_row.getColumn(0, x)).substr(8, 2);
  927. if(parseInt(testDD) >= parseInt(fromDD[toddSeq]) && parseInt(testDD) <= parseInt(toDD[toddSeq]))
  928. {
  929. Obj_Chart.Series(Series).AddXY (xx, LotFlag, "", Obj_Chart.Series(Series).Color );
  930. xx += 1;
  931. }
  932. else if(parseInt(testDD) < parseInt(fromDD[toddSeq]))
  933. {
  934. Obj_Chart.Series(Series).AddNullXY (xx, LotFlag, "");
  935. xx += 1;
  936. }
  937. else if(parseInt(testDD) > parseInt(toDD[toddSeq]))
  938. {
  939. Obj_Chart.Series(Series).AddXY (xx, LotFlag, "", Obj_Chart.Series(Series).Color );
  940. Obj_Chart.Series(Series+1).AddXY (xx, LotFlag, "", Obj_Chart.Series(Series+1).Color ); //그래프 연결 위함
  941. toddSeq += 1;
  942. Series += 1;
  943. xx += 1;
  944. }
  945. else
  946. {
  947. Obj_Chart.Series(Series).AddNullXY (xx, LotFlag, "");
  948. xx += 1;
  949. }
  950. }
  951. }
  952. }
  953. toddSeq = 0;
  954. Series += 1;
  955. }
  956. Obj_Chart.Axis.Custom(numVertaxis).Labels.Add (0, "Rea");
  957. Obj_Chart.Axis.Custom(numVertaxis).Labels.Add (1, "Cal");
  958. for(icnt = 0; icnt < Obj_Chart.SeriesCount ; icnt++)
  959. {
  960. if(Obj_Chart.Series(icnt).SeriesType == 0 )
  961. {
  962. Obj_Chart.Series(icnt).asLine.Pointer.InflateMargins = false;
  963. }
  964. else if(Obj_Chart.Series(icnt).SeriesType == 37)
  965. {
  966. Obj_Chart.Series(icnt).asHorizLine.Pointer.InflateMargins = false;
  967. }
  968. else
  969. {
  970. Obj_Chart.Series(icnt).asPoint.Pointer.InflateMargins = false;
  971. }
  972. }
  973. }
  974. function fAddSeries(numVertaxis, numHorizaxis)
  975. {
  976. var Rnd1, Rnd2, Rnd3, cColor
  977. var Obj_Chart;
  978. if(radio1.value == 1)
  979. {
  980. Obj_Chart = switch1.case1.object1;
  981. }
  982. else
  983. {
  984. Obj_Chart = switch1.case2.object2;
  985. }
  986. var idx = Obj_Chart.SeriesCount ;
  987. //시리즈별 컬러
  988. Rnd1 = Math.random();
  989. Rnd2 = Math.random();
  990. Rnd3 = Math.random();
  991. cColor = window.rgb( (255 - 1) * Rnd1 + 1, (255 - 1) * Rnd2 + 1 , (255 - 1) * Rnd3 + 1);
  992. Obj_Chart.AddSeries(0);
  993. Obj_Chart.Series(idx).Color = cColor;
  994. Obj_Chart.Series(idx).asLine.LinePen.Width = 10;
  995. Obj_Chart.Series(idx).VerticalAxisCustom = numVertaxis;
  996. Obj_Chart.Series(idx).HorizontalAxisCustom = numHorizaxis;
  997. Obj_Chart.Series(idx).Marks.Visible = false;
  998. Obj_Chart.Series(idx).ShowInLegend = false;
  999. }
  1000. function fAddPointSeries()
  1001. {
  1002. var Obj_Chart;
  1003. if(radio1.value == 1)
  1004. {
  1005. Obj_Chart = switch1.case1.object1;
  1006. }
  1007. else
  1008. {
  1009. Obj_Chart = switch1.case2.object2;
  1010. }
  1011. var idx = Obj_Chart.SeriesCount ;
  1012. //Wgmr 포인트
  1013. Obj_Chart.AddSeries(4);
  1014. Obj_Chart.Series(idx).Cursor =2020;
  1015. Obj_Chart.Series(idx).asPoint.Pointer.Pen.Color = window.RGB(255, 0, 0)
  1016. Obj_Chart.Series(idx).asPoint.Pointer.Brush.Color = window.RGB(255, 0, 0)
  1017. Obj_Chart.Series(idx).asPoint.Pointer.Style = 0
  1018. Obj_Chart.Series(idx).asPoint.Pointer.HorizontalSize = 3
  1019. Obj_Chart.Series(idx).asPoint.Pointer.VerticalSize = 3
  1020. Obj_Chart.Series(idx).ShowInLegend = false;
  1021. //2SD포인트
  1022. Obj_Chart.AddSeries(4);
  1023. Obj_Chart.Series(idx+1).Cursor =2020;
  1024. Obj_Chart.Series(idx+1).asPoint.Pointer.Pen.Color = window.RGB(255, 0, 0)
  1025. Obj_Chart.Series(idx+1).asPoint.Pointer.Brush.Color = window.RGB(255, 0, 0)
  1026. Obj_Chart.Series(idx+1).asPoint.Pointer.Style = 0
  1027. Obj_Chart.Series(idx+1).asPoint.Pointer.HorizontalSize = 3
  1028. Obj_Chart.Series(idx+1).asPoint.Pointer.VerticalSize = 3
  1029. Obj_Chart.Series(idx+1).ShowInLegend = false;
  1030. //3SD포인트
  1031. Obj_Chart.AddSeries(4);
  1032. Obj_Chart.Series(idx+2).Cursor =2020;
  1033. Obj_Chart.Series(idx+2).asPoint.Pointer.Pen.Color = window.RGB(0, 255, 0)
  1034. Obj_Chart.Series(idx+2).asPoint.Pointer.Brush.Color = window.RGB(0, 255, 0)
  1035. Obj_Chart.Series(idx+2).asPoint.Pointer.Style = 0
  1036. Obj_Chart.Series(idx+2).asPoint.Pointer.HorizontalSize = 3
  1037. Obj_Chart.Series(idx+2).asPoint.Pointer.VerticalSize = 3
  1038. Obj_Chart.Series(idx+2).ShowInLegend = false;
  1039. }
  1040. function fInitChart(sGrapFlag)
  1041. {
  1042. var count = ds_main_rsltlist_row.getCaseCount("chk == 'true'")
  1043. if(count == 0)
  1044. {
  1045. alert("그래프를 작성할 항목을 선택하세요");
  1046. return;
  1047. }
  1048. else if(count ==1)
  1049. {
  1050. var vEnd = -1;
  1051. var chkrow = ds_main_rsltlist_row.findRow("chk","true");
  1052. for(var i = vCol; i < datagrid1.getCellCount("Head"); i++)
  1053. {
  1054. var x = ds_main_rsltlist_row.getColumn(chkrow, i);
  1055. if(!utlf_isNull(x))
  1056. {
  1057. vEnd += 1; //결과 값이 있다면 1씩 더해
  1058. }
  1059. }
  1060. var vAvg = parseFloat(ds_main_rsltlist_row.getColumn(chkrow, "mean"));
  1061. var vSD = parseFloat(ds_main_rsltlist_row.getColumn(chkrow, "sd"));
  1062. var vTitle = ds_main_rsltlist_row.getColumn(chkrow, "testnm");
  1063. var vLevlnm = ds_main_rsltlist_row.getColumn(chkrow, "levlnm");
  1064. var ref = ds_main_rsltlist_row.getColumn(chkrow, "ref").split("~");
  1065. var vLow = ref[0];
  1066. var vHigh = ref[1];
  1067. var v1SDH = vAvg + vSD;
  1068. var v2SDH = vAvg + vSD*2;
  1069. var v3SDH = vAvg + vSD*3;
  1070. var v4SDH = vAvg + vSD*4;
  1071. var v1SDL = vAvg - vSD;
  1072. var v2SDL = vAvg - vSD*2;
  1073. var v3SDL = vAvg - vSD*3;
  1074. var v4SDL = vAvg - vSD*4;
  1075. }
  1076. else
  1077. {
  1078. var vEnd
  1079. }
  1080. var Obj_Chart = switch1.case2.object2;
  1081. var vStart = 0; //시리즈 번호
  1082. Obj_Chart.Aspect.View3D = 0; // 2d 로 표현하기
  1083. Obj_Chart.Zoom.Enable = false; // zoom 사용하지 않기
  1084. Obj_Chart.Scroll.Enable = 2;
  1085. Obj_Chart.Environment.MouseWheelScroll = false;
  1086. Obj_Chart.Legend.Visible = false; // 그래프 참조 박스 띄우지 않기
  1087. Obj_Chart.Panel.Gradient.Visible = true; // 페널에 그라디언트 적용
  1088. Obj_Chart.Panel.Gradient.StartColor = 0xffffff;
  1089. Obj_Chart.Panel.Gradient.EndColor=0xffffff;
  1090. Obj_Chart.Legend.Visible = true; //범례표시 여부
  1091. Obj_Chart.Legend.Alignment = 3; // Legend 위치 설정 :: 0 = left | 1 = right | 2 = top| 3 = bottom
  1092. Obj_Chart.Legend.CheckBoxes = false; //범례 체크박스
  1093. Obj_Chart.RemoveAllSeries();
  1094. Obj_Chart.Axis.RemoveAllCustom();
  1095. Obj_Chart.Panel.MarginTop = 0;
  1096. Obj_Chart.Panel.MarginLeft = 2;
  1097. Obj_Chart.Panel.MarginRight = 0;
  1098. Obj_Chart.Panel.MarginBottom = 2;
  1099. Obj_Chart.Header.Visible = false;
  1100. Obj_Chart.Axis.Left.Labels.Style = 2;
  1101. Obj_Chart.Axis.Right.Labels.Style = 1;
  1102. Obj_Chart.Axis.Bottom.Labels.Style = 4; // 0:auto or value, 1:No, 2 :민 맥스, 3: marks style, 4:text
  1103. Obj_Chart.Axis.Bottom.Labels.Angle = 90; //90도 돌려서 라벨 표시
  1104. Obj_Chart.Axis.Bottom.Labels.Size = 95; //하단 라벨의 사이즈 조치사항 추가하면서 자동으로 늘어나서 추가함
  1105. Obj_Chart.Axis.Left.Title.Caption = "실측값";
  1106. Obj_Chart.Axis.Left.Automatic = true;
  1107. //날짜그래프
  1108. Obj_Chart.AddSeries(0); //asLine
  1109. Obj_Chart.Series(0).asLine.LinePen.Width = 1; //펜 두께
  1110. Obj_Chart.Series(0).asLine.Pointer.Visible = false; //값에 대한 포인터
  1111. Obj_Chart.Series(0).ShowInLegend = false;
  1112. var find, row, tmp;
  1113. var findRows = "";
  1114. for(var r = 0; i < ds_main_rsltlist_row.rowcount; r++)
  1115. {
  1116. if(ds_main_rsltlist_row.getColumn(r, "chk") == "true")
  1117. {
  1118. findRows = findRows + r + "▦";
  1119. }
  1120. }
  1121. row = findRows.substr(0, findRows.length-1).split("▦"); //체크된 항목의 row▦row...
  1122. if(sGrapFlag == "3")
  1123. {
  1124. if(row.length == 1)
  1125. {
  1126. fMakeLineSD(vAvg, vSD, vStart, vEnd); //라인그리기
  1127. }
  1128. else
  1129. {
  1130. for(var i = 0; i < row.length; i++)
  1131. {
  1132. vAvg = parseFloat(ds_main_rsltlist_row.getColumn(row[i], "mean"));
  1133. vSD = parseFloat(ds_main_rsltlist_row.getColumn(row[i], "sd"));
  1134. tmp = 0;
  1135. vEnd = 0; //각 검사항목의 라인 끝점
  1136. for(j = vCol; j < datagrid1.getCellCount("Head"); j++)
  1137. {
  1138. x = ds_main_rsltlist_row.getColumn(row[i], j);
  1139. if(!utlf_isNull(x))
  1140. {
  1141. if(tmp == 0)
  1142. {
  1143. vStart = j - vCol; //라인의 시작점
  1144. }
  1145. tmp++;
  1146. vEnd = j - vCol; //라인의 끝점
  1147. }
  1148. }
  1149. fMakeLineSD(vAvg, vSD, vStart, vEnd); //라인그리기
  1150. }
  1151. }
  1152. }
  1153. else if(sGrapFlag == "2")
  1154. {
  1155. if(row.length == 1)
  1156. {
  1157. fMakeLineLH(vAvg, vHigh, vLow, vStart, vEnd);
  1158. }
  1159. else
  1160. {
  1161. for(i = 0; i < row.length; i++)
  1162. {
  1163. vAvg = parseFloat(ds_main_rsltlist_row.getColumn(row[i], "mean"));
  1164. ref = String(ds_main_rsltlist_row.getColumn(row[i], "ref")).split("~");
  1165. vLow = ref[0];
  1166. vHigh = ref[1];
  1167. tmp = 0;
  1168. vEnd = 0; //각 검사항목의 라인 끝점
  1169. for(j = vCol; j < datagrid1.getCellCount("Head"); j++)
  1170. {
  1171. x = ds_main_rsltlist_row.getColumn(row[i], j)
  1172. if(!utlf_isNull(x))
  1173. {
  1174. if(tmp == 0)
  1175. {
  1176. vStart = j - vCol;
  1177. }
  1178. tmp++;
  1179. vEnd = j - vCol;
  1180. }
  1181. }
  1182. fMakeLineLH(vAvg, vHigh, vLow, vStart, vEnd);
  1183. }
  1184. }
  1185. }
  1186. fMakeChartOrgRslt(row);
  1187. }
  1188. function fMakeChartOrgRslt(row)
  1189. {
  1190. var Obj_Chart = switch1.case2.object2;
  1191. var Rnd1, Rnd2, Rnd3, cColor;
  1192. var vAvg, vSD, v4SDH, v4SDL, vTestnm, vLotno, vLevlNm, vCnt, vEqmtCd;
  1193. var vTestCd, vMatrCd, vLevlCd, vDate, vFindData, vFact; //조치사항을 찾기 위한 변수들
  1194. var x = 0;
  1195. var title = "";
  1196. for (series = 0; series < row.length; series++)
  1197. {
  1198. vLotno = ds_main_rsltlist_row.getColumn(row[series], "lotno");
  1199. vTestnm = ds_main_rsltlist_row.getColumn(row[series], "testnm");
  1200. vLevlNm = ds_main_rsltlist_row.getColumn(row[series], "levlnm");
  1201. vEqmtCd = ds_main_rsltlist_row.getColumn(row[series], "eqmtcd");
  1202. vTestCd = ds_main_rsltlist_row.getColumn(row[series], "testcd");
  1203. vMatrCd = ds_main_rsltlist_row.getColumn(row[series], "matrcd");
  1204. vLevlCd = ds_main_rsltlist_row.getColumn(row[series], "levlcd");
  1205. Rnd1 = Math.random();
  1206. Rnd2 = Math.random();
  1207. Rnd3 = Math.random();
  1208. cColor = window.rgb( (235 - 1) * Rnd1 + 1, (235 - 1) * Rnd2 + 1 , (235 - 1) * Rnd3 + 1); //각 검사항목별로 포인터 색깔 변경
  1209. vCnt = Obj_Chart.SeriesCount ;
  1210. Obj_Chart.AddSeries(37); //asHorizLine
  1211. Obj_Chart.Series(vCnt).Color = 0xBE5B42;
  1212. Obj_Chart.Series(vCnt).asHorizLine.LinePen.Width = 2; //펜 두께
  1213. Obj_Chart.Series(vCnt).asHorizLine.Pointer.Visible = true; //값에 대한 포인터
  1214. Obj_Chart.Series(vCnt).asHorizLine.Pointer.Brush.Color = cColor; //포인트 컬러
  1215. Obj_Chart.Series(vCnt).asHorizLine.Pointer.Style = 0;
  1216. Obj_Chart.Series(vCnt).asHorizLine.Pointer.VerticalSize = 1;
  1217. Obj_Chart.Series(vCnt).asHorizLine.Pointer.HorizontalSize = 1;
  1218. Obj_Chart.Series(vCnt).VerticalAxis = 2; //좌표 y축에대한 스타일 2:both??
  1219. Obj_Chart.Series(vCnt).Title = vEqmtCd + " : " + vTestnm+ "(" + vLotno + ")";
  1220. title = vEqmtCd + " : " + vTestnm+ "(" + vLotno + ")_"+vLevlNm; //보여주지 말게20091019
  1221. Obj_Chart.Series(vCnt).Marks.Visible = false; //요거 true로 해야 아래꺼 보임
  1222. Obj_Chart.Series(vCnt).Marks.Style = 8; //수치값에 대한 값보이기 8아니면 다른수치보임
  1223. Obj_Chart.Series(vCnt).Marks.ArrowLength = 0;
  1224. fAddPointSeries(); //WGMR, 2SD, 3SD 포인터 시리즈 추가
  1225. x =0;
  1226. for(var i = vCol; i < datagrid1.getCellCount("Head"); i++ )
  1227. {
  1228. vAvg = parseFloat(ds_main_rsltlist_row.getColumn(row[series], "avg"));
  1229. vSD = parseFloat(ds_main_rsltlist_row.getColumn(row[series], "sdval"));
  1230. v4SDH = vAvg+vSD*4;
  1231. v4SDL = vAvg-vSD*4;
  1232. var y = parseFloat(ds_main_rsltlist_row.getColumn(row[series], i));
  1233. var cap = ds_main_rsltlist_row.getColumn(0, i);
  1234. vDate = cap.replace("-", "").replace("-", "").replace(" ", "").replace(":", "").replace(":", "");
  1235. vFindData = vTestCd+vMatrCd+vLevlCd+vDate;
  1236. vFact = title + " " + cap + " - " +ds_hidden_temp_factcnts.lookup("finddata", vFindData, "measfactcnts")+ "\n";
  1237. if (!isNaN(y) && y < v4SDH && y > v4SDL)
  1238. {
  1239. Obj_Chart.Series(vCnt).AddXY (x, y, "" , Obj_Chart.Series(vCnt).Color );
  1240. x += 1;
  1241. }
  1242. else if(!isNaN(y) && y > v4SDH)
  1243. {
  1244. y = v4SDH;
  1245. Obj_Chart.Series(vCnt).AddXY (x, y, "", Obj_Chart.Series(vCnt).Color );
  1246. x += 1;
  1247. }
  1248. else if(!isNaN(y) && y < v4SDH)
  1249. {
  1250. y = v4SDL;
  1251. Obj_Chart.Series(vCnt).AddXY (x, y, "", Obj_Chart.Series(vCnt).Color );
  1252. x += 1;
  1253. }
  1254. else if(isNaN(y) && row.length != 1)
  1255. {
  1256. x += 1;
  1257. }
  1258. if(!isNaN(y))
  1259. {
  1260. Obj_Chart.Series(0).AddNullXY (x-1, vAvg,cap);
  1261. }
  1262. if(ds_main_rsltlist_row.getColumn(row[series], i).indexOf("W") != -1 || !utlf_isNull(ds_hidden_temp_factcnts.lookup("finddata", vFindData, "measfactcnts")))
  1263. {
  1264. Obj_Chart.Series(vCnt+3).AddXY (x-1, y, vFact, Obj_Chart.Series(vCnt+3).Color );
  1265. }
  1266. else if(y > vAvg+vSD*3 || y < vAvg-vSD*3)
  1267. {
  1268. Obj_Chart.Series(vCnt+2).AddXY (x-1, y, vFact, Obj_Chart.Series(vCnt+2).Color );
  1269. }
  1270. else if(y > vAvg+vSD*2 || y < vAvg-vSD*2)
  1271. {
  1272. //2SD
  1273. Obj_Chart.Series(vCnt+1).AddXY (x-1, y, vFact, Obj_Chart.Series(vCnt+1).Color );
  1274. }
  1275. }
  1276. }
  1277. fMakeLotGrp(); //Lot관리하는 그래프 그려
  1278. }
  1279. function fMakeLineLH(vAvg, vHigh, vLow, vStart, vEnd)
  1280. {
  1281. var Obj_Chart = switch1.case2.object2;
  1282. var idx = Obj_Chart.SeriesCount ;
  1283. Obj_Chart.AddSeries(0); //asLine
  1284. Obj_Chart.Series(idx).asLine.LinePen.Width = 2;
  1285. Obj_Chart.Series(idx).Color = 0x000000; //Avg 라인
  1286. Obj_Chart.Series(idx).ShowInLegend = false;
  1287. Obj_Chart.Series(idx).AddXY (vStart , vAvg , "", Obj_Chart.Series(idx).Color );
  1288. Obj_Chart.Series(idx).AddXY (vEnd , vAvg , "", Obj_Chart.Series(idx).Color );
  1289. if(!utlf_isNull(vHigh))
  1290. {
  1291. idx = Obj_Chart.SeriesCount ;
  1292. Obj_Chart.AddSeries(0); //asLine
  1293. Obj_Chart.Series(idx).asLine.LinePen.Width = 2;
  1294. Obj_Chart.Series(idx).Color = 0x0000FF; //High 라인
  1295. Obj_Chart.Series(idx).ShowInLegend = false;
  1296. Obj_Chart.Series(idx).AddXY (vStart , vHigh , "", Obj_Chart.Series(idx).Color);
  1297. Obj_Chart.Series(idx).AddXY (vEnd , vHigh , "", Obj_Chart.Series(idx).Color);
  1298. }
  1299. if(!utlf_isNull(vLow))
  1300. {
  1301. idx = Obj_Chart.SeriesCount ;
  1302. Obj_Chart.AddSeries(0); //asLine
  1303. Obj_Chart.Series(idx).asLine.LinePen.Width = 2;
  1304. Obj_Chart.Series(idx).Color = 0xFF0000; //Low 라인
  1305. Obj_Chart.Series(idx).ShowInLegend = false;
  1306. Obj_Chart.Series(idx).AddXY (vStart , vLow , "", Obj_Chart.Series(idx).Color);
  1307. Obj_Chart.Series(idx).AddXY (vEnd , vLow , "", Obj_Chart.Series(idx).Color);
  1308. }
  1309. }
  1310. function fMakeLineSD(vAvg, vSD, vStart, vEnd)
  1311. {
  1312. var Obj_Chart = object2;
  1313. var v1SDH = vAvg + vSD;
  1314. var v2SDH = vAvg + vSD*2;
  1315. var v3SDH = vAvg + vSD*3;
  1316. var v4SDH = vAvg + vSD*4;
  1317. var v1SDL = vAvg - vSD;
  1318. var v2SDL = vAvg - vSD*2;
  1319. var v3SDL = vAvg - vSD*3;
  1320. var v4SDL = vAvg - vSD*4;
  1321. var idx = Obj_Chart.SeriesCount ;
  1322. Obj_Chart.AddSeries(0); //asLine
  1323. Obj_Chart.Series(idx).asLine.LinePen.Width = 2;
  1324. Obj_Chart.Series(idx).Color = 0x000000; //Avg 라인
  1325. Obj_Chart.Series(idx).AddXY (vStart , vAvg , "", Obj_Chart.Series(idx).Color );
  1326. Obj_Chart.Series(idx).AddXY (vEnd , vAvg , "", Obj_Chart.Series(idx).Color );
  1327. Obj_Chart.AddSeries(0); //asLine
  1328. Obj_Chart.Series(1+idx).asLine.LinePen.Width = 1;
  1329. Obj_Chart.Series(1+idx).Color = 0x000000; //+1SD 라인
  1330. Obj_Chart.Series(1+idx).AddXY (vStart , v1SDH , "", Obj_Chart.Series(1+idx).Color );
  1331. Obj_Chart.Series(1+idx).AddXY (vEnd , v1SDH , "", Obj_Chart.Series(1+idx).Color );
  1332. Obj_Chart.AddSeries(0); //asLine
  1333. Obj_Chart.Series(2+idx).asLine.LinePen.Width = 1;
  1334. Obj_Chart.Series(2+idx).Color = 0x000000; //-1SD 라인
  1335. Obj_Chart.Series(2+idx).AddXY (vStart , v1SDL , "", Obj_Chart.Series(2+idx).Color );
  1336. Obj_Chart.Series(2+idx).AddXY (vEnd , v1SDL , "", Obj_Chart.Series(2+idx).Color );
  1337. Obj_Chart.AddSeries(0); //asLine
  1338. Obj_Chart.Series(3+idx).asLine.LinePen.Width = 2;
  1339. Obj_Chart.Series(3+idx).Color = 0x00ccff; //+2SD 라인
  1340. Obj_Chart.Series(3+idx).AddXY (vStart , v2SDH , "", Obj_Chart.Series(3+idx).Color );
  1341. Obj_Chart.Series(3+idx).AddXY (vEnd , v2SDH , "", Obj_Chart.Series(3+idx).Color );
  1342. Obj_Chart.AddSeries(0); //asLine
  1343. Obj_Chart.Series(4+idx).asLine.LinePen.Width = 2;
  1344. Obj_Chart.Series(4+idx).Color = 0x00ccff; //-2SD 라인
  1345. Obj_Chart.Series(4+idx).AddXY (vStart , v2SDL , "", Obj_Chart.Series(4+idx).Color );
  1346. Obj_Chart.Series(4+idx).AddXY (vEnd , v2SDL , "", Obj_Chart.Series(4+idx).Color );
  1347. Obj_Chart.AddSeries(0); //asLine
  1348. Obj_Chart.Series(5+idx).asLine.LinePen.Width = 2;
  1349. Obj_Chart.Series(5+idx).Color = 0x0000ee; //+3SD 라인
  1350. Obj_Chart.Series(5+idx).AddXY (vStart , v3SDH , "", Obj_Chart.Series(5+idx).Color );
  1351. Obj_Chart.Series(5+idx).AddXY (vEnd , v3SDH , "", Obj_Chart.Series(5+idx).Color );
  1352. Obj_Chart.AddSeries(0); //asLine
  1353. Obj_Chart.Series(6+idx).asLine.LinePen.Width = 2;
  1354. Obj_Chart.Series(6+idx).Color = 0x0000ee; //-3SD 라인
  1355. Obj_Chart.Series(6+idx).AddXY (vStart , v3SDL , "", Obj_Chart.Series(6+idx).Color );
  1356. Obj_Chart.Series(6+idx).AddXY (vEnd , v3SDL , "", Obj_Chart.Series(6+idx).Color );
  1357. for(k=idx;k<idx+7;k++)
  1358. { //라인들에 대한 범례 보이지 않게
  1359. Obj_Chart.Series(k).ShowInLegend = false;
  1360. }
  1361. }
  1362. function btn_grprnt_onclick(obj:Button, e:ClickEventInfo)
  1363. {
  1364. var Obj_Chart;
  1365. if(ds_hidden_gref.getColumn(0, "grapegbn") == 1)
  1366. {
  1367. Obj_Chart = switch1.case1.object1;
  1368. }
  1369. else
  1370. {
  1371. Obj_Chart = switch1.case2.object2;
  1372. }
  1373. Obj_Chart.Tools.Clear();
  1374. Obj_Chart.Printer.MarginLeft = 5
  1375. Obj_Chart.Printer.MarginBottom = 25
  1376. Obj_Chart.Printer.MarginRight = 5
  1377. Obj_Chart.Printer.MarginTop = 25
  1378. Obj_Chart.Printer.ShowPreview();
  1379. }
  1380. function button10_onclick(obj:Button, e:ClickEventInfo)
  1381. {
  1382. this.close();
  1383. }
  1384. ]]></Script>
  1385. </Form>
  1386. </FDL>