| 1 |
- MWF.xApplication.query.QueryExplorer.Importer=new Class({Extends:MWF.widget.Common,Implements:[Options,Events],options:{style:"default"},initialize:function(app,e,options){this.setOptions(options);this.app=app;this.container=this.app.content;this.actions=this.app.restActions;this.event=e;this.path="/x_component_query_QueryExplorer/$Importer/";this.cssPath="/x_component_query_QueryExplorer/$Importer/"+this.options.style+"/css.wcss";this._loadCss()},load:function(){this.container.mask({destroyOnHide:true,style:{"background-color":"#666",opacity:.6}});this.node=new Element("div",{styles:this.css.content});this.titleNode=new Element("div",{styles:this.css.titleNode,text:this.app.lp.application.import}).inject(this.node);this.contentNode=new Element("div",{styles:this.css.contentNode}).inject(this.node);this.buttonAreaNode=new Element("div",{styles:this.css.buttonAreaNode}).inject(this.node);this.cancelButton=new Element("div",{styles:this.css.button,text:this.app.lp.application.export_cancel}).inject(this.buttonAreaNode);this.okButton=new Element("div",{styles:this.css.okButton,text:this.app.lp.application.export_ok}).inject(this.buttonAreaNode);this.loadContent();this.setEvent();this.node.inject(this.container);this.node.position({relativeTo:this.container,position:"center",edge:"center"})},loadContent:function(){this.textarea=new Element("textarea",{styles:this.css.textarea}).inject(this.contentNode)},setEvent:function(){this.cancelButton.addEvent("click",function(e){this.close()}.bind(this));this.okButton.addEvent("click",function(e){this.importApplication()}.bind(this))},close:function(){this.container.unmask();this.node.destroy();this.cancelButton=null;this.okButton=null;this.buttonAreaNode=null;this.contentNode=null;this.titleNode=null;this.node=null;this.fireEvent("close")},importApplication:function(){var str=this.textarea.get("value");if(str){this.applicationJson=JSON.decode(str);var name=this.applicationJson.application.name;this.actions.listApplicationSummary("",function(json){var flag="create";var overApplication=null;if(json.data){for(var i=0;i<json.data.length;i++){if(json.data[i].name==name){overApplication=json.data[i];flag="overwrite";break}}}if(flag=="overwrite"){var _self=this;this.app.confirm("infor",this.event,this.app.lp.application.import_confirm_title,this.app.lp.application.import_confirm,400,180,function(){_self.doImportOverwriteApplication(overApplication);this.close()},function(){this.close()})}else{this.doImportApplication()}}.bind(this))}},readyProrressBar:function(){this.createProgressBar();this.status={count:this.applicationJson.viewList.length+this.applicationJson.statList.length+1,complete:0}},doImportApplication:function(){this.readyProrressBar();this.actions.action.invoke({name:"addApplication",data:this.applicationJson.application,success:function(){this.progressBarTextNode.set("text","Import Application Property ...");this.checkExport();this.importOverwriteViewList();this.importOverwriteStatList()}.bind(this)})},doImportOverwriteApplication:function(overApplication){this.readyProrressBar();this.applicationJson.application.id=overApplication.id;this.actions.saveApplication(this.applicationJson.application,function(){this.progressBarTextNode.set("text","Import Application Property ...");this.checkExport()}.bind(this));this.importOverwriteViewList();this.importOverwriteStatList()},importOverwriteViewList:function(){this.actions.listView(this.applicationJson.application.id,function(json){var viewList=json.data||[];this.applicationJson.viewList.each(function(view){view.application=this.applicationJson.application.id;var id="";for(var i=0;i<viewList.length;i++){if(viewList[i].name==view.name){id=viewList[i].id;break}}var data=JSON.decode(view.data);view.data=data;if(id){view.id=id;this.actions.updateView(view,function(){this.progressBarTextNode.set("text",'Import View "'+view.name+'" ...');this.checkExport()}.bind(this))}else{this.actions.addView(view,function(){this.progressBarTextNode.set("text",'Import View "'+view.name+'" ...');this.checkExport()}.bind(this))}}.bind(this))}.bind(this))},importOverwriteStatList:function(){this.actions.listStat(this.applicationJson.application.id,function(json){var statList=json.data||[];this.applicationJson.statList.each(function(stat){stat.application=this.applicationJson.application.id;var id="";for(var i=0;i<statList.length;i++){if(statList[i].name==stat.name){id=statList[i].id;break}}var data=JSON.decode(stat.data);stat.data=data;if(id){stat.id=id;this.actions.updateStat(stat,function(){this.progressBarTextNode.set("text",'Import Stat "'+stat.name+'" ...');this.checkExport()}.bind(this))}else{this.actions.addStat(stat,function(){this.progressBarTextNode.set("text",'Import Stat "'+stat.name+'" ...');this.checkExport()}.bind(this))}}.bind(this))}.bind(this))},checkExport:function(){this.status.complete=this.status.complete+1;var x=358*(this.status.complete/this.status.count);this.progressBarPercent.setStyle("width",""+x+"px");if(this.status.complete==this.status.count){this.progressBarNode.destroy();this.progressBarNode=null;this.progressBarTextNode=null;this.progressBar=null;this.progressBarPercent=null;this.close()}},createProgressBar:function(){this.node.hide();this.progressBarNode=new Element("div",{styles:this.css.progressBarNode});this.progressBarNode.inject(this.container);this.progressBarNode.position({relativeTo:this.container,position:"center",edge:"center"});this.progressBarTextNode=new Element("div",{styles:this.css.progressBarTextNode}).inject(this.progressBarNode);this.progressBar=new Element("div",{styles:this.css.progressBar}).inject(this.progressBarNode);this.progressBarPercent=new Element("div",{styles:this.css.progressBarPercent}).inject(this.progressBar)}});
|