Property.min.js 17 KB

1
  1. MWF.require("MWF.widget.Common",null,false);MWF.xApplication.cms.QueryViewDesigner.Property=MWF.FVProperty=new Class({Extends:MWF.widget.Common,Implements:[Options,Events],options:{style:"default",path:"/x_component_cms_FormDesigner/property/property.html"},initialize:function(t,e,i,n){this.setOptions(n);this.module=t;this.view=t.view;this.data=t.json;this.htmlPath=this.options.path;this.designer=i;this.propertyNode=e},load:function(){if(this.fireEvent("queryLoad")){MWF.getRequestText(this.htmlPath,function(t,e){this.htmlString=t;MWF.require("MWF.widget.JsonTemplate",function(){this.fireEvent("postLoad")}.bind(this))}.bind(this))}this.propertyNode.addEvent("keydown",function(t){t.stopPropagation()})},editProperty:function(t){},show:function(){if(!this.propertyContent){if(this.htmlString){this.JsonTemplate=new MWF.widget.JsonTemplate(this.data,this.htmlString);this.propertyContent=new Element("div",{styles:{overflow:"hidden"}}).inject(this.propertyNode);this.propertyContent.set("html",this.JsonTemplate.load());this.setEditNodeEvent();this.setEditNodeStyles(this.propertyContent);this.loadPropertyTab();this.loadPersonInput();this.loadViewFilter();this.loadColumnExportEditor();this.loadJSONArea()}}else{this.propertyContent.setStyle("display","block")}},hide:function(){if(this.propertyContent)this.propertyContent.setStyle("display","none")},loadJSONArea:function(){var t=this.propertyContent.getElement(".MWFJSONArea");if(t){this.propertyTab.pages.each(function(e){if(e.contentNode==t.parentElement){e.setOptions({onShow:function(){t.empty();MWF.require("MWF.widget.JsonParse",function(){this.json=new MWF.widget.JsonParse(this.module.json,t,null);this.json.load()}.bind(this))}.bind(this)})}}.bind(this))}},loadPropertyTab:function(){var t=this.propertyContent.getElements(".MWFTab");if(t.length){var e=this.propertyContent.getFirst();var i=new Element("div",{styles:this.view.css.propertyTabNode}).inject(e,"before");MWF.require("MWF.widget.Tab",function(){var e=new MWF.widget.Tab(i,{style:"formPropertyList"});e.load();var n=[];t.each(function(t){var i=e.addTab(t,t.get("title"),false);n.push(i);this.setScrollBar(i.contentNodeArea,"small",null,null)}.bind(this));n[0].showTab();this.propertyTab=e;this.designer.resizeNode()}.bind(this),false)}},setEditNodeEvent:function(){var t=this;var e=this.propertyContent.getElements("input");e.each(function(e){var i=e.get("name");if(i&&i.substr(0,1)!="_"){if(this.module){var n=this.module.json.id;e.set("name",n+i)}if(i){var o=e.get("type").toLowerCase();switch(o){case"radio":e.addEvent("change",function(e){t.setRadioValue(i,this)});e.addEvent("blur",function(e){t.setRadioValue(i,this)});e.addEvent("keydown",function(t){t.stopPropagation()});t.setRadioValue(i,e);break;case"checkbox":e.addEvent("change",function(e){t.setCheckboxValue(i,this)});e.addEvent("click",function(e){t.setCheckboxValue(i,this)});e.addEvent("keydown",function(t){t.stopPropagation()});break;default:e.addEvent("change",function(e){t.setValue(i,this.value,this)});e.addEvent("blur",function(e){t.setValue(i,this.value,this)});e.addEvent("keydown",function(e){if(e.code==13){t.setValue(i,this.value,this)}e.stopPropagation()});if(e.hasClass("editTableInputDate")){this.loadCalendar(e)}}}}}.bind(this));var i=this.propertyContent.getElements("select");i.each(function(e){var i=e.get("name");if(i){e.addEvent("change",function(e){t.setSelectValue(i,this)})}});var n=this.propertyContent.getElements("textarea");n.each(function(e){var i=e.get("name");if(i){e.addEvent("change",function(e){t.setValue(i,this.value)});e.addEvent("blur",function(e){t.setValue(i,this.value)});e.addEvent("keydown",function(t){t.stopPropagation()})}}.bind(this))},loadCalendar:function(t){MWF.require("MWF.widget.Calendar",function(){this.calendar=new MWF.widget.Calendar(t,{style:"xform",isTime:false,target:this.module.designer.content,format:"%Y-%m-%d",onComplate:function(){}.bind(this)})}.bind(this))},changeStyle:function(t){this.module.setPropertiesOrStyles(t)},changeData:function(t,e,i){this.module._setEditStyle(t,e,i)},changeJsonDate:function(t,e){if(typeOf(t)!="array")t=[t];var i=this.data;var n=t.length-1;t.each(function(t,e){if(!i[t])i[t]={};if(e<n)i=i[t]}.bind(this));i[t[n]]=e},setRadioValue:function(t,e){if(e.checked){var i=t.indexOf("*");var n=i==-1?t.split("."):t.substr(i+1,t.length).split(".");var o=e.value;if(o=="false")o=false;if(o=="true")o=true;var s=this.data;for(var a=0;a<n.length;a++){if(!s[n[a]]){s=null;break}else{s=s[n[a]]}}this.changeJsonDate(n,o);this.changeData(t,e,s)}},setCheckboxValue:function(t,e){var i=$$("input:[name='"+t+"']");var n=[];i.each(function(t){if(t.get("checked")){n.push(t.value)}});var o=this.data[t];this.changeJsonDate(t,n);this.changeData(t,e,o)},setSelectValue:function(t,e){var i=e.selectedIndex;var n=e.getElements("option");var o="";if(n[i]){o=n[i].get("value")}var s=this.data[t];this.changeJsonDate(t,o);this.changeData(t,e,s)},setValue:function(t,e,i){var n=t.split(".");var o=this.data;for(var s=0;s<n.length;s++){if(!o[n[s]]){o=null;break}else{o=o[n[s]]}}this.changeJsonDate(n,e);this.changeData(t,i,o)},setEditNodeStyles:function(t){var e=t.getChildren();if(e.length){e.each(function(t){var e=t.get("class");if(e){if(this.view.css[e])t.setStyles(this.view.css[e])}this.setEditNodeStyles(t)}.bind(this))}},loadPersonInput:function(){var t=this.propertyContent.getElements(".MWFSelectApplication");var e=this.propertyContent.getElements(".MWFSelectCategory");var i=this.propertyContent.getElements(".MWFSelectCompany");var n=this.propertyContent.getElements(".MWFSelectDepartment");var o=this.propertyContent.getElements(".MWFSelectPerson");var s=this.propertyContent.getElements(".MWFSelectIdentity");MWF.xDesktop.requireApp("cms.QueryViewDesigner","widget.PersonSelector",function(){t.each(function(t){new MWF.xApplication.cms.QueryViewDesigner.widget.PersonSelector(t,this.view.designer,{type:"application",names:this.data.data.restrictWhereEntry?this.data.data.restrictWhereEntry.appInfoList:[],onChange:function(e){this.savePersonItem(t,e)}.bind(this)})}.bind(this));e.each(function(t){new MWF.xApplication.cms.QueryViewDesigner.widget.PersonSelector(t,this.view.designer,{type:"category",names:this.data.data.restrictWhereEntry?this.data.data.restrictWhereEntry.catagoryInfoList:[],onChange:function(e){this.savePersonItem(t,e)}.bind(this)})}.bind(this));i.each(function(t){new MWF.xApplication.cms.QueryViewDesigner.widget.PersonSelector(t,this.view.designer,{type:"company",names:this.data.data.restrictWhereEntry?this.data.data.restrictWhereEntry.companyList:[],onChange:function(e){this.savePersonItem(t,e)}.bind(this)})}.bind(this));n.each(function(t){new MWF.xApplication.cms.QueryViewDesigner.widget.PersonSelector(t,this.view.designer,{type:"department",names:this.data.data.restrictWhereEntry?this.data.data.restrictWhereEntry.departmentList:[],onChange:function(e){this.savePersonItem(t,e)}.bind(this)})}.bind(this));o.each(function(t){new MWF.xApplication.cms.QueryViewDesigner.widget.PersonSelector(t,this.view.designer,{type:"person",names:this.data.data.restrictWhereEntry?this.data.data.restrictWhereEntry.personList:[],onChange:function(e){this.savePersonItem(t,e)}.bind(this)})}.bind(this));s.each(function(t){new MWF.xApplication.cms.QueryViewDesigner.widget.PersonSelector(t,this.view.designer,{type:"identity",names:this.data.data.restrictWhereEntry?this.data.data.restrictWhereEntry.identityList:[],onChange:function(e){this.savePersonItem(t,e)}.bind(this)})}.bind(this))}.bind(this))},savePersonItem:function(t,e){var i=[];e.each(function(t){i.push({name:t.data.name,id:t.data.id})}.bind(this));var n=t.get("name");key=n.split(".");var o=this.data;var s=key.length-1;key.each(function(t,e){if(!o[t])o[t]={};if(e<s)o=o[t]}.bind(this));o[key[s]]=i},loadColumnExportEditor:function(){var t=this;var e=this.propertyContent.getElements(".MWFColumnExport");e.each(function(e){var i=e.getElement("select");var n=this.view.data.data.orderEntryList;n.each(function(t){if(t.column==this.data.column){if(t.orderType=="asc")i.options[1].set("selected",true);if(t.orderType=="desc")i.options[1].set("selected",false)}}.bind(this));i.addEvent("change",function(t){var e=i.options[i.selectedIndex].value;if(e!="none"){var o=false;n.each(function(t){if(t.column==this.data.column){o=true;t.orderType=i.options[i.selectedIndex].value}}.bind(this));if(!o)n.push({column:this.data.column,orderType:i.options[i.selectedIndex].value})}else{var s=null;n.each(function(t){if(t.column==this.data.column){s=t}}.bind(this));if(s)n.erase(s)}}.bind(this));var o=e.getElements("input");var s=this.view.data.data.groupEntry;if(s.column==this.data.column)o[0].set("checked",true);o.addEvent("click",function(e){if(this.checked){if(this.value=="true"){t.view.data.data.groupEntry.column=t.data.column;t.view.items.each(function(t){if(t.property){var e=t.property.propertyContent.getElement(".MWFColumnExport").getElements("input");e.each(function(t){if(t.value=="true")t.set("checked",false);if(t.value=="false")t.set("checked",true)})}});this.set("checked",true)}else{if(s.column==t.data.column)t.view.data.data.groupEntry={}}}})}.bind(this))},loadViewFilter:function(){var t=this.propertyContent.getElements(".MWFViewFilter");var e=this.view.data.data.restrictFilterEntryList;t.each(function(t){MWF.xDesktop.requireApp("cms.QueryViewDesigner","widget.ViewFilter",function(){var i=this;new MWF.xApplication.cms.QueryViewDesigner.widget.ViewFilter(t,this.view.designer,e,{onChange:function(t){var e=this.getData();i.changeJsonDate(["data","restrictFilterEntryList"],e)}})}.bind(this))}.bind(this))},loadColumnFilter:function(){var t=this.propertyContent.getElements(".MWFColumnFilter");t.each(function(t){this.module.filterAreaNode=t;var e=new Element("table",{styles:{width:"100%"},border:"0px",cellPadding:"0",cellSpacing:"0"}).inject(t);var i=new Element("tr",{styles:this.module.css.filterTableTitle}).inject(e);var n="<th style='width:24px;border-right:1px solid #CCC;border-bottom:1px solid #999;'></th>"+"<th style='border-right:1px solid #CCC;border-left:1px solid #FFF;border-bottom:1px solid #999;'>逻辑</th>"+"<th style='border-right:1px solid #CCC;border-left:1px solid #FFF;border-bottom:1px solid #999;'>路径</th>"+"<th style='border-right:1px solid #CCC;border-left:1px solid #FFF;border-bottom:1px solid #999;'>比较</th>"+"<th style='border-left:1px solid #FFF;border-bottom:1px solid #999;'>值</th>";i.set("html",n);var o=new Element("div",{styles:this.module.css.filterAddActionNode}).inject(i.getFirst("th"));o.addEvent("click",function(){this.addFilter(e)}.bind(this));if(this.data.filterList){this.data.filterList.each(function(t){new MWF.xApplication.cms.QueryViewDesigner.Property.Filter(t,e,this)}.bind(this))}}.bind(this))},addFilter:function(t){op={logic:"and",comparison:"",value:""};if(!this.data.filterList)this.data.filterList=[];this.data.filterList.push(op);var e=new MWF.xApplication.cms.QueryViewDesigner.Property.Filter(op,t,this);e.editMode()}});MWF.xApplication.cms.QueryViewDesigner.Property.Filter=new Class({Implements:[Events],initialize:function(t,e,i){this.property=i;this.module=i.module;this.table=e;this.data=t;this.load()},load:function(){this.node=new Element("tr",{styles:this.module.css.filterTableTd}).inject(this.table);var t="<td style='widtd:24px;border-right:1px solid #CCC;border-bottom:1px solid #999;'></td>"+"<td style='padding:3px;border-right:1px solid #CCC;border-bottom:1px solid #999; width:60px'>"+this.data.logic+"</td>"+"<td style='padding:3px;border-right:1px solid #CCC;border-bottom:1px solid #999; width:30px'>列值</td>"+"<td style='padding:3px;border-right:1px solid #CCC;border-bottom:1px solid #999;'>"+this.data.comparison+"</td>"+"<td style='padding:3px;border-bottom:1px solid #999;'>"+this.data.value+"</td>";this.node.set("html",t);var e=this.node.getElements("td");this.delActionNode=new Element("div",{styles:this.module.css.filterDelActionNode}).inject(e[0]);this.delActionNode.addEvent("click",function(t){this.delFilter(t);t.stopPropagation()}.bind(this));this.logicNode=e[1];this.comparisonNode=e[3];this.valueNode=e[4];this.node.addEvent("click",function(){if(!this.isEditMode)this.editMode()}.bind(this));this.node.addEvent("blur",function(){if(this.isEditMode)this.readMode()}.bind(this))},delFilter:function(t){var e=this;this.property.designer.confirm("warn",t,MWF.CMSQVD.LP.notice.deleteFilterTitle,MWF.CMSQVD.LP.notice.deleteFilter,300,120,function(){e.node.destroy();e.property.data.filterList.erase(e.data);MWF.release(e);this.close()},function(){this.close()},null)},editMode:function(){if(this.property.editModeFilter){if(this.property.editModeFilter!=this)this.property.editModeFilter.readMode()}var t=this.logicNode.getSize().x-9;this.logicNode.empty();var e=new Element("select",{styles:{width:"90%"}}).inject(this.logicNode);var i="";if(this.data.logic=="and"){i='<option value="and" selected>and</option><option value="or">or</option>'}else{i='<option value="and">and</option><option value="or" selected>or</option>'}e.set("html",i);e.addEvent("change",function(){this.data.logic=e.options[e.selectedIndex].value}.bind(this));t=this.comparisonNode.getSize().x-9;this.comparisonNode.empty();var n=new Element("select",{styles:{width:"90%"}}).inject(this.comparisonNode);i="";switch(this.property.data.type){case"text":i+="<option value=''></option><option value='==' "+(this.data.comparison=="=="?"selected":"")+">等于(==)</option>"+"<option value='!=' "+(this.data.comparison=="!="?"selected":"")+">不等于(!=)</option>"+"<option value='@' "+(this.data.comparison=="@"?"selected":"")+">包含(@)</option>";break;case"date":i+="<option value=''></option><option value='&gt;' "+(this.data.comparison==">"?"selected":"")+">大于(&gt;)</option>"+"<option value='&lt;' "+(this.data.comparison=="<"?"selected":"")+">小于(&lt;)</option>"+"<option value='&gt;=' "+(this.data.comparison==">="?"selected":"")+">大于等于(&gt;=)</option>"+"<option value='&lt;=' "+(this.data.comparison=="<="?"selected":"")+">小于等于(&lt;=)</option>";break;case"number":i+="<option value=''></option><option value='==' "+(this.data.comparison=="=="?"selected":"")+">等于(==)</option>"+"<option value='!=' "+(this.data.comparison=="!="?"selected":"")+">不等于(!=)</option>"+"<option value='&gt;' "+(this.data.comparison==">"?"selected":"")+">大于(&gt;)</option>"+"<option value='&lt;' "+(this.data.comparison=="<"?"selected":"")+">小于(&lt;)</option>"+"<option value='&gt;=' "+(this.data.comparison==">="?"selected":"")+">大于等于(&gt;=)</option>"+"<option value='&lt;=' "+(this.data.comparison=="<="?"selected":"")+">小于等于(&lt;=)</option>";break;case"boolean":i+="<option value=''></option><option value='==' "+(this.data.comparison=="=="?"selected":"")+">等于(==)</option>"+"<option value='!=' "+(this.data.comparison=="!="?"selected":"")+">不等于(!=)</option>";break}n.set("html",i);n.addEvent("change",function(){this.data.comparison=n.options[n.selectedIndex].value}.bind(this));t=this.valueNode.getSize().x-9;this.valueNode.empty();var o="text";switch(this.property.data.type){case"date":var s=new Element("input",{styles:{width:"90%"},type:"text",value:this.data.value}).inject(this.valueNode);MWF.require("MWF.widget.Calendar",function(){this.calendar=new MWF.widget.Calendar(s,{style:"xform",isTime:true,target:this.property.designer.content,format:"%Y-%m-%d %H:%M:%S"})}.bind(this));break;case"number":var s=new Element("input",{styles:{width:"90%"},type:"number",value:this.data.value}).inject(this.valueNode);break;case"boolean":var s=new Element("select",{styles:{width:""+t+"px"},html:'<option value=""></option><option value="true" '+(this.data.value?"selected":"")+'>true</option><option value="false" '+(!this.data.value?"selected":"")+">false</option>"}).inject(this.valueNode);break;default:var s=new Element("input",{styles:{width:"90%"},type:"text",value:this.data.value}).inject(this.valueNode)}if(s.tagName.toLowerCase()=="select"){s.addEvent("change",function(){var t=s.options[s.selectedIndex].value;this.data.value=(t="true")?true:false}.bind(this))}else{s.addEvent("change",function(t){this.data.value=s.get("value")}.bind(this));s.addEvent("blur",function(t){this.data.value=s.get("value")}.bind(this));s.addEvent("keydown",function(t){if(t.code==13){this.data.value=s.get("value");this.readMode()}t.stopPropagation()}.bind(this))}this.isEditMode=true;this.property.editModeFilter=this},readMode:function(){if(this.isEditMode){var t=this.logicNode.getElement("select");this.data.logic=t.options[t.selectedIndex].value;var e=this.comparisonNode.getElement("select");this.data.comparison=e.options[e.selectedIndex].value;var i=this.valueNode.getFirst();if(i.tagName.toLowerCase()=="select"){var n=i.options[i.selectedIndex].value;this.data.value=(n="true")?true:false}else{this.data.value=i.get("value")}this.logicNode.empty();this.comparisonNode.empty();this.valueNode.empty();this.logicNode.set("text",this.data.logic);this.comparisonNode.set("text",this.data.comparison);this.valueNode.set("text",this.data.value);this.isEditMode=false;this.property.editModeFilter=null}}});