123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958 |
- <?xml version="1.0" encoding="utf-8"?>
- <Script type="xscript4.0"><![CDATA[class nuMultiCheckbox extends Div
- {
- /*******************************************************************************
- * 멤버변수
- ******************************************************************************/
- private var PADDING_SIZE = 10;
- private var TEXT_WIDTH = 12;
- private var MARGIN_SIZE = 22;
-
- private var oBindDataset;
- private var sBindColumn;
- private var sDispText;
- private var aCheckBox;
-
- public var _draw = false; //Grid 를 다시 그릴지 여부 (처음에 한번 그린다음에 true로 바뀜
- public var _head; // 헤더 명칭 ('^' 로 구분됨)
- public var _col; // 컬럼 갯수
- public var _truevalue; // true 값
- public var _falsevalue; // false 값
- public var _binddataset; // bind dataset
- public var _bindcol; // bind col
- public var _bindheadcol; // bind head col
- public var _bindType; // bind type 을 지정한다 'row' 일 경우 dataset row 기준으로 데이타 바인딩, 'col(default)' 일 경우 dataset col 기준으로 데이타 바인딩
- //public var _required = ""; //필수 항목 컬럼들
- //public var _msgkey = "";
- public var _defaultvalue; //공통코드 기본값(A : 전체)
- public var _paddingsize;
- public var _changedFunc; //체크값이 변경되었을 경우 실행할 함수명 2016.10.07 추가
-
- private var oBindDataset;
- private var _bCheckAll = false;
-
- //2015.12.10 by 이봉욱 - 기록서식에서 컨트롤 사용 시 checkbox 스타일 관련 속성추가
- public var _isMedirec; //기록서식에서 사용여부(true일 때 기록서식에서 사용하는 ckeckbox로 인식함)
- public var _medirecChkStyle; //checkbox style ==> classid (ex : ck_medirec)
- public var _medirecChkleading; //checkbox 행간격(ex: 16)
-
- private var RUNAFTERLOAD = null;
-
- /*******************************************************************************
- * 생성자 && OnDraw
- ******************************************************************************/
-
- /**
- * @desc 생성자 생성에 필요한 값들을 정의하자.
- * @param sName - 객체이름
- * @param iLeft
- * @param iTop
- * @param iRight
- * @param iBottom
- */
- function nuMultiCheckbox( sName, iLeft, iTop, iRight, iBottom ) {
-
- if( !isNull(sName) )
- this.name = sName;
- if( !isNull(iLeft) )
- this.position.left = iLeft;
- if( !isNull(iTop) )
- this.position.top = iTop;
- if( !isNull(iRight) )
- this.position.right = iRight;
- if( !isNull(iBottom) )
- this.position.bottom = iBottom;
-
-
- aCheckBox = new Array();
- }
-
- /**
- * 객체를 그릴때마다 기본적으로 호출되는 함수
- * checkbox를 그리자.
- */
- function OnDraw(Canvas, EventArgs)
- {
- DefaultDraw(Canvas.getPainter());
- if(_draw==true)return;
-
- //checkbox 생성
- reDraw();
-
-
- _draw = true;
-
-
- if( RUNAFTERLOAD != null ) {
- RUNAFTERLOAD();
- RUNAFTERLOAD = null;
- }
- }
-
- /**
- * @desc multicheckbox 를 다시 그린다.
- */
- function reDraw() {
-
- if( !isNull(_binddataset) ) {
- oBindDataset = eval(_binddataset);
- oBindDataset.onrowposchanged.addHandler( bindDataset_onrowposchanged );
- }
-
-
- //0. col text 와 col size를 dataset 기준으로 결정하자.
- var iColSize = 0;
- var aDispText;
- if( isNull( oBindDataset ) ) return;
-
- if( _bindType == "row" ) {
- //row bindtype 일때 head 를 ds 에서 가지고 올거냐 아니면 _head 에서 가지고 올거냐 결정
- if( isNull(_bindheadcol) ) {
-
- aDispText = _head.split("^");
- iColSize = _col;
- if( isNull(iColSize) || iColSize < 1 ) return; //row bindtype 이 아닐때 return
-
- } else {
-
- aDispText = new Array();
-
- for( var i=0; i<oBindDataset.rowcount; i++) {
- var sHead = oBindDataset.getColumn(i, _bindheadcol);
-
- aDispText[i] = sHead;
- }
-
- iColSize = aDispText.length;
-
- }
-
-
- } else {
-
- aDispText = _head.split("^");
- iColSize = _col;
- if( isNull(iColSize) || iColSize < 1 ) return; //row bindtype 이 아닐때 return
-
- }
-
- if( isNull(_binddataset) || isNull(_bindcol) ) return;
- if( isNull(_truevalue) ) {
- _truevalue = "true";
- }
- if( isNull(_falsevalue) ) {
- _falsevalue = "false";
- }
-
-
-
-
-
-
- //1. 기존에 등록되어 있는 obj 를 지우자.
- //trace("aCheckBox.length->" + aCheckBox.length);
- for( var i=0; i<aCheckBox.length; i++ ) {
- var objCheckBox = aCheckBox[i];
- this.removeChild( objCheckBox.name );
-
- // Destroy Object
- objCheckBox.destroy();
- objCheckBox = null;
- }
- aCheckBox = new Array(); //array 초기화
-
-
-
- //2. 전체(_defaultvalue == 'A') 가 포함되어 있다면.!!
- if( _defaultvalue == 'A' ) {
- var aTmp = new Array("전체");
- aDispText = aTmp.concat( aDispText );
-
- iColSize++;
-
- //trace("aDispText->" + aDispText + " iColSize->" + iColSize);
- }
- //3. column 마다 최대 길이를 알아내오자.
- var iColCnt = (isNull(_col) ? 0 : _col);
- var aMaxColSize = new Array();
- if( _isMedirec == "true"){
- for(var i = 0; i < iColSize; i++){
- this.scrollbars = "none";
- var iWidthx = fn_getTextSize(aDispText[i], "Dotum", 9) + (MARGIN_SIZE - 2);
- if( aMaxColSize[i%iColCnt] < iWidthx || aMaxColSize[i%iColCnt] == null){
- aMaxColSize[i%iColCnt] = iWidthx;
- }
- //trace( aMaxColSize[i%iColCnt] ) ;
- }
- } else {
- for(var i=0; i<iColSize; i++) aMaxColSize[i] = 0;
-
- var iRowIdx = 0;
- var iColIdx = 0;
- for(var i=0; i<iColSize; i++) {
- var sHeader = "";
- if( aDispText.length > i )
- sHeader = aDispText[i];
-
- //trace("i->" + i + " iColCnt->" + iColCnt + " iColIdx->" + iColIdx);
- if( aMaxColSize[iColIdx] < sHeader.length ) {
- aMaxColSize[iColIdx] = sHeader.length;
- }
-
- if( (i+1) % iColCnt == 0 ) {
- iColIdx = 0;
- } else {
- iColIdx++;
- }
- }
- }
- //trace("aMaxColSize->" + aMaxColSize);
-
-
-
-
- //4. checkbox 를 그리기 시작하자.
- var iLeft = 0;
- var iWidth = 150;
- var iTop = 0;
-
- iRowIdx = 0; //줄번호
- iColIdx = 0; //col번호
-
- if( isNull(_paddingsize) ) _paddingsize = 0;
- else _paddingsize = parseInt(_paddingsize);
-
-
- for(var i=0; i<iColSize; i++) {
-
- //header
- var sHeader = "";
- if( aDispText.length > i )
- sHeader = aDispText[i];
-
- var iMaxColSize = aMaxColSize[ iColIdx ];
- //trace("iColSize->" + iColSize + " i->" + i + " iColIdx->" + iColIdx + " iMaxColSize->" + iMaxColSize);
-
- if(_isMedirec == "true"){
- iWidth = aMaxColSize[i%iColCnt];
- //trace("# " + iWidth);
- }else{
- //사이즈 지정 checkbox_size(22px) + 한글자넓이 * 텍스트길이
- iWidth = MARGIN_SIZE + (TEXT_WIDTH * iMaxColSize);
- }
-
- //left, top 좌표값 지정
- if( iColCnt == 0 ) {
- iTop = 0;
- } else {
- //2015.12.10 by 이봉욱 - 기록서식 컨트롤 간의 행간격 설정값 변경 기능 추가
- if(_isMedirec == "true"){
- if(!isNull(_medirecChkleading)){
- iTop = _medirecChkleading * iRowIdx;
- }
- }else{
- iTop = MARGIN_SIZE * iRowIdx;
- }
-
- //지정한 col 갯수만큼이 되면 줄바꿈
- if( i % iColCnt == 0 ) {
- iLeft = 0;
- }
- }
-
- if( (i+1) % iColCnt == 0 ) {
- iRowIdx ++;
- iColIdx = 0;
-
- } else {
- iColIdx++;
- }
-
-
-
- //새로운 checkbox 생성---------------------------------------
- var objId = "CheckBox"+i;
- var objCheckBox;
-
- //2015.12.10 by 이봉욱 - 기록서식 컨트롤 스타일 설정값 변경 기능 추가
- if(_isMedirec == "true"){
- if(!isNull(_medirecChkStyle)){ //서식 스타일 적용할 때
- objCheckBox = new CheckBox(objId, iLeft + 2, iTop + 2, iLeft + iWidth, iTop + 16);
- objCheckBox.class = _medirecChkStyle;
- }else{ //서식 스타일 적용하지 않을 때(EX 간호 : FMMNR01000)
- objCheckBox = new CheckBox(objId, iLeft, iTop, iLeft + iWidth, iTop + 20);
- }
- }else{
- objCheckBox = new CheckBox(objId, iLeft, iTop, iLeft + iWidth, iTop + 20);
- }
- this.addChild(objId, objCheckBox);
-
- objCheckBox.onclick.addHandler( nuMultiCheckBox_onclick );
-
- //김종현 수정 - 20130812 : 체크박스에서 space 클릭시 데이타 반영 안됨 처리
- objCheckBox.onchanged.addHandler( nuMultiCheckBox_onchanged );
-
- objCheckBox.text = sHeader;
- objCheckBox.show();
- //새로운 checkbox 생성---------------------------------------
-
-
- objCheckBox.truevalue = _truevalue;
- objCheckBox.falsevalue = _falsevalue;
-
- if( _bCheckAll ) objCheckBox.value = _truevalue;
-
-
- //trace( objId + ":" + iLeft + ":" + iWidth );
- aCheckBox[i] = objCheckBox;
-
- //left 좌표값 이동
- if( _paddingsize > 0 ) {
- //2017.06.02 서식에서 _paddingsize 사용 시 체크박스가 겹처지는 오류 수정
- if(_isMedirec == "true"){
- iLeft += iWidth + _paddingsize;
- }else{
- iLeft += _paddingsize;
- }
- } else {
- //2017.10.16 서식에서 기본 padding없이 컨트롤 생성 되도록 수정 요청
- //iLeft += iWidth + PADDING_SIZE;
- if(_isMedirec == "true"){
- iLeft += iWidth + _paddingsize;
- }else{
- iLeft += iWidth + PADDING_SIZE;
- }
- }
- }
-
- setBindDataset(); //초기값 설정
-
- //2015.05.13 데이터셋의 갯수가 많아서 스크롤을 생성해야 할 경우가 발생하여 추가
- this.resetScroll();
-
- //2016.08.24 checkbox를 생성하기 전에 enable 처리가 되었다면 다시 그리기 위해 예외처리
- if(this.enable == false) {
- this.enable = true;
- this.enable = false;
- }
- }
-
-
-
- /*******************************************************************************
- * 확장함수
- ******************************************************************************/
-
- /**
- * @desc checkbox에 필요한 값을 dataset에서 읽어와서 바인드하자
- */
- function setBindDataset() {
- if( isNull(oBindDataset) ) return;
-
- var iBaseIdx = 0;
- if( _defaultvalue == 'A' ) iBaseIdx = 1;
-
-
- if( _bindType == "row" ) {
-
- for(var i=0; i<aCheckBox.length - iBaseIdx; i++) {
- var objCheckBox = aCheckBox[iBaseIdx + i]; //'전체'가 포함되어 있을때 idx 가 한칸 뒤로
-
- if( oBindDataset.rowcount <= i ) continue;
-
- // 2013.08.28 이길용 수정, setCheckVall시에 이벤트 타는것 방지.
- objCheckBox.enableevent = false;
-
- var sBindVal = oBindDataset.getColumn( i, _bindcol );
- objCheckBox.value = sBindVal;
-
- objCheckBox.enableevent = true;
-
- }
-
- } else {
- var sBindVal = oBindDataset.getColumn( oBindDataset.rowposition, _bindcol );
-
- if( isNull(sBindVal) ) return;
-
- for(var i=0; i<aCheckBox.length - iBaseIdx; i++) {
- var objCheckBox = aCheckBox[iBaseIdx + i]; //'전체'가 포함되어 있을때 idx 가 한칸 뒤로
-
- // 2013.08.28 이길용 수정, setCheckVall시에 이벤트 타는것 방지.
- objCheckBox.enableevent = false;
-
- if( sBindVal.length > i ) {
- objCheckBox.value = sBindVal.charAt(i);
- } else {
- objCheckBox.value = "";
- }
-
- objCheckBox.enableevent = true;
- }
- }
- }
-
- /**
- * @desc checkbox에 값이 변경되면 dataset에 값을 바인드하자.
- */
- function getBindDataset() {
- if( isNull(oBindDataset) ) return;
-
- var iBaseIdx = 0;
- if( _defaultvalue == 'A' ) iBaseIdx = 1;
-
-
-
- if( _bindType == "row" ) {
-
- for(var i=0; i<aCheckBox.length - iBaseIdx; i++) {
- var objCheckBox = aCheckBox[iBaseIdx + i]; //'전체'가 포함되어 있을때 idx 가 한칸 뒤로
-
- if( oBindDataset.rowcount <= i ) continue;
-
- oBindDataset.setColumn( i, _bindcol, objCheckBox.value );
- }
-
- } else {
- var sBindVal = "";
- for( var i=0; i<aCheckBox.length - iBaseIdx; i++ ) {
- var objCheckBox = aCheckBox[iBaseIdx + i]; //'전체'가 포함되어 있을때 idx 가 한칸 뒤로
-
- sBindVal += objCheckBox.value;
- }
- //trace(sBindVal);
-
- oBindDataset.setColumn( oBindDataset.rowposition, _bindcol, sBindVal );
- }
- }
-
- /**
- * checkbox 전체를 체크하자.
- * @param isChecked - true 전체선택, false 전체선택해제
- */
- public function checkedAll( isChecked ) {
- if( isNull( isChecked ) ) isChecked = true;
-
- _bCheckAll = isChecked; //전체 check flag 기억해두자.
-
- var sBindVal = this._falsevalue;
- if( isChecked ) sBindVal= this._truevalue;
-
-
- /*
- var iBaseIdx = 0;
- if( _defaultvalue == 'A' ) iBaseIdx = 1;
-
- for(var i=0; i<aCheckBox.length - iBaseIdx; i++) {
- var objCheckBox = aCheckBox[iBaseIdx + i]; //'전체'가 포함되어 있을때 idx 가 한칸 뒤로
-
- objCheckBox.value = sBindVal;
- }
- */
-
- for(var i=0; i<aCheckBox.length; i++) {
- var objCheckBox = aCheckBox[i]; //'전체'가 포함되어 있을때 idx 가 한칸 뒤로
-
- objCheckBox.value = sBindVal;
- }
-
- getBindDataset();
- }
- /**
- * 공통코드를 바인드
- */
- function setCode( dat ) {
-
- //-------------------------------------------------------------
- var objDate1 = new Date();
- var iStartTime = objDate1.getTime();
- //-------------------------------------------------------------
-
-
- // 여기는 무조건 단일값 -------------------------------------------
- var bizType = dat.biztype;
- var code = dat.code;
- var colnum = dat.colnum;
- var selecttype = dat.selecttype;
- var sortcolumn = "cd_nm";
- var sortmethod = "asc";
- // var sortcolumn = dat.sortcolumn==undefined?"":;
- // var sortmethod = dat.sortmethod==undefined?"":;
- // 여기는 무조건 단일값 -------------------------------------------
-
- //기존 소스랑 충돌 나지 않도록 기본 방식대로 ds name 을 만들어 내자.
- var componentName = getComponentFullName();
- if(isNull(componentName)) {
- trace("nuCombo componentName is Null");
- return;
- }
- var dsName = "ds_"+componentName+"_"+code;
- var dsMultiCheckbox = getDataSet(dsName);
-
-
- var sourceDs;
- if (bizType == "ZZ") {
- sourceDs = eval( "ds_"+code );
- } else if (bizType == "HC") {
- sourceDs = eval( "ds_HC_"+code );
- } else if (bizType == "AD") {
- sourceDs = eval( "ds_AD_"+code );
- } else if (bizType == "PM") {
- sourceDs = eval( "ds_PM_"+code );
- } else if (bizType == "AL") {
- sourceDs = eval( "ds_AL_"+code );
- } else if (bizType == "MI") {
- sourceDs = eval( "ds_MI_"+code );
- }
- //기존 Dataset 이 존재하면 복사시키자.
- if ( sourceDs != null && sourceDs != undefined ) {
- dsMultiCheckbox.copyData(sourceDs);
- } else {
- //필터 ds 지정
- var filtDs = new FilteredDataset();
- filtDs.name = "filtDs";
- //parent.addChild("filtDs", filtDs);
-
-
-
- //값 복사해올 gds_ds 지정
- if (bizType == "ZZ") {
- filtDs.binddataset = gds_zz_code;
- } else if (bizType == "HC") {
- filtDs.binddataset = gds_hc_code;
- } else if (bizType == "AD") {
- filtDs.binddataset = gds_ad_code;
- } else if (bizType == "PM") {
- filtDs.binddataset = gds_pm_code;
- } else if (bizType == "AL") {
- filtDs.binddataset = gds_al_code;
- }else if (bizType == "MI") {
- filtDs.binddataset = gds_mi_code;
- }
-
-
-
- //값복사 시작
- filtDs.filter("cd_grup_id.toString() == '"+code+"'");
- if (filtDs.rowcount ==0) {
- //여기서는 값이 없으면 submit 을 타지 않는다. 주의
- //trace(dsName + " filtDs.rowcount ==0");
- } else {
- dsMultiCheckbox.copyData(filtDs);
- }
- //parent.removeChild("filtDs");
- }
-
-
- //정렬
- // if( !isNull(sortcolumn) ) {
- // if( !isNull(sortmethod) ) sortmethod = "asc";
-
- // dsMultiCheckbox.keystring = "S:" + (sortmethod == "asc" ? "+" : "-") + sortcolumn;
- // }
-
-
- //check
- dsMultiCheckbox.addColumn("checked", "string");
-
-
-
- this._binddataset = dsName;
- this._bindcol = "checked";
- this._bindheadcol = "cd_nm";
- this._bindType = "row"
- this._col = colnum;
-
- this._falsevalue = "N";
- this._truevalue = "Y";
- this._defaultvalue = selecttype;
-
- this._draw = "true";
-
- reDraw();
-
- //-------------------------------------------------------------
- var objDate2 = new Date();
- var iEndTime = objDate2.getTime();
- //trace("setCode end [start:" +iStartTime+ "] [end:" +iEndTime+ "] [total:" +(iEndTime-iStartTime)+ "ms]----------------------------------------------------------------------");
- //-------------------------------------------------------------
-
- return dsName;
- }
-
- /**
- *
- * Parameter : cdgrupid - 공통코드 그룹ID
- * sortfiled - 정렬구분 (cdid, cdnm, dispseq(default))
- * sortmethod - asc(default), desc
- * supcdgrupid - 하위 코드군 ID
- * supcdid - 하위코드군의 코드ID
- * defaultvalue - 공통코드 기본값(A : 전체, S : 선택), null(default)
- *
- * 한 화면에 하나의 코드군ID의 Dataset이 존재한다.
- */
- function setCodeOld( cdgrupid, sortfield, sortmethod, supcdgrupid, supcdid, defaultvalue) {
-
- //-------------------------------------------------------------
- var objDate1 = new Date();
- var iStartTime = objDate1.getTime();
- //-------------------------------------------------------------
- //trace("[" + cdgrupid + "].setCode start [" +iStartTime+ "]----------------------------------------------------------------------");
-
- ownCode = cdgrupid;
- var iRow = 0;
- var componentName = getComponentFullName();
-
- if(isNull(componentName)) {
- trace("nuCombo componentName is Null");
- return;
- }
-
- var dsName = "ds_"+componentName+"_"+ownCode;
- var dsCombo = getDataSet(dsName);
- var dsSend = getDataSet("ds_send");
- var dsCmd = getDataSet("ds_cmd");
- var inDs = "";
- var outDs = "";
-
- // 공통코드 콤보 데이터셋 초기화
- dsCombo.clear();
- dsCombo.addColumn("cd_id", "string");
- dsCombo.addColumn("cd_nm", "string");
-
- // outDs 초기화
- dsSend.clear();
- dsSend.addColumn("cdgrupid", "string");
- dsSend.addColumn("supcdgrupid", "string");
- dsSend.addColumn("supcdid", "string");
- dsSend.addColumn("sortfield", "string");
- dsSend.addColumn("sortmethod", "string");
-
- iRow = dsSend.addRow();
- dsSend.setColumn(iRow, "cdgrupid", ownCode);
- dsSend.setColumn(iRow, "supcdgrupid", supcdgrupid);
- dsSend.setColumn(iRow, "supcdid", supcdid);
- dsSend.setColumn(iRow, "sortfield", isNull(sortfield)?"dispseq":sortfield);
- dsSend.setColumn(iRow, "sortmethod", isNull(sortmethod)?"asc":sortmethod);
-
- dsCmd.clear();
- dsCmd.addColumn("minimum","string");
- dsCmd.addColumn("join","string");
-
- jRow = dsCmd.addRow();
- dsCmd.setColumn(jRow,"minimum","true");
- dsCmd.setColumn(jRow,"join","false");
-
- // inDs, outDs 설정
- inDs = "cmd=ds_cmd req=ds_send";
- outDs = dsName+"="+ownCode;
-
- if(isNull(supcdgrupid)){
- submit("TRZMC00101",inDs,outDs,false);
- }else{
- submit("TRZMC00102",inDs,outDs,false);
- }
-
- this.innerdataset = dsName;
-
- this.codecolumn = "cd_id";
- this.datacolumn = "cd_nm";
-
-
- if(!isNull(defaultvalue)){
- if(defaultvalue == "A"){
- insertDefaultRow(dsCombo,"전체");
- }else if(defaultvalue == "S"){
- insertDefaultRow(dsCombo,"선택");
- }
- }else{
- insertDefaultRow(dsCombo,"");
- }
-
- this.index = 0;
-
- //-------------------------------------------------------------
- var objDate2 = new Date();
- var iEndTime = objDate2.getTime();
- trace("nuMultiCheckbox [" + cdgrupid + "].setCodeOld end [start:" +iStartTime+ "] [end:" +iEndTime+ "] [total:" +(iEndTime-iStartTime)+ "ms]----------------------------------------------------------------------");
- //-------------------------------------------------------------
- }
-
- /**
- * @desc 값 반환
- * @param sGubun 구분자
- * @return check 된 code value
- */
- public function getCheckVal( sGubun ) {
- if( isNull(oBindDataset) ) return;
-
- if( isNull(sGubun) ) sGubun = "^";
-
- var sRtn = "";
- for( var i=0; i<oBindDataset.rowcount; i++ ) {
- var sChk = oBindDataset.getColumn( i, "checked" );
- var sCdId = oBindDataset.getColumn( i, "cd_id" );
-
- //trace( i + ":" + sChk + ":" + this._truevalue + ":" + sCdId );
-
- if( sChk == this._truevalue ) {
- if( sRtn != "" ) sRtn += sGubun;
-
- sRtn += sCdId;
- }
- }
-
- return sRtn;
- }
-
- /**
- * @desc 값 바인드
- * @param sBindVal 바인드 시킬 코드 값
- * @param sGubun 구분자
- */
- public function setCheckVal( sBindVal, sGubun ) {
- if( isNull(oBindDataset) ) {
- if( !isNull(_binddataset) ){
-
- RUNAFTERLOAD = function() {
- setCheckVal(sBindVal, sGubun);
- //2016.08.22 by 이봉욱 서식에서 같은 데이터셋을 참조할 경우 예외처리
- if( _isMedirec == "true" ){
- for( var i=0; i<oBindDataset.rowcount; i++ ) {
- oBindDataset.setColumn( i, "checked", this._falsevalue );
- }
- }
- };
- }
- return;
- }
- //if( isNull(oBindDataset) ) return;
- if( isNull(sBindVal) ) return;
-
- if( isNull(sGubun) ) sGubun = "^";
- var aBindVal = sBindVal.split( sGubun );
- for( var i=0; i<oBindDataset.rowcount; i++ ) {
- oBindDataset.setColumn( i, "checked", this._falsevalue );
- }
- for( var i=0; i<aBindVal.length; i++ ) {
- var sBindVal = aBindVal[i];
-
- var cdCol = "cd_id";
- if( _isMedirec == "true" )
- cdCol = "valcd";
-
- var iFindRow = oBindDataset.findRow(cdCol, sBindVal);
- //trace( "파인드로우 : " + iFindRow);
- if( iFindRow != -1 ) {
- oBindDataset.setColumn( iFindRow, "checked", this._truevalue );
- }
- }
-
- setBindDataset();
- }
- //innerdataset을 구하기 위해 추가. 2019.02.28 한지현대리 요청
- public function getInnerdataset()
- {
- var oForm = getBaseForm();
- var tmpDs = oForm.objects[_binddataset];
- return tmpDs;
- }
-
- private function getBaseForm(){
- var oForm = this;
- while( isNull((oForm = oForm.parent).url) ){
- if( oForm.toString() == "[object Form]" )
- break;
- }
- return oForm;
- }
- /*******************************************************************************
- * 유틸함수
- ******************************************************************************/
-
- /**
- * @desc 입력값이 null에 해당하는 경우 모두를 한번에 체크한다.
- * @param sValue 체크할 문자열( 예 : null 또는 undefined 또는 "" 또는 "abc" )
- * @return sValue가 undefined, null, NaN, "", Array.length = 0인 경우 = true, 이외의 경우 = false
- */
- private function isNull(sValue)
- {
- if( new String(sValue).valueOf() == "undefined") return true;
- if( sValue == null ) return true;
- if( ("x"+sValue == "xNaN") && ( new String(sValue.length).valueOf() == "undefined" ) ) return true;
- if( sValue.length == 0 ) return true;
-
- return false;
- }
-
- /**
- * @desc 현재 컨트롤의 전체이름을 반환한다.
- * @param
- * @return fullName : 현재 컨트롤의 전체이름
- */
- private function getComponentFullName(){
- var fullName = "";
- var obj = this;
- while(!isNull(obj.parent.name) && (obj.parent.toString().toUpperCase() != "[OBJECT CHILDFRAME]")){
- fullName = obj.name + (isNull(fullName)?"":"_") + fullName;
- obj = obj.parent;
- }
- //trace("[nuMultiCheckbox] This Component Full name : " + fullName);
- return fullName;
- }
-
-
-
- /*******************************************************************************
- * Event 영역
- ******************************************************************************/
-
- /**
- * @desc checkbox를 클릭했을때
- */
- function nuMultiCheckBox_onclick(obj:CheckBox, e:ClickEventInfo)
- {
- return; //김종현 수정 space bar로 처리 시 문제 발생 20130812
- //trace("nuMultiCheckBox_onclick");
-
- if( _defaultvalue == 'A' ) {
- var objCheckBox = aCheckBox[0];
- if( objCheckBox.name == obj.name ) {
-
- if( objCheckBox.value == this._truevalue ) {
- checkedAll();
- } else {
- checkedAll(false);
- }
- } else {
-
- if( obj.truevalue == obj.value ) {
- var isAll = true;
- for(var i=1; i<aCheckBox.length; i++ ) {
- if( aCheckBox[i].truevalue != aCheckBox[i].value ) {
- isAll = false;
- break;
- }
- }
-
- if( isAll )
- objCheckBox.value = objCheckBox.truevalue;
-
- } else {
- objCheckBox.value = objCheckBox.falsevalue;
- }
- }
- }
- getBindDataset();
- }
- //김종현 20130812 추가
- function nuMultiCheckBox_onchanged(obj:CheckBox,e:CheckBoxChangeEventInfo)
- {
- if( _defaultvalue == 'A' ) {
- var objCheckBox = aCheckBox[0];
- if( objCheckBox.name == obj.name ) {
-
- if( objCheckBox.value == this._truevalue ) {
- checkedAll();
- } else {
- checkedAll(false);
- }
- } else {
-
- if( obj.truevalue == obj.value ) {
- var isAll = true;
- for(var i=1; i<aCheckBox.length; i++ ) {
- if( aCheckBox[i].truevalue != aCheckBox[i].value ) {
- isAll = false;
- break;
- }
- }
-
- if( isAll )
- objCheckBox.value = objCheckBox.truevalue;
-
- } else {
- // 2016.05.17 전체가 아닌 그 외 체크박스 하나만 체크를 풀면, 전체가 풀리는 오류 수정
- //objCheckBox.value = objCheckBox.falsevalue;
-
- obj.value = obj.falsevalue;
- objCheckBox.onchanged.removeHandler( nuMultiCheckBox_onchanged );
- objCheckBox.value = objCheckBox.falsevalue;
- objCheckBox.onchanged.addHandler( nuMultiCheckBox_onchanged );
- // 2016.05.17 수정 끝 -------------------------------------------
-
- }
- }
- }
- getBindDataset();
-
- //2016.10.07 by 이봉욱 추가
- //화면에서 지정한 함수 실행
- if(!isNull(_changedFunc)){
- eval(_changedFunc + "(getCheckVal());");
- }
- }
- //김종현 20130812 end
-
- /**
- * @desc dataset의 rowposition 이 변경되었을때
- */
- function bindDataset_onrowposchanged(obj:Dataset, e:DSRowPosChangeEventInfo)
- {
- //trace("bindDataset_onrowposchanged");
-
- setBindDataset();
- }
-
- /*
- * Function Name : fn_getTextSize
- * Description : Text Size 반환
- * Parameter : 사이즈를 계산할 문자열, 폰트네임, 폰트사이즈
- * Return : 계산된 Size
- * Example : fn_getTextSize("XPLATFORM", "Dotum", 9);
- */
- function fn_getTextSize(sString, sFontName, nFontSize)
- {
- var objFont = new Font;
- objFont.size = nFontSize;
- objFont.name = sFontName;
-
- var objPainter = this.canvas.getPainter();
- var objTextSize = objPainter.getTextSize(sString, objFont);
- return objTextSize.cx;
- }
- }
- ]]></Script>
|