MForm.min.js 5.2 KB

1
  1. MWF.xDesktop.requireApp("Template","MDomItem",null,false);var MForm=new Class({Extends:MWF.widget.Common,Implements:[Options,Events],options:{style:"default",isNew:false,isEdited:false,emptyItemContainer:true,showNotEmptyFlag:false,verifyType:"alert",itemTemplateUrl:"",containerHtml:null,itemTemplate:null,hasColon:false},initialize:function(t,e,i,s,a){this.setOptions(i);this.path="/x_component_Template/$MForm/";this.cssPath="/x_component_Template/$MForm/"+this.options.style+"/css.wcss";this._loadCss();if(a){this.css=Object.merge(this.css,a)}this.app=s;this.container=$(t);this.data=e;this.isSourceDataEmpty=false;if(!this.data||this.data==""){this.isSourceDataEmpty=true;this.data=[{}]}this.itemTemplateUrl=this.options.itemTemplateUrl;this.itemTemplate=this.options.itemTemplate;this.items=null;this.labelContainers=null;this.itemContainers=null;this.valSeparator=/,|;|\^\^|\|/g},load:function(){this.fireEvent("queryLoad");this.loadTemplate(function(){for(var t in this.itemTemplate){if(!this.itemTemplate[t]["name"]){this.itemTemplate[t]["name"]=t}this.itemTemplate[t]["key"]=t}var e={};for(var t in this.itemTemplate){if(t!=this.itemTemplate[t]["name"]){e[this.itemTemplate[t]["name"]]=this.itemTemplate[t]}}for(var t in e){this.itemTemplate[t]=e[t]}this.items={};this.itemsByKey={};if(this.options.containerHtml){this.container.set("html",this.options.containerHtml)}this.labelContainers=this.container.getElements("[lable]");this.itemContainers=this.container.getElements("[item]");this.formatStyles();this.options.isEdited||this.options.isNew?this.loadEdit():this.loadRead();this.fireEvent("postLoad")}.bind(this))},formatStyles:function(){this.container.getElements("[styles]").each(function(t){var e=t.get("styles");if(e&&this.css[e]){t.setStyles(this.css[e])}}.bind(this));this.container.getElements("[class]").each(function(t){var e=t.get("class");if(e&&this.css[e]){t.setStyles(this.css[e])}}.bind(this))},loadTemplate:function(e){if(!this.itemTemplate&&this.itemTemplateUrl){MWF.getJSON(this.itemTemplateUrl,function(t){this.itemTemplate=t;if(e)e()}.bind(this))}else{if(e)e()}},loadEdit:function(){if(this.options.isNew){this.formatEdit(this.itemTemplate,true)}else if(!this.isSourceDataEmpty){if(typeOf(this.data)!="array"){this.data=[this.data]}for(var t=0;t<this.data.length;t++){var e=this.data[t];var i=this.itemTemplate;for(var s in e){if(i[s]){i[s].value=e[s]}}this.formatEdit(i,false)}for(var s in this.itemTemplate){this.itemTemplate[s].value=""}}else{this.formatEdit(this.itemTemplate,true)}},loadRead:function(){if(this.options.isNew){this.formatRead(this.itemTemplate)}else if(!this.isSourceDataEmpty){if(typeOf(this.data)!="array"){this.data=[this.data]}for(var t=0;t<this.data.length;t++){var e=this.data[t];var i=this.itemTemplate;for(var s in e){if(i[s]){i[s].value=e[s]}}this.formatRead(i)}for(var s in this.itemTemplate){this.itemTemplate[s].value=""}}},formatRead:function(i){var s=this;this.labelContainers.each(function(t){var e=i[t.get("lable")];if(!e)return;t.set("text",e.text+(s.options.hasColon?":":""))});this.itemContainers.each(function(t){var e=i[t.get("item")];if(!e)return;if(s.options.emptyItemContainer){t.set("html","")}e.isEdited=false;s.loadItem(e,t)})},_getSelectOpt:function(t){var e=t;if(typeOf(e)=="function"){e=e.call()}return typeOf(e)=="array"?e:e.split(this.valSeparator)},formatEdit:function(s,t,e){var a=this;this.labelContainers.each(function(t){var e=s[t.get("lable")];if(!e)return;var i=e.text+(a.options.hasColon?":":"");if(a.options.showNotEmptyFlag&&e.notEmpty){t.set("html","<span style='color:red;'>*</span>"+i)}else{t.set("text",i)}});this.itemContainers.each(function(t){var e=s[t.get("item")];if(!e)return;if(a.options.emptyItemContainer){t.set("html","")}a.loadItem(e,t)})},loadItem:function(t,e){t.objectId=t.name;var i=new MDomItem(e,t,this,this.app,this.css);if(this.options.verifyType=="batchSingle"){i.options.warningType="single"}else{i.options.warningType=this.options.verifyType}i.load();this.items[t.objectId]=i;this.itemsByKey[t.key]=i},enableItem:function(t){if(t&&this.items[t]){var e=this.items[t];if(e.options.disable){e.enable()}}},disableItem:function(t){if(t&&this.items[t]){var e=this.items[t];if(!e.options.disable){e.disable()}}},verify:function(t){var e=true;for(var i in this.items){if(!this.items[i].verify(t)){if(this.options.verifyType=="batch"||this.options.verifyType=="batchSingle"){e=false}else{return false}}}return e},getItemsKeyValue:function(t,e){var i={};for(var s in this.items){var a=this.items[s];var n=e?a.getModifiedValue():a.getValue();if(n!=null){if(typeOf(n)==="array"){i[a.options.objectId]=typeOf(t)=="string"?n.join(t):n}else{i[a.options.objectId]=n}}}return i},getResult:function(t,e,i,s,a){if(!t||this.verify(i)){if(a){var n=this.data[0];var o=this.getItemsKeyValue(e,s);for(var r in o){n[r]=o[r]}return n}else{return this.getItemsKeyValue(e,s)}}else{return false}},getItem:function(t){return this.items[t]||this.itemsByKey[t]},clearWarning:function(t){for(var e in this.items){var i=this.items[e];if(!t){i.clearWarning("empty");i.clearWarning("invalid")}else{i.clearWarning(t)}}},reset:function(){for(var t in this.items){var e=this.items[t];e.reset()}},destroy:function(){Object.each(this.items,function(t){t.destroy()}.bind(this));this.container.empty();MWF.release(this)}});