MPopupForm.min.js 14 KB

1
  1. var MPopupForm=new Class({Extends:MWF.widget.Common,Implements:[Options,Events],options:{style:"default",width:500,height:450,top:null,left:null,bottom:null,right:null,minWidth:300,minHeight:220,isLimitSize:true,ifFade:true,hasTop:false,hasTopIcon:false,hasTopContent:false,hasIcon:true,hasScroll:true,hasBottom:true,hasMask:true,closeByClickMask:false,title:"",draggable:false,resizeable:false,maxAction:false,closeAction:true,relativeToApp:true,sizeRelateTo:"app",resultSeparator:","},initialize:function(t,e,i,o){debugger;this.setOptions(i);this.explorer=t;if(o){if(this.options.relativeToApp){this.app=o.app||this.explorer.app;this.container=o.container||this.app.content;this.lp=o.lp||this.explorer.lp||this.app.lp;this.css=o.css||this.explorer.css||this.app.css;this.actions=o.actions||this.explorer.actions||this.app.actions||this.app.restActions}else{this.container=o.container;this.lp=o.lp||this.explorer.lp;this.css=o.css||this.explorer.css;this.actions=o.actions||this.explorer.actions}}else{if(this.options.relativeToApp){this.app=this.explorer.app;this.container=this.app.content;this.lp=this.explorer.lp||this.app.lp;this.css=this.explorer.css||this.app.css;this.actions=this.explorer.actions||this.app.actions||this.app.restActions}else{this.container=window.document.body;this.lp=this.explorer.lp;this.css=this.explorer.css;this.actions=this.explorer.actions}}this.data=e||{};this.cssPath="/x_component_Template/$MPopupForm/"+this.options.style+"/css.wcss";this.load()},load:function(){this._loadCss()},_loadCss:function(){var i={};var t=new Request.JSON({url:this.cssPath,secure:false,async:false,method:"get",noCache:false,onSuccess:function(t,e){i=t;MWF.widget.css[o]=t}.bind(this),onError:function(t,e){alert(e+t)}});t.send();var e=true;for(var o in i){if(o){e=false;break}}if(!e){this.css=Object.merge(i,this.css)}},reload:function(t){if(t){this.data=this.form.getResult(false,this.options.resultSeparator,false,false,true)}this.formTopNode=null;if(this.setFormNodeSizeFun&&this.app){this.app.removeEvent("resize",this.setFormNodeSizeFun)}if(this.formMaskNode)this.formMaskNode.destroy();if(this.formAreaNode)this.formAreaNode.destroy();if(this.isNew){this.create()}else if(this.isEdited){this.edit()}else{this.open()}},open:function(t){this.fireEvent("queryOpen");this.isNew=false;this.isEdited=false;this._open();this.fireEvent("postOpen")},create:function(){this.fireEvent("queryCreate");this.isNew=true;this._open();this.fireEvent("postCreate")},edit:function(){this.fireEvent("queryEdit");this.isEdited=true;this._open();this.fireEvent("postEdit")},_open:function(){if(this.options.hasMask){this.formMaskNode=new Element("div.formMaskNode",{styles:this.css.formMaskNode,events:{mouseover:function(t){t.stopPropagation()},mouseout:function(t){t.stopPropagation()},click:function(t){t.stopPropagation()}}}).inject(this.container||this.app.content)}this.formAreaNode=new Element("div.formAreaNode",{styles:this.css.formAreaNode});this.createFormNode();if(this.formMaskNode){this.formAreaNode.inject(this.formMaskNode,"after")}else{this.formAreaNode.inject(this.container||this.app.content)}if(this.options.ifFade){this.formAreaNode.fade("in")}else{this.formAreaNode.setStyle("opacity",1)}this.setFormNodeSize();this.setFormNodeSizeFun=this.setFormNodeSize.bind(this);if(this.app)this.app.addEvent("resize",this.setFormNodeSizeFun);if(this.options.draggable&&this.formTopNode){var t=(this.container||this.app.content).getSize();var e=this.formAreaNode.getSize();this.formAreaNode.makeDraggable({handle:this.formTopNode,limit:{x:[0,t.x-e.x],y:[0,t.y-e.y]},onDrag:function(){this.fireEvent("drag")}.bind(this),onComplete:function(){this.fireEvent("dragCompleted")}.bind(this)})}if(this.options.closeByClickMask&&this.formMaskNode){this.formMaskNode.addEvent("click",function(t){this.close(t)}.bind(this))}if(this.options.resizeable){this.resizeNode=new Element("div.resizeNode",{styles:this.css.resizeNode}).inject(this.formNode);this.formAreaNode.makeResizable({handle:this.resizeNode,limit:{x:[this.options.minWidth,null],y:[this.options.minHeight,null]},onDrag:function(){var t=this.formAreaNode.getComputedSize();this.setNodesSize(t.width,t.height);this.fireEvent("resize")}.bind(this),onComplete:function(){var t=this.formAreaNode.getComputedSize();this.options.width=t.width;this.options.height=t.height;if(this.oldCoordinate){this.oldCoordinate.width=t.width;this.oldCoordinate.height=t.height}this.fireEvent("resizeCompleted")}.bind(this)})}},createFormNode:function(){var t=this;this.formNode=new Element("div.formNode",{styles:this.css.formNode}).inject(this.formAreaNode);if(this.options.hasTop){this.createTopNode()}if(this.options.hasIcon){this.formIconNode=new Element("div.formIconNode",{styles:this.isNew?this.css.formNewNode:this.css.formIconNode}).inject(this.formNode)}this.createContent();if(this.options.hasBottom){this.createBottomNode()}this._setCustom();if(this.options.hasScroll){MWF.require("MWF.widget.ScrollBar",function(){new MWF.widget.ScrollBar(this.formTableContainer,{indent:false,style:"xApp_TaskList",where:"before",distance:30,friction:4,axis:{x:false,y:true},onScroll:function(t){}})}.bind(this))}},_setCustom:function(){},createTopNode:function(){this.fireEvent("queryCreateTop");if(!this.formTopNode){this.formTopNode=new Element("div.formTopNode",{styles:this.css.formTopNode}).inject(this.formNode);if(this.options.hasTopIcon){this.formTopIconNode=new Element("div",{styles:this.css.formTopIconNode}).inject(this.formTopNode)}this.formTopTextNode=new Element("div",{styles:this.css.formTopTextNode,text:this.options.title}).inject(this.formTopNode);if(this.options.closeAction){this.formTopCloseActionNode=new Element("div",{styles:this.css.formTopCloseActionNode,title:"关闭"}).inject(this.formTopNode);this.formTopCloseActionNode.addEvent("click",function(t){this.close();t.stopPropagation()}.bind(this))}if(this.options.maxAction){this.formTopMaxActionNode=new Element("div",{styles:this.css.formTopMaxActionNode,title:"最大化"}).inject(this.formTopNode);this.formTopMaxActionNode.addEvent("click",function(){this.maxSize()}.bind(this));this.formTopRestoreActionNode=new Element("div",{styles:this.css.formTopRestoreActionNode,title:"还原"}).inject(this.formTopNode);this.formTopRestoreActionNode.addEvent("click",function(){this.restoreSize()}.bind(this));this.formTopNode.addEvent("dblclick",function(){this.switchMax()}.bind(this))}if(this.options.hasTopContent){this.formTopContentNode=new Element("div.formTopContentNode",{styles:this.css.formTopContentNode}).inject(this.formTopNode);this._createTopContent()}}this.fireEvent("postCreateTop")},_createTopContent:function(){},createContent:function(){this.formContentNode=new Element("div.formContentNode",{styles:this.css.formContentNode}).inject(this.formNode);this.formTableContainer=new Element("div.formTableContainer",{styles:this.css.formTableContainer}).inject(this.formContentNode);this.formTableArea=new Element("div.formTableArea",{styles:this.css.formTableArea}).inject(this.formTableContainer);this._createTableContent()},_createTableContent:function(){var t="<table width='100%' bordr='0' cellpadding='5' cellspacing='0' styles='formTable'>"+"<tr><td styles='formTableTitle' lable='empName'></td>"+" <td styles='formTableValue' item='empName'></td></tr>"+"<tr><td styles='formTableTitle' lable='departmentName'></td>"+" <td styles='formTableValue' item='departmentName'></td></tr>"+"<tr><td styles='formTableTitle' lable='recordDateString'></td>"+" <td styles='formTableValue' item='recordDateString'></td></tr>"+"<tr><td styles='formTableTitle' lable='status'></td>"+" <td styles='formTableValue' item='status'></td></tr>"+"<tr><td styles='formTableTitle' lable='appealReason'></td>"+" <td styles='formTableValue' item='appealReason'></td></tr>"+"<tr><td styles='formTableTitle' lable='appealDescription'></td>"+" <td styles='formTableValue' item='appealDescription'></td></tr>"+"<tr><td styles='formTableTitle' lable='opinion1'></td>"+" <td styles='formTableValue' item='opinion1'></td></tr>"+"</table>";this.formTableArea.set("html",t);MWF.xDesktop.requireApp("Template","MForm",function(){this.form=new MForm(this.formTableArea,{empName:"xadmin"},{isEdited:this.isEdited||this.isNew,itemTemplate:{empName:{text:"姓名",type:"innertext"},departmentName:{text:"部门",tType:"department",notEmpty:true},recordDateString:{text:"日期",tType:"date"},status:{text:"状态",tType:"number"},appealReason:{text:"下拉框",type:"select",selectValue:["测试1","测试2"]},appealDescription:{text:"描述",type:"textarea"},opinion1:{text:"测试",type:"button",value:"测试"}}},this.app);this.form.load()}.bind(this),true)},createBottomNode:function(){this.fireEvent("queryCreateBottom");this.formBottomNode=new Element("div.formBottomNode",{styles:this.css.formBottomNode}).inject(this.formNode);this._createBottomContent();this.fireEvent("postCreateBottom")},_createBottomContent:function(){this.cancelActionNode=new Element("div.formCancelActionNode",{styles:this.css.formCancelActionNode,text:this.lp.cancel}).inject(this.formBottomNode);this.cancelActionNode.addEvent("click",function(t){this.cancel(t)}.bind(this));if(this.isNew||this.isEdited){this.okActionNode=new Element("div.formOkActionNode",{styles:this.css.formOkActionNode,text:this.lp.ok}).inject(this.formBottomNode);this.okActionNode.addEvent("click",function(t){this.ok(t)}.bind(this))}},cancel:function(t){this.fireEvent("queryCancel");this.close();this.fireEvent("postCancel")},close:function(t){this.fireEvent("queryClose");this._close();if(this.setFormNodeSizeFun&&this.app){this.app.removeEvent("resize",this.setFormNodeSizeFun)}if(this.formMaskNode)this.formMaskNode.destroy();if(this.formAreaNode)this.formAreaNode.destroy();this.fireEvent("postClose");delete this},_close:function(){},ok:function(t){this.fireEvent("queryOk");var e=this.form.getResult(true,this.options.resultSeparator,true,false,true);if(e){this._ok(e,function(t){if(t.type=="error"){if(this.app)this.app.notice(t.message,"error")}else{if(this.formMaskNode)this.formMaskNode.destroy();if(this.formAreaNode)this.formAreaNode.destroy();if(this.explorer&&this.explorer.view)this.explorer.view.reload();if(this.app)this.app.notice(this.isNew?this.lp.createSuccess:this.lp.updateSuccess,"success");this.fireEvent("postOk")}}.bind(this))}},_ok:function(t,e){},switchMax:function(){if(!this.isMax){this.maxSize()}else{this.restoreSize()}},maxSize:function(){if(!this.oldCoordinate)this.oldCoordinate={width:this.options.width,height:this.options.height,top:this.options.top,left:this.options.left,bottom:this.options.bottom,right:this.options.right};this.options.width="100%";this.options.height="100%";this.options.top=null;this.options.left=null;this.options.bottom=null;this.options.right=null;this.setFormNodeSize();this.formTopMaxActionNode.setStyle("display","none");this.formTopRestoreActionNode.setStyle("display","");this.isMax=true;this.fireEvent("max")},restoreSize:function(){if(this.oldCoordinate){this.options.width=this.oldCoordinate.width;this.options.height=this.oldCoordinate.height;this.options.top=this.oldCoordinate.top;this.options.left=this.oldCoordinate.left;this.options.bottom=this.oldCoordinate.bottom;this.options.right=this.oldCoordinate.right}this.setFormNodeSize();this.formTopMaxActionNode.setStyle("display","");this.formTopRestoreActionNode.setStyle("display","none");this.isMax=false;this.fireEvent("restore")},setFormNodeSize:function(t,e,i,o,s,n){this._beforeFormNodeSize();if(!t)t=this.options.width?this.options.width:"50%";if(!e)e=this.options.height?this.options.height:"50%";if(!i&&i!=0)i=this.options.top;if(!o&&o!=0)o=this.options.left;if(!s&&s!=0)s=this.options.bottom;if(!n&&n!=0)n=this.options.right;t=t.toString();e=e.toString();var r=(this.container||this.app.content).getSize();var h=r.x;var a=r.y;if(this.options.isLimitSize){if("%"!=t.substr(t.length-1,1)){if(r.x<parseInt(t))t=r.x}if("%"!=e.substr(e.length-1,1)){if(r.y<parseInt(e))e=r.y}}"string"==typeof t&&(1<t.length&&"%"==t.substr(t.length-1,1))&&(t=parseInt(h*parseInt(t,10)/100,10));"string"==typeof e&&(1<e.length&&"%"==e.substr(e.length-1,1))&&(e=parseInt(a*parseInt(e,10)/100,10));this.options.minWidth>t&&(t=this.options.minWidth);this.options.minHeight>e&&(e=this.options.minHeight);var l={width:""+t+"px",height:""+e+"px"};if(i!=null){l.top=""+i+"px";l.bottom="auto"}else if(s!=null){l.top="auto";l.bottom=""+s+"px"}else{l.top=""+parseInt((a-e)/2,10)+"px";l.bottom="auto"}if(o!=null){l.left=""+o+"px";l.right="auto"}else if(n!=null){l.left="auto";l.right=""+n+"px"}else{l.left=""+parseInt((h-t)/2,10)+"px";l.right="auto"}if(this.formAreaNode)this.formAreaNode.setStyles(l);this._setFormNodeSize(l);this.setNodesSize(t,e)},_beforeFormNodeSize:function(){},_setFormNodeSize:function(t){},setNodesSize:function(t,e){this.options.minWidth>t&&(t=this.options.minWidth);this.options.minHeight>e&&(e=this.options.minHeight);this.formNode.setStyles({width:""+t+"px",height:""+e+"px"});var i=this.formIconNode?this.formIconNode.getSize():{x:0,y:0};var o=this.formTopNode?this.formTopNode.getSize():{x:0,y:0};var s=this.formBottomNode?this.formBottomNode.getSize():{x:0,y:0};var n=e-i.y-o.y-s.y;var r=parseFloat(this.formContentNode.getStyle("margin-top"))||0;var h=parseFloat(this.formContentNode.getStyle("margin-bottom"))||0;var a=n-r-h;this.formContentNode.setStyles({height:""+a+"px"});var l=parseFloat(this.formContentNode.getStyle("padding-top"))||0;var p=parseFloat(this.formContentNode.getStyle("padding-bottom"))||0;r=parseFloat(this.formTableContainer.getStyle("margin-top"))||0;h=parseFloat(this.formTableContainer.getStyle("margin-bottom"))||0;var d=parseFloat(this.formTableContainer.getStyle("padding-top"))||0;var f=parseFloat(this.formTableContainer.getStyle("padding-bottom"))||0;var m=n-r-h-l-p-d-f;this.formTableContainer.setStyles({height:""+m+"px"});this._setNodesSize(t,e,a,m);this.fireEvent("resizeForm")},_setNodesSize:function(t,e,i,o){}});