SMLQP10500_핵의학장비QC관리.xrw 65 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908
  1. <?xml version="1.0" encoding="EUC-KR"?>
  2. <!--
  3. * 제 목 : SMLQP10500_핵의학장비QC관리.xrw
  4. * 설 명 : 핵의학장비QC관리
  5. * 설 계 자 : (주)에이씨케이 -
  6. * 작 성 자 : (주)에이씨케이 - 이재민
  7. * 작 성 일 : 2010.04.14
  8. * 수정이력 :
  9. * 기 타 :
  10. -->
  11. <?xml-stylesheet href="../../../com/commonweb/css/common.css" ztype="text/css" ?>
  12. <xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2002/01/xforms" xmlns:ev="http://www.w3.org/2001/xml-events">
  13. <xhtml:head>
  14. <xhtml:title/>
  15. <model id="model1">
  16. <instance id="instance1">
  17. <root>
  18. <main>
  19. <getEqmtQcList>
  20. <chk/>
  21. <mdd/>
  22. <mquan/>
  23. <d1/>
  24. <d2/>
  25. <d3/>
  26. <d4/>
  27. <d5/>
  28. <d6/>
  29. <d7/>
  30. <d8/>
  31. <d9/>
  32. <d10/>
  33. <d11/>
  34. <d12/>
  35. <d13/>
  36. <d14/>
  37. <d15/>
  38. <avg/>
  39. <avg2/>
  40. <low/>
  41. <high/>
  42. <hv/>
  43. <sd/>
  44. <cv/>
  45. <eqmtcd/>
  46. <gbn/>
  47. <seq/>
  48. </getEqmtQcList>
  49. </main>
  50. <send>
  51. <codeflag/>
  52. <data/>
  53. </send>
  54. <init>
  55. </init>
  56. <hidden>
  57. <ref>
  58. <fromdd/>
  59. <todd/>
  60. <eqmtcd>N01</eqmtcd>
  61. <code>1</code>
  62. <gbn>1</gbn>
  63. <cal/>
  64. <cr/>
  65. </ref>
  66. <temp>
  67. </temp>
  68. <row/>
  69. </hidden>
  70. </root>
  71. </instance>
  72. <script type="javascript" ev:event="xforms-ready">
  73. <![CDATA[
  74. fSetInit();
  75. ]]>
  76. </script>
  77. <script type="javascript" src="../js/LLZ001.js"/>
  78. <script type="javascript" src="../../../com/commonweb/js/dateHelper.js"/>
  79. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  80. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  81. <script type="javascript" src="../../../com/commonweb/js/stringHelper.js"/>
  82. <script type="javascript" src="../../../com/commonweb/js/numericHelper.js"/>
  83. <script type="javascript" src="../../../lis/commonweb/js/LLZ001.js"/>
  84. <script type="javascript" src="../../../com/commonweb/js/tchartHelper.js"/>
  85. <submission id="TRLZZ00101" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/LB0111"/>
  86. <submission id="TXLQJ00302" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/data"/>
  87. <submission id="TRLQP00801" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" replace="instance" resultref="/root/main/getEqmtQcList"/>
  88. </model>
  89. <script type="javascript">
  90. <![CDATA[
  91. //포인트 그래프 추가
  92. function fAddPointSeries(){
  93. var Obj_Chart;
  94. Obj_Chart = object2;
  95. var idx = Obj_Chart.SeriesCount ;
  96. Obj_Chart.AddSeries(4);
  97. Obj_Chart.Series(idx).Cursor =2020;
  98. Obj_Chart.Series(idx).asPoint.Pointer.Pen.Color = window.RGB(255, 0, 0)
  99. Obj_Chart.Series(idx).asPoint.Pointer.Brush.Color = window.RGB(255, 0, 0)
  100. Obj_Chart.Series(idx).asPoint.Pointer.Style = 0
  101. Obj_Chart.Series(idx).asPoint.Pointer.HorizontalSize = 3
  102. Obj_Chart.Series(idx).asPoint.Pointer.VerticalSize = 3
  103. Obj_Chart.Series(idx).ShowInLegend = false;
  104. Obj_Chart.AddSeries(4);
  105. Obj_Chart.Series(idx+1).Cursor =2020;
  106. Obj_Chart.Series(idx+1).asPoint.Pointer.Pen.Color = window.RGB(255, 0, 0)
  107. Obj_Chart.Series(idx+1).asPoint.Pointer.Brush.Color = window.RGB(255, 0, 0)
  108. Obj_Chart.Series(idx+1).asPoint.Pointer.Style = 0
  109. Obj_Chart.Series(idx+1).asPoint.Pointer.HorizontalSize = 3
  110. Obj_Chart.Series(idx+1).asPoint.Pointer.VerticalSize = 3
  111. Obj_Chart.Series(idx+1).ShowInLegend = false;
  112. Obj_Chart.AddSeries(4);
  113. Obj_Chart.Series(idx+2).Cursor =2020;
  114. Obj_Chart.Series(idx+2).asPoint.Pointer.Pen.Color = window.RGB(0, 0, 255)
  115. Obj_Chart.Series(idx+2).asPoint.Pointer.Brush.Color = window.RGB(0, 0, 255)
  116. Obj_Chart.Series(idx+2).asPoint.Pointer.Style = 0
  117. Obj_Chart.Series(idx+2).asPoint.Pointer.HorizontalSize = 3
  118. Obj_Chart.Series(idx+2).asPoint.Pointer.VerticalSize = 3
  119. Obj_Chart.Series(idx+2).ShowInLegend = false;
  120. }
  121. //조회
  122. function fExeEqmtList(){
  123. datagrid2.rebuildStyle();
  124. datagrid2.gridToInstance();
  125. model.resetInstanceNode("/root/main/getEqmtQcList");
  126. model.refresh();
  127. model.makeValue("/root/send/fromdd",model.getValue("/root/hidden/ref/fromdd"));
  128. model.makeValue("/root/send/todd",model.getValue("/root/hidden/ref/todd"));
  129. model.makeValue("/root/send/eqmtcd",model.getValue("/root/hidden/ref/eqmtcd"));
  130. model.makeValue("/root/send/gbn",model.getValue("/root/hidden/ref/gbn"));
  131. submit("TRLQP00801");
  132. fLHcheck();
  133. }
  134. function fLHcheck(){// 로우, 하이값 체크
  135. if(model.getValue("/root/hidden/ref/gbn") == "1"){
  136. for(i = 1; i < datagrid2.rows; i++){
  137. var low = 0;
  138. var high = 100;
  139. for(j = 4; j < 14; j++){
  140. if(datagrid2.valueMatrix(i, j) > high){
  141. if(datagrid2.valueMatrix(i, j) != ""){
  142. datagrid2.cellStyle("background-color", i , j) = "#FFB6C1";
  143. }
  144. }
  145. if(datagrid2.valueMatrix(i, j) < low){
  146. if(datagrid2.valueMatrix(i, j) != ""){
  147. datagrid2.cellStyle("background-color", i , j) = "#5ABEF5";
  148. }
  149. }
  150. }
  151. }
  152. }else if(model.getValue("/root/hidden/ref/gbn") == "4"){
  153. for(i = 1; i < datagrid2.rows; i++){
  154. var low = 0;
  155. var high = 100;
  156. for(j = 6; j < 19; j= j+3){
  157. if(datagrid2.valueMatrix(i, j) > high){
  158. if(datagrid2.valueMatrix(i, j) != ""){
  159. datagrid2.cellStyle("background-color", i , j) = "#FFB6C1";
  160. }
  161. }
  162. if(datagrid2.valueMatrix(i, j) < low){
  163. if(datagrid2.valueMatrix(i, j) != ""){
  164. datagrid2.cellStyle("background-color", i , j) = "#5ABEF5";
  165. }
  166. }
  167. }
  168. }
  169. }else if (model.getValue("/root/hidden/ref/gbn") == "3"){
  170. for(i = 1; i < datagrid2.rows; i++){
  171. var low = 75;
  172. var high = 85;
  173. for(j = 4; j < 14; j++){
  174. if(datagrid2.valueMatrix(i, j) > high){
  175. //alert(datagrid2.valueMatrix(i, j));
  176. if(datagrid2.valueMatrix(i, j) != ""){
  177. datagrid2.cellStyle("background-color", i , j) = "#FFB6C1";
  178. }
  179. }
  180. if(datagrid2.valueMatrix(i, j) < low){
  181. //alert(datagrid2.valueMatrix(i, j));
  182. if(datagrid2.valueMatrix(i, j) != ""){
  183. datagrid2.cellStyle("background-color", i , j) = "#5ABEF5";
  184. }
  185. }
  186. }
  187. }
  188. }else if(model.getValue("/root/hidden/ref/gbn") == "2"){
  189. for(i = 1; i < datagrid2.rows; i++){
  190. if(model.getValue("/root/main/getEqmtQcList[" + i + "]/mquan") == "CRF"){
  191. var low = 0.95;
  192. var high = 1.05;
  193. for(j = 4; j < 14; j++){
  194. if(datagrid2.valueMatrix(i, j) > high){
  195. if(datagrid2.valueMatrix(i, j) != ""){
  196. datagrid2.cellStyle("background-color", i , j) = "#FFB6C1";
  197. }
  198. }
  199. if(datagrid2.valueMatrix(i, j) < low){
  200. if(datagrid2.valueMatrix(i, j) != ""){
  201. datagrid2.cellStyle("background-color", i , j) = "#5ABEF5";
  202. }
  203. }
  204. }
  205. }else {
  206. var low = 20;
  207. var high = 34;
  208. for(j = 4; j < 14; j++){
  209. if(datagrid2.valueMatrix(i, j) > high){
  210. if(datagrid2.valueMatrix(i, j) != ""){
  211. datagrid2.cellStyle("background-color", i , j) = "#FFB6C1";
  212. }
  213. }
  214. if(datagrid2.valueMatrix(i, j) < low){
  215. if(datagrid2.valueMatrix(i, j) != ""){
  216. datagrid2.cellStyle("background-color", i , j) = "#5ABEF5";
  217. }
  218. }
  219. }
  220. }
  221. }
  222. }else if(model.getValue("/root/hidden/ref/gbn") == "5" || model.getValue("/root/hidden/ref/gbn") == "7" || model.getValue("/root/hidden/ref/gbn") == "8"){
  223. var low = 0;
  224. var high = 5;
  225. for(i = 1; i < datagrid2.rows; i++){
  226. if(model.getValue("/root/main/getEqmtQcList[" + i + "]/cv") > high){
  227. if(model.getValue("/root/main/getEqmtQcList[" + i + "]/cv") != ""){
  228. datagrid2.cellStyle("background-color", i , 25) = "#FFB6C1";
  229. }
  230. }
  231. if(model.getValue("/root/main/getEqmtQcList[" + i + "]/cv") < low ){
  232. if(model.getValue("/root/main/getEqmtQcList[" + i + "]/cv") != ""){
  233. datagrid2.cellStyle("background-color", i , 25) = "#5ABEF5";
  234. }
  235. }
  236. }
  237. }else if (model.getValue("/root/hidden/ref/gbn") == "0"){
  238. for(i = 1; i < datagrid2.rows; i++){
  239. if(model.getValue("/root/main/getEqmtQcList[" + i + "]/mquan") == "Peak Deviation"){
  240. var low = -5;
  241. var high = 5;
  242. for(j = 4; j < 14; j++){
  243. if(datagrid2.valueMatrix(i, j) > high){
  244. if(datagrid2.valueMatrix(i, j) != ""){
  245. datagrid2.cellStyle("background-color", i , j) = "#FFB6C1";
  246. }
  247. }
  248. if(datagrid2.valueMatrix(i, j) < low){
  249. if(datagrid2.valueMatrix(i, j) != ""){
  250. datagrid2.cellStyle("background-color", i , j) = "#5ABEF5";
  251. }
  252. }
  253. }
  254. }else {
  255. var low = 20;
  256. var high = 30;
  257. for(j = 4; j < 14; j++){
  258. if(datagrid2.valueMatrix(i, j) > high){
  259. if(datagrid2.valueMatrix(i, j) != ""){
  260. datagrid2.cellStyle("background-color", i , j) = "#FFB6C1";
  261. }
  262. }
  263. if(datagrid2.valueMatrix(i, j) < low){
  264. if(datagrid2.valueMatrix(i, j) != ""){
  265. datagrid2.cellStyle("background-color", i , j) = "#5ABEF5";
  266. }
  267. }
  268. }
  269. }
  270. }
  271. }else{
  272. for(i = 1; i < datagrid2.rows; i++){
  273. var low = parseFloat(model.getValue("/root/main/getEqmtQcList["+ i +"]/low"));
  274. var high = parseFloat(model.getValue("/root/main/getEqmtQcList["+ i +"]/high"));
  275. //alert(high);
  276. for(j = 5; j < 14; j = j+2){
  277. //alert("i = " + i + " , " + " j = " + j + " ::: " + low);
  278. if(datagrid2.valueMatrix(i, j) > high){
  279. if(datagrid2.valueMatrix(i, j) != ""){
  280. datagrid2.cellStyle("background-color", i , j) = "#FFB6C1";
  281. }
  282. }
  283. if(datagrid2.valueMatrix(i, j) < low){
  284. if(datagrid2.valueMatrix(i, j) != ""){
  285. datagrid2.cellStyle("background-color", i , j) = "#5ABEF5";
  286. }
  287. }
  288. }
  289. }
  290. }
  291. }
  292. //널값체크
  293. function fcheckNull(){
  294. for(row=1; row <= datagrid2.rows-1; row++){
  295. for(i=1; i < 16; i++){
  296. if(model.getValue("/root/main/getEqmtQcList[" + row + "]/d"+i) == ""){
  297. model.setValue("/root/main/getEqmtQcList[" + row + "]/d"+i,"-");
  298. }
  299. if(model.getValue("/root/main/getEqmtQcList[" + row + "]/mquan") == ""){
  300. model.setValue("/root/main/getEqmtQcList[" + row + "]/mquan","-");
  301. }
  302. if(model.getValue("/root/main/getEqmtQcList[" + row + "]/avg") == ""){
  303. model.setValue("/root/main/getEqmtQcList[" + row + "]/avg","-");
  304. }
  305. if(model.getValue("/root/main/getEqmtQcList[" + row + "]/avg2") == ""){
  306. model.setValue("/root/main/getEqmtQcList[" + row + "]/avg2","-");
  307. }
  308. if(model.getValue("/root/main/getEqmtQcList[" + row + "]/low") == ""){
  309. model.setValue("/root/main/getEqmtQcList[" + row + "]/low","-");
  310. }
  311. if(model.getValue("/root/main/getEqmtQcList[" + row + "]/high") == ""){
  312. model.setValue("/root/main/getEqmtQcList[" + row + "]/high","-");
  313. }
  314. if(model.getValue("/root/main/getEqmtQcList[" + row + "]/hv") == ""){
  315. model.setValue("/root/main/getEqmtQcList[" + row + "]/hv","-");
  316. }
  317. if(model.getValue("/root/main/getEqmtQcList[" + row + "]/sd") == ""){
  318. model.setValue("/root/main/getEqmtQcList[" + row + "]/sd","-");
  319. }
  320. if(model.getValue("/root/main/getEqmtQcList[" + row + "]/cv") == ""){
  321. model.setValue("/root/main/getEqmtQcList[" + row + "]/cv","-");
  322. }
  323. }
  324. }
  325. }
  326. //데이터저장,삭제
  327. function fSetList(){
  328. if(messageBox("", "Q002")==6){
  329. var iData = datagrid2.getUpdateDataXml("insert");
  330. var uData = datagrid2.getUpdateDataXml("update");
  331. var dData = datagrid2.getUpdateDataXml("delete");
  332. if (iData=="" && uData=="" && dData=="") {
  333. alert("저장할 자료가 존재하지 않습니다.");
  334. return;
  335. }
  336. fcheckNull();
  337. var row = datagrid2.row;
  338. model.setValue("/root/send/data", datagrid2.getUpdateData());
  339. //alert(model.getValue("/root/send/data"));
  340. submit("TXLQJ00302");
  341. fExeEqmtList();
  342. }
  343. }
  344. //초기화
  345. function fSetInit() {
  346. datagrid2.fixedcellcheckbox(0, 1) = true;
  347. model.setValue("/root/send/codeflag", "9997|9998|");
  348. model.makeValue("/root/send/basecdid", "N01");
  349. submit("TRLZZ00101");
  350. var toDay = getCurrentDate();
  351. model.setValue("/root/hidden/ref/fromdd",toDay);
  352. model.setValue("/root/hidden/ref/todd",toDay);
  353. model.removeNodeset("/root/main");
  354. model.refresh();
  355. fRegrid();
  356. }
  357. //콤보박스에따른 조회구분
  358. function fSetEqmtCd(){
  359. model.removeNodeset("/root/init/LB9998");
  360. var eqmtcd = model.getValue("/root/hidden/ref/eqmtcd");
  361. model.makeValue("/root/send/basecdid", eqmtcd);
  362. model.setValue("/root/send/codeflag","9998|");
  363. model.setValue("/root/hidden/ref/code", "1");
  364. submit("TRLZZ00101");
  365. fRegrid();
  366. }
  367. //그리드구분
  368. function fRegrid(){
  369. if (model.getValue("/root/hidden/ref/eqmtcd") == "N01"){
  370. if (model.getValue("/root/hidden/ref/code") == "1"){
  371. model.setValue("/root/hidden/ref/gbn","1");
  372. model.removeNodeset("/root/main");
  373. model.refresh();
  374. }else if (model.getValue("/root/hidden/ref/code") == "2"){
  375. model.setValue("/root/hidden/ref/gbn","2");
  376. radio1.visible = true;
  377. model.removeNodeset("/root/main");
  378. model.refresh();
  379. }else if (model.getValue("/root/hidden/ref/code") == "3"){
  380. model.setValue("/root/hidden/ref/gbn","3");
  381. model.removeNodeset("/root/main");
  382. model.refresh();
  383. }
  384. }else if(model.getValue("/root/hidden/ref/eqmtcd") == "N02"){
  385. if (model.getValue("/root/hidden/ref/code") == "1"){
  386. model.setValue("/root/hidden/ref/gbn","1");
  387. model.removeNodeset("/root/main");
  388. model.refresh();
  389. }else if (model.getValue("/root/hidden/ref/code") == "2"){
  390. model.setValue("/root/hidden/ref/gbn","0");
  391. radio2.visible = true;
  392. model.removeNodeset("/root/main");
  393. model.refresh();
  394. }else if (model.getValue("/root/hidden/ref/code") == "3"){
  395. model.setValue("/root/hidden/ref/gbn","3");
  396. model.removeNodeset("/root/main");
  397. model.refresh();
  398. }
  399. }else if (model.getValue("/root/hidden/ref/eqmtcd") == "N03"){
  400. if (model.getValue("/root/hidden/ref/code") == "1"){
  401. model.setValue("/root/hidden/ref/gbn","4");
  402. model.removeNodeset("/root/main");
  403. model.refresh();
  404. }else if (model.getValue("/root/hidden/ref/code") == "2"){
  405. model.setValue("/root/hidden/ref/gbn","5");
  406. model.removeNodeset("/root/main");
  407. model.refresh();
  408. }else {
  409. model.setValue("/root/hidden/ref/gbn","6");
  410. model.removeNodeset("/root/main");
  411. model.refresh();
  412. }
  413. }else {
  414. if (model.getValue("/root/hidden/ref/code") == "1"){
  415. model.setValue("/root/hidden/ref/gbn","7");
  416. model.removeNodeset("/root/main");
  417. model.refresh();
  418. }else {
  419. model.setValue("/root/hidden/ref/gbn","8");
  420. model.removeNodeset("/root/main");
  421. model.refresh();
  422. }
  423. }
  424. fReHeader();
  425. }
  426. //헤더생성
  427. function fReHeader(){
  428. var gbn = model.getValue("/root/hidden/ref/gbn");
  429. var newCap = "";
  430. datagrid2.rebuildStyle();
  431. datagrid2.refresh();
  432. datagrid2.gridToInstance();
  433. if (gbn == "1") {
  434. for(i=1; i<=28; i++){
  435. datagrid2.colHidden(i) = false;
  436. }
  437. datagrid2.colHidden(14) = true;
  438. datagrid2.colHidden(15) = true;
  439. datagrid2.colHidden(16) = true;
  440. datagrid2.colHidden(17) = true;
  441. datagrid2.colHidden(18) = true;
  442. datagrid2.colHidden(19) = true;
  443. datagrid2.colHidden(20) = true;
  444. datagrid2.colHidden(21) = true;
  445. datagrid2.colHidden(22) = true;
  446. datagrid2.colHidden(23) = true;
  447. datagrid2.colHidden(24) = true;
  448. datagrid2.colHidden(25) = true;
  449. datagrid2.colHidden(26) = true;
  450. datagrid2.colHidden(27) = true;
  451. datagrid2.colHidden(28) = true;
  452. newCap += "^ " + "측정일" + "^ " + "(cpm)" + "^ " + "D1" + "^ " + "D2" + "^ " + "D3" + "^ " + "D4" + "^ "
  453. + "D5" + "^ " + "D6" + "^ " + "D7" + "^ " + "D8" + "^ " + "D9" + "^ " + "D10" + "^^^^^^^^^^^^";
  454. datagrid2.caption = newCap;
  455. model.refresh();
  456. }
  457. if (gbn == "0" || gbn == "2") {
  458. for(i=1; i<=28; i++){
  459. datagrid2.colHidden(i) = false;
  460. }
  461. datagrid2.colHidden(14) = true;
  462. datagrid2.colHidden(15) = true;
  463. datagrid2.colHidden(16) = true;
  464. datagrid2.colHidden(17) = true;
  465. datagrid2.colHidden(18) = true;
  466. datagrid2.colHidden(19) = true;
  467. datagrid2.colHidden(20) = true;
  468. datagrid2.colHidden(21) = true;
  469. datagrid2.colHidden(22) = true;
  470. datagrid2.colHidden(23) = true;
  471. datagrid2.colHidden(24) = true;
  472. datagrid2.colHidden(25) = true;
  473. datagrid2.colHidden(26) = true;
  474. datagrid2.colHidden(27) = true;
  475. datagrid2.colHidden(28) = true;
  476. newCap += "^ " + "측정일" + "^ " + "항목" + "^ " + "D1" + "^ " + "D2" + "^ " + "D3" + "^ " + "D4" + "^ "
  477. + "D5" + "^ " + "D6" + "^ " + "D7" + "^ " + "D8" + "^ " + "D9" + "^ " + "D10" + "^^^^^^^^^^^^";
  478. datagrid2.caption = newCap;
  479. model.refresh();
  480. }
  481. if (gbn == "3") {
  482. for(i=1; i<=28; i++){
  483. datagrid2.colHidden(i) = false;
  484. }
  485. datagrid2.colHidden(14) = true;
  486. datagrid2.colHidden(15) = true;
  487. datagrid2.colHidden(16) = true;
  488. datagrid2.colHidden(17) = true;
  489. datagrid2.colHidden(18) = true;
  490. datagrid2.colHidden(19) = true;
  491. datagrid2.colHidden(20) = true;
  492. datagrid2.colHidden(21) = true;
  493. datagrid2.colHidden(22) = true;
  494. datagrid2.colHidden(23) = true;
  495. datagrid2.colHidden(24) = true;
  496. datagrid2.colHidden(25) = true;
  497. datagrid2.colHidden(26) = true;
  498. datagrid2.colHidden(27) = true;
  499. datagrid2.colHidden(28) = true;
  500. newCap = "^ " + "측정일" + "^ " + "(%EFF)" + "^ " + "D1" + "^ " + "D2" + "^ " + "D3" + "^ " + "D4" + "^ "
  501. + "D5" + "^ " + "D6" + "^ " + "D7" + "^ " + "D8" + "^ " + "D9" + "^ " + "D10" + "^^^^^^^^^^^^" ;
  502. datagrid2.caption = newCap;
  503. model.refresh();
  504. }
  505. if (gbn == "4") {
  506. for(i=1; i<=28; i++){
  507. datagrid2.colHidden(i) = false;
  508. }
  509. datagrid2.colHidden(3) = true;
  510. datagrid2.colHidden(19) = true;
  511. datagrid2.colHidden(20) = true;
  512. datagrid2.colHidden(21) = true;
  513. datagrid2.colHidden(22) = true;
  514. datagrid2.colHidden(23) = true;
  515. datagrid2.colHidden(24) = true;
  516. datagrid2.colHidden(25) = true;
  517. datagrid2.colHidden(26) = true;
  518. datagrid2.colHidden(27) = true;
  519. datagrid2.colHidden(28) = true;
  520. newCap =
  521. "^ " + "측정일" + "^^ " + "D1" + "^ " + "D1" + "^ " + "D1" + "^ " + "D2" + "^ " + "D2" + "^ " + "D2" + "^ " + "D3" + "^ " + "D3" + "^ " + "D3"
  522. + "^ " + "D4" + "^ " + "D4" + "^ " + "D4" + "^ " + "D5" + "^ " + "D5" + "^ " + "D5" + "^^^^^^";
  523. datagrid2.caption = newCap;
  524. model.refresh();
  525. }
  526. if (gbn == "5") {
  527. for(i=1; i<=28; i++){
  528. datagrid2.colHidden(i) = false;
  529. }
  530. datagrid2.colHidden(14) = true;
  531. datagrid2.colHidden(15) = true;
  532. datagrid2.colHidden(16) = true;
  533. datagrid2.colHidden(17) = true;
  534. datagrid2.colHidden(18) = true;
  535. datagrid2.colHidden(20) = true;
  536. datagrid2.colHidden(21) = true;
  537. datagrid2.colHidden(22) = true;
  538. datagrid2.colHidden(23) = true;
  539. datagrid2.colHidden(26) = true;
  540. datagrid2.colHidden(27) = true;
  541. datagrid2.colHidden(28) = true;
  542. newCap += "^ " + "측정일" + "^ " + "측정량(ul)" + "^ " + "P1" + "^ " + "P2" + "^ " + "P3" + "^ " + "P4" + "^ "
  543. + "P5" + "^ " + "P6" + "^ " + "P7" + "^ " + "P8" + "^ " + "P9" + "^ " + "P10" + "^^^^^^" + "평균" + "^^^^^" + "표준편차"
  544. + "^" + "변동계수(%CV)";
  545. datagrid2.caption = newCap;
  546. model.refresh();
  547. }
  548. if (gbn == "6") {
  549. for(i=1; i<=28; i++){
  550. datagrid2.colHidden(i) = false;
  551. }
  552. datagrid2.colHidden(3) = true;
  553. datagrid2.colHidden(14) = true;
  554. datagrid2.colHidden(15) = true;
  555. datagrid2.colHidden(16) = true;
  556. datagrid2.colHidden(17) = true;
  557. datagrid2.colHidden(18) = true;
  558. datagrid2.colHidden(24) = true;
  559. datagrid2.colHidden(25) = true;
  560. datagrid2.colHidden(26) = true;
  561. datagrid2.colHidden(27) = true;
  562. datagrid2.colHidden(28) = true;
  563. newCap = "^ " + "측정일" + "^^ " + "D1" + "^ " + "D1" + "^ " + "D2" + "^ " + "D2" + "^ " + "D3" + "^ " + "D3"
  564. + "^ " + "D4" + "^ " + "D4" + "^ " + "D5" + "^ " + "D5" + "^^^^^^ " + "평균" + "^ " + "평균" + "^ " + "허용치" + "^ " + "허용치" + "^" + "HIGH-VOLTAGE" + "^^";
  565. datagrid2.caption = newCap;
  566. model.refresh();
  567. }
  568. if (gbn == "7") {
  569. for(i=1; i<=28; i++){
  570. datagrid2.colHidden(i) = false;
  571. }
  572. datagrid2.colHidden(12) = true;
  573. datagrid2.colHidden(13) = true;
  574. datagrid2.colHidden(14) = true;
  575. datagrid2.colHidden(15) = true;
  576. datagrid2.colHidden(16) = true;
  577. datagrid2.colHidden(17) = true;
  578. datagrid2.colHidden(18) = true;
  579. datagrid2.colHidden(20) = true;
  580. datagrid2.colHidden(21) = true;
  581. datagrid2.colHidden(22) = true;
  582. datagrid2.colHidden(23) = true;
  583. datagrid2.colHidden(26) = true;
  584. datagrid2.colHidden(27) = true;
  585. datagrid2.colHidden(28) = true;
  586. newCap += "^ " + "측정일" + "^ " + "측정(ul)" + "^ " + "P1" + "^ " + "P2" + "^ " + "P3" + "^ " + "P4" + "^ "
  587. + "P5" + "^ " + "P6" + "^ " + "P7" + "^ " + "P8" + "^ " + "P9" + "^ " + "P10" + "^^^^^^" + "평균" + "^^^^^" + "표준편차"
  588. + "^" + "변동계수(%CV)";
  589. datagrid2.caption = newCap;
  590. model.refresh();
  591. }
  592. }
  593. // 행추가
  594. function fInsRowAdd(){
  595. var gbn = model.getValue("/root/hidden/ref/gbn");
  596. if (gbn == "1"){
  597. datagrid2.addRow();
  598. var tDay = getCurrentDate();
  599. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/mquan", "cpm");
  600. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/chk", "N");
  601. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/mdd", tDay);
  602. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/eqmtcd", model.getValue("/root/hidden/ref/eqmtcd"));
  603. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/gbn", model.getValue("/root/hidden/ref/gbn"));
  604. model.refresh();
  605. }else if (gbn == "3"){
  606. datagrid2.addRow();
  607. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/mquan", "%EFF");
  608. var tDay = getCurrentDate();
  609. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/chk", "N");
  610. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/mdd", tDay);
  611. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/eqmtcd", model.getValue("/root/hidden/ref/eqmtcd"));
  612. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/gbn", model.getValue("/root/hidden/ref/gbn"));
  613. model.refresh();
  614. }else if (gbn == "5" || gbn == "7" || gbn == "8"){
  615. datagrid2.addRow();
  616. //model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/mquan", "ul");
  617. var tDay = getCurrentDate();
  618. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/chk", "N");
  619. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/mdd", tDay);
  620. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/eqmtcd", model.getValue("/root/hidden/ref/eqmtcd"));
  621. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/gbn", model.getValue("/root/hidden/ref/gbn"));
  622. model.refresh();
  623. }else if (gbn == "4" || gbn == "6"){
  624. datagrid2.addRow();
  625. var tDay = getCurrentDate();
  626. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/chk", "N");
  627. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/mdd", tDay);
  628. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/eqmtcd", model.getValue("/root/hidden/ref/eqmtcd"));
  629. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/gbn", model.getValue("/root/hidden/ref/gbn"));
  630. model.refresh();
  631. }else if (gbn == "2"){
  632. datagrid2.addRow();
  633. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/eqmtcd", model.getValue("/root/hidden/ref/eqmtcd"));
  634. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/gbn", model.getValue("/root/hidden/ref/gbn"));
  635. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/chk", "N");
  636. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/mquan", "CRF");
  637. var tDay = getCurrentDate();
  638. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/mdd", tDay);
  639. datagrid2.addRow();
  640. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/eqmtcd", model.getValue("/root/hidden/ref/eqmtcd"));
  641. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/gbn", model.getValue("/root/hidden/ref/gbn"));
  642. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/chk", "N");
  643. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/mquan", "Resolution");
  644. var tDay = getCurrentDate();
  645. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/mdd", tDay);
  646. model.refresh();
  647. }else if (gbn == "0"){
  648. datagrid2.addRow();
  649. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/eqmtcd", model.getValue("/root/hidden/ref/eqmtcd"));
  650. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/gbn", model.getValue("/root/hidden/ref/gbn"));
  651. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/chk", "N");
  652. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/mquan", "Peak Deviation");
  653. var tDay = getCurrentDate();
  654. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/mdd", tDay);
  655. datagrid2.addRow();
  656. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/eqmtcd", model.getValue("/root/hidden/ref/eqmtcd"));
  657. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/gbn", model.getValue("/root/hidden/ref/gbn"));
  658. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/chk", "N");
  659. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/mquan", "Resolution");
  660. var tDay = getCurrentDate();
  661. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/mdd", tDay);
  662. model.refresh();
  663. }
  664. }
  665. //행삭제
  666. function fInsRowdel() {
  667. if(messageBox("", "Q001")==6){
  668. var row = datagrid2.row;
  669. datagrid2.rowStatus(row) = 4;
  670. model.refresh();
  671. }else{
  672. return;
  673. }
  674. }
  675. //엑셀저장
  676. function fSaveExcel(){
  677. var fileName = window.fileDialog("save", ",", false, "excel", "xls", "All Files (*.*)|*.*|Excel Files(*.xls)|*.xls");
  678. if (fileName != ""){
  679. datagrid2.saveExcel(fileName);
  680. }
  681. }
  682. //계산식
  683. function fSetRef(){
  684. var gbn = model.getValue("/root/hidden/ref/gbn");
  685. var inptcnt = 0; // 결과값 col 수
  686. var inptsum = 0; // 결과값 sum
  687. var inptsd = 0; //결과값표준편차
  688. var ext = Math.pow(10, 2);
  689. if(gbn == "4"){
  690. var d1 = parseFloat(model.getValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d1"));
  691. var d2 = parseFloat(model.getValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d2"));
  692. if(model.getValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d1") != "" && model.getValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d2") != ""){
  693. var d3 = (d1 + d2) / 2;
  694. d3 = Math.round(d3 * ext) / ext;;
  695. model.setValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d3", d3);
  696. }
  697. var d4 = parseFloat(model.getValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d4"));
  698. var d5 = parseFloat(model.getValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d5"));
  699. if(model.getValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d4") != "" && model.getValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d5") != ""){
  700. var d6 = (d4 + d5) / 2;
  701. d6 = Math.round(d6 * ext) / ext;;
  702. model.setValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d6", d6);
  703. }
  704. var d7 = parseFloat(model.getValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d7"));
  705. var d8 = parseFloat(model.getValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d8"));
  706. if(model.getValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d7") != "" && model.getValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d8") != ""){
  707. var d9 = (d7 + d8) / 2;
  708. d9 = Math.round(d9 * ext) / ext;;
  709. model.setValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d9", d9);
  710. }
  711. var d10 = parseFloat(model.getValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d10"));
  712. var d11 = parseFloat(model.getValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d11"));
  713. if(model.getValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d10") != "" && model.getValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d11") != ""){
  714. var d12 = (d10 + d11) / 2;
  715. d12 = Math.round(d12 * ext) / ext;;
  716. model.setValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d12", d12);
  717. }
  718. var d13 = parseFloat(model.getValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d13"));
  719. var d14 = parseFloat(model.getValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d14"));
  720. if(model.getValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d13") != "" && model.getValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d14") != ""){
  721. var d15 = (d13 + d14) / 2;
  722. d15 = Math.round(d15 * ext) / ext;;
  723. model.setValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d15", d15);
  724. }
  725. }
  726. if(gbn == "5" || gbn == "7" || gbn == "8"){
  727. var cal = 0;
  728. var inptsd2 = 0;
  729. var inptsd3 = 0;
  730. if(gbn = "5"){ // 평균
  731. for(i=1; i < 11; i++){
  732. cal = model.getValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d"+i);
  733. if(cal != ""){ // 결과값 있는거
  734. inptcnt = inptcnt + 1; // 결과값 들어있는 칸 수
  735. inptsum += parseFloat(cal); // 결과값 sum
  736. avg = inptsum/inptcnt;
  737. }
  738. }
  739. }else{
  740. for(i=1; i < 9; i++){
  741. cal = model.getValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d"+i);
  742. if(cal != ""){ // 결과값 있는거
  743. inptcnt = inptcnt + 1; // 결과값 들어있는 칸 수
  744. inptsum += parseFloat(cal); // 결과값 sum
  745. avg = inptsum/inptcnt;
  746. }
  747. }
  748. }
  749. if(gbn = "5"){ //sd,sv 계산
  750. for(i=1; i < 11; i++){
  751. cal = model.getValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d"+i);
  752. if(cal != ""){
  753. inptsd = parseFloat(cal)- parseFloat(avg);
  754. inptsd2 = inptsd * inptsd;
  755. inptsd3 += inptsd2;
  756. }
  757. }
  758. }else{
  759. for(i=1; i < 9; i++){
  760. cal = model.getValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d"+i);
  761. if(cal != ""){
  762. inptsd = parseFloat(cal)- parseFloat(avg);
  763. inptsd2 = inptsd * inptsd;
  764. inptsd3 += inptsd2;
  765. }
  766. }
  767. }
  768. avg2 = Math.round(avg * ext) / ext;;
  769. model.setValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/avg", avg2);
  770. //alert(inptsd3 + " : " + inptcnt);
  771. ssd = inptsd3 / inptcnt;
  772. sd = Math.sqrt(ssd);
  773. sd = Math.round(sd * ext) / ext;
  774. model.setValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/sd", sd);
  775. var cv = sd / avg * 100;
  776. cv = Math.round(cv * ext) / ext;
  777. model.setValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/cv", cv);
  778. }
  779. if(gbn == "6"){
  780. for(i=1; i < 11; i = i+2){
  781. if(model.getValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d"+i) != ""){ // 결과값 있는거
  782. inptcnt = inptcnt + 1; // 결과값 들어있는 칸 수
  783. inptsum += parseFloat(model.getValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d"+i)); // 결과값 sum
  784. }
  785. }
  786. if(inptcnt > 0){
  787. var avg = inptsum / inptcnt ; // 평균
  788. avg = Math.round(avg * ext) / ext;;
  789. model.setValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/avg", avg);
  790. }
  791. var inptsum2 = 0;
  792. var inptcnt2 = 0;
  793. for(i=2; i < 11; i = i+2){
  794. if(model.getValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d"+i) != ""){ // 결과값 있는거
  795. inptcnt2 = inptcnt2 + 1; // 결과값 들어있는 칸 수
  796. inptsum2 += parseFloat(model.getValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/d"+i)); // 결과값 sum
  797. }
  798. }
  799. if(inptcnt2 > 0){
  800. var avg2 = inptsum2 / inptcnt2 ; // 평균
  801. var high = avg2 + (avg2 * 0.25);
  802. var low = avg2 - (avg2 * 0.25);
  803. avg2 = Math.round(avg2 * ext) / ext;;
  804. high = Math.round(high * ext) / ext;;
  805. low = Math.round(low * ext) / ext;;
  806. model.setValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/avg2", avg2);
  807. model.setValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/low", low);
  808. model.setValue("/root/main/getEqmtQcList[" + datagrid2.row + "]/high", high);
  809. }
  810. }
  811. //저장 데이터 확인
  812. function checkGridUpdate(grid){
  813. var iData = grid.getUpdateDataXml("insert");
  814. var uData = grid.getUpdateDataXml("update");
  815. var dData = grid.getUpdateDataXml("delete");
  816. if (iData=="" && uData=="" && dData=="") return false;
  817. else{
  818. return true;
  819. }
  820. }
  821. }
  822. //결과입력이동
  823. function fGrdKeyEvent(){
  824. if(model.getValue("/root/hidden/ref/gbn") == "6"){
  825. if(datagrid2.col=="13"){
  826. datagrid2.col += 10;
  827. }else{
  828. datagrid2.col = datagrid2.col + 1 ;
  829. if(datagrid2.col=="24"){
  830. datagrid2.col = 4;
  831. datagrid2.row += 1;
  832. }
  833. }
  834. }else if(model.getValue("/root/hidden/ref/gbn") == "4"){
  835. if(datagrid2.col=="5" || datagrid2.col=="8" || datagrid2.col=="11" || datagrid2.col=="14" || datagrid2.col=="17"){
  836. datagrid2.col = datagrid2.col + 2 ;
  837. if(datagrid2.col=="19"){
  838. datagrid2.col = 4;
  839. datagrid2.row += 1;
  840. }
  841. }else{
  842. datagrid2.col = datagrid2.col + 1 ; }
  843. }else if(model.getValue("/root/hidden/ref/gbn") == "2"){
  844. if(datagrid2.col=="13"){
  845. datagrid2.col -= 9;
  846. datagrid2.row += 1;
  847. }else{
  848. datagrid2.col = datagrid2.col + 1 ;
  849. }
  850. }else if(model.getValue("/root/hidden/ref/gbn") == "7" || model.getValue("/root/hidden/ref/gbn") == "8"){
  851. datagrid2.col = datagrid2.col + 1 ;
  852. if(datagrid2.col=="12"){
  853. datagrid2.col = 3;
  854. datagrid2.row += 1;
  855. }
  856. }else if(model.getValue("/root/hidden/ref/gbn") == "5"){
  857. datagrid2.col = datagrid2.col + 1 ;
  858. if(datagrid2.col=="14"){
  859. datagrid2.col = 3;
  860. datagrid2.row += 1;
  861. }
  862. }else{
  863. datagrid2.col = datagrid2.col + 1 ;
  864. if(datagrid2.col=="14"){
  865. datagrid2.col = 4;
  866. datagrid2.row += 1;
  867. }
  868. }
  869. }
  870. //그래프그리기
  871. function fInitChart(cnt, gbn){
  872. var cnt = cnt;
  873. var gbn = gbn;
  874. var sCol = 4;
  875. var eCols = 18;
  876. if(cnt == 0){
  877. alert("그래프를 작성할 항목을 선택하세요");
  878. return;
  879. }else if(cnt ==1){
  880. var vEnd = 0;
  881. var chkrow = datagrid2.findRow("Y", 1, 1);
  882. for(i = sCol; i <= eCols; i++){
  883. var x = datagrid2.valueMatrix(chkrow, i);
  884. if(x != ""){
  885. vEnd += 1;
  886. }
  887. }
  888. //alert(vEnd);
  889. var v1SDH = vAvg + vSD;
  890. var v2SDH = vAvg + vSD*2;
  891. var v3SDH = vAvg + vSD*3;
  892. var v4SDH = vAvg + vSD*4;
  893. var v1SDL = vAvg - vSD;
  894. var v2SDL = vAvg - vSD*2;
  895. var v3SDL = vAvg - vSD*3;
  896. var v4SDL = vAvg - vSD*4;
  897. }else{
  898. var vEnd;
  899. }
  900. var Obj_Chart = object2;
  901. var vStart = 0; //시리즈 번호
  902. Obj_Chart.Aspect.View3D = 0; // 2d 로 표현하기
  903. Obj_Chart.Zoom.Enable = false; // zoom 사용하지 않기
  904. Obj_Chart.Scroll.Enable = 2;
  905. Obj_Chart.Environment.MouseWheelScroll = false;
  906. Obj_Chart.Legend.Visible = false; // 그래프 참조 박스 띄우지 않기
  907. Obj_Chart.Panel.Gradient.Visible = true; // 페널에 그라디언트 적용
  908. Obj_Chart.Panel.Gradient.StartColor = 0xffffff;
  909. Obj_Chart.Panel.Gradient.EndColor=0xffffff;
  910. Obj_Chart.Legend.Visible = true; //범례표시 여부
  911. Obj_Chart.Legend.Alignment = 3; // Legend 위치 설정 :: 0 = left | 1 = right | 2 = top| 3 = bottom
  912. Obj_Chart.Legend.CheckBoxes = false; //범례 체크박스
  913. Obj_Chart.RemoveAllSeries();
  914. Obj_Chart.Axis.RemoveAllCustom();
  915. //margin 값 정하기
  916. Obj_Chart.Panel.MarginTop = 4;
  917. Obj_Chart.Panel.MarginLeft = 2;
  918. Obj_Chart.Panel.MarginRight = 4;
  919. Obj_Chart.Panel.MarginBottom = 2;
  920. Obj_Chart.Header.Visible = false;
  921. Obj_Chart.Axis.Left.Labels.Style = 2;
  922. Obj_Chart.Axis.Right.Labels.Style = 1;
  923. Obj_Chart.Axis.Bottom.Labels.Style = 4; // 0:auto or value, 1:No, 2 :민 맥스, 3: marks style, 4:text
  924. if(gbn == "5" || gbn == "7" || gbn == "8"){
  925. Obj_Chart.Axis.Bottom.Labels.Angle = 90;
  926. }else{
  927. Obj_Chart.Axis.Bottom.Labels.Angle = 0;
  928. }
  929. Obj_Chart.Axis.Bottom.Labels.Size = 95; //하단 라벨의 사이즈 조치사항 추가하면서 자동으로 늘어나서 추가함
  930. if (gbn == "1" || gbn == "4"){
  931. Obj_Chart.Axis.Left.Title.Caption = "( cpm )";
  932. }else if (gbn == "3"){
  933. Obj_Chart.Axis.Left.Title.Caption = "( %EFF )";
  934. }else{
  935. Obj_Chart.Axis.Left.Title.Caption = "";
  936. }
  937. Obj_Chart.Axis.Left.Automatic = true;
  938. //날짜그래프
  939. Obj_Chart.AddSeries(0); //asLine
  940. Obj_Chart.Series(0).asLine.LinePen.Width = 1; //펜 두께
  941. Obj_Chart.Series(0).asLine.Pointer.Visible = false; //값에 대한 포인터
  942. Obj_Chart.Series(0).ShowInLegend = false;
  943. var find, row, tmp;
  944. var findRows = "";
  945. var CRFYN = "";
  946. var PeakYN = "";
  947. for(r = 1; r <datagrid2.rows; r++){
  948. if(model.getValue("/root/main/getEqmtQcList[" + r + "]/chk") == "Y"){
  949. findRows = findRows + r + "▦";
  950. if(model.getValue("/root/main/getEqmtQcList[" + r + "]/mquan") == "CRF"){
  951. CRFYN = "Y";
  952. }else{
  953. CRFYN = "N";
  954. }
  955. if(model.getValue("/root/main/getEqmtQcList[" + r + "]/mquan") == "Resolution"){
  956. PeakYN = "N";
  957. }else{
  958. PeakYN = "Y";
  959. }
  960. }
  961. }
  962. row = findRows.substr(0, findRows.length-1).split("▦"); //체크된 항목의 row▦row...
  963. //Low/High그래푸
  964. if(row.length == 1){
  965. if(gbn == "1"){
  966. var vAvg = 50;
  967. var vSD = 25;
  968. vLow = 0;
  969. vHigh = 100;
  970. }else if(gbn == "0"){
  971. if(PeakYN == "Y"){
  972. var vAvg = 0;
  973. var vSD = 10;
  974. vLow = -5;
  975. vHigh = 5;
  976. }else if(PeakYN == "N"){
  977. var vAvg = 25;
  978. var vSD = 10;
  979. vLow = 20;
  980. vHigh = 30;
  981. }
  982. }else if(gbn == "2"){
  983. if(CRFYN == "Y"){
  984. var vAvg = 1;
  985. var vSD = 0.2;
  986. vLow = 0.95;
  987. vHigh = 1.05;
  988. }else if(CRFYN == "N"){
  989. var vAvg = 27;
  990. var vSD = 10;
  991. vLow = 20;
  992. vHigh = 34;
  993. }
  994. }else if(gbn == "3"){
  995. var vAvg = 80;
  996. var vSD = 20;
  997. vLow = 75;
  998. vHigh = 85;
  999. }else if(gbn == "4"){
  1000. var vAvg = 50;
  1001. var vSD = 25;
  1002. vLow = 0;
  1003. vHigh = 100;
  1004. }else if(gbn == "6"){
  1005. var vAvg = 130;
  1006. var vSD = 20;
  1007. vLow = 110;
  1008. vHigh = 150;
  1009. }else{
  1010. var vAvg = 2.5;
  1011. var vSD = 10;
  1012. vLow = 0;
  1013. vHigh = 5;
  1014. }
  1015. fMakeLineLH(vAvg, vHigh, vLow, vStart, vEnd, gbn);
  1016. }else{
  1017. if(gbn == "1"){
  1018. var vAvg = 50;
  1019. var vSD = 20;
  1020. vLow = 0;
  1021. vHigh = 100;
  1022. }else if(gbn == "0"){
  1023. if(PeakYN == "Y"){
  1024. var vAvg = 0;
  1025. var vSD = 2;
  1026. vLow = -5;
  1027. vHigh = 5;
  1028. }else if(PeakYN == "N"){
  1029. var vAvg = 25;
  1030. var vSD = 10;
  1031. vLow = 20;
  1032. vHigh = 30;
  1033. }
  1034. }else if(gbn == "2"){
  1035. if(CRFYN == "Y"){
  1036. var vAvg = 1;
  1037. var vSD = 0.2;
  1038. vLow = 0.95;
  1039. vHigh = 1.05;
  1040. }else if(CRFYN == "N"){
  1041. var vAvg = 27;
  1042. var vSD = 10;
  1043. vLow = 20;
  1044. vHigh = 34;
  1045. }
  1046. }else if(gbn == "3"){
  1047. var vAvg = 80;
  1048. var vSD = 20;
  1049. vLow = 75;
  1050. vHigh = 85;
  1051. }else if(gbn == "4"){
  1052. var vAvg = 50;
  1053. var vSD = 20;
  1054. vLow = 0;
  1055. vHigh = 100;
  1056. }else if(gbn == "6"){
  1057. var vAvg = 130;
  1058. var vSD = 20;
  1059. vLow = 110;
  1060. vHigh = 150;
  1061. }else{
  1062. var vAvg = 2.5;
  1063. var vSD = 10;
  1064. vLow = 0;
  1065. vHigh = 5;
  1066. }
  1067. for(i = 0; i < row.length; i++){
  1068. tmp = 0;
  1069. vEnd = 0; //각 검사항목의 라인 끝점
  1070. for(j = sCol; j <= eCols; j++){ //4번째 컬럼부터 column0~ 시작
  1071. x = datagrid2.valueMatrix(row[i], j);
  1072. if(x != ""){
  1073. vEnd += 1; //결과 값이 있다면 1씩 더해
  1074. if(tmp == 0){
  1075. vStart = j - sCol; //라인의 시작점
  1076. }
  1077. tmp++;
  1078. }
  1079. }
  1080. fMakeLineLH(vAvg, vHigh, vLow, vStart, vEnd, gbn);
  1081. }
  1082. }
  1083. fMakeChartOrgRslt(row, gbn, vAvg, vSD, sCol, eCols, vStart, vEnd, vHigh, vLow); // 챠트 그리기
  1084. }
  1085. //Low/High 그래프에 대한 라인 그리기
  1086. function fMakeLineLH(vAvg, vHigh, vLow, vStart, vEnd, gbn){
  1087. var Obj_Chart = object2;
  1088. var idx = Obj_Chart.SeriesCount ;
  1089. var vHigh = vHigh;
  1090. var vLow = vLow;
  1091. if (gbn == "4" ){
  1092. var vEnd = vEnd-11;
  1093. }else if (gbn == "6" ){
  1094. var vEnd = vEnd-6;
  1095. }else if (gbn == "5" || gbn == "7" || gbn == "8" ){
  1096. var vEnd = -1;
  1097. for(i=1; i <= datagrid2.rows; i++){
  1098. if(model.getValue("/root/main/getEqmtQcList[" + i + "]/chk") == "Y"){
  1099. vEnd += 1;
  1100. }
  1101. }
  1102. }else{
  1103. var vEnd = vEnd-1;
  1104. }
  1105. if(gbn == "6"){
  1106. Obj_Chart.AddSeries(0); //asLine
  1107. Obj_Chart.Series(idx).asLine.LinePen.Width = 1;
  1108. Obj_Chart.Series(idx).Color = 0x00ccff; //Low 라인
  1109. Obj_Chart.Series(idx).ShowInLegend = false;
  1110. Obj_Chart.Series(idx).AddXY (vStart , vLow , "", Obj_Chart.Series(idx).Color );
  1111. Obj_Chart.Series(idx).AddXY (vEnd , vLow , "", Obj_Chart.Series(idx).Color );
  1112. idx = Obj_Chart.SeriesCount ;
  1113. Obj_Chart.AddSeries(0); //asLine
  1114. Obj_Chart.Series(idx).asLine.LinePen.Width = 1;
  1115. Obj_Chart.Series(idx).Color = 0x0000FF; //High 라인
  1116. Obj_Chart.Series(idx).ShowInLegend = false;
  1117. Obj_Chart.Series(idx).AddXY (vStart , vHigh , "", Obj_Chart.Series(idx).Color);
  1118. Obj_Chart.Series(idx).AddXY (vEnd , vHigh , "", Obj_Chart.Series(idx).Color);
  1119. }else{
  1120. Obj_Chart.AddSeries(0); //asLine
  1121. Obj_Chart.Series(idx).asLine.LinePen.Width = 2;
  1122. Obj_Chart.Series(idx).Color = 0x00ccff; //Low 라인
  1123. Obj_Chart.Series(idx).ShowInLegend = false;
  1124. Obj_Chart.Series(idx).AddXY (vStart , vLow , "", Obj_Chart.Series(idx).Color );
  1125. Obj_Chart.Series(idx).AddXY (vEnd , vLow , "", Obj_Chart.Series(idx).Color );
  1126. idx = Obj_Chart.SeriesCount ;
  1127. Obj_Chart.AddSeries(0); //asLine
  1128. Obj_Chart.Series(idx).asLine.LinePen.Width = 2;
  1129. Obj_Chart.Series(idx).Color = 0x0000FF; //High 라인
  1130. Obj_Chart.Series(idx).ShowInLegend = false;
  1131. Obj_Chart.Series(idx).AddXY (vStart , vHigh , "", Obj_Chart.Series(idx).Color);
  1132. Obj_Chart.Series(idx).AddXY (vEnd , vHigh , "", Obj_Chart.Series(idx).Color);
  1133. }
  1134. }
  1135. //L/H 및 Mean/SD 챠트 그리기
  1136. function fMakeChartOrgRslt(row, gbn, vAvg, vSD, sCol, eCols, vStart, vEnd, vHigh, vLow){
  1137. var Obj_Chart = object2;
  1138. var Rnd1, Rnd2, Rnd3, cColor;
  1139. var vSD, v4SDH, v4SDL, vTestnm, vLotno, vLevlNm, vCnt, vEqmtCd;
  1140. var vAvg = vAvg;
  1141. var vSD = vSD;
  1142. var vEnd = vEnd;
  1143. var vStart = vStart;
  1144. var vHigh = vHigh;
  1145. var vLow = vLow
  1146. var x = 0;
  1147. var title = "";
  1148. var length = 0;
  1149. //그래프가 그려질 시리즈
  1150. if (gbn == "5"|| gbn == "7" || gbn == "8"){
  1151. var row = row;
  1152. row = "-";
  1153. }
  1154. for (series = 0; series < row.length; series++){
  1155. if(gbn =="0" || gbn == "2"){
  1156. title = model.getValue("/root/main/getEqmtQcList["+ row[series] +"]/mdd") + " ( " + model.getValue("/root/main/getEqmtQcList["+ row[series] +"]/mquan") + " )";
  1157. }else if(gbn =="5" || gbn == "7" || gbn == "8"){
  1158. title = "변동계수(%CV)";
  1159. }else{
  1160. title = model.getValue("/root/main/getEqmtQcList["+ row[series] +"]/mdd");
  1161. }
  1162. Rnd1 = Math.random();
  1163. Rnd2 = Math.random();
  1164. Rnd3 = Math.random();
  1165. cColor = window.rgb( (235 - 1) * Rnd1 + 1, (235 - 1) * Rnd2 + 1 , (235 - 1) * Rnd3 + 1); //각 검사항목별로 포인터 색깔 변경
  1166. vCnt = Obj_Chart.SeriesCount ;
  1167. Obj_Chart.AddSeries(37); //asHorizLine
  1168. Obj_Chart.Series(vCnt).Color = cColor;
  1169. Obj_Chart.Series(vCnt).asHorizLine.LinePen.Width = 2; //펜 두께
  1170. Obj_Chart.Series(vCnt).asHorizLine.Pointer.Visible = true; //값에 대한 포인터
  1171. Obj_Chart.Series(vCnt).asHorizLine.Pointer.Brush.Color = cColor; //포인트 컬러
  1172. Obj_Chart.Series(vCnt).asHorizLine.Pointer.Style = 0;
  1173. Obj_Chart.Series(vCnt).asHorizLine.Pointer.VerticalSize = 1;
  1174. Obj_Chart.Series(vCnt).asHorizLine.Pointer.HorizontalSize = 1;
  1175. Obj_Chart.Series(vCnt).VerticalAxis = 2; //좌표 y축에대한 스타일 2:both??
  1176. Obj_Chart.Series(vCnt).Title = title
  1177. //Obj_Chart.Header.Text(0) = "123123"; //헤더 타이틀
  1178. Obj_Chart.Series(vCnt).Clear();
  1179. //결과값에 대한 주석 보이기
  1180. Obj_Chart.Series(vCnt).Marks.Visible = false; //요거 true로 해야 아래꺼 보임
  1181. Obj_Chart.Series(vCnt).Marks.Style = 8; //수치값에 대한 값보이기 8아니면 다른수치보임
  1182. Obj_Chart.Series(vCnt).Marks.ArrowLength = 0;
  1183. fAddPointSeries(); //포인터 시리즈 추가
  1184. x =0;
  1185. if(gbn == "4"){
  1186. for(i = sCol+2; i < (sCol+2) + vEnd; i=i+3 ) {
  1187. v4SDH = vAvg+vSD*4;
  1188. v4SDL = vAvg-vSD*4;
  1189. var y = parseFloat(datagrid2.valueMatrix(row[series], i)); //결과값 : y 좌표
  1190. var cap = datagrid2.valueMatrix(0, i);
  1191. //alert(cap + " : " + y);
  1192. if (!isNaN(y) && y < v4SDH && y > v4SDL) {
  1193. Obj_Chart.Series(vCnt).AddXY (x, y, "" , Obj_Chart.Series(vCnt).Color );
  1194. x += 1;
  1195. }else if(!isNaN(y) && y > v4SDH){
  1196. y = v4SDH;
  1197. Obj_Chart.Series(vCnt).AddXY (x, y, "", Obj_Chart.Series(vCnt).Color );
  1198. x += 1;
  1199. }else if(!isNaN(y) && y < v4SDH){
  1200. y = v4SDL;
  1201. Obj_Chart.Series(vCnt).AddXY (x, y, "", Obj_Chart.Series(vCnt).Color );
  1202. x += 1;
  1203. }else if(isNaN(y) && row.length != 1){
  1204. x += 1;
  1205. }
  1206. if(!isNaN(y)){
  1207. Obj_Chart.Series(0).AddNullXY (x-1, vAvg,cap); //두개이상 그릴때 날짜가 제대로 보여지지 않는것 때문에 날짜는 따로 찍음
  1208. }
  1209. //오버된 포인트 찍어주기
  1210. if(y > vHigh){
  1211. var High = "상한값을 초과 했습니다."
  1212. //alert(vHigh);
  1213. Obj_Chart.Series(vCnt+1).AddXY (x-1, y, High, Obj_Chart.Series(vCnt+1).Color );
  1214. }
  1215. if(y < vLow){
  1216. var Low = "하한값을 초과 했습니다"
  1217. Obj_Chart.Series(vCnt+3).AddXY (x-1, y, Low, Obj_Chart.Series(vCnt+3).Color );
  1218. }
  1219. }
  1220. }else if(gbn == "6"){
  1221. //alert(sCol + vEnd);
  1222. for(i = 5; i < sCol + vEnd; i=i+2 ) {
  1223. v4SDH = vAvg+vSD*4;
  1224. v4SDL = vAvg-vSD*4;
  1225. var y = parseFloat(datagrid2.valueMatrix(row[series], i)); //결과값 : y 좌표
  1226. var low = parseFloat(datagrid2.valueMatrix(row[series], 21));
  1227. var high = parseFloat(datagrid2.valueMatrix(row[series], 22));
  1228. var cap = datagrid2.valueMatrix(0, i);
  1229. //alert(cap + " : " + y);
  1230. if (!isNaN(y) && y < v4SDH && y > v4SDL) {
  1231. Obj_Chart.Series(vCnt).AddXY (x, y, "" , Obj_Chart.Series(vCnt).Color );
  1232. x += 1;
  1233. }else if(!isNaN(y) && y > v4SDH){
  1234. y = v4SDH;
  1235. Obj_Chart.Series(vCnt).AddXY (x, y, "", Obj_Chart.Series(vCnt).Color );
  1236. x += 1;
  1237. }else if(!isNaN(y) && y < v4SDH){
  1238. y = v4SDL;
  1239. Obj_Chart.Series(vCnt).AddXY (x, y, "", Obj_Chart.Series(vCnt).Color );
  1240. x += 1;
  1241. }else if(isNaN(y) && row.length != 1){
  1242. x += 1;
  1243. }
  1244. if(!isNaN(y)){
  1245. Obj_Chart.Series(0).AddNullXY (x-1, vAvg,cap); //두개이상 그릴때 날짜가 제대로 보여지지 않는것 때문에 날짜는 따로 찍음
  1246. }
  1247. //오버된 포인트 찍어주기
  1248. if(y > high){
  1249. //alert(y + " : " +high);
  1250. var High = "상한값을 초과 했습니다."
  1251. Obj_Chart.Series(vCnt+1).AddXY (x-1, y, High, Obj_Chart.Series(vCnt+1).Color );
  1252. }
  1253. if(y < low){
  1254. var Low = "하한값을 초과 했습니다"
  1255. Obj_Chart.Series(vCnt+3).AddXY (x-1, y, Low, Obj_Chart.Series(vCnt+3).Color );
  1256. }
  1257. }
  1258. }else if(gbn == "5" || gbn == "7" || gbn == "8"){
  1259. v4SDH = vAvg+vSD*4;
  1260. v4SDL = vAvg-vSD*4;
  1261. for(i=1; i <= datagrid2.rows-1; i++){
  1262. if(model.getValue("/root/main/getEqmtQcList[ "+ i +" ]/chk") == "Y"){
  1263. var y = model.getValue("/root/main/getEqmtQcList[ "+ i +" ]/cv");
  1264. var cap = model.getValue("/root/main/getEqmtQcList[ "+ i +" ]/mdd") + " ( " + model.getValue("/root/main/getEqmtQcList[ "+ i +" ]/mquan") + "ul" + " )";
  1265. if (!isNaN(y) && y < v4SDH && y > v4SDL) {
  1266. Obj_Chart.Series(vCnt).AddXY (x, y, "" , Obj_Chart.Series(vCnt).Color );
  1267. x += 1;
  1268. }else if(!isNaN(y) && y > v4SDH){
  1269. y = v4SDH;
  1270. Obj_Chart.Series(vCnt).AddXY (x, y, "", Obj_Chart.Series(vCnt).Color );
  1271. x += 1;
  1272. }else if(!isNaN(y) && y < v4SDH){
  1273. y = v4SDL;
  1274. Obj_Chart.Series(vCnt).AddXY (x, y, "", Obj_Chart.Series(vCnt).Color );
  1275. x += 1;
  1276. }else if(isNaN(y) && row.length != 1){
  1277. x += 1;
  1278. }
  1279. if(!isNaN(y)){
  1280. Obj_Chart.Series(0).AddNullXY (x-1, vAvg,cap); //두개이상 그릴때 날짜가 제대로 보여지지 않는것 때문에 날짜는 따로 찍음
  1281. }
  1282. //오버된 포인트 찍어주기
  1283. if(y > vHigh){
  1284. var High = "상한값을 초과 했습니다."
  1285. Obj_Chart.Series(vCnt+1).AddXY (x-1, y, High, Obj_Chart.Series(vCnt+1).Color );
  1286. }
  1287. if(y < vLow){
  1288. var Low = "하한값을 초과 했습니다"
  1289. Obj_Chart.Series(vCnt+3).AddXY (x-1, y, Low, Obj_Chart.Series(vCnt+3).Color );
  1290. }
  1291. }
  1292. }
  1293. }else{
  1294. for(i = sCol; i <= sCol + vEnd; i++ ) {
  1295. v4SDH = vAvg+vSD*4;
  1296. v4SDL = vAvg-vSD*4;
  1297. //alert(vCnt);
  1298. var y = parseFloat(datagrid2.valueMatrix(row[series], i)); //결과값 : y 좌표
  1299. var cap = datagrid2.valueMatrix(0, i);
  1300. //alert(cap + " : " + y);
  1301. if (!isNaN(y) && y < v4SDH && y > v4SDL) {
  1302. Obj_Chart.Series(vCnt).AddXY (x, y, "" , Obj_Chart.Series(vCnt).Color );
  1303. x += 1;
  1304. }else if(!isNaN(y) && y > v4SDH){
  1305. y = v4SDH;
  1306. Obj_Chart.Series(vCnt).AddXY (x, y, "", Obj_Chart.Series(vCnt).Color );
  1307. x += 1;
  1308. }else if(!isNaN(y) && y < v4SDH){
  1309. y = v4SDL;
  1310. Obj_Chart.Series(vCnt).AddXY (x, y, "", Obj_Chart.Series(vCnt).Color );
  1311. x += 1;
  1312. }else if(isNaN(y) && row.length != 1){
  1313. x += 1;
  1314. }
  1315. if(!isNaN(y)){
  1316. Obj_Chart.Series(0).AddNullXY (x-1, vAvg,cap); //두개이상 그릴때 날짜가 제대로 보여지지 않는것 때문에 날짜는 따로 찍음
  1317. }
  1318. //오버된 포인트 찍어주기
  1319. if(y > vHigh){
  1320. var High = "상한값을 초과 했습니다."
  1321. Obj_Chart.Series(vCnt+1).AddXY (x-1, y, High, Obj_Chart.Series(vCnt+1).Color );
  1322. }
  1323. if(y < vLow){
  1324. var Low = "하한값을 초과 했습니다"
  1325. Obj_Chart.Series(vCnt+3).AddXY (x-1, y, Low, Obj_Chart.Series(vCnt+3).Color );
  1326. }
  1327. }
  1328. }
  1329. }
  1330. }
  1331. ]]>
  1332. </script>
  1333. </xhtml:head>
  1334. <xhtml:body style="margin-left:8; margin-top:0; margin-right:8; margin-bottom:0; ">
  1335. <group id="group1" style="left:0px; top:0px; width:1195px; height:13px; ">
  1336. <caption id="caption6" class="tit_1" style="left:0px; top:0px; width:126px; height:14px; ">장비QC 관리</caption>
  1337. </group>
  1338. <group id="group5" scroll="auto" style="left:0px; top:13px; width:1195px; height:27px; ">
  1339. <line id="line32" class="line_6" style="x1:0px; y1:25px; x2:1194px; y2:25px; "/>
  1340. <button id="button10" class="btn4_letter3" style="left:1127px; top:3px; width:68px; height:22px; ">
  1341. <caption>초기화</caption>
  1342. <script type="javascript" ev:event="DOMActivate">
  1343. <![CDATA[
  1344. window.reload();
  1345. ]]>
  1346. </script>
  1347. </button>
  1348. <button id="button2" class="btn6_letter2" visibility="hidden" style="left:0px; top:3px; width:56px; height:22px; ">
  1349. <caption>출력</caption>
  1350. <script type="javascript" ev:event="DOMActivate">
  1351. <![CDATA[
  1352. ]]>
  1353. </script>
  1354. </button>
  1355. <button id="button5" class="btn4_letter2" style="left:1069px; top:3px; width:56px; height:22px; ">
  1356. <caption>저장</caption>
  1357. <script type="javascript" ev:event="DOMActivate">
  1358. <![CDATA[
  1359. fSetList();
  1360. ]]>
  1361. </script>
  1362. </button>
  1363. </group>
  1364. <group id="group2" scroll="auto" style="left:0px; top:40px; width:1195px; height:744px; ">
  1365. <group id="group3" scroll="auto" style="left:0px; top:45px; width:1194px; height:290px; ">
  1366. <datagrid id="datagrid2" nodeset="/root/main/getEqmtQcList" caption="^측 정 일^측정량^D1^D2^D3^D4^D5^D6^D7^D8^D9^D10^D11^D12^D13^D14^D15^avg^avg2^low^high^HIGH^표준편차^변동계수^eqmtcd^gbn^seq" colsep="^" colwidth="20, 100, 90, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 70, 70, 50, 50, 150, 100, 100, 65, 60, 50" dataheight="23" explorerbar="sortshow" mergecellsfixedrows="bycolrec" rowheader="update" rowheight="23" selectionmode="free" style="left:0px; top:25px; width:1190px; height:258px; text-align:center; ">
  1367. <col checkvalue="Y,N" ref="chk" type="checkbox"/>
  1368. <col ref="mdd" type="inputdate" format="yyyy-mm-dd"/>
  1369. <col ref="mquan" type="input"/>
  1370. <col ref="d1" type="input" style="left:220px; top:23px; width:60px; height:23px; "/>
  1371. <col ref="d2" type="input"/>
  1372. <col ref="d3" type="input"/>
  1373. <col ref="d4" type="input"/>
  1374. <col ref="d5" type="input"/>
  1375. <col ref="d6" type="input"/>
  1376. <col ref="d7" type="input"/>
  1377. <col ref="d8" type="input"/>
  1378. <col ref="d9" type="input"/>
  1379. <col ref="d10" type="input"/>
  1380. <col ref="d11" type="input"/>
  1381. <col ref="d12" type="input"/>
  1382. <col ref="d13" type="input"/>
  1383. <col ref="d14" type="input"/>
  1384. <col ref="d15" type="input"/>
  1385. <col ref="avg"/>
  1386. <col ref="avg2"/>
  1387. <col ref="low"/>
  1388. <col ref="high"/>
  1389. <col ref="hv" type="input"/>
  1390. <col ref="sd"/>
  1391. <col ref="cv"/>
  1392. <col ref="eqmtcd"/>
  1393. <col ref="gbn"/>
  1394. <col ref="seq"/>
  1395. <script type="javascript" ev:event="xforms-value-changed">
  1396. <![CDATA[
  1397. if(datagrid2.col >=4){
  1398. fSetRef();
  1399. }
  1400. ]]>
  1401. </script>
  1402. <script type="javascript" ev:event="onkeypress">
  1403. <![CDATA[
  1404. if(datagrid2.col >=3){
  1405. if(event.keyCode == "13"){
  1406. fGrdKeyEvent();
  1407. }
  1408. }
  1409. ]]>
  1410. </script>
  1411. <script type="javascript" ev:event="onclick">
  1412. <![CDATA[
  1413. if(model.getValue("/root/hidden/ref/gbn") == "2" || model.getValue("/root/hidden/ref/gbn") == "0"){
  1414. if(datagrid2.col == 1){
  1415. var chk1, chk2;
  1416. if(datagrid2.row == 1){
  1417. chk1 = model.getValue("/root/main/getEqmtQcList["+datagrid2.row+"]/chk");
  1418. chk2 = model.getValue("/root/main/getEqmtQcList["+(datagrid2.row+1)+"]/chk");
  1419. }
  1420. else{
  1421. chk1 = model.getValue("/root/main/getEqmtQcList["+datagrid2.row+"]/chk");
  1422. chk2 = model.getValue("/root/main/getEqmtQcList["+(datagrid2.row-1)+"]/chk");
  1423. }
  1424. if(chk1 == "Y"){
  1425. if(chk1 == chk2){
  1426. alert("다른 항목은 선택할수 없습니다.");
  1427. model.setValue("/root/main/getEqmtQcList["+datagrid2.row+"]/chk", "N");
  1428. }
  1429. }
  1430. }
  1431. }
  1432. ]]>
  1433. </script>
  1434. </datagrid>
  1435. <caption id="caption13" class="tit_2" style="left:5px; top:10px; width:125px; height:13px; ">장비QC 상세정보</caption>
  1436. <button id="button3" class="btn2_letter3" style="left:1035px; top:5px; width:53px; height:19px; ">
  1437. <caption>행추가</caption>
  1438. <script type="javascript" ev:event="DOMActivate">
  1439. <![CDATA[
  1440. fInsRowAdd();
  1441. ]]>
  1442. </script>
  1443. </button>
  1444. <button id="button4" class="btn2_letter3" style="left:1090px; top:5px; width:53px; height:19px; ">
  1445. <caption>행삭제</caption>
  1446. <script type="javascript" ev:event="DOMActivate">
  1447. <![CDATA[
  1448. fInsRowdel();
  1449. ]]>
  1450. </script>
  1451. </button>
  1452. <select1 id="radio1" ref="/root/hidden/ref/cr" visibility="hidden" appearance="full" cellspacing="20" cols="3" overflow="visible" style="left:130px; top:5px; width:115px; height:20px; border-style:none; ">
  1453. <choices>
  1454. <item>
  1455. <label>CRF</label>
  1456. <value>1</value>
  1457. </item>
  1458. <item>
  1459. <label>RES</label>
  1460. <value>2</value>
  1461. </item>
  1462. </choices>
  1463. <script type="javascript" ev:event="onclick">
  1464. <![CDATA[
  1465. if(model.getValue("/root/hidden/ref/gbn") == "2"){
  1466. for(i=1; i < datagrid2.rows; i++){
  1467. model.setValue("/root/main/getEqmtQcList[" + i + "]/chk", "N")
  1468. if(model.getValue("/root/main/getEqmtQcList[" + i + "]/mquan") == "CRF"){
  1469. if(model.getValue("/root/hidden/ref/cr") == "1"){
  1470. model.setValue("/root/main/getEqmtQcList[" + i + "]/chk", "Y");
  1471. }
  1472. }else {
  1473. if(model.getValue("/root/hidden/ref/cr") == "2"){
  1474. model.setValue("/root/main/getEqmtQcList[" + i + "]/chk", "Y");
  1475. }
  1476. }
  1477. }
  1478. }
  1479. model.refresh();
  1480. ]]>
  1481. </script>
  1482. </select1>
  1483. <select1 id="radio2" ref="/root/hidden/ref/cr" visibility="hidden" appearance="full" cellspacing="20" cols="3" overflow="visible" style="left:130px; top:5px; width:115px; height:20px; border-style:none; ">
  1484. <choices>
  1485. <item>
  1486. <label>PEA</label>
  1487. <value>3</value>
  1488. </item>
  1489. <item>
  1490. <label>RES</label>
  1491. <value>4</value>
  1492. </item>
  1493. </choices>
  1494. <script type="javascript" ev:event="onclick">
  1495. <![CDATA[
  1496. if(model.getValue("/root/hidden/ref/gbn") == "0"){
  1497. for(i=1; i < datagrid2.rows; i++){
  1498. model.setValue("/root/main/getEqmtQcList[" + i + "]/chk", "N")
  1499. if(model.getValue("/root/main/getEqmtQcList[" + i + "]/mquan") == "Peak Deviation"){
  1500. if(model.getValue("/root/hidden/ref/cr") == "3"){
  1501. model.setValue("/root/main/getEqmtQcList[" + i + "]/chk", "Y");
  1502. }
  1503. }else {
  1504. if(model.getValue("/root/hidden/ref/cr") == "4"){
  1505. model.setValue("/root/main/getEqmtQcList[" + i + "]/chk", "Y");
  1506. }
  1507. }
  1508. }
  1509. }
  1510. model.refresh();
  1511. ]]>
  1512. </script>
  1513. <script type="javascript" ev:event="ondblclick">
  1514. <![CDATA[
  1515. ]]>
  1516. </script>
  1517. </select1>
  1518. </group>
  1519. <caption id="caption31" class="tit_2" style="left:0px; top:339px; width:125px; height:14px; ">장비QC 그래프</caption>
  1520. <line id="line8" class="line_1" style="x1:0px; y1:356px; x2:1194px; y2:356px; "/>
  1521. <line id="line9" class="line_3" style="x1:0px; y1:735px; x2:1194px; y2:735px; "/>
  1522. <group id="group4" style="left:0px; top:10px; width:1195px; height:35px; ">
  1523. <shape id="roundrect1" class="roundrect_search" appearance="roundrect" style="left:0px; top:0px; width:1195px; height:35px; "/>
  1524. <input id="todd" ref="/root/hidden/ref/todd" class="input_search" inputtype="date" style="left:215px; top:9px; width:90px; height:19px; "/>
  1525. <caption id="caption2" class="search_name" style="left:500px; top:10px; width:94px; height:17px; ">조회구분 :</caption>
  1526. <caption id="caption21" class="search_name" style="left:315px; top:10px; width:94px; height:17px; ">장비명 :</caption>
  1527. <select1 id="combo1" ref="/root/hidden/ref/eqmtcd" class="combo_search" appearance="minimal" style="left:390px; top:10px; width:90px; height:19px; ">
  1528. <choices>
  1529. <itemset nodeset="/root/init/LB9997">
  1530. <label ref="cd"/>
  1531. <value ref="nm"/>
  1532. </itemset>
  1533. </choices>
  1534. <script type="javascript" ev:event="xforms-select">
  1535. <![CDATA[
  1536. radio1.visible = false;
  1537. radio2.visible = false;
  1538. clearTChart(object2);
  1539. fSetEqmtCd();
  1540. ]]>
  1541. </script>
  1542. </select1>
  1543. <caption id="caption15" class="search_no_b" style="left:199px; top:9px; width:15px; height:17px; vertical-align:middle; ">~</caption>
  1544. <caption id="caption17" class="search_name" style="left:15px; top:9px; width:94px; height:17px; ">측정일 :</caption>
  1545. <input id="fromdd" ref="/root/hidden/ref/fromdd" class="input_search" inputtype="date" style="left:105px; top:8px; width:90px; height:19px; "/>
  1546. <button id="button1" class="btn1_letter2" style="left:1119px; top:9px; width:56px; height:22px; ">
  1547. <caption>조회</caption>
  1548. <script type="javascript" ev:event="onclick">
  1549. <![CDATA[
  1550. fExeEqmtList();
  1551. ]]>
  1552. </script>
  1553. </button>
  1554. <line id="line2" class="line_4" style="x1:1109px; y1:9px; x2:1109px; y2:31px; "/>
  1555. <select1 id="combo2" ref="/root/hidden/ref/code" appearance="minimal" style="left:595px; top:10px; width:130px; height:19px; ">
  1556. <choices>
  1557. <itemset nodeset="/root/init/LB9998">
  1558. <label ref="cd"/>
  1559. <value ref="nm"/>
  1560. </itemset>
  1561. </choices>
  1562. <script type="javascript" ev:event="xforms-select">
  1563. <![CDATA[
  1564. radio1.visible = false;
  1565. radio2.visible = false;
  1566. clearTChart(object2);
  1567. fRegrid();
  1568. ]]>
  1569. </script>
  1570. </select1>
  1571. </group>
  1572. <switch id="switch1" style="left:0px; top:360px; width:1195px; height:372px; ">
  1573. <case id="case1">
  1574. <object id="object1" clsid="{fab9b41c-87d6-474d-ab7e-f07d78f2422e}" style="left:0px; top:5px; width:1184px; height:360px; ">
  1575. <![CDATA[-->]]>
  1576. <script type="vbscript" ev:event="OnClickSeries(SeriesIndex, ValueIndex,Button, Shift,X ,Y)">
  1577. <![CDATA[
  1578. 'msgbox SeriesIndex
  1579. 'msgbox ValueIndex
  1580. 'msgbox Button
  1581. 'msgbox Shift
  1582. 'msgbox X
  1583. 'msgbox Y
  1584. object1.Tools.Clear()
  1585. object1.Tools.Add(10)
  1586. object1.Tools.Items(0).asAnnotation.Text = object1.Series(SeriesIndex).PointLabel(ValueIndex)
  1587. ]]>
  1588. </script>
  1589. <script type="javascript" ev:event="OnClickSeries(SeriesIndex,ValueIndex, Button, Shift, X, Y)">
  1590. <![CDATA[
  1591. alert(SeriesIndex);
  1592. ]]>
  1593. </script>
  1594. </object>
  1595. </case>
  1596. <case id="case2" selected="true">
  1597. <object id="object2" clsid="{fab9b41c-87d6-474d-ab7e-f07d78f2422e}" style="left:4px; top:7px; width:1184px; height:360px; ">
  1598. <script type="vbscript" ev:event="OnClickSeries(SeriesIndex, ValueIndex,Button, Shift,X ,Y)">
  1599. <![CDATA[
  1600. object2.Tools.Clear()
  1601. object2.Tools.Add(10)
  1602. object2.Tools.Items(0).asAnnotation.Text = object2.Series(SeriesIndex).PointLabel(ValueIndex)
  1603. ]]>
  1604. </script>
  1605. </object>
  1606. </case>
  1607. </switch>
  1608. <button id="button6" class="btn2_letter2" style="left:1146px; top:50px; width:42px; height:19px; ">
  1609. <caption>엑셀</caption>
  1610. <script type="javascript" ev:event="DOMActivate">
  1611. <![CDATA[
  1612. fSaveExcel();
  1613. ]]>
  1614. </script>
  1615. </button>
  1616. <button id="btn_grprnt" class="btn2_letter2" style="left:1072px; top:336px; width:42px; height:19px; ">
  1617. <caption>출력</caption>
  1618. <script type="javascript" ev:event="DOMActivate">
  1619. <![CDATA[
  1620. Obj_Chart = object2;
  1621. Obj_Chart.Printer.MarginLeft = 5 //여백
  1622. Obj_Chart.Printer.MarginBottom = 25
  1623. Obj_Chart.Printer.MarginRight = 5
  1624. Obj_Chart.Printer.MarginTop = 25
  1625. Obj_Chart.Printer.ShowPreview(); //미리보기
  1626. ]]>
  1627. </script>
  1628. </button>
  1629. <button id="button11" class="btn5_letter5" style="left:1116px; top:336px; width:75px; height:19px; ">
  1630. <caption>그래프저장</caption>
  1631. <script type="javascript" ev:event="onclick">
  1632. <![CDATA[
  1633. //alert(model.getValue("/root/hidden/gref/grapegbn"));
  1634. var Obj_Chart;
  1635. Obj_Chart = object2;
  1636. Obj_Chart.Export.SaveChartDialog();
  1637. ]]>
  1638. </script>
  1639. </button>
  1640. <button id="button7" class="btn2_letter6" style="left:965px; top:336px; width:86px; height:19px; ">
  1641. <caption>그래프초기화</caption>
  1642. <script type="javascript" ev:event="DOMActivate">
  1643. <![CDATA[
  1644. clearTChart(object2);
  1645. ]]>
  1646. </script>
  1647. </button>
  1648. </group>
  1649. <button id="btn_grp" class="btn2_letter3" style="left:910px; top:376px; width:53px; height:19px; ">
  1650. <caption>그래프</caption>
  1651. <script type="javascript" ev:event="DOMActivate">
  1652. <![CDATA[
  1653. var rows = datagrid2.rows;
  1654. var cnt = 0;
  1655. var gbn = model.getValue("/root/hidden/ref/gbn");
  1656. if(rows == 1){
  1657. alert("데이터가 없습니다.")
  1658. return;
  1659. }
  1660. for (i=1; i< rows; i++){
  1661. if(model.getValue("/root/main/getEqmtQcList[" + i + "]/chk") == "Y"){ // 결과값 있는거
  1662. cnt = cnt + 1; // 결과값 들어있는 칸 수
  1663. }
  1664. }
  1665. if(cnt < 1){
  1666. alert("그래프를 작성할 항목을 선택하세요");
  1667. return;
  1668. }else{
  1669. model.toggle("case2");
  1670. object2.Tools.Clear();
  1671. object2.Axis.RemoveAllCustom();
  1672. object2.Axis.Left.StartPosition = 0;
  1673. clearTChart(object2); //챠트 초기화
  1674. fInitChart(cnt, gbn);
  1675. }
  1676. ]]>
  1677. </script>
  1678. </button>
  1679. </xhtml:body>
  1680. </xhtml:html>