cp_recradioList.xfdl 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <FDL version="1.5">
  3. <TypeDefinition url="..\default_typedef.xml"/>
  4. <Form id="cp_radioList" classname="cp_periodCal" inheritanceid="" position="absolute 0 0 100 20" titletext="Radio List" scrollbars="none" onload="cp_form_onload" col="1" row="1" style="background:transparent;">
  5. <Layouts>
  6. <Layout/>
  7. </Layouts>
  8. <Objects>
  9. <Dataset id="ds_rdoList" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  10. <ColumnInfo>
  11. <Column id="chk" type="STRING" size="256"/>
  12. <Column id="val" type="STRING" size="256"/>
  13. <Column id="txt" type="STRING" size="256"/>
  14. </ColumnInfo>
  15. </Dataset>
  16. </Objects>
  17. <Script type="xscript4.0"><![CDATA[/***************************************************************************************
  18. * System Name : himed2
  19. * Job Name : Composite
  20. * Description : multi Radio(서식용)
  21. *---------------------------------------------------------------------------------------
  22. * Modify Date Modifier Modify Description
  23. *---------------------------------------------------------------------------------------
  24. *---------------------------------------------------------------------------------------
  25. ****************************************************************************************/
  26. /* 참고사항
  27. * User Properties
  28. col : 아이템 열의 개수
  29. row : 아이템 행의 개수
  30. */
  31. //=======================================================================================
  32. // Common Lib Include
  33. //---------------------------------------------------------------------------------------
  34. include "com_commonxp::comm_ds.xjs";
  35. //=======================================================================================
  36. // Global Form Variable
  37. //---------------------------------------------------------------------------------------
  38. var iv_event; //event
  39. var objForm; //form Object
  40. /****************************************************************************************
  41. * Description : Form Initialization
  42. * Argument : obj : Object Event has occurred
  43. * : e : Event Object
  44. * return :
  45. ****************************************************************************************/
  46. function cp_form_onload(obj:Form, e:LoadEventInfo)
  47. {
  48. objForm = obj;
  49. }
  50. //=======================================================================================
  51. // Event
  52. //---------------------------------------------------------------------------------------
  53. function ufn_event_onitemclick(obj:Radio, e:RadioMouseEventInfo)
  54. {
  55. var nRow = ds_rdoList.findRow("val", e.itemvalue);
  56. var objRdo;
  57. for(var i=0; i < ds_rdoList.getRowCount(); i++)
  58. {
  59. objRdo = eval("rdo_multi_"+i);
  60. if(nRow == i)
  61. {
  62. ds_rdoList.setColumn(i, "chk","1");
  63. }
  64. else
  65. {
  66. objRdo.value = null;
  67. ds_rdoList.setColumn(i, "chk","0");
  68. }
  69. }
  70. if(!ufn_isNull(iv_event)) ufn_compositeEvent(iv_event);
  71. }
  72. //=======================================================================================
  73. // User Function
  74. //---------------------------------------------------------------------------------------
  75. /****************************************************************************************
  76. * Description : form init setting
  77. * Argument : String sProp - uset properties
  78. * Object objDs - dataset object
  79. * String sColVal - value column
  80. * String sColTxt - text column
  81. * String sEvent - event function
  82. 1021 - sID 추가
  83. * @return N / A
  84. * ex)setInitProperty("col=2,row=1")
  85. ****************************************************************************************/
  86. function setInitComp(sID, sProp, objDs, sColVal, sColTxt, sEvent)
  87. {
  88. //InitProperty
  89. if(!ufn_isNull(sProp))
  90. {
  91. setInitProperty(sProp);
  92. }
  93. //trace(objDs.saveXML());
  94. //BindDataset
  95. if(!(ufn_isNull(objDs) || ufn_isNull(sColVal) || ufn_isNull(sColTxt)))
  96. {
  97. setBindDataset(sID, objDs, sColVal, sColTxt);
  98. }
  99. //setCallEvent
  100. if(!ufn_isNull(sEvent))
  101. {
  102. setCallEvent(sEvent);
  103. }
  104. }
  105. /****************************************************************************************
  106. * Description : user property setting
  107. * Argument : String sVal
  108. * @return N / A
  109. * ex)setInitProperty("col=2,row=1")
  110. ****************************************************************************************/
  111. function setInitProperty(sVal)
  112. {
  113. if(ufn_isNull(sVal))
  114. {
  115. return;
  116. }
  117. var arrVal= sVal.split(",");
  118. var arrProp;
  119. for(var i=0; i < arrVal.length; i++)
  120. {
  121. arrProp = arrVal[i].split("=");
  122. var tmp1 = utlf_trim(arrProp[0]);
  123. var tmp2 = utlf_trim(arrProp[1]);
  124. if( tmp2 == "*" ){
  125. tmp2 = "'*'";
  126. }else if( tmp2.indexOf("px") > -1 ){
  127. tmp2 = tmp2.replace("px", "");
  128. }
  129. eval(objForm.name+"."+tmp1+"="+tmp2);
  130. // arrProp = arrVal[i].split("=");
  131. // eval(objForm.name+"."+arrProp[0]+"="+arrProp[1]);
  132. }
  133. //trace("asdfsadfsdf:"+objForm.col+" "+objForm.row+" "+objForm.cellspacing+" "+objForm.vcellspacing+" "+objForm.itemWidth+" "+objForm.itemHeight+" , overflow="+objForm.overflow);
  134. }
  135. /****************************************************************************************
  136. * Description : dstaset binding
  137. * Argument : object objDs - dataset Object
  138. :
  139. * @return N / A
  140. ****************************************************************************************/
  141. function setBindDataset(sID, objDs, sColVal, sColTxt)
  142. {
  143. ufn_removeComp();
  144. ds_rdoList.clearData();
  145. var nRow;
  146. for(var i =0; i < objDs.getRowCount() ; i++)
  147. {
  148. nRow = ds_rdoList.addRow();
  149. ds_rdoList.setColumn(nRow, "val", ufn_trim(objDs.getColumn(i, sColVal)));
  150. ds_rdoList.setColumn(nRow, "txt", ufn_trim(objDs.getColumn(i, sColTxt)));
  151. }
  152. utlf_makeRadio(sID);
  153. }
  154. /****************************************************************************************
  155. * Description : User Composite Set Data Method
  156. * Argument : sData
  157. * return : none
  158. ****************************************************************************************/
  159. function setData(sData)
  160. {
  161. var nRow = ds_rdoList.findRow("val", sData);
  162. var objRdo;
  163. var objName;
  164. var objNm = objForm.name;
  165. for(var i=0; i < ds_rdoList.getRowCount(); i++)
  166. {
  167. objRdo = eval("rdo_multi_"+i);
  168. if(nRow == i)
  169. {
  170. //objName = objRdo.name;
  171. objRdo.value = sData;
  172. ds_rdoList.setColumn(i, "chk","1");
  173. }
  174. else
  175. {
  176. objRdo.value = "";
  177. ds_rdoList.setColumn(i, "chk","0");
  178. }
  179. }
  180. //1120 - 주석처리
  181. //if(!ufn_isNull(iv_event)) ufn_compositeEvent(iv_event,sData);
  182. }
  183. /****************************************************************************************
  184. * Description : User Composite Get Data Method
  185. * Argument : none
  186. * return : none
  187. ****************************************************************************************/
  188. function getData()
  189. {
  190. var iv_Rtn = ds_rdoList.lookup("chk", "1", "val");
  191. return iv_Rtn;
  192. }
  193. /****************************************************************************************
  194. * Description : User Composite Get Data Method
  195. * Argument : none
  196. * return : none
  197. ****************************************************************************************/
  198. function getLableData()
  199. {
  200. var iv_Rtn = ds_rdoList.lookup("chk", "1", "txt");
  201. return iv_Rtn;
  202. }
  203. /****************************************************************************************
  204. * Description : User Composite set setEnbale
  205. * Argument : none
  206. * return : none
  207. ****************************************************************************************/
  208. function setEnbale(bReq)
  209. {
  210. objForm.enable = bReq;
  211. }
  212. /****************************************************************************************
  213. * Description : User Composite Set Event Method
  214. * Argument : none
  215. * return : none
  216. ****************************************************************************************/
  217. function setCallEvent(sEvent)
  218. {
  219. iv_event = sEvent;
  220. }
  221. /****************************************************************************************
  222. * Description : dstaset binding
  223. * Argument : object objDs - dataset Object
  224. :
  225. * @return N / A
  226. ****************************************************************************************/
  227. function utlf_makeRadio(sID)
  228. {
  229. var arrCol = new Array();
  230. var sDsNm; //데이터셋 ID
  231. var sTxt; //라디오 텍스트
  232. var objFont = utlf_getObjFont(9, "Dotum"); //font object
  233. var objTextSize; //폰트사이즈
  234. var nFontPx;
  235. var objInnDs; // innerdataset;
  236. //var nCellspacing = 22; //컴퍼넌트사이 간격
  237. var nCellspacing = objForm.cellspacing;
  238. var nVcellspacing = objForm.vcellspacing;
  239. var nCircleSize = 19; //라디오 이미지 사이즈
  240. var nWidth = 0; // radio width
  241. var nHeight = 0; //radio height
  242. /* //추가 확장기능 요청시 사용할려고 남겨 놓음
  243. var nItemWidth = toNumber(objForm.itemWidth,0);
  244. var nItemHeight = toNumber(objForm.itemHeight,0);
  245. if(nItemWidth < 1 || ufn_isNull(nItemWidth))
  246. {
  247. nWidth = 100;
  248. }
  249. else
  250. {
  251. nWidth = nItemWidth;
  252. }
  253. if(nItemHeight< 1 || ufn_isNull(nItemHeight))
  254. {
  255. nHeight = 20;
  256. }
  257. else
  258. {
  259. nHeight = nItemHeight;
  260. }
  261. */
  262. //20150127 - nWidth , nHeight 수정
  263. //w 19 h 20 -> 13, 16
  264. nWidth = 13;
  265. nHeight =16;
  266. var objFont = utlf_getObjFont(9, "Dotum"); //font object
  267. var objTextSize; //폰트사이즈
  268. var objNm = objForm.name;
  269. var j = 1; //col 갯수
  270. var nTop = 0;
  271. var nLeft = 0;
  272. var nTop =0;
  273. var nRight =0;
  274. var nBottom =0;
  275. //var nMaxWidth = 0; //가장 큰 넓이값-폼의 크기를 설정하기 위한 값
  276. //var nMaxHeight = 0; //가장 큰 높이값-폼의 크기를 설정하기 위한 값
  277. //var nMaxItemSize = 0;
  278. var nColMax = new Array(objForm.col);
  279. for(var i = 0; i < nColMax.length; i++)
  280. {
  281. nColMax[i] = 0;
  282. }
  283. var colNum = 0;
  284. for(var i = 0; i < ds_rdoList.getRowCount(); i++)
  285. {
  286. sTxt = ufn_trim(ds_rdoList.getColumn(i,"txt"));
  287. objTextSize = utlf_getTextSize(sTxt, objFont);
  288. if(colNum == (i % objForm.col))
  289. {
  290. if(nColMax[colNum] <= objTextSize.cx)
  291. {
  292. nColMax[colNum] = objTextSize.cx;
  293. }
  294. colNum++;
  295. }
  296. if(colNum == col)
  297. {
  298. colNum = 0;
  299. }
  300. }
  301. for(var i=0; i < ds_rdoList.getRowCount(); i++)
  302. {
  303. arrCol[0] = {col: "cd", type:"string", size:256};
  304. arrCol[1] = {col: "nm", type:"string", size:256};
  305. sDsNm = dsf_createDs("ds_rdo_"+i, arrCol);
  306. objInnDs = eval(sDsNm);
  307. objInnDs.insertRow(0);
  308. sTxt = ufn_trim(ds_rdoList.getColumn(i,"txt"));
  309. objInnDs.setColumn(0,"cd", ufn_trim(ds_rdoList.getColumn(i,"val")));
  310. objInnDs.setColumn(0,"nm", sTxt);
  311. //trace(sDsNm + "::" +objInnDs.saveXML());
  312. if(i == 0)
  313. {
  314. nLeft = 0;
  315. }
  316. else
  317. {
  318. nLeft = nRight + nCellspacing;
  319. }
  320. objTextSize = utlf_getTextSize(sTxt, objFont); //폰트사이즈
  321. objTextSize.cx += nColMax[i % objForm.col] - objTextSize.cx;
  322. nRight = nLeft + nCircleSize + objTextSize.cx;
  323. if(toNumber(objForm.row,0) == 1 || toNumber(objForm.col,0) >= j) //한 row의 컬럼 갯수 보다 크면 다음 row로 이동
  324. {
  325. utlf_createRadio(sID, "rdo_multi_"+i, nLeft, nTop, nRight, nTop + nHeight, sDsNm);
  326. }
  327. else
  328. {
  329. j = 1;
  330. nLeft = 0;
  331. nTop = nTop + nHeight + nVcellspacing;
  332. nRight = nLeft + nCircleSize + objTextSize.cx;
  333. utlf_createRadio(sID,"rdo_multi_"+i, nLeft, nTop, nRight, nTop + nHeight, sDsNm);
  334. }
  335. /* //추가 확장기능 요청시 사용할려고 남겨 놓음
  336. if(nMaxWidth < (nLeft + nWidth))
  337. {
  338. nMaxWidth = nLeft + nWidth;
  339. }
  340. if(nMaxHeight < nTop + nHeight)
  341. {
  342. nMaxHeight = nTop + nHeight;
  343. }
  344. */
  345. j++;
  346. }
  347. /* //추가 확장기능 요청시 사용할려고 남겨 놓음
  348. //overflow 가 visible이면 checkbox 크기에 맞게 form을 늘여준다.
  349. if(objForm.overflow == "visible")
  350. {
  351. //form 사이즈를 조절한다.
  352. objForm.position.width = nMaxWidth;
  353. objForm.position.height = nMaxHeight;
  354. }
  355. else if(objForm.overflow == "hidden") //form의 사이즈를 변경하지 않는다.
  356. {
  357. }
  358. else if(objForm.overflow == "scroll") //폼에 스크롤을 생성한다.
  359. {
  360. objForm.scrollbars = "autoboth";
  361. }
  362. else
  363. {
  364. //form 사이즈를 조절한다.
  365. objForm.position.width = nMaxWidth;
  366. objForm.position.height = nMaxHeight;
  367. }
  368. */
  369. }
  370. /****************************************************************************************
  371. * Description : create radio object
  372. * Argument : string chkName - checkbox id
  373. number nL - left postion
  374. number nT - top postion
  375. number nR - right postion
  376. number nB - bottom postion
  377. string sVal - true value
  378. string sTxt - text value
  379. * @return N / A
  380. ****************************************************************************************/
  381. function utlf_createRadio(sID, rdoName, nL, nT, nR, nB, sDsNm)
  382. {
  383. var objRadio = new Radio(rdoName, nL, nT, nR, nB);
  384. objForm.addChild(rdoName, objRadio);
  385. objRadio.onitemclick.addHandler(ufn_event_onitemclick);
  386. objRadio.innerdataset = sDsNm;
  387. objRadio.codecolumn = "cd";
  388. objRadio.datacolumn = "nm";
  389. var vName = new String(sID);
  390. if( !utlf_isNull(objForm._medirecRdoStyle) ){
  391. objRadio.class = objForm._medirecRdoStyle;
  392. }
  393. objRadio.name = vName;
  394. objRadio.show();
  395. }
  396. /**********************************************************************************
  397. * 함수명 : ufn_trim
  398. * 설 명 : 입력받은 문자열의 공백을 제거한다.
  399. * argument : sValue 문자열 값
  400. * return Type : return 문자열
  401. * 작성자 : tobesoft
  402. **********************************************************************************/
  403. function ufn_trim(sValue)
  404. {
  405. if (sValue == null) return "";
  406. if (new String(sValue).valueOf() == "undefined") return "";
  407. if (new String(sValue) == null) return "";
  408. var retVal = (new String(sValue)).replace(/^\s+|\s+$/g, '');
  409. return retVal;
  410. }
  411. /****************************************************************************************
  412. * Description : 컴포지트 이벤트 호출 함수
  413. * Argument : sEventId - 호출할 이벤트 ID
  414. * sCompNm - 컴포지트명
  415. * @return N / A
  416. ****************************************************************************************/
  417. function ufn_compositeEvent(sEventId,sCompNm)
  418. {
  419. var lv_oFrame = this.getOwnerFrame();
  420. var lv_bInhForm = ufn_isNull(lv_oFrame.bInhForm) ? false : lv_oFrame.bInhForm;
  421. var lv_bMdiForm = ufn_isNull(lv_oFrame.bMdiForm) ? false : lv_oFrame.bMdiForm;
  422. var lv_bMdiPopForm = ufn_isNull(lv_oFrame.bMdiPopForm) ? false : lv_oFrame.bMdiPopForm;
  423. try{
  424. if(lv_bInhForm)
  425. {
  426. if(lv_bMdiForm == true || lv_bMdiPopForm == true)
  427. {
  428. if(ufn_isNull(sCompNm))
  429. {
  430. eval("this.getOwnerFrame().form.div_Layout.div_Work."+sEventId+"()");
  431. }
  432. else
  433. {
  434. eval("this.getOwnerFrame().form.div_Layout.div_Work."+sEventId+"('"+sCompNm+"')");
  435. }
  436. }
  437. else
  438. {
  439. if(ufn_isNull(sCompNm))
  440. {
  441. eval("this.getOwnerFrame().form."+sEventId+"()");
  442. }
  443. else
  444. {
  445. eval("this.getOwnerFrame().form."+sEventId+"('"+sCompNm+"')");
  446. }
  447. }
  448. }
  449. else
  450. {
  451. eval(sEventId);
  452. }
  453. }catch(err){}
  454. }
  455. /****************************************************************************************
  456. * Description : 입력값이 null 또는 wihte space로만 이루어져 있으면 빈문자를 리턴하는 함수
  457. * Argument : sValue String
  458. * return : String
  459. ****************************************************************************************/
  460. function ufn_isEmpty(sValue)
  461. {
  462. if (new String(sValue).valueOf() == "undefined") return "";
  463. if (sValue == null) return "";
  464. var lv_sChkStr = new String(sValue);
  465. if (lv_sChkStr == null) return "";
  466. if (lv_sChkStr.toString().length == 0 ) return "";
  467. return sValue;
  468. }
  469. /****************************************************************************************
  470. * Description : 입력값이 null 또는 wihte space로만 이루어져 있는지 확인 하는 함수
  471. * Argument : value 입력값
  472. * return : boolean. null(혹은 white space) 여부
  473. ****************************************************************************************/
  474. function ufn_isNull(sValue)
  475. {
  476. if (new String(sValue).valueOf() == "undefined") return true;
  477. if (sValue == null) return true;
  478. var lv_sChkStr = new String(sValue);
  479. if (lv_sChkStr == null) return true;
  480. if (lv_sChkStr.toString().length == 0 ) return true;
  481. return false;
  482. }
  483. /****************************************************************************************
  484. * Description : remove Compnent
  485. * Argument : none
  486. * return : none
  487. ****************************************************************************************/
  488. function ufn_removeComp()
  489. {
  490. for(var i =0 ; i < ds_rdoList.getRowCount(); i++)
  491. {
  492. if(isValidObject("rdo_multi_"+i))
  493. {
  494. var objCh = eval("rdo_multi_"+i);
  495. objForm.removeChild("rdo_multi_"+i);
  496. var suss = objCh.destroy();
  497. objCh= null;
  498. }
  499. }
  500. }
  501. /****************************************************************************************
  502. * Description : init Compnent(composite 초기화 - 20141119 윤주호)
  503. * Argument : none
  504. * return : none
  505. ****************************************************************************************/
  506. function ufn_initComp()
  507. {
  508. var vFindChekValue = ds_rdoList.findRow("chk","1");
  509. var sData = ds_rdoList.getColumn(vFindChekValue, "val");
  510. var nRow = ds_rdoList.findRow("val", sData);
  511. var objRdo;
  512. var objName;
  513. var objNm = objForm.name;
  514. for(var i=0; i < ds_rdoList.getRowCount(); i++)
  515. {
  516. objRdo = eval("rdo_multi_"+i);
  517. if(nRow == i)
  518. {
  519. //objName = objRdo.name;
  520. objRdo.value = "";
  521. ds_rdoList.setColumn(i, "chk","0");
  522. }
  523. else
  524. {
  525. objRdo.value = "";
  526. ds_rdoList.setColumn(i, "chk","0");
  527. }
  528. }
  529. }
  530. ]]></Script>
  531. </Form>
  532. </FDL>