SMLLR90800_DIFF계산기능.xfdl 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <FDL version="1.5">
  3. <TypeDefinition url="..\..\..\default_typedef.xml"/>
  4. <Form id="SMLLR90800" position="absolute 0 0 372 526" titletext="DiffCount Result" oninit="model1_oninit" onload="SMLLR90800_onload">
  5. <Layouts>
  6. <Layout>
  7. <Button id="btn_clear" taborder="7" text="초기화" class="btn4" position="absolute 302 504 370 524" onclick="btn_clear_onclick"/>
  8. <Button id="btn_cnfm" taborder="8" text="확인" class="btn4" visible="false" position="absolute 243 504 299 524" onclick="btn_cnfm_onclick"/>
  9. <Static id="caption00" text="☞【 Ctrl+키패드 】Count 감소" position="absolute 4 504 172 524"/>
  10. <Static id="Static00" class="sta_DA_box" position="absolute 5 26 370 52"/>
  11. <Static id="caption3" text="DiffCount Result" class="tit_2" position="absolute 5 6 140 26"/>
  12. <Shape id="line1" class="line_1" position="absolute 5 32 369 32"/>
  13. <Static id="caption15" text="Maxium Count" class="cell_1" position="absolute 6 27 106 51"/>
  14. <Combo id="cmb_Max" taborder="9" codecolumn="codecolumn" datacolumn="datacolumn" onitemchanged="cmb_Max_onitemchanged" class="combo_search" position="absolute 109 29 163 49">
  15. <Dataset id="innerdataset">
  16. <ColumnInfo>
  17. <Column id="codecolumn" size="256"/>
  18. <Column id="datacolumn" size="256"/>
  19. </ColumnInfo>
  20. <Rows>
  21. <Row>
  22. <Col id="codecolumn">30</Col>
  23. <Col id="datacolumn">30</Col>
  24. </Row>
  25. <Row>
  26. <Col id="codecolumn">50</Col>
  27. <Col id="datacolumn">50</Col>
  28. </Row>
  29. <Row>
  30. <Col id="codecolumn">70</Col>
  31. <Col id="datacolumn">70</Col>
  32. </Row>
  33. <Row>
  34. <Col id="codecolumn">100</Col>
  35. <Col id="datacolumn">100</Col>
  36. </Row>
  37. <Row>
  38. <Col id="codecolumn">150</Col>
  39. <Col id="datacolumn">150</Col>
  40. </Row>
  41. <Row>
  42. <Col id="codecolumn">200</Col>
  43. <Col id="datacolumn">200</Col>
  44. </Row>
  45. <Row>
  46. <Col id="codecolumn">250</Col>
  47. <Col id="datacolumn">250</Col>
  48. </Row>
  49. <Row>
  50. <Col id="codecolumn">300</Col>
  51. <Col id="datacolumn">300</Col>
  52. </Row>
  53. </Rows>
  54. </Dataset>
  55. </Combo>
  56. <Static id="caption1" text="Total Count" class="cell_1" position="absolute 166 27 246 51"/>
  57. <Edit id="opt_total" taborder="10" readonly="true" position="absolute 249 29 294 49"/>
  58. <Shape id="line2" class="line_3" position="absolute 5 58 369 58"/>
  59. <CheckBox id="chk_manual" taborder="11" text="Manual 입력" truevalue="1" position="absolute 281 3 371 23" onchanged="chk_manual_onchanged"/>
  60. <Combo id="combo1" taborder="12" codecolumn="codecolumn" datacolumn="datacolumn" position="absolute 178 3 278 23" onitemchanged="combo1_onitemchanged" index="0" value="LHR105" text="혈액 Diff">
  61. <Dataset id="innerdataset">
  62. <ColumnInfo>
  63. <Column id="codecolumn" size="256"/>
  64. <Column id="datacolumn" size="256"/>
  65. </ColumnInfo>
  66. <Rows>
  67. <Row>
  68. <Col id="codecolumn">LHR105</Col>
  69. <Col id="datacolumn">혈액 Diff</Col>
  70. </Row>
  71. <Row>
  72. <Col id="codecolumn">LFR107</Col>
  73. <Col id="datacolumn">B.F</Col>
  74. </Row>
  75. </Rows>
  76. </Dataset>
  77. </Combo>
  78. <Button id="btn_set" taborder="13" text="키설정" onclick="btn_set_onclick" class="btn3" visible="true" position="absolute 297 29 365 49"/>
  79. <Grid id="grd_TestInfoCnts" taborder="14" binddataset="ds_grid_grd_TestInfoCnts" useinputpanel="false" onkeydown="grd_TestInfoCnts_onkeydown" onmousemove="grd_TestInfoCnts_onmousemove" position="absolute 5 62 370 497" autoenter="select" autofittype="col">
  80. <Formats>
  81. <Format id="default">
  82. <Columns>
  83. <Column size="30"/>
  84. <Column size="170"/>
  85. <Column size="50"/>
  86. <Column size="44"/>
  87. <Column size="70"/>
  88. <Column size="0"/>
  89. <Column size="0"/>
  90. <Column size="0"/>
  91. <Column size="0"/>
  92. </Columns>
  93. <Rows>
  94. <Row size="22" band="head"/>
  95. <Row size="20"/>
  96. </Rows>
  97. <Band id="head">
  98. <Cell text="No."/>
  99. <Cell col="1" text="검사항목명"/>
  100. <Cell col="2" text="키패드"/>
  101. <Cell col="3" text="Count"/>
  102. <Cell col="4" text="Percent(%)"/>
  103. <Cell col="5" text="tclscd"/>
  104. <Cell col="6" text="spccd"/>
  105. <Cell col="7" text="caption1"/>
  106. <Cell col="8" text="iud"/>
  107. </Band>
  108. <Band id="body">
  109. <Cell celltype="head" expr="currow+1"/>
  110. <Cell col="1" style="background:EXPR(used == 'N' ? '#c0c0c0' : '');" text="bind:tclsscrnnm"/>
  111. <Cell col="2" style="background:EXPR(used == 'N' ? '#c0c0c0' : '#f3e1bf');background2:EXPR(used == 'N' ? '#c0c0c0' : '#f3e1bf');color:EXPR(used == 'N' ? '' : '#ff3300');color2:EXPR(used == 'N' ? '' : '#ff3300');font:EXPR(used == 'N' ? '' : 'arial,9,bold');" text="bind:diffcountkey"/>
  112. <Cell col="3" editfilter="number" style="background:EXPR(used == 'N' ? '#c0c0c0' : lf_backColor());background2:EXPR(used == 'N' ? '#c0c0c0' : lf_backColor());color:EXPR(used == 'N' ? '' : lf_fontColor());color2:EXPR(used == 'N' ? '' : lf_fontColor());font: ;" text="bind:cnt" editautoselect="true"/>
  113. <Cell col="4" displaytype="number" style="background:EXPR(used == 'N' ? '#c0c0c0' : '');background2:EXPR(used == 'N' ? '#c0c0c0' : '');" text="bind:percent" expr="expr:cnt == '0' ? '':cnt/lf_calcu() * 100" mask="#,###.##"/>
  114. <Cell col="5" text="bind:testcd"/>
  115. <Cell col="6" text="bind:spccd"/>
  116. <Cell col="7"/>
  117. <Cell col="8" text="bind:iud"/>
  118. </Band>
  119. </Format>
  120. </Formats>
  121. </Grid>
  122. </Layout>
  123. </Layouts>
  124. <Objects>
  125. <Dataset id="ds_grid_grd_TestInfoCnts" firefirstcount="0" firenextcount="0" useclientlayout="true" updatecontrol="true" enableevent="true" loadkeymode="keep" reversesubsum="false" oncolumnchanged="ds_grid_grd_TestInfoCnts_oncolumnchanged">
  126. <ColumnInfo>
  127. <Column id="tclsscrnnm" type="STRING" size="0"/>
  128. <Column id="diffcountkey" type="STRING" size="0"/>
  129. <Column id="cnt" type="INT" size="0"/>
  130. <Column id="percent" type="STRING" size="0"/>
  131. <Column id="tclscd" type="STRING" size="0"/>
  132. <Column id="testcd" type="STRING" size="0"/>
  133. <Column id="spccd" type="STRING" size="0"/>
  134. <Column id="used" type="STRING" size="0"/>
  135. <Column id="iud" type="STRING" size="0"/>
  136. </ColumnInfo>
  137. </Dataset>
  138. <Dataset id="ds_init_lb8002" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" reversesubsum="false">
  139. <ColumnInfo>
  140. <Column id="cd" type="STRING"/>
  141. <Column id="nm" type="STRING"/>
  142. <Column id="etc01" type="STRING"/>
  143. <Column id="etc02" type="STRING"/>
  144. </ColumnInfo>
  145. </Dataset>
  146. </Objects>
  147. <Script type="xscript4.0"><![CDATA[/***************************************************************************************
  148. * System Name :
  149. * Job Name :
  150. * Creator :
  151. * Make Date : 2015-05-01
  152. * Description :
  153. *---------------------------------------------------------------------------------------
  154. * Modify Date Modifier Modify Description
  155. *---------------------------------------------------------------------------------------
  156. * 2015-05-01 Live Converter TF->XP
  157. *
  158. *---------------------------------------------------------------------------------------
  159. ****************************************************************************************/
  160. include "com_commonxp::comm_main.xjs";
  161. include "lis_commonxp::LLZ001.xjs";
  162. var gv_isSetKey = "";
  163. var gv_BFcount = "";
  164. //초기화 데이타셋 조회
  165. function lf_initDataSet(){
  166. // 8002=DIFF팝업화면, 결과입력화면 병원별 설정 여부
  167. lf_getDbDeptcd("8002|","cbf_SMLLR90700");
  168. }
  169. function SMLLR90800_onload(obj:Form, e:LoadEventInfo)
  170. {
  171. frmf_initForm(obj); // 화면공통
  172. inff_initsound(); //사운드기능 초기화
  173. lf_initDataSet();
  174. //grd_TestInfoCnts.removeRow();
  175. lf_initForm_Click();
  176. gv_isSetKey = "y";
  177. lf_setKey_Click("Y");
  178. }
  179. function lf_initForm_Click(){
  180. lf_getDiffCountHangMok();
  181. cmb_Max.value = "100"; //maximun count
  182. opt_total.value = "0"; //total count
  183. gv_BFcount = "100";
  184. grd_TestInfoCnts.setFocus();
  185. }
  186. function lf_getDiffCountHangMok(){
  187. var sInDsName = dsf_createDsRow("ds_temp_search"
  188. , [{col: "bcno", val: ""}
  189. , {col: "testcd", val: combo1.value}
  190. , {col: "flag", val: "C"}]);
  191. // 서브밋호출
  192. tranf_submit({
  193. id: "TRLLR90701"
  194. , service: "rsltmngtapp.RsltMngt"
  195. , method: "reqGetDiffTestList"
  196. , inds : "cond="+sInDsName
  197. , outds: "ds_grid_grd_TestInfoCnts=testlist"
  198. , callback: "cbf_SMLLR90700"
  199. , async: false
  200. });
  201. }
  202. //콜백함수
  203. function cbf_SMLLR90700(strSvcID, nErrorCode, strErrorMag){
  204. if(nErrorCode != 0) sysf_messageBox("ID: " + strSvcID + " Error: " + strErrorMag, "E009", "");
  205. if(strSvcID == "TRLLR90701" && nErrorCode==0){
  206. for(i=0;i<ds_grid_grd_TestInfoCnts.rowcount;i++){
  207. ds_grid_grd_TestInfoCnts.setColumn(i,"cnt","0");
  208. ds_grid_grd_TestInfoCnts.setColumn(i,"testcd",utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(i,"tclscd")));
  209. }
  210. lf_refreshKeyPad();
  211. }
  212. if(strSvcID == "TXLLR90701" && nErrorCode==0){
  213. lf_refreshKeyPad();
  214. }
  215. }
  216. function lf_refreshKeyPad() {
  217. for (var vRow = 0; vRow < ds_grid_grd_TestInfoCnts.rowcount; vRow++) {
  218. var key = utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(vRow,"diffcountkey"));
  219. var tnm = "";
  220. var sTestcd = utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(vRow,"testcd"));
  221. var abTF = false;
  222. // for(xx=0;xx<ds_send_grd_TestInfoCnts.rowcount;xx++){
  223. // var cd = utlf_transNullToEmpty(ds_send_grd_TestInfoCnts.getColumn(xx,"testcd"));
  224. //
  225. // if(cd == sTestcd){
  226. // abTF = true;
  227. // break;
  228. // }
  229. // }
  230. if(abTF) ds_grid_grd_TestInfoCnts.setColumn(vRow,"used","Y");
  231. if (utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(vRow,"used")) == "N") {
  232. } else {
  233. ds_init_lb8002.filterstr = "cd =='01'";
  234. if(utlf_transNullToEmpty(ds_init_lb8002.getColumn(0,"etc01")) == "Y"){
  235. grd_TestInfoCnts.setFormatColProperty(2,"size",0); //키패드
  236. }else{
  237. grd_TestInfoCnts.setFormatColProperty(2,"size",50); //키패드
  238. }
  239. }
  240. }
  241. }
  242. //설정여부에 따른 배경색변경
  243. function lf_backColor(){
  244. ds_init_lb8002.filterstr = "cd =='01'";
  245. if(utlf_transNullToEmpty(ds_init_lb8002.getColumn(0,"etc01")) == "Y"){
  246. returnvalue = "#f3e1bf"; //갈색
  247. }else{
  248. returnvalue = "#b9e5fb"; //하늘색
  249. }
  250. return returnvalue;
  251. }
  252. //설정여부에 따른글자색변경
  253. function lf_fontColor(){
  254. ds_init_lb8002.filterstr = "cd =='01'";
  255. if(utlf_transNullToEmpty(ds_init_lb8002.getColumn(0,"etc01")) == "Y"){
  256. returnvalue = "#ff3300"; //빨강
  257. }else{
  258. returnvalue = "";
  259. }
  260. return returnvalue;
  261. }
  262. //count에 따른 백분율입력
  263. function lf_calcu(){
  264. var totalcnt = utlf_transNull(opt_total.value, 0);
  265. return totalcnt;
  266. }
  267. function lf_grdOnKeyPress(ctrlKey,sysKey){
  268. var isAdd = "true";
  269. var key = lf_kepMap(sysKey, "2");
  270. if (ctrlKey) isAdd = "false";
  271. var curCol = grd_TestInfoCnts.col;
  272. var curRow = ds_grid_grd_TestInfoCnts.rowposition; //grd_TestInfoCnts.row;
  273. if (gv_isSetKey == "n") {
  274. lf_calcDiffCount(key, isAdd);
  275. } else { //키설정
  276. if (key.getTrim() != "" ) {
  277. var findrow = ds_grid_grd_TestInfoCnts.findRow("diffcountkey",key);
  278. if (findrow == curRow) return;
  279. if (findrow > -1) {
  280. var tnm = utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(findrow,"tclsscrnnm"));
  281. var yn = sysf_messageBox("[" + key + "]키는 항목 [" + tnm + "]에 정의된 키 입니다.\n\n선택한 항목에 키를 ","S001","");
  282. if (yn != 6) return; // No
  283. lf_grdSetKey(findrow, "");
  284. }
  285. lf_grdSetKey(curRow, key);
  286. }
  287. }
  288. }
  289. function lf_grdSetKey(pRow, pKey) {
  290. ds_grid_grd_TestInfoCnts.setColumn(pRow,"diffcountkey",pKey);
  291. ds_grid_grd_TestInfoCnts.setColumn(pRow,"iud","U");
  292. }
  293. function lf_calcDiffCount(pKey, pIsAdd) {
  294. var findrow = ds_grid_grd_TestInfoCnts.findRow("diffcountkey",pKey);
  295. var nrbcTF = false;
  296. if(utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(findrow,"testcd")) == "B109100018"){ //NRBC#
  297. nrbcTF = true;
  298. }
  299. if (findrow > -1) {
  300. // 키패드의 항목 찾은경우
  301. if (pIsAdd == "") pIsAdd = "true";
  302. if (utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(findrow,"used")) == "Y") {
  303. // Order가 있을때만 Count 증가
  304. var maxcnt = cmb_Max.value; // Maxium Count
  305. var totalcnt = opt_total.value; // Total Count
  306. if (totalcnt == "") totalcnt = "0";
  307. var curcnt = utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(findrow,"cnt")); // 해당항목 Count
  308. if (curcnt == "") curcnt = "0";
  309. if (pIsAdd == "false") {
  310. if (parseInt(curcnt) - 1 < 0) {
  311. // 최대입력 초과시
  312. //messageBox("Count는 0보다 작을 수 없습니다." ,"E","");
  313. } else {
  314. if(!nrbcTF) totalcnt = (parseInt(totalcnt) - 1).toString();
  315. curcnt = (parseInt(curcnt) - 1).toString();
  316. opt_total.value = totalcnt;
  317. //grd_TestInfoCnts.row= findrow;
  318. ds_grid_grd_TestInfoCnts.rowposition = findrow;
  319. grd_TestInfoCnts.setCellPos(grd_TestInfoCnts.getBindCellIndex("Body","tclsscrnnm"));
  320. grd_TestInfoCnts.setFocus();
  321. ds_grid_grd_TestInfoCnts.setColumn(findrow,"cnt",curcnt);
  322. }
  323. } else {
  324. if (parseInt(totalcnt) + 1 > parseInt(maxcnt ) && !nrbcTF) {
  325. // 최대입력 초과시
  326. sysf_messageBox("Maximum Count를 ","E003","");
  327. } else if(parseInt(totalcnt) + 1 > parseInt(maxcnt ) && nrbcTF) {
  328. } else {
  329. if(!nrbcTF) totalcnt = (parseInt(totalcnt) + 1).toString();
  330. curcnt = (parseInt(curcnt) + 1).toString();
  331. opt_total.value = totalcnt;
  332. //grd_TestInfoCnts.row= findrow;
  333. ds_grid_grd_TestInfoCnts.rowposition = findrow;
  334. grd_TestInfoCnts.setCellPos(grd_TestInfoCnts.getBindCellIndex("Body","tclsscrnnm"));
  335. grd_TestInfoCnts.setFocus();
  336. ds_grid_grd_TestInfoCnts.setColumn(findrow,"cnt",curcnt);
  337. SoundCheck();
  338. }
  339. }
  340. }
  341. }
  342. }
  343. function lf_onEndEdit() {
  344. var row = ds_grid_grd_TestInfoCnts.rowposition;
  345. var nrbcTF = false;
  346. if(utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(row,"testcd")) == "B109100018"){ // NRBC인 경우 total에 포함 안하게 하기 위해.
  347. nrbcTF = true;
  348. }
  349. if (row > 0) {
  350. if (utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(row,"used")) == "Y") { // Order가 있을때만 수기입력 가능
  351. var nrbccount = ds_grid_grd_TestInfoCnts.lookup("testcd","B109100018","cnt"); //NRBC COUNT
  352. grd_TestInfoCnts.updateToDataset();
  353. if(nrbccount != "") {
  354. opt_total.value = ds_grid_grd_TestInfoCnts.getSum("cnt") - parseInt(nrbccount); //총합 - NRBC count
  355. } else {
  356. opt_total.value = ds_grid_grd_TestInfoCnts.getSum("cnt");
  357. }
  358. var maxcnt = cmb_Max.value; // Maxium Count
  359. var totalcnt = opt_total.value; // Total Count
  360. if (totalcnt == "") totalcnt = "0";
  361. var countsum = ds_grid_grd_TestInfoCnts.getSum("cnt"); //전체 Count
  362. var percentsum = ds_grid_grd_TestInfoCnts.getSum("percent"); //전체 percent
  363. if (countsum == "") countsum = "0";
  364. if (percentsum == "") percentsum = "0";
  365. if (parseInt(totalcnt) > parseInt(maxcnt ) && !nrbcTF) { //total이 maxium 넘을때. (NRBC 외 다른 것들은 입력 불가)
  366. // 최대입력 초과시 (NRBC는 count에 들어가지 않는다.)
  367. sysf_messageBox("Maxium Count를 ","E003","");
  368. totalcnt = totalcnt - parseInt(utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(row,"cnt"))); // Total - 현재 입력한 count
  369. opt_total.value = totalcnt;
  370. ds_grid_grd_TestInfoCnts.setColumn(row,"cnt","0"); //현재 입력한 count 초기화
  371. }
  372. }
  373. }
  374. grd_TestInfoCnts.updateToDataset();
  375. }
  376. //키설정버튼 클릭
  377. function lf_setKey_Click(pInit) {
  378. if (gv_isSetKey == "y") {
  379. // Diff Count 입력상태로 변경
  380. var findrow = ds_grid_grd_TestInfoCnts.findRow(grd_TestInfoCnts.getBindCellIndex("Body","iud"),"U");
  381. if (pInit != "Y" && findrow > -1 ) {
  382. var yn = sysf_messageBox("변경된 키패드 설정을 ","S001","");
  383. if (yn == 6) {
  384. lf_lisClearStatus(grd_TestInfoCnts);
  385. for(i=0 ; i <ds_grid_grd_TestInfoCnts.rowcount ; i++){
  386. if(utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(i,"iud")) == "U"){
  387. var arrPostion = new Array();
  388. arrPostion[0] = i;
  389. grdf_setStatus(grd_TestInfoCnts, "U", arrPostion);//status는 update
  390. }
  391. }
  392. // 서브밋호출
  393. tranf_submit({
  394. id: "TXLLR90701"
  395. , service: "rsltmngtapp.RsltMngt"
  396. , method: "reqSetDiffCntSave"
  397. , inds : "TestData=ds_grid_grd_TestInfoCnts:U"
  398. , callback: "cbf_SMLLR90700"
  399. , async: false
  400. });
  401. } else {
  402. // 다시조회
  403. lf_initForm_Click()
  404. }
  405. }
  406. // 키설정 상태
  407. gv_isSetKey = "n";
  408. grd_TestInfoCnts.setFormatColProperty(3,"size",44); //count
  409. grd_TestInfoCnts.setFormatColProperty(4,"size",70); //percent
  410. //키패드 컬럼 숨김 여부
  411. ds_init_lb8002.filterstr = "cd =='01'";
  412. if(utlf_transNullToEmpty(ds_init_lb8002.getColumn(0,"etc01")) == "Y"){
  413. grd_TestInfoCnts.setFormatColProperty(2,"size",0); //키패드
  414. }else{
  415. grd_TestInfoCnts.setFormatColProperty(2,"size",50); //키패드
  416. }
  417. btn_set.text = "키 설정";
  418. } else {
  419. // Diff Count Key 설정상태로 변경
  420. gv_isSetKey = "y";
  421. grd_TestInfoCnts.setFormatColProperty(2,"size",164); //키패드
  422. grd_TestInfoCnts.setFormatColProperty(3,"size",0); //count
  423. grd_TestInfoCnts.setFormatColProperty(4,"size",0); //percent
  424. btn_set.text = "설정저장";
  425. }
  426. }
  427. function lf_setDiffCnt() {
  428. var nrbcTF = false;
  429. var maxcnt = utlf_transNullToEmpty(cmb_Max.value);
  430. var totalcnt = utlf_transNullToEmpty(opt_total.value);
  431. if(parseInt(maxcnt) > parseInt(totalcnt)) {
  432. sysf_messageBox("Total Count가 Maxium Count보다 작을 수 없습니다. ","E","");
  433. return;
  434. }
  435. var vSendData = "";
  436. for(x=0;x<ds_grid_grd_TestInfoCnts.rowcount;x++){
  437. var tclscd = utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(x,"testcd"));
  438. var orgrst = utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(x,"percent"));
  439. var count = utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(x,"cnt"));
  440. var wCount = utlf_transNullToEmpty(ds_DiffGGParm.getColumn(0,"wCount"));
  441. var calcuVal = fCOMLIS_RstRound((parseFloat(wCount) * parseInt(count)) / parseInt(maxcnt),2,1);
  442. if (count.getTrim() == "" ) {//|| count.getTrim() == "0" ) {
  443. vSendData = vSendData + tclscd + "▦▩"; // Count가 0이거나 결과가 없으면 초기화
  444. } else {
  445. orgrst = fCOMLIS_RstRound(orgrst, "0", "1");
  446. vSendData = vSendData + tclscd + "▦" + orgrst + "▩";
  447. //count값 매핑
  448. if(tclscd == "B109100001"){
  449. vSendData = vSendData + "B109100002" + "▦" + calcuVal + "▩";
  450. }
  451. else if(tclscd == "B109100003"){
  452. vSendData = vSendData + "B109100004" + "▦" + calcuVal + "▩";
  453. }
  454. else if(tclscd == "B109100005"){
  455. vSendData = vSendData + "B109100006" + "▦" + calcuVal + "▩";
  456. }
  457. else if(tclscd == "B109100007"){
  458. vSendData = vSendData + "B109100008" + "▦" + calcuVal + "▩";
  459. }
  460. else if(tclscd == "B109100009"){
  461. vSendData = vSendData + "B109100010" + "▦" + calcuVal + "▩";
  462. }
  463. }
  464. //wbc값 nrbc로 보정
  465. if(tclscd == "B109100018" && count != "0"){
  466. var wbcNrbc = fCOMLIS_RstRound(parseFloat(wCount) * (100/(100+parseInt(count))),2,1);
  467. opener.ds_DiffGGParm.setColumn(0,"wbcNrbc",wbcNrbc);
  468. }
  469. }
  470. this.opener.ds_DiffGGParm.setColumn(0,"bufDiffGG",vSendData);
  471. this.opener.ds_getSpcInfo.setColumn(0,"testcont","MANUAL DIFFERENTIAL COUNT RESULT");
  472. this.opener.lf_soGyeonJeoJang();
  473. this.close();
  474. }
  475. //정의된 키코드, 키값 리턴
  476. function lf_kepMap(pKey, pGbn) {
  477. var sKeyMap = new Array("A", "B", "C", "D", "E",
  478. "F", "G", "H", "I", "J",
  479. "K", "L", "M", "N", "O",
  480. "P", "Q", "R", "S", "T",
  481. "U", "V", "W", "X", "Y",
  482. "Z", "0", "1", "2", "3",
  483. "4", "5", "6", "7", "8",
  484. "9", "/", "*", "-", "+",
  485. "e", ".",
  486. "0" ,"1" ,"2" ,"3" ,"4" ,"5" ,"6" ,"7" ,"8" ,"9" ,
  487. "ins" , "hom" , "up" , "del" , "end" , "down");
  488. var sKeyVal = new Array("65", "66", "67", "68", "69",
  489. "70", "71", "72", "73", "74",
  490. "75", "76", "77", "78", "79",
  491. "80", "81", "82", "83", "84",
  492. "85", "86", "87", "88", "89",
  493. "90", "96", "97", "98", "99",
  494. "100", "101", "102", "103", "104",
  495. "105", "111", "106", "109", "107",
  496. "13", "110",
  497. "48" , "49" ,"50","51" , "52" , "53" , "54" ,"55" ,"56" , "57",
  498. "45", "36" , "33" , "46" , "35" , "34");
  499. var vRet = "";
  500. if (pGbn == "1") {
  501. for (var i = 0; i < sKeyMap.length; i++) {
  502. if (sKeyMap[i] == pKey) {
  503. vRet = (i + 1).toString().getLeftPad(2,0);
  504. break;
  505. }
  506. }
  507. } else if (pGbn == "2") {
  508. for (var i = 0; i < sKeyVal.length; i++) {
  509. if (sKeyVal[i] == pKey) {
  510. vRet = sKeyMap[i];
  511. break;
  512. }
  513. }
  514. }
  515. return vRet;
  516. }
  517. function SoundCheck(){
  518. inff_playsound("ding");
  519. }
  520. function grd_TestInfoCnts_onkeydown(obj:Grid, e:KeyEventInfo)
  521. {
  522. if(utlf_transNullToEmpty(chk_manual.value) != "1") { //menual 입력이 아닌 경우
  523. lf_grdOnKeyPress(e.ctrlKey,e.keycode);
  524. }
  525. }
  526. function grd_TestInfoCnts_onmousemove(obj:Grid, e:GridMouseEventInfo)
  527. {
  528. if (e.row < 0) return;
  529. if(parseInt(e.cell) < 1 || parseInt(e.row) < 0) return;
  530. var vTooltipText = utlf_transNullToEmpty(ds_grid_grd_TestInfoCnts.getColumn(e.row,"diffcountkey"));
  531. obj.tooltiptext = vTooltipText;
  532. }
  533. function ds_grid_grd_TestInfoCnts_oncolumnchanged(obj:Dataset, e:DSColChangeEventInfo)
  534. {
  535. lf_onEndEdit();
  536. }
  537. function cmb_Max_onitemchanged(obj:Combo, e:ItemChangeEventInfo)
  538. {
  539. var maxCnt = cmb_Max.value;
  540. var totalCnt = opt_total.value;
  541. var bfmaxlCnt = gv_BFcount;
  542. if(parseInt(maxCnt) < parseInt(totalCnt)){
  543. cmb_Max.value = bfmaxlCnt;
  544. sysf_messageBox(" Maxium Count가 Total Count보다 작을수 없습니다. ","E","");
  545. grd_TestInfoCnts.setFocus();
  546. return;
  547. }
  548. else{
  549. gv_BFcount = maxCnt;
  550. grd_TestInfoCnts.setFocus();
  551. }
  552. }
  553. function chk_manual_onchanged(obj:CheckBox, e:CheckBoxChangeEventInfo)
  554. {
  555. lf_initForm_Click();
  556. if(chk_manual.value == "1"){
  557. grd_TestInfoCnts.setCellProperty("Body",grd_TestInfoCnts.getBindCellIndex("Body","cnt"),"edittype","text");
  558. }else{
  559. grd_TestInfoCnts.setCellProperty("Body",grd_TestInfoCnts.getBindCellIndex("Body","cnt"),"edittype","none");
  560. }
  561. }
  562. function btn_cnfm_onclick(obj:Button, e:ClickEventInfo)
  563. {
  564. lf_setDiffCnt();
  565. }
  566. function btn_exit_onclick(obj:Button, e:ClickEventInfo)
  567. {
  568. this.close();
  569. }
  570. function btn_clear_onclick(obj:Button, e:ClickEventInfo)
  571. {
  572. lf_initForm_Click();
  573. }
  574. function btn_set_onclick(obj:Button, e:ClickEventInfo)
  575. {
  576. lf_setKey_Click();
  577. }
  578. function combo1_onitemchanged(obj:Combo, e:ItemChangeEventInfo)
  579. {
  580. lf_initForm_Click();
  581. }
  582. ]]></Script>
  583. </Form>
  584. </FDL>