/** * @fileoverview 프로젝트 validation 공통함수 */ if(!JsNamespace.exist("LGE.Vali")){ /** * @namespace * @name LGE.Vali * @author * @memberof! LGE.Vali */ JsNamespace.declare("LGE.Vali",{ /** * this formFile object 선언 변수 * @private * @type * @memberOf LGE.Vali */ ffobj : this, /** * div 창에서 뿌릴 폰트 크기 (이값으로 창크기 결정) * @private * @type * @example * @memberOf LGE.Vali */ DIV_FONT_SIZE : 10, /** * div 창에서 뿌릴 폰트 높이 (이값으로 창크기 결정) * @private * @type * @example * @memberOf LGE.Vali */ DIV_FONT_HEIGHT : 15, /** * 화면구성 컴포넌트 배열 * @private * @type * @example * @memberOf LGE.Vali */ jo_ArrComp : [], //화면구성 컴포넌트 배열 /** * 대상 컴포넌트 갯수 * @private * @type * @example * @memberOf LGE.Vali */ jv_CompCnt : 0, /** * 화면구성 컴포넌트의 Taborder 배열 * @private * @type * @example * @memberOf LGE.Vali */ jo_ArrTaborder : [], /** * 컴포넌트 Parent 의 jo_ArrComp Idx * @private * @type * @example * @memberOf LGE.Vali */ jv_ArrPIdx : [], /** * 컴포넌트 Parent 의 param * @private * @type * @example * @memberOf LGE.Vali */ jv_ArrParentNm : [], /** * 객체 초기 onload 생성 * @example * @memberOf LGE.Vali */ init : function(obj){ this.ffobj = obj; }, /** * this 폼관련 valdiaion 함수 호출 공통 함수 * @param {object} form, div, tab * @return boolen true:OK * @example * var compObj = LGE.Vali.checkRequiredObject(this); //output: * @memberOf LGE.Vali */ isValidComp : function (oBaseObj) { return this.findValidObject(oBaseObj); }, /** * validaition 메인 호출 공통 함수 * @param {object} 폼 컴퍼넌트 * @return {boolen} true false * @example * @memberOf LGE.Vali */ findValidObject : function (oForm) { //validation 할 컴퍼넌트 가져오는 함수 var oComp = Eco.XComp.query(oForm, "prop[_check] != '' && prop[_msg] != '' && isVisual==true && isEnable==true && typeOf != 'Static'"); for(var p=0;p 0 && Eco.string.getLength(value,sCheckGubun) < iMinLength) { //LGE.Core.comMsg("alert","항목은 @글자이상 입력하셔야 합니다","vali","메세지",[strMsg, iMinLength]); return false; } //최대길이 체크 if(iMaxLength > 0 && Eco.string.getLength(value,sCheckGubun) > iMaxLength) { //LGE.Core.comMsg("alert","@ 항목은 @글자 이하 입력하셔야 합니다.","vali","메세지",[strMsg, iMaxLength]); return false; } //숫자값인지 여부 if(isNumCheck && !Eco.isNumber(value)) { //LGE.Core.comMsg("alert","{0}항목은 숫자형이 아닙니다.","메세지",[strMsg]); return false; } //최소값 체크 if(iMin > 0 && iMin > parseInt(value, 10) || Eco.isEmpty(value)) { //LGE.Core.comMsg("alert","@ 항목은 @글자 이상 입력하셔야 합니다.","vali","메세지",[strMsg, iMin]); return false; } //최대값 체크 if(iMax > 0 && iMax < parseInt(value, 10) || Eco.isEmpty(value)) { //LGE.Core.comMsg("alert","@ 항목은 @글자 이하 입력하셔야 합니다.","vali","메세지",[strMsg, iMax]); return false; } //숫자값일때 '0' if (isZeroCheck && (parseInt(value, 10) == 0) || Eco.isEmpty(value)) { //LGE.Core.comMsg("alert","@ 아닙니다. @ 확인하세요","valiValue_zeroCheck","메세지",[strMsg]); return false; } return true; }, /** * validation _check _msg 필수 프로퍼티 체크 * @param {nxComp} nexacro component * @return {boolen}boolean 유효성검사를 통과하면 true / 실패하면 false * @example * @memberOf LGE.Vali */ isValiProperty : function(nxComp) { if(!nxComp.hasOwnProperty("_check") && nxComp.hasOwnProperty("_msg")) { nxComp.setFocus(); //Eco.Logger.error({message:"unknwon prperty is _check or _msg",stack:true,elapsed:true}); return false; } if(Eco.isEmpty(nxComp._check) || Eco.isEmpty(nxComp._msg)) { //Eco.Logger.error({message:"property is Null : _check or _msg",stack:true,elapsed:true}); nxComp.setFocus(); return false; } return true; }, /** * validation length 문자열의 단위 return * @param {nxComp} nexacro component * @param {str} length type * @return {string} "utf16" - 한문자당 1의 값으로 합산함(default). "utf8" - 한 문자당 영문1, 다국어 2~5의 값으로 합산함. "ascii" - 한문자당 영문 1, 한글 2의 값으로 합산함. * @example * @memberOf LGE.Vali */ getLengthType : function(oComp, str) { var res = ""; if(Eco.string.endsWith(str,"UTF8")) { res = "utf8"; } else if(Eco.string.endsWith(str,"UTF16")) { res = "utf16"; } else if(Eco.string.endsWith(str,"ASCII")) { res = "ascii"; } else { //Eco.Logger.error({message:"UnKnown _check lengthtype...._check'"+oComp._check+"'",elapsed: true,stack:true}); res =""; } return res; }, /** * 그리드의 유효성 검사를 체크한다 * @param {xpComp} 그리드 컴퍼넌트 * @param {obj} isForm : 폼 * @return * @example * @memberOf LGE.Vali */ isValidGridValue : function (component) { // 메세지 결정 var pThis = this.ffobj; var sMessage = ""; var binds, i, len, compPathName, bindDatasetid, columnid, bindDataset, currow; var topForm = this._topform || this; if(Eco.isEmpty(component.binddataset) || Eco.isEmpty(component._check)) { return true; } var ds = Eco.XComp.lookup(this.ffobj,component.binddataset); var sRequired = component._check; var iRowType, aRequired, strCheck; var isNumCheck, iMin, iMax, iMinLength, iMaxLength, isZeroCheck, arr, sColNm; var aReq, sCheckGubun; for(var iRow=0; iRow 0 && Eco.string.getLength(value,sCheckGubun) < iMinLength) { //LGE.Core.comMsg("alert","@ 행의 @ 은(는) 필수 입력 입니다","vali","메세지",[iRow + 1, "(" + text + ")", iMinLength]); LGE.Ui.setGridPosition(component, iRow, iCellIdx, ds); return false; } //최대길이 체크 else if(iMaxLength > 0 && Eco.string.getLength(value,sCheckGubun) > iMaxLength) { //LGE.Core.comMsg("alert","@ 항목은 @글자 이하 입력하셔야 합니다.","vali","메세지",[10,"(" + text + ")", iMaxLength]); LGE.Ui.setGridPosition(component, iRow, iCellIdx, ds); return false; } //숫자값인지 여부 else if (isNumCheck && !Eco.isNumber(value)) { //LGE.Core.comMsg("alert","@ 번째 줄의 @ 숫자형이 아닙니다.","vali","메세지",[(iRow + 1) ,"(" + text + ")"]); LGE.Ui.setGridPosition(component, iRow, iCellIdx, ds); return false; } //최소값 체크 if (iMin > 0 && iMin > parseInt(value, 10)) { //LGE.Core.comMsg("alert","@ 항목은 @글자 이상 입력하셔야 합니다.","vali","메세지",[(iRow + 1) , "(" + text + ")",iMin]); LGE.Ui.setGridPosition(component, iRow, iCellIdx, ds); return false; } //최대값 체크 if(iMax > 0 && iMax < parseInt(value, 10)) { //LGE.Core.comMsg("alert","@ 항목은 @글자 이하 입력하셔야 합니다.","vali","default",[(iRow + 1) , "(" + text + ")",iMax]); LGE.Ui.setGridPosition(component, iRow, iCellIdx, ds); return false; } //숫자값일때 '0' if(isZeroCheck && (parseInt(value, 10) == 0)) { //LGE.Core.comMsg("alert","@ 아닙니다. @ 확인하세요","vali","default", [(iRow + 1), "(" + text + ")"]); LGE.Ui.setGridPosition(component, iRow, iCellIdx, ds); return false; } } } return true; } }); }