$Input.min.js 6.8 KB

1
  1. MWF.xDesktop.requireApp("process.Xform","$Module",null,false);MWF.xApplication.process.Xform.$Input=MWF.APP$Input=new Class({Implements:[Events],Extends:MWF.APP$Module,iconStyle:"personfieldIcon",initialize:function(t,e,i,s){this.node=$(t);this.node.store("module",this);this.json=e;this.form=i;this.field=true},_loadUserInterface:function(){this._loadNode();if(this.json.compute==="show"){this._setValue(this._computeValue())}else{this._loadValue()}},_loadEvents:function(){Object.each(this.json.events,function(e,t){if(e.code){if(this.options.moduleEvents.indexOf(t)!==-1){this.addEvent(t,function(t){return this.form.Macro.fire(e.code,this,t)}.bind(this))}else{(this.node.getFirst()||this.node).addEvent(t,function(t){return this.form.Macro.fire(e.code,this,t)}.bind(this))}}}.bind(this))},_loadNode:function(){if(this.readonly){this._loadNodeRead()}else{this._loadNodeEdit()}},_loadNodeRead:function(){this.node.empty()},loadDescription:function(){var t=this._getBusinessData();if(!t){if(this.json.description){var e=this.node.getFirst().getSize();var i=e.x-3;if(COMMON.Browser.safari)i=i-20;this.descriptionNode=new Element("div",{styles:this.form.css.descriptionNode,text:this.json.description}).inject(this.node);this.descriptionNode.setStyles({width:""+i+"px",height:""+e.y+"px","line-height":""+e.y+"px"});this.setDescriptionEvent()}}},setDescriptionEvent:function(){if(this.descriptionNode){this.descriptionNode.addEvents({mousedown:function(){this.descriptionNode.setStyle("display","none");this.clickSelect()}.bind(this)});this.node.getFirst().addEvents({focus:function(){if(this.descriptionNode)this.descriptionNode.setStyle("display","none")}.bind(this),blur:function(){if(!this.node.getFirst().get("value"))if(this.descriptionNode)this.descriptionNode.setStyle("display","block")}.bind(this)})}},checkDescription:function(){if(!this.node.getFirst().get("value")){if(this.descriptionNode)this.descriptionNode.setStyle("display","block")}else{if(this.descriptionNode)this.descriptionNode.setStyle("display","none")}},_loadNodeEdit:function(){var t=new Element("input",{styles:{background:"transparent",width:"100%",border:"0px"},readonly:true});t.set(this.json.properties);var e=new Element("div",{styles:{overflow:"hidden",position:"relative","margin-right":"20px"}}).inject(this.node,"after");t.inject(e);this.node.destroy();this.node=e;this.node.set({id:this.json.id,MWFType:this.json.type,readonly:true,events:{click:this.clickSelect.bind(this)}});if(this.json.showIcon!="no")this.iconNode=new Element("div",{styles:this.form.css[this.iconStyle],events:{click:this.clickSelect.bind(this)}}).inject(this.node,"before");this.node.getFirst().addEvent("change",function(){this.validationMode();if(this.validation())this._setBusinessData(this.getInputData("change"))}.bind(this))},_loadStyles:function(){if(this.json.styles)this.node.setStyles(this.json.styles);if(this.json.inputStyles)if(this.node.getFirst())this.node.getFirst().setStyles(this.json.inputStyles);if(this.iconNode){var t=this.node.getSize();this.iconNode.setStyle("height",""+t.y+"px")}},_computeValue:function(t){return this.json.defaultValue.code?this.form.Macro.exec(this.json.defaultValue.code,this):t||""},getValue:function(){var t=this._getBusinessData();if(!t)t=this._computeValue();return t||""},_setValue:function(t){this._setBusinessData(t);if(this.node.getFirst())this.node.getFirst().set("value",t||"");if(this.readonly)this.node.set("text",t)},_loadValue:function(){this._setValue(this.getValue())},clickSelect:function(){},_afterLoaded:function(){if(!this.readonly){this.loadDescription()}},getTextData:function(){var t=this.node.getFirst()?this.node.getFirst().get("value"):this.node.get("text");var e=this.node.getFirst()?this.node.getFirst().get("text"):this.node.get("text");return{value:[t]||"",text:[e||t||""]}},getData:function(t){if(this.json.compute=="save")this._setValue(this._computeValue());return this.getInputData()},getInputData:function(){return this.node.getFirst().get("value")},resetData:function(){this.setData(this.getValue())},setData:function(t){this._setBusinessData(t);if(this.node.getFirst()){this.node.getFirst().set("value",t);this.checkDescription();this.validationMode()}else{this.node.set("text",t)}},createErrorNode:function(t){var e=new Element("div");var i=new Element("div",{styles:{width:"20px",height:"20px",float:"left",background:"url("+"/x_component_process_Xform/$Form/default/icon/error.png) center center no-repeat"}}).inject(e);var s=new Element("div",{styles:{height:"20px","line-height":"20px","margin-left":"20px",color:"red"},text:t}).inject(e);return e},notValidationMode:function(t){if(!this.isNotValidationMode){this.isNotValidationMode=true;this.node.store("borderStyle",this.node.getStyles("border-left","border-right","border-top","border-bottom"));this.node.setStyle("border-color","red");this.errNode=this.createErrorNode(t);this.errNode.inject(this.node,"after");this.showNotValidationMode(this.node);this.node.scrollIntoView()}},showNotValidationMode:function(t){var e=t.getParent("div");if(e){var i=e.get("MWFtype")||e.get("mwftype");if(i=="tab$Content"){if(e.getParent("div").getStyle("display")=="none"){var s=e.getParent("div").getParent("div");var n=s.getPrevious("div");var o=s.getChildren().indexOf(e.getParent("div"));var r=n.getChildren()[o];r.click();e=n.getParent("div")}}this.showNotValidationMode(e)}},validationMode:function(){if(this.isNotValidationMode){this.isNotValidationMode=false;this.node.setStyles(this.node.retrieve("borderStyle"));if(this.errNode){this.errNode.destroy();this.errNode=null}}},validationConfigItem:function(t,e){var i=e.status==="all"?true:t===e.decision;if(i){var s=this.getInputData();var n=e.valueType==="value"?s:s.length;switch(e.operateor){case"isnull":if(!n){this.notValidationMode(e.prompt);return false}break;case"notnull":if(n){this.notValidationMode(e.prompt);return false}break;case"gt":if(n>e.value){this.notValidationMode(e.prompt);return false}break;case"lt":if(n<e.value){this.notValidationMode(e.prompt);return false}break;case"equal":if(n==e.value){this.notValidationMode(e.prompt);return false}break;case"neq":if(n!=e.value){this.notValidationMode(e.prompt);return false}break;case"contain":if(n.indexOf(e.value)!=-1){this.notValidationMode(e.prompt);return false}break;case"notcontain":if(n.indexOf(e.value)==-1){this.notValidationMode(e.prompt);return false}break}}return true},validationConfig:function(t,e){if(this.json.validationConfig){if(this.json.validationConfig.length){for(var i=0;i<this.json.validationConfig.length;i++){var s=this.json.validationConfig[i];if(!this.validationConfigItem(t,s))return false}}return true}return true},validation:function(t,e){if(!this.validationConfig(t,e))return false;if(!this.json.validation)return true;if(!this.json.validation.code)return true;var i=this.form.Macro.exec(this.json.validation.code,this);if(!i)i=MWF.xApplication.process.Xform.LP.notValidation;if(i.toString()!="true"){this.notValidationMode(i);return false}return true}});