| 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},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(t){if(!this.itemTemplate&&this.itemTemplateUrl){MWF.getJSON(this.itemTemplateUrl,function(e){this.itemTemplate=e;if(t)t()}.bind(this))}else{if(t)t()}},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(t){var e=this;this.labelContainers.each(function(e){var i=t[e.get("lable")];if(!i)return;e.set("text",i.text)});this.itemContainers.each(function(e){var s=t[e.get("item")];if(!s)return;if(s.style){e.setStyles(s.style)}if(typeOf(s.value)=="function"){var a=s.value()}else if(typeOf(s.value)=="boolean"){var a=s.value.toString()}else{var a=(s.value?s.value:"").toString()}if(s.type=="hidden"){e.hide();e.set("html",a.replace(this.valSeparator,",").replace(/\n/g,"<br/>"))}else if(s.type=="radio"||s.type=="select"||s.type=="checkbox"||s.type=="multiselect"){var n=a.split(this.valSeparator);if(s.selectText&&s.selectValue){var l=this._getSelectOpt(s.selectValue);var r=this._getSelectOpt(s.selectText);var o=[];for(i=0;i<l.length;i++){if(n.contains(l[i])){o.push(r[i])}}e.set("html",o.join(","))}else{e.set("html",a.replace(this.valSeparator,",").replace(/\n/g,"<br/>"))}}else if(s.type=="rtf"){e.set("html",a)}else{e.set("html",a.replace(this.valSeparator,",").replace(/\n/g,"<br/>"))}}.bind(this))},_getSelectOpt:function(t){var e=t;if(typeOf(e)=="function"){e=e.call()}return typeOf(e)=="array"?e:e.split(this.valSeparator)},formatEdit:function(t,e,i){var s=this;this.labelContainers.each(function(e){var i=t[e.get("lable")];if(!i)return;if(s.options.showNotEmptyFlag&&i.notEmpty){e.set("html","<span style='color:red;'>*</span>"+i.text)}else{e.set("text",i.text)}});this.itemContainers.each(function(e){var i=t[e.get("item")];if(!i)return;if(s.options.emptyItemContainer){e.set("html","")}s.loadItem(i,e)})},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},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 l=this.getItemsKeyValue(e,s);for(var r in l){n[r]=l[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)}}}});
|