Table$Td.min.js 12 KB

1
  1. MWF.xApplication.cms.FormDesigner.Module=MWF.xApplication.cms.FormDesigner.Module||{};MWF.xDesktop.requireApp("cms.FormDesigner","Module.$Container",null,false);MWF.xApplication.cms.FormDesigner.Module.Table$Td=MWF.CMSFCTable$Td=new Class({Extends:MWF.CMSFC$Container,Implements:[Options,Events],options:{style:"default",propertyPath:"/x_component_cms_FormDesigner/Module/Table$Td/table$td.html",actions:[{name:"insertRow",icon:"insertRow1.png",event:"click",action:"insertRow",title:MWF.CMSFD.LP.formAction.insertRow},{name:"insertCol",icon:"insertCol1.png",event:"click",action:"insertCol",title:MWF.CMSFD.LP.formAction.insertCol},{name:"deleteRow",icon:"deleteRow1.png",event:"click",action:"deleteRow",title:MWF.CMSFD.LP.formAction.deleteRow},{name:"deleteCol",icon:"deleteCol1.png",event:"click",action:"deleteCol",title:MWF.CMSFD.LP.formAction.deleteCol},{name:"splitCell",icon:"splitCell.png",event:"click",action:"splitCell",title:MWF.CMSFD.LP.formAction.splitCell}]},initialize:function(e,t){this.setOptions(t);this.path="/x_component_cms_FormDesigner/Module/Table$Td/";this.cssPath="/x_component_cms_FormDesigner/Module/Table$Td/"+this.options.style+"/css.wcss";this._loadCss();this.moduleType="container";this.moduleName="table$Td";this.Node=null;this.form=e},over:function(){if(this.form.selectedModules.indexOf(this)==-1){if(!this.form.moveModule)if(this.form.currentSelectedModule!=this)this.node.setStyles({"border-width":"1px","border-color":"#0072ff"})}},unOver:function(){if(this.form.selectedModules.indexOf(this)==-1){if(!this.form.moveModule)if(this.form.currentSelectedModule!=this)this.node.setStyles({"border-width":"1px","border-color":"#999"})}},unSelected:function(){this.node.setStyles({"border-width":"1px","border-color":"#999"});this._hideActions();this.form.currentSelectedModule=null;this.hideProperty()},_showActions:function(){if(this.actionArea){this._setActionAreaPosition();this.actionArea.setStyle("display","block");var e=this.node.get("colspan").toInt()||1;var t=this.node.get("rowspan").toInt()||1;if(e<=1&&t<=1){this.actionArea.getLast("div").setStyle("display","none")}}},unSelectedMulti:function(){if(this.form.selectedModules.indexOf(this)!=-1){this.form.selectedModules.erase(this);this.node.setStyle("border-color","#999")}},load:function(e,t,n){this.json=e;this.node=t;this.node.store("module",this);this.node.setStyles(this.css.moduleNode);if(!this.json.id){var o=this._getNewId(n.json.id);this.json.id=o}t.set({MWFType:"table$Td",id:this.json.id});if(!this.form.json.moduleList[this.json.id]){this.form.json.moduleList[this.json.id]=this.json}this._initModule();this._loadTreeNode(n);this.form.parseModules(this,this.node);this.parentContainer=this.treeNode.parentNode.module;this._setEditStyle_custom("id")},_createMoveNode:function(){return false},_setEditStyle_custom:function(e){if(e=="cellType"){this.setCustomStyles()}},setCustomStyles:function(){var e=this.node.getStyle("border");this.node.clearStyles();this.node.setStyles(this.css.moduleNode);var t={};if(this.json.cellType=="title"){t=this.table.json.titleTdStyles}if(this.json.cellType=="content"){t=this.table.json.contentTdStyles}if(this.json.cellType=="layout"){t=this.table.json.layoutTdStyles}if(this.initialStyles)this.node.setStyles(this.initialStyles);this.node.setStyle("border",e);Object.each(t,function(e,t){var n=/^border\w*/gi;if(!t.test(n)){this.node.setStyle(t,e)}}.bind(this));Object.each(this.json.styles,function(e,t){var n=/^border\w*/gi;if(!t.test(n)){this.node.setStyle(t,e)}}.bind(this))},_dragInLikeElement:function(e){return false},insertRow:function(){var e=this;var t=this.path+"insertRow.html";MWF.require("MWF.widget.Dialog",function(){var n=$(document.body).getSize();var o=n.x/2-150;var s=n.y/2-90;var i=new MWF.DL({title:"Insert Row",style:"property",top:s,left:o-40,fromTop:n.y/2-45,fromLeft:n.x/2,width:300,height:180,url:t,buttonList:[{text:MWF.CMSFD.LP.button.ok,action:function(){e._insertRow();this.close()}},{text:MWF.CMSFD.LP.button.cancel,action:function(){this.close()}}]});i.show()}.bind(this))},_insertRow:function(){var e=$("MWFInsertRowNumber").get("value");var t=document.getElementsByName("MWFInsertRowPosition");var n="before";for(var o=0;o<t.length;o++){if(t[o].checked){n=t[o].value;break}}var s=this.node.getParent("tr");var i=s.getParent("table");var r=s.cells.length;var a=s.rowIndex;var l=i.getElements("td:rowspanBefore("+a+")");var d=s.getElements("td:colspan");d.each(function(e){var t=e.get("colspan").toInt()||1;r=r+t-1});l.each(function(t){this.__rowspanPlus(t,e)}.bind(this));if(n=="after"){var c=s.getElements("td:rowspan");c.each(function(t){this.__rowspanPlus(t,e);var n=t.get("colspan").toInt()||1;r=r-n}.bind(this))}for(var h=1;h<=e;h++){var f=new Element("tr").inject(s,n);for(var u=1;u<=r;u++){var p=new Element("td").inject(f);this.form.getTemplateData("Table$Td",function(e){var t=Object.clone(e);var n=new MWF.CMSFCTable$Td(this.form);n.table=this.table;n.load(t,p,this.parentContainer);this.parentContainer.containers.push(n)}.bind(this))}}this.unSelected();this.selected()},insertCol:function(){var e=this;var t=this.path+"insertCol.html";MWF.require("MWF.widget.Dialog",function(){var n=$(document.body).getSize();var o=n.x/2-150;var s=n.y/2-90;var i=new MWF.DL({title:"Insert Col",style:"property",top:s,left:o-40,fromTop:n.y/2-45,fromLeft:n.x/2,width:300,height:180,url:t,buttonList:[{text:MWF.CMSFD.LP.button.ok,action:function(){e._insertCol();this.close()}},{text:MWF.CMSFD.LP.button.cancel,action:function(){this.close()}}]});i.show()}.bind(this))},_insertCol:function(){var e=$("MWFInsertColNumber").get("value");var t=document.getElementsByName("MWFInsertColPosition");var n="before";for(var o=0;o<t.length;o++){if(t[o].checked){n=t[o].value;break}}var s=this.node.getParent("tr");var i=s.getParent("table");var r=this.__getCellIndex(this.node);for(var a=1;a<=e;a++){var l=this.__getInsertTableColTds(i,r);l.each(function(e){e.td.inject(e.toTd,n);this.form.getTemplateData("Table$Td",function(t){var n=Object.clone(t);var o=new MWF.CMSFCTable$Td(this.form);o.table=this.table;o.load(n,e.td,this.parentContainer);this.parentContainer.containers.push(o)}.bind(this))}.bind(this))}this.unSelected();this.selected()},deleteRow:function(e){var t=this;this.form.designer.confirm("warn",e,MWF.CMSFD.LP.notice.deleteRowTitle,MWF.CMSFD.LP.notice.deleteRow,300,120,function(){t._deleteRow();this.close()},function(){this.close()},null)},__rowspanPlus:function(e,t){var n=e.get("rowspan").toInt()||1;n=n+t.toInt();var o=e.retrieve("module");if(n>1){e.set("rowspan",n);if(o)o.json.properties.rowspan=n}else{e.set("rowspan",1);delete e.rowspan;if(o)delete o.json.properties.rowspan}},__rowspanMinus:function(e){var t=e.get("rowspan").toInt()||1;t=t-1;var n=e.retrieve("module");if(t>1){e.set("rowspan",t);if(n)n.json.properties.rowspan=t}else{e.set("rowspan",1);delete e.rowspan;if(n)delete n.json.properties.rowspan}},__colspanPlus:function(e,t){var n=e.get("colspan").toInt()||1;n=n+t.toInt();var o=e.retrieve("module");if(n>1){e.set("colspan",n);if(o)o.json.properties.colspan=n}else{e.set("colspan",1);delete e.colspan;if(o)delete o.json.properties.colspan}},__colspanMinus:function(e){var t=e.get("colspan").toInt()||1;t=t-1;var n=e.retrieve("module");if(t>1){e.set("colspan",t);if(n)n.json.properties.colspan=t}else{e.set("colspan",1);delete e.colspan;if(n)delete n.json.properties.colspan}},__getNextTd:function(e,t){var n=null;while(t>0){if(!n){n=e.getFirst("td")}else{n=n.getNext("td")}t--;var o=n.get("colspan").toInt()||1;t=t-o-1}return n},__getCellIndex:function(e){var t=e.getParent("tr");var n=t.getParent("table");var o=-1;var s=n.rows;var i={};var r=false;for(var a=0;a<s.length;a++){var l=null;var d=0;while(true){var c=i["rowspan_"+d];if(c){c.rows=c.rows-1;if(!c.rows){delete i["rowspan_"+d]}d++}else{if(!l){l=s[a].getFirst("td")}else{l=l.getNext("td")}if(!l)break;if(l==e){o=d;r=true;break}else{var c=l.get("rowspan").toInt()||1;var h=l.get("colspan").toInt()||1;if(c>1){var f=c-1;for(var u=0;u<h;u++){var p=d+u;i["rowspan_"+p]={rows:f}}}d=d+h-1}d++}}if(r)break}return o},__getInsertTableColTds:function(e,t){var n=[];var o=e.rows;var s={};for(var i=0;i<o.length;i++){var r=null;var a=0;while(true){var l=s["rowspan_"+a];if(l){l.rows=l.rows-1;if(!l.rows){delete s["rowspan_"+a]}a++}else{if(!r){r=o[i].getFirst("td")}else{r=r.getNext("td")}if(!r)break;var l=r.get("rowspan").toInt()||1;var d=r.get("colspan").toInt()||1;if(l>1){var c=l-1;for(var h=0;h<d;h++){var f=a+h;s["rowspan_"+f]={rows:c}}}if(d>1){if(a+d-1>=t&&a<=t){this.__colspanPlus(r,1);break}}else{if(a==t){var u=new Element("td");n.push({td:u,toTd:r});break}}a=a+d-1;a++}}}return n},__getDeleteTableColTds:function(e,t){var n=[];var o=e.rows;var s={};for(var i=0;i<o.length;i++){var r=null;var a=0;while(true){var l=s["rowspan_"+a];if(l){l.rows=l.rows-1;if(!l.rows){delete s["rowspan_"+a]}a++}else{if(!r){r=o[i].getFirst("td")}else{r=r.getNext("td")}if(!r)break;var l=r.get("rowspan").toInt()||1;var d=r.get("colspan").toInt()||1;if(l>1){var c=l-1;for(var h=0;h<d;h++){var f=a+h;s["rowspan_"+f]={rows:c}}}if(d>1){if(a+d-1>=t&&a<=t){this.__colspanMinus(r);break}}else{if(a==t){n.push(r);break}}a=a+d-1;a++}}}return n},_deleteRow:function(){var e=this.node.getParent("tr");var t=e.getParent("table");var n=e.rowIndex;var o=t.getElements("td:rowspanBefore("+n+")");var s=e.getElements("td:rowspan");o.each(function(e){this.__rowspanMinus(e)}.bind(this));s.each(function(e){this.__rowspanMinus(e);var o=t.rows[n+1];if(o){var s=e.cellIndex;var i=null;if(s>0){i=this.__getNextTd(o,s)}else{i=this.__getNextTd(o,2)}if(i)e.inject(i,"after")}}.bind(this));if(t.rows.length<=1){this.parentContainer.destroy()}else{tds=e.getElements("td");tds.each(function(e){var t=e.retrieve("module");if(t){t.parentContainer.containers.erase(t);t.destroy()}});e.destroy()}this.form.selected()},deleteCol:function(e){var t=this;this.form.designer.confirm("warn",e,MWF.CMSFD.LP.notice.deleteColTitle,MWF.CMSFD.LP.notice.deleteCol,300,120,function(){t._deleteCol();this.close()},function(){this.close()},null)},_deleteCol:function(){var e=this.node.getParent("tr");var t=e.getParent("table");var n=this.__getCellIndex(this.node);var o=this.node.get("colspan").toInt()||1;if(e.cells.length<=1&&o<=1){this.parentContainer.destroy()}else{var s=this.__getDeleteTableColTds(t,n);s.each(function(e){var t=e.retrieve("module");if(t){t.parentContainer.containers.erase(t);t.destroy()}})}},__getTdsByIndex:function(e,t,n,o){var s=[];var i=e.rows;var r={};for(var a=0;a<i.length;a++){var l=null;var d=0;var c=false;while(true){var h=r["rowspan_"+d];if(h){h.rows=h.rows-1;if(!h.rows){delete r["rowspan_"+d]}d++}else{if(!l){l=i[a].getFirst("td")}else{l=l.getNext("td")}if(!l){if(a>=t&&a<=t+n)if(!c)s.push(null);break}var h=l.get("rowspan").toInt()||1;var f=l.get("colspan").toInt()||1;var n;if(h>1){n=h-1;for(var u=0;u<f;u++){var p=d+u;r["rowspan_"+p]={rows:n}}}if(d+f-1>=o&&d<=o){if(a>=t&&a<=t+n){s.push(l);c=true}break}d=d+f-1;d++}}}return s},splitCell:function(){var e=this.node.get("colspan").toInt()||1;var t=this.node.get("rowspan").toInt()||1;var n=this.node.getParent("tr");var o=n.getParent("table");var s=n.rowIndex;var i=this.__getCellIndex(this.node);this.node.set("rowspan",1);delete this.node.rowspan;delete this.json.properties.rowspan;this.node.set("colspan",1);delete this.node.colspan;delete this.json.properties.colspan;if(this.form.currentSelectedModule)this.form.currentSelectedModule.unSelected();this.unSelectedMulti();this.selectedMulti();var r=this.__getTdsByIndex(o,s+1,t-1,i-1);for(var a=1;a<=t;a++){if(a==1){for(var l=2;l<=e;l++){var d=new Element("td").inject(this.node,"after");this.form.getTemplateData("Table$Td",function(e){var t=Object.clone(e);var n=new MWF.CMSFCTable$Td(this.form);n.table=this.table;n.load(t,d,this.parentContainer);this.parentContainer.containers.push(n);n.selectedMulti()}.bind(this))}}else{var n=n.getNext("tr");var c=r[a-2];for(var l=1;l<=e;l++){var d=new Element("td");if(c){d.inject(c,"after")}else{d.inject(n,"top")}this.form.getTemplateData("Table$Td",function(e){var t=Object.clone(e);var n=new MWF.CMSFCTable$Td(this.form);n.table=this.table;n.load(t,d,this.parentContainer);this.parentContainer.containers.push(n);n.selectedMulti()}.bind(this))}}}this.form._completeSelectMulti()}});