Table.min.js 7.9 KB

1
  1. MWF.xApplication.cms.FormDesigner.Module=MWF.xApplication.cms.FormDesigner.Module||{};MWF.xDesktop.requireApp("cms.FormDesigner","Module.$Component",null,false);MWF.xDesktop.requireApp("cms.FormDesigner","Module.Table$Td",null,false);MWF.xApplication.cms.FormDesigner.Module.Table=MWF.CMSFCTable=new Class({Extends:MWF.CMSFC$Component,Implements:[Options,Events],options:{style:"default",propertyPath:"/x_component_cms_FormDesigner/Module/Table/table.html",propertyMultiPath:"/x_component_cms_FormDesigner/Module/Table$Td/table$tdMulti.html",multiActions:[{name:"mergerCell",icon:"mergerCell.png",event:"click",action:"mergerCell",title:MWF.CMSFD.LP.formAction.mergerCell}]},initialize:function(e,t){this.setOptions(t);this.path="/x_component_cms_FormDesigner/Module/Table/";this.cssPath="/x_component_cms_FormDesigner/Module/Table/"+this.options.style+"/css.wcss";this._loadCss();this.moduleType="component";this.moduleName="table";this.form=e;this.container=null;this.containerNode=null;this.containers=[];this.elements=[];this.selectedMultiTds=[]},_createMoveNode:function(){var e='<table border="0" cellpadding="0" cellspacing="2" width="100%" align="center">';e+="<tr><td></td><td></td><td></td></tr>";e+="<tr><td></td><td></td><td></td></tr>";e+="<tr><td></td><td></td><td></td></tr>";e+="</table>";this.moveNode=new Element("div",{html:e}).inject(this.form.container);this.moveNode.setStyles(this.css.moduleNodeMove);this._setTableStyle()},_setTableStyle:function(){var e=this.moveNode.getElements("td");e.setStyles({border:"1px dashed #999",height:"20px"})},_checkSelectedTds:function(e,t){this.selectedMultiTds=[];var i=this.node.getElements("td");var o=e.x,s=e.y,n=t.x,r=t.y;while(true){var l=e.x,d=e.y,a=t.x,h=t.y;i.each(function(e){if(e.isInPointInRect(o,s,n,r)){var t=e.getPosition();var i=e.getSize();if(!l||t.x<l)l=t.x;if(!d||t.y<d)d=t.y;if(!a||t.x+i.x>a)a=t.x+i.x;if(!h||t.y+i.y>h)h=t.y+i.y}}.bind(this));if(o==l&&s==d&&n==a&&r==h)break;o=l,s=d,n=a,r=h}i.each(function(e){var t=e.retrieve("module");if(e.isInPointInRect(o,s,n,r)){t.selectedMulti()}else{t.unSelectedMulti()}}.bind(this))},_setOtherNodeEvent:function(){this.dragInfor={};this.tdDragSelect=new Drag(this.node,{onStart:function(e,t){this.form._beginSelectMulti();var i=t.event.target.getPosition();this.dragInfor.start={x:t.event.offsetX+i.x,y:t.event.offsetY+i.y}}.bind(this),onDrag:function(e,t){var i=t.event.target.getPosition();var o={x:t.event.offsetX+i.x,y:t.event.offsetY+i.y};this._checkSelectedTds(this.dragInfor.start,o);t.stop()}.bind(this),onComplete:function(e,t){var i=t.event.target.getPosition();var o={x:t.event.offsetX+i.x,y:t.event.offsetY+i.y};this._checkSelectedTds(this.dragInfor.start,o);this.form._completeSelectMulti();this._createMultiSelectedActions();this.showMultiProperty();t.stop();t.preventDefault()}.bind(this)})},showMultiProperty:function(){this.form.propertyMultiTd=new MWF.xApplication.cms.FormDesigner.PropertyMulti(this.form,this.form.selectedModules,this.form.designer.propertyContentArea,this.form.designer,{path:this.options.propertyMultiPath,onPostLoad:function(){this.show()}});this.form.propertyMultiTd.load()},_createMultiSelectedActions:function(){if(this.form.selectedModules.length>1){if(this.form.multimoduleActionsArea){this.form.multimoduleActionsArea.empty();this.options.multiActions.each(function(e){var t=new Element("div",{styles:this.options.actionNodeStyles,title:e.title}).inject(this.form.multimoduleActionsArea);t.setStyle("background","url("+this.path+this.options.style+"/icon/"+e.icon+") no-repeat left center");t.addEvent(e.event,function(t){this[e.action](t)}.bind(this))}.bind(this));this.form.multimoduleActionsArea.setStyle("width",18*this.options.multiActions.length)}}else{this.form.multimoduleActionsArea.setStyle("display","none")}},mergerCell:function(){if(this.form.selectedModules.length>1){var e=this.form._getFirstMultiSelectedModule();var t=e.module;var i=t.node;var o=0;while(i&&this.form.selectedModules.indexOf(i.retrieve("module"))!=-1){var s=i.get("colspan").toInt()||1;o=o+s;i=i.getNext("td")}var n=Number.NEGATIVE_INFINITY;var r=Number.POSITIVE_INFINITY;this.form.selectedModules.each(function(e,t){var i=e.node.getParent("tr").rowIndex;var o=e.node.get("rowspan").toInt()||1;var s=i+o-1;n=Math.max(n,s);r=Math.min(r,s)}.bind(this));var l=n-r+1;if(o>1){t.node.set("colspan",o);t.json.properties.colspan=o}else{t.node.set("colspan",1);delete t.node.colspan;delete t.json.properties.colspan}if(l>1){t.node.set("rowspan",l);t.json.properties.rowspan=l}else{t.node.set("rowspan",1);delete t.node.rowspan;delete t.json.properties.rowspan}while(this.form.selectedModules.length){var d=this.form.selectedModules[0];this.form.selectedModules.erase(d);if(d!==t){var a=d._getSubModule();a.each(function(e){e._moveTo(t)});this.containers.erase(d);d.destroy()}}t.selected()}},_getContainers:function(){var e=this.node.getElements("td");this.form.getTemplateData("Table$Td",function(t){e.each(function(e){var i=this.form.getDomjson(e);var o=null;if(!i){var s=Object.clone(t);o=new MWF.CMSFCTable$Td(this.form);o.table=this;o.load(s,e,this)}else{o=new MWF.CMSFCTable$Td(this.form);o.table=this;o.load(i,e,this)}this.containers.push(o)}.bind(this))}.bind(this))},_getElements:function(){},_createNode:function(e){var t=this;var i=this.path+"tableCreate.html";MWF.require("MWF.widget.Dialog",function(){var o=$(document.body).getSize();var s=o.x/2-180;var n=o.y/2-130;var r=new MWF.DL({title:"Create Table",style:"property",top:n,left:s-40,fromTop:o.y/2-65,fromLeft:o.x/2,width:360,height:260,url:i,buttonList:[{text:MWF.CMSFD.LP.button.ok,action:function(){t._createTableNode();e();this.close()}}]});r.show()}.bind(this))},_createTableNode:function(){var e=$("MWFNewTableLine").get("value");var t=$("MWFNewTableColumn").get("value");var i=$("MWFNewTableWidth").get("value");var o=$("MWFNewTableWidthUnit");var s=o.options[o.selectedIndex].value;var n=$("MWFNewTableBorder").get("value");var r=$("MWFNewTableCellpadding").get("value");var l=$("MWFNewTableCellspacing").get("value");var d="";if(s=="percent"){d=i+"%"}else{d=i+"px"}this.json.properties.width=d;this.json.properties.border=n;this.json.properties.cellpadding=r;this.json.properties.cellspacing=l;var a='<table border="'+n+'" cellpadding="'+r+'" cellspacing="'+l+'" width="'+d+'" align="center">';for(var h=0;h<e.toInt();h++){a+="<tr>";for(var c=0;c<t.toInt();c++){a+="<td></td>"}a+="</tr>"}a+="</table>";this.node=this.node=new Element("div",{id:this.json.id,MWFType:"table",html:a,styles:this.css.moduleNode,events:{selectstart:function(e){e.preventDefault()}}}).inject(this.form.node)},_dragComplete:function(){if(!this.node){this._createNode(function(){this._dragMoveComplete()}.bind(this))}else{this._dragMoveComplete()}},_dragMoveComplete:function(){this._resetTreeNode();this.node.inject(this.copyNode,"before");this._initModule();var e=this.node.retrieve("thisDisplay");if(e){this.node.setStyle("display",e)}if(this.copyNode)this.copyNode.destroy();if(this.moveNode)this.moveNode.destroy();this.moveNode=null;this.copyNode=null;this.nextModule=null;this.form.moveModule=null;this.form.json.moduleList[this.json.id]=this.json;this.selected()},setPropertiesOrStyles:function(e){if(e=="styles"){var t=this.node.getStyle("border");this.node.clearStyles();this.node.setStyles(this.css.moduleNode);this.node.setStyle("border",t);Object.each(this.json.styles,function(e,t){var i=/^border\w*/gi;if(!t.test(i)){this.node.setStyle(t,e)}}.bind(this))}if(e=="properties"){this.node.getFirst().setProperties(this.json.properties)}},_setEditStyle_custom:function(e,t,i){if(e=="id"){if(e!=i){var o=new RegExp("^"+i,"i");this.containers.each(function(e){var t=e.json.id;var i=t.replace(o,this.json.id);e.json.id=i;delete this.form.json.moduleList[t];this.form.json.moduleList[i]=e.json;e._setEditStyle("id")}.bind(this))}}},copyComponentJsonData:function(e,t){var i=e.getElements("td");i.each(function(e,i){var o=Object.clone(this.containers[i].json);o.id=this.containers[i]._getNewId(t);this.form.json.moduleList[o.id]=o;e.set("id",o.id)}.bind(this))},getContainerNodes:function(){return this.node.getElements("td")}});