| 1 |
- MWF.xApplication.process.ApplicationExplorer.Exporter=new Class({Extends:MWF.widget.Common,Implements:[Options,Events],options:{style:"default"},initialize:function(t,i,e){this.setOptions(e);this.app=t;this.container=this.app.content;this.data=i;this.path="/x_component_process_ApplicationExplorer/$Exporter/";this.cssPath="/x_component_process_ApplicationExplorer/$Exporter/"+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.export}).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.actions=this.app.restActions;var t=new Element("div",{styles:this.css.listTitleNodeArea}).inject(this.contentNode);this.processSelectAction=new Element("div",{styles:this.css.listTitleActionNode,text:this.app.lp.application.select}).inject(t);new Element("div",{styles:this.css.listTitleNode,text:this.app.lp.application.process}).inject(t);this.processListNode=new Element("div",{styles:this.css.listNode}).inject(this.contentNode);t=new Element("div",{styles:this.css.listTitleNodeArea}).inject(this.contentNode);this.formSelectAction=new Element("div",{styles:this.css.listTitleActionNode,text:this.app.lp.application.select}).inject(t);new Element("div",{styles:this.css.listTitleNode,text:this.app.lp.application.form}).inject(t);this.formListNode=new Element("div",{styles:this.css.listNode}).inject(this.contentNode);t=new Element("div",{styles:this.css.listTitleNodeArea}).inject(this.contentNode);this.dictionarySelectAction=new Element("div",{styles:this.css.listTitleActionNode,text:this.app.lp.application.select}).inject(t);new Element("div",{styles:this.css.listTitleNode,text:this.app.lp.application.dictionary}).inject(t);this.dictionaryListNode=new Element("div",{styles:this.css.listNode}).inject(this.contentNode);t=new Element("div",{styles:this.css.listTitleNodeArea}).inject(this.contentNode);this.scriptSelectAction=new Element("div",{styles:this.css.listTitleActionNode,text:this.app.lp.application.select}).inject(t);new Element("div",{styles:this.css.listTitleNode,text:this.app.lp.application.script}).inject(t);this.scriptListNode=new Element("div",{styles:this.css.listNode}).inject(this.contentNode);this.listProcess();this.listForm();this.listDictionary();this.listScript();this.processSelectAction.addEvent("click",function(){this.inverse(this.processListNode)}.bind(this));this.formSelectAction.addEvent("click",function(){this.inverse(this.formListNode)}.bind(this));this.dictionarySelectAction.addEvent("click",function(){this.inverse(this.dictionaryListNode)}.bind(this));this.scriptSelectAction.addEvent("click",function(){this.inverse(this.scriptListNode)}.bind(this))},listProcess:function(){this.actions.listProcess(this.data.id,function(t){if(t.data){t.data.each(function(t){this.createItem(t,this.processListNode)}.bind(this))}}.bind(this))},listForm:function(){this.actions.listForm(this.data.id,function(t){if(t.data){t.data.each(function(t){this.createItem(t,this.formListNode)}.bind(this))}}.bind(this))},listDictionary:function(){this.actions.listDictionary(this.data.id,function(t){if(t.data){t.data.each(function(t){this.createItem(t,this.dictionaryListNode)}.bind(this))}}.bind(this))},listScript:function(){this.actions.listScript(this.data.id,function(t){if(t.data){t.data.each(function(t){this.createItem(t,this.scriptListNode)}.bind(this))}}.bind(this))},inverse:function(t){var i=t.getElements("input");i.each(function(t){if(t.checked){t.set("checked",false)}else{t.set("checked",true)}})},createItem:function(t,i){var e=new Element("div",{styles:this.css.processItem}).inject(i);var s=new Element("input",{styles:this.css.processItemCheckbox,type:"checkbox",checked:true}).inject(e);s.store("itemData",t);var n=new Element("div",{text:t.name,styles:this.css.processItemText}).inject(e)},setEvent:function(){this.cancelButton.addEvent("click",function(t){this.close()}.bind(this));this.okButton.addEvent("click",function(t){this.exportApplication()}.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.processListNode=null;this.formListNode=null;this.dictionaryListNode=null;this.scriptListNode=null;this.fireEvent("close")},exportApplication:function(){this.applicationJson={application:{},processList:[],formList:[],dictionaryList:[],scriptList:[]};this.createProgressBar();var t=this.processListNode.getElements("input:checked");var i=this.formListNode.getElements("input:checked");var e=this.dictionaryListNode.getElements("input:checked");var s=this.scriptListNode.getElements("input:checked");this.status={count:t.length+i.length+e.length+s.length+1,complete:0};this.exportProperty();this.exportProcesses(t);this.exportForms(i);this.exportDictionarys(e);this.exportScripts(s)},exportProperty:function(){this.actions.getApplication(this.data.id,function(t){this.progressBarTextNode.set("text","load Application Property ...");if(t.data){this.applicationJson.application=t.data}this.checkExport()}.bind(this))},exportProcesses:function(t){t.each(function(t){var i=t.retrieve("itemData");this.actions.getProcess(i.id,function(t){this.progressBarTextNode.set("text",'load Process "'+i.name+'" ...');if(t.data){this.applicationJson.processList.push(t.data)}this.checkExport()}.bind(this))}.bind(this))},exportForms:function(t){t.each(function(t){var i=t.retrieve("itemData");this.actions.getForm(i.id,function(t){this.progressBarTextNode.set("text",'load Form "'+i.name+'" ...');if(t.data){this.applicationJson.formList.push(t.data)}this.checkExport()}.bind(this))}.bind(this))},exportDictionarys:function(t){t.each(function(t){var i=t.retrieve("itemData");this.actions.getDictionary(i.id,function(t){this.progressBarTextNode.set("text",'load Dictionary "'+i.name+'" ...');if(t.data){this.applicationJson.dictionaryList.push(t.data)}this.checkExport()}.bind(this))}.bind(this))},exportScripts:function(t){t.each(function(t){var i=t.retrieve("itemData");this.actions.getScript(i.id,function(t){this.progressBarTextNode.set("text",'load Script "'+i.name+'" ...');if(t.data){this.applicationJson.scriptList.push(t.data)}this.checkExport()}.bind(this))}.bind(this))},checkExport:function(){this.status.complete=this.status.complete+1;var t=358*(this.status.complete/this.status.count);this.progressBarPercent.setStyle("width",""+t+"px");if(this.status.complete==this.status.count){this.saveApplicationToLocal()}},saveApplicationToLocal:function(){debugger;if(window.hasOwnProperty("ActiveXObject")){var t=window.open("","_blank");t.document.write(JSON.encode(this.applicationJson))}else{this.downloadFile(this.data.name+".xapp",JSON.encode(this.applicationJson))}this.progressBarNode.destroy();this.progressBarNode=null;this.progressBarTextNode=null;this.progressBar=null;this.progressBarPercent=null;this.close()},downloadFile:function(t,i){var e=new Element("a",{text:this.data.name}).inject(this.progressBarTextNode);var s=new Blob([i]);e.download=t;e.href=URL.createObjectURL(s);var n=document.createEvent("HTMLEvents");n.initEvent("click",false,false);e.dispatchEvent(n);e.click()},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)}});
|