| 1 |
- MWF.xApplication.query.ViewDesigner=MWF.xApplication.query.ViewDesigner||{};MWF.APPDVD=MWF.xApplication.query.ViewDesigner;MWF.APPDVD.options={multitask:true,executable:false};MWF.xDesktop.requireApp("query.ViewDesigner","View",null,false);MWF.xApplication.query.ViewDesigner.Main=new Class({Extends:MWF.xApplication.Common.Main,Implements:[Options,Events],options:{style:"default",name:"query.ViewDesigner",icon:"icon.png",title:MWF.APPDVD.LP.title,appTitle:MWF.APPDVD.LP.title,id:"",tooltip:{unCategory:MWF.APPDVD.LP.unCategory},actions:null,category:null,processData:null},onQueryLoad:function(){debugger;this.shortcut=true;if(this.status){this.options.application=this.status.applicationId;this.application=this.status.application;this.options.id=this.status.id}if(!this.options.id){this.options.desktopReload=false;this.options.title=this.options.title+"-"+MWF.APPDVD.LP.newView}if(!this.actions)this.actions=MWF.Actions.get("x_query_assemble_designer");this.lp=MWF.xApplication.query.ViewDesigner.LP;this.addEvent("queryClose",function(e){if(this.explorer){this.explorer.reload()}}.bind(this));this.addEvent("postLoadWindowMax",function(e){this.loadWindowOk=true;if(this.loadApplicationOk&&this.loadWindowOk){this.view.setViewWidth()}}.bind(this));this.addEvent("postLoadApplication",function(e){this.loadApplicationOk=true;if(this.loadApplicationOk&&this.loadWindowOk){this.view.setViewWidth()}}.bind(this))},loadApplication:function(callback){this.createNode();if(!this.options.isRefresh){this.maxSize(function(){this.openView(function(){if(callback)callback()})}.bind(this))}else{this.openView(function(){if(callback)callback()})}if(!this.options.readMode)this.addKeyboardEvents()},addKeyboardEvents:function(){this.addEvent("copy",function(){this.copyModule()}.bind(this));this.addEvent("paste",function(){this.pasteModule()}.bind(this));this.addEvent("cut",function(){this.cutModule()}.bind(this));this.addEvent("keySave",function(e){this.keySave(e)}.bind(this));this.addEvent("keyDelete",function(e){this.keyDelete(e)}.bind(this))},keySave:function(e){if(this.shortcut){this.view.save();e.preventDefault()}},keyDelete:function(){if(this.shortcut){if(this.view.currentSelectedModule){var item=this.view.currentSelectedModule;item["delete"]()}}},copyModule:function(){if(this.shortcut){if(this.view.currentSelectedModule){var item=this.view.currentSelectedModule;MWF.clipboard.data={type:"view",data:item.json}}}},cutModule:function(){if(this.shortcut){if(this.view.currentSelectedModule){this.copyModule();var item=this.view.currentSelectedModule;item.destroy()}}},pasteModule:function(){if(this.shortcut){if(MWF.clipboard.data){if(MWF.clipboard.data.type=="view"){if(this.view.currentSelectedModule){var item=this.view.currentSelectedModule;var data=MWF.clipboard.data.data;item.addColumn(null,data)}}}}},createNode:function(){this.content.setStyle("overflow","hidden");this.node=new Element("div",{styles:{width:"100%",height:"100%",overflow:"hidden"}}).inject(this.content)},getApplication:function(callback){debugger;if(!this.application){this.actions.getApplication(this.options.application,function(json){this.application={name:json.data.name,id:json.data.id};if(callback)callback()}.bind(this))}else{if(callback)callback()}},openView:function(callback){this.getApplication(function(){this.initOptions();this.loadNodes();this.loadViewListNodes();this.loadContentNode();this.loadProperty();this.resizeNode();this.addEvent("resize",this.resizeNode.bind(this));this.loadView(function(){if(callback)callback()});this.setScrollBar(this.propertyDomArea,null,{V:{x:0,y:0},H:{x:0,y:0}})}.bind(this))},initOptions:function(){},loadNodes:function(){this.viewListNode=new Element("div",{styles:this.css.viewListNode}).inject(this.node);this.propertyNode=new Element("div",{styles:this.css.propertyNode}).inject(this.node);this.contentNode=new Element("div",{styles:this.css.contentNode}).inject(this.node)},loadViewListNodes:function(){this.viewListTitleNode=new Element("div",{styles:this.css.viewListTitleNode,text:MWF.APPDVD.LP.view}).inject(this.viewListNode);this.viewListResizeNode=new Element("div",{styles:this.css.viewListResizeNode}).inject(this.viewListNode);this.viewListAreaSccrollNode=new Element("div",{styles:this.css.viewListAreaSccrollNode}).inject(this.viewListNode);this.viewListAreaNode=new Element("div",{styles:this.css.viewListAreaNode}).inject(this.viewListAreaSccrollNode);this.loadViewListResize();this.loadViewList()},loadViewListResize:function(){this.viewListResize=new Drag(this.viewListResizeNode,{snap:1,onStart:function(el,e){var x=Browser.name=="firefox"?e.event.clientX:e.event.x;var y=Browser.name=="firefox"?e.event.clientY:e.event.y;el.store("position",{x:x,y:y});var size=this.viewListAreaSccrollNode.getSize();el.store("initialWidth",size.x)}.bind(this),onDrag:function(el,e){var x=Browser.name=="firefox"?e.event.clientX:e.event.x;var bodySize=this.content.getSize();var position=el.retrieve("position");var initialWidth=el.retrieve("initialWidth").toFloat();var dx=x.toFloat()-position.x.toFloat();var width=initialWidth+dx;if(width>bodySize.x/2)width=bodySize.x/2;if(width<40)width=40;this.contentNode.setStyle("margin-left",width+1);this.viewListNode.setStyle("width",width);this.view.setViewWidth()}.bind(this)});this.viewListResizeNode.addEvents({touchstart:function(e){el=e.target;var x=Browser.name=="firefox"?e.page.clientX:e.page.x;var y=Browser.name=="firefox"?e.page.clientY:e.page.y;el.store("position",{x:x,y:y});var size=this.viewListAreaSccrollNode.getSize();el.store("initialWidth",size.x)}.bind(this),touchmove:function(e){el=e.target;var x=Browser.name=="firefox"?e.page.clientX:e.page.x;var bodySize=this.content.getSize();var position=el.retrieve("position");var initialWidth=el.retrieve("initialWidth").toFloat();var dx=x.toFloat()-position.x.toFloat();var width=initialWidth+dx;if(width>bodySize.x/2)width=bodySize.x/2;if(width<40)width=40;this.contentNode.setStyle("margin-left",width+1);this.viewListNode.setStyle("width",width);this.view.setViewWidth()}.bind(this)})},loadViewList:function(){this.actions.listView(this.application.id,function(json){json.data.each(function(view){this.createListViewItem(view)}.bind(this))}.bind(this),null,false)},createListViewItem:function(view,isNew){var _self=this;var listViewItem=new Element("div",{styles:this.css.listViewItem}).inject(this.viewListAreaNode,isNew?"top":"bottom");var listViewItemIcon=new Element("div",{styles:this.css.listViewItemIcon}).inject(listViewItem);var listViewItemText=new Element("div",{styles:this.css.listViewItemText,text:view.name?view.name+" ("+view.alias+")":this.lp.newView}).inject(listViewItem);listViewItem.store("view",view);listViewItem.addEvents({dblclick:function(e){_self.loadViewByData(this,e)},mouseover:function(){if(_self.currentListViewItem!=this)this.setStyles(_self.css.listViewItem_over)},mouseout:function(){if(_self.currentListViewItem!=this)this.setStyles(_self.css.listViewItem)}})},loadViewByData:function(node,e){var view=node.retrieve("view");var openNew=true;if(openNew){var _self=this;var options={onQueryLoad:function(){this.actions=_self.actions;this.category=_self;this.options.id=view.id;this.application=_self.application;this.explorer=_self.explorer}};this.desktop.openApplication(e,"query.ViewDesigner",options)}},loadContentNode:function(){this.contentToolbarNode=new Element("div#contentToolbarNode",{styles:this.css.contentToolbarNode}).inject(this.contentNode);if(!this.options.readMode)this.loadContentToolbar();this.editContentNode=new Element("div",{styles:this.css.editContentNode}).inject(this.contentNode);this.loadEditContent(function(){if(this.designNode)this.designNode.setStyles(this.css.designNode)}.bind(this))},loadContentToolbar:function(callback){this.getFormToolbarHTML(function(toolbarNode){var spans=toolbarNode.getElements("span");spans.each(function(item,idx){var img=item.get("MWFButtonImage");if(img){item.set("MWFButtonImage",this.path+""+this.options.style+"/toolbar/"+img)}}.bind(this));$(toolbarNode).inject(this.contentToolbarNode);MWF.require("MWF.widget.Toolbar",function(){this.toolbar=new MWF.widget.Toolbar(toolbarNode,{style:"ProcessCategory"},this);this.toolbar.load();if(callback)callback()}.bind(this))}.bind(this))},getFormToolbarHTML:function(callback){var toolbarUrl=this.path+this.options.style+"/toolbars.html";var r=new Request.HTML({url:toolbarUrl,method:"get",onSuccess:function(responseTree,responseElements,responseHTML,responseJavaScript){var toolbarNode=responseTree[0];if(callback)callback(toolbarNode)}.bind(this),onFailure:function(xhr){this.notice("request processToolbars error: "+xhr.responseText,"error")}.bind(this)});r.send()},maxOrReturnEditor:function(){if(!this.isMax){this.designNode.inject(this.node);this.designNode.setStyles({position:"absolute",width:"100%",height:"100%",top:"0px",margin:"0px",left:"0px"});this.view.setAreaNodeSize();this.isMax=true}else{this.isMax=false;this.designNode.inject(this.editContentNode);this.designNode.setStyles(this.css.designNode);this.designNode.setStyles({position:"static"});this.resizeNode();this.view.setAreaNodeSize()}},loadEditContent:function(callback){this.designNode=new Element("div",{styles:this.css.designNode}).inject(this.editContentNode)},loadProperty:function(){this.propertyTitleNode=new Element("div",{styles:this.css.propertyTitleNode,text:MWF.APPDVD.LP.property}).inject(this.propertyNode);this.propertyResizeBar=new Element("div",{styles:this.css.propertyResizeBar}).inject(this.propertyNode);this.loadPropertyResize();this.propertyContentNode=new Element("div",{styles:this.css.propertyContentNode}).inject(this.propertyNode);this.propertyDomArea=new Element("div",{styles:this.css.propertyDomArea}).inject(this.propertyContentNode);this.propertyDomPercent=.3;this.propertyContentResizeNode=new Element("div",{styles:this.css.propertyContentResizeNode}).inject(this.propertyContentNode);this.propertyContentArea=new Element("div",{styles:this.css.propertyContentArea}).inject(this.propertyContentNode);this.loadPropertyContentResize();this.propertyNode.addEvent("keydown",function(e){e.stopPropagation()})},loadPropertyResize:function(){this.propertyResize=new Drag(this.propertyResizeBar,{snap:1,onStart:function(el,e){var x=Browser.name=="firefox"?e.event.clientX:e.event.x;var y=Browser.name=="firefox"?e.event.clientY:e.event.y;el.store("position",{x:x,y:y});var size=this.propertyNode.getSize();el.store("initialWidth",size.x)}.bind(this),onDrag:function(el,e){var x=Browser.name=="firefox"?e.event.clientX:e.event.x;var bodySize=this.content.getSize();var position=el.retrieve("position");var initialWidth=el.retrieve("initialWidth").toFloat();var dx=position.x.toFloat()-x.toFloat();var width=initialWidth+dx;if(width>bodySize.x/2)width=bodySize.x/2;if(width<40)width=40;this.contentNode.setStyle("margin-right",width+1);this.propertyNode.setStyle("width",width);this.view.setViewWidth()}.bind(this)})},loadPropertyContentResize:function(){this.propertyContentResize=new Drag(this.propertyContentResizeNode,{snap:1,onStart:function(el,e){var x=Browser.name=="firefox"?e.event.clientX:e.event.x;var y=Browser.name=="firefox"?e.event.clientY:e.event.y;el.store("position",{x:x,y:y});var size=this.propertyDomArea.getSize();el.store("initialHeight",size.y)}.bind(this),onDrag:function(el,e){var size=this.propertyContentNode.getSize();var y=Browser.name=="firefox"?e.event.clientY:e.event.y;var position=el.retrieve("position");var dy=y.toFloat()-position.y.toFloat();var initialHeight=el.retrieve("initialHeight").toFloat();var height=initialHeight+dy;if(height<40)height=40;if(height>size.y-40)height=size.y-40;this.propertyDomPercent=height/size.y;this.setPropertyContentResize()}.bind(this)})},setPropertyContentResize:function(){var size=this.propertyContentNode.getSize();var resizeNodeSize=this.propertyContentResizeNode.getSize();var height=size.y-resizeNodeSize.y;var domHeight=this.propertyDomPercent*height;var contentHeight=height-domHeight;this.propertyDomArea.setStyle("height",""+domHeight+"px");this.propertyContentArea.setStyle("height",""+contentHeight+"px");if(this.view){if(this.view.currentSelectedModule){if(this.view.currentSelectedModule.property){var tab=this.view.currentSelectedModule.property.propertyTab;if(tab){var tabTitleSize=tab.tabNodeContainer.getSize();tab.pages.each(function(page){var topMargin=page.contentNodeArea.getStyle("margin-top").toFloat();var bottomMargin=page.contentNodeArea.getStyle("margin-bottom").toFloat();var tabContentNodeAreaHeight=contentHeight-topMargin-bottomMargin-tabTitleSize.y.toFloat()-15;page.contentNodeArea.setStyle("height",tabContentNodeAreaHeight)}.bind(this))}}}}},resizeNode:function(){var nodeSize=this.node.getSize();this.contentNode.setStyle("height",""+nodeSize.y+"px");this.propertyNode.setStyle("height",""+nodeSize.y+"px");var contentToolbarMarginTop=this.contentToolbarNode.getStyle("margin-top").toFloat();var contentToolbarMarginBottom=this.contentToolbarNode.getStyle("margin-bottom").toFloat();var allContentToolberSize=this.contentToolbarNode.getComputedSize();var y=nodeSize.y-allContentToolberSize.totalHeight-contentToolbarMarginTop-contentToolbarMarginBottom;this.editContentNode.setStyle("height",""+y+"px");if(this.designNode){var designMarginTop=this.designNode.getStyle("margin-top").toFloat();var designMarginBottom=this.designNode.getStyle("margin-bottom").toFloat();y=nodeSize.y-allContentToolberSize.totalHeight-contentToolbarMarginTop-contentToolbarMarginBottom-designMarginTop-designMarginBottom;this.designNode.setStyle("height",""+y+"px")}titleSize=this.propertyTitleNode.getSize();titleMarginTop=this.propertyTitleNode.getStyle("margin-top").toFloat();titleMarginBottom=this.propertyTitleNode.getStyle("margin-bottom").toFloat();titlePaddingTop=this.propertyTitleNode.getStyle("padding-top").toFloat();titlePaddingBottom=this.propertyTitleNode.getStyle("padding-bottom").toFloat();y=titleSize.y+titleMarginTop+titleMarginBottom+titlePaddingTop+titlePaddingBottom;y=nodeSize.y-y;this.propertyContentNode.setStyle("height",""+y+"px");this.propertyResizeBar.setStyle("height",""+y+"px");this.setPropertyContentResize();titleSize=this.viewListTitleNode.getSize();titleMarginTop=this.viewListTitleNode.getStyle("margin-top").toFloat();titleMarginBottom=this.viewListTitleNode.getStyle("margin-bottom").toFloat();titlePaddingTop=this.viewListTitleNode.getStyle("padding-top").toFloat();titlePaddingBottom=this.viewListTitleNode.getStyle("padding-bottom").toFloat();nodeMarginTop=this.viewListAreaSccrollNode.getStyle("margin-top").toFloat();nodeMarginBottom=this.viewListAreaSccrollNode.getStyle("margin-bottom").toFloat();y=titleSize.y+titleMarginTop+titleMarginBottom+titlePaddingTop+titlePaddingBottom+nodeMarginTop+nodeMarginBottom;y=nodeSize.y-y;this.viewListAreaSccrollNode.setStyle("height",""+y+"px");this.viewListResizeNode.setStyle("height",""+y+"px")},loadView:function(callback){this.getViewData(this.options.id,function(vdata){this.setTitle(this.options.appTitle+"-"+vdata.name);this.taskitem.setText(this.options.appTitle+"-"+vdata.name);this.options.appTitle=this.options.appTitle+"-"+vdata.name;this.view=new MWF.xApplication.query.ViewDesigner.View(this,vdata);this.view.load();if(callback)callback()}.bind(this))},getViewData:function(id,callback){if(!this.options.id){this.loadNewViewData(callback)}else{this.loadViewData(id,callback)}},loadNewViewData:function(callback){var url="/x_component_query_ViewDesigner/$View/view.json";MWF.getJSON(url,{onSuccess:function(obj){this.actions.getUUID(function(id){obj.id=id;obj.isNewView=true;obj.application=this.application.id;this.createListViewItem(obj,true);if(callback)callback(obj)}.bind(this))}.bind(this),onerror:function(text){this.notice(text,"error")}.bind(this),onRequestFailure:function(xhr){this.notice(xhr.responseText,"error")}.bind(this)})},loadViewData:function(id,callback){this.actions.getView(id,function(json){if(json){var data=json.data;var dataJson=JSON.decode(data.data);data.data=dataJson;if(!this.application){this.actions.getApplication(data.application,function(json){this.application={name:json.data.name,id:json.data.id};if(callback)callback(data)}.bind(this))}else{if(callback)callback(data)}}}.bind(this))},saveView:function(){this.view.save(function(){var name=this.view.data.name;this.setTitle(MWF.APPDVD.LP.title+"-"+name);this.options.desktopReload=true;this.options.id=this.view.data.id}.bind(this))},saveViewAs:function(){this.view.saveAs()},dictionaryExplode:function(){this.view.explode()},dictionaryImplode:function(){this.view.implode()},recordStatus:function(){var openViews=[];openViews.push(this.view.data.id);var currentId=this.view.data.id;return{id:this.options.id,application:this.application,openViews:openViews,currentId:currentId}}});MWF.xDesktop.requireApp("Template","MPopupForm",null,false);MWF.xApplication.query.ViewDesigner.View.NewNameForm=new Class({Extends:MPopupForm,Implements:[Options,Events],options:{style:"design",width:700,height:"260",hasTop:true,hasIcon:false,draggable:true,title:MWF.xApplication.query.ViewDesigner.LP.newView},_createTableContent:function(){var html="<table width='80%' bordr='0' cellpadding='7' cellspacing='0' styles='formTable' style='margin: 20px auto 0px auto; '>"+"<tr><td styles='formTableTitle' lable='selectQuery' width='25%'></td>"+" <td styles='formTableValue' item='selectQuery' colspan='3' width='75%'></td></tr>"+"<tr><td styles='formTableTitle' lable='name'></td>"+" <td styles='formTableValue' item='name' colspan='3'></td></tr>"+"</table>";this.formTableArea.set("html",html);MWF.xDesktop.requireApp("Template","MForm",function(){this.form=new MForm(this.formTableArea,this.data||{},{isEdited:true,style:"cms",hasColon:true,itemTemplate:{selectQuery:{text:MWF.xApplication.query.ViewDesigner.LP.application,type:"org",orgType:"Query",defaultValue:this.data.queryName,orgWidgetOptions:{canRemove:false}},name:{text:MWF.xApplication.query.ViewDesigner.LP.name,notEmpty:true}}},this.app);this.form.load()}.bind(this),null,true)},ok:function(){var data=this.form.getResult(true,null,true,false,true);if(data){var selectQuery=this.form.getItem("selectQuery").orgObject;if(selectQuery&&selectQuery.length>0){var queryData=selectQuery[0].data;data.query=queryData.id;data.queryName=queryData.name}else{}this.fireEvent("save",[data,function(){this.close()}.bind(this)])}}});
|