Main.js 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. MWF.xApplication.process = MWF.xApplication.process || {};
  2. MWF.xApplication.process.ScriptDesigner = MWF.xApplication.process.ScriptDesigner || {};
  3. MWF.xDesktop.requireApp("process.ScriptDesigner", "Main", null, false);
  4. MWF.xApplication.service.ScriptDesigner.options = {
  5. "multitask": true,
  6. "executable": false
  7. };
  8. MWF.xDesktop.requireApp("service.ScriptDesigner", "Script", null, false);
  9. MWF.xApplication.service.ScriptDesigner.Main = new Class({
  10. Extends: MWF.xApplication.process.ScriptDesigner.Main,
  11. Implements: [Options, Events],
  12. options: {
  13. "style": "default",
  14. "name": "service.ScriptDesigner",
  15. "icon": "icon.png",
  16. "title": MWF.APPSD.LP.title,
  17. "appTitle": MWF.APPSD.LP.title,
  18. "id": "",
  19. "actions": null,
  20. "category": null,
  21. "sortKeys": ['name', 'alias', 'createTime', 'updateTime'],
  22. "sortKey": '',
  23. "listToolbarExpanded": false
  24. },
  25. onQueryLoad: function(){
  26. if (this.status){
  27. this.options.id = this.status.id;
  28. }
  29. if (!this.options.id){
  30. this.options.desktopReload = false;
  31. this.options.title = this.options.title + "-"+MWF.APPSD.LP.newScript;
  32. }
  33. this.actions = MWF.Actions.get("x_program_center");
  34. this.lp = MWF.xApplication.process.ScriptDesigner.LP;
  35. this.addEvent("queryClose", function(e){
  36. if (this.explorer && this.explorer.app && this.explorer.app.window){
  37. this.explorer.reload();
  38. }
  39. }.bind(this));
  40. },
  41. getUd: function ( callback ){
  42. MWF.UD.getDataJson(this.options.name, function (data){
  43. if( data ){
  44. this.options.sortKey = data.sortKey;
  45. this.options.listToolbarExpanded = data.listToolbarExpanded || false;
  46. }
  47. callback();
  48. }.bind(this));
  49. },
  50. setUd: function (){
  51. var data = {
  52. sortKey: this.options.sortKey,
  53. listToolbarExpanded: this.options.listToolbarExpanded
  54. };
  55. MWF.UD.putData(this.options.name, data);
  56. },
  57. openApp: function (){
  58. layout.openApplication(null, 'service.ServiceManager', {
  59. appId: 'service.ServiceManager'
  60. }, {
  61. "navi":2
  62. });
  63. },
  64. getApplication:function(callback){
  65. if (callback) callback();
  66. },
  67. loadScriptList: function() {
  68. if( this.currentListScriptItem ){
  69. var d = this.currentListScriptItem.retrieve('script');
  70. this.options.id = d.id;
  71. }
  72. if( this.itemArray && this.itemArray.length ){
  73. this.itemArray = this.itemArray.filter(function(i){
  74. if(!i.data.isNewScript)i.node.destroy();
  75. return i.data.isNewScript;
  76. });
  77. }else{
  78. this.itemArray = [];
  79. }
  80. this.actions.listScript(function (json) {
  81. this.checkSort(json.data);
  82. json.data.each(function(script){
  83. this.createListScriptItem(script);
  84. }.bind(this));
  85. }.bind(this), null, false);
  86. },
  87. addIncludeToList: function(name){
  88. this.actions.getScriptByName(name, function(json){
  89. var script = json.data;
  90. var includeScriptItem = new Element("div", {"styles": this.css.includeScriptItem}).inject(this.propertyIncludeListArea);
  91. var includeScriptItemAction = new Element("div", {"styles": this.css.includeScriptItemAction}).inject(includeScriptItem);
  92. var includeScriptItemText = new Element("div", {"styles": this.css.includeScriptItemText}).inject(includeScriptItem);
  93. includeScriptItemText.set("text", script.name+" ("+script.alias+")");
  94. includeScriptItem.store("script", script);
  95. var _self = this;
  96. includeScriptItemAction.addEvent("click", function(){
  97. var node = this.getParent();
  98. var script = node.retrieve("script");
  99. if (script){
  100. _self.scriptTab.showPage.script.data.dependScriptList.erase(script.name);
  101. }
  102. node.destroy();
  103. });
  104. }.bind(this), function(){
  105. this.scriptTab.showPage.script.data.dependScriptList.erase(name);
  106. }.bind(this));
  107. },
  108. loadScriptByData: function(node, e){
  109. var script = node.retrieve("script");
  110. var openNew = true;
  111. for (var i = 0; i<this.scriptTab.pages.length; i++){
  112. if (script.id==this.scriptTab.pages[i].script.data.id){
  113. this.scriptTab.pages[i].showTabIm();
  114. openNew = false;
  115. break;
  116. }
  117. }
  118. if (openNew){
  119. this.loadScriptData(script.id, function(data){
  120. var script = new MWF.xApplication.service.ScriptDesigner.Script(this, data);
  121. script.load();
  122. }.bind(this), true);
  123. }
  124. //var _self = this;
  125. //var options = {
  126. // "onQueryLoad": function(){
  127. // this.actions = _self.actions;
  128. // this.options.id = script.id;
  129. // this.application = _self.application;
  130. // }
  131. //};
  132. //this.desktop.openApplication(e, "process.ScriptDesigner", options);
  133. },
  134. //loadForm------------------------------------------
  135. loadScript: function(){
  136. //this.scriptTab.addTab(node, title);
  137. this.getScriptData(this.options.id, function(data){
  138. this.script = new MWF.xApplication.service.ScriptDesigner.Script(this, data);
  139. this.script.load();
  140. if (this.status){
  141. if (this.status.openScripts){
  142. this.status.openScripts.each(function(id){
  143. this.loadScriptData(id, function(data){
  144. var showTab = true;
  145. if (this.status.currentId){
  146. if (this.status.currentId!=data.id) showTab = false;
  147. }
  148. var script = new MWF.xApplication.service.ScriptDesigner.Script(this, data, {"showTab": showTab});
  149. script.load();
  150. }.bind(this), true);
  151. }.bind(this));
  152. this.status.openScripts = [];
  153. }
  154. }
  155. }.bind(this));
  156. },
  157. loadNewScriptData: function(callback){
  158. // this.actions.getUUID(function(id){
  159. var data = {
  160. "name": "",
  161. // "id": id,
  162. "alias": "",
  163. "description": "",
  164. "language": "javascript",
  165. "dependScriptList": [],
  166. "isNewScript": true,
  167. "text": ""
  168. };
  169. this.createListScriptItem(data, true);
  170. if (callback) callback(data);
  171. // }.bind(this))
  172. },
  173. loadScriptData: function(id, callback, notSetTile){
  174. this.actions.getScript(id, function(json){
  175. if (json){
  176. var data = json.data;
  177. if (!notSetTile){
  178. this.setTitle(this.options.appTitle + "-"+data.name);
  179. if(this.taskitem)this.taskitem.setText(this.options.appTitle + "-"+data.name);
  180. this.options.appTitle = this.options.appTitle + "-"+data.name;
  181. }
  182. if (callback) callback(data);
  183. }
  184. }.bind(this));
  185. },
  186. recordStatus: function(){
  187. if (this.scriptTab){
  188. var openScripts = [];
  189. this.scriptTab.pages.each(function(page){
  190. if (page.script.data.id!=this.options.id) openScripts.push(page.script.data.id);
  191. }.bind(this));
  192. var currentId = this.scriptTab.showPage.script.data.id;
  193. var status = {
  194. "id": this.options.id,
  195. "openScripts": openScripts,
  196. "currentId": currentId
  197. };
  198. return status;
  199. }
  200. return {"id": this.options.id};
  201. },
  202. getFormToolbarHTML: function(callback){
  203. var toolbarUrl = "../x_component_service_ScriptDesigner/$Main/default/toolbars.html";
  204. MWF.getRequestText(toolbarUrl, function(responseText, responseXML){
  205. var htmlString = responseText;
  206. htmlString = o2.bindJson(htmlString, {"lp": MWF.APPSD.LP.formToolbar});
  207. var temp = new Element('div').set('html', htmlString);
  208. if (callback) callback( temp.childNodes[0] );
  209. }.bind(this));
  210. // var r = new Request.HTML({
  211. // url: toolbarUrl,
  212. // method: "get",
  213. // onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript){
  214. // var toolbarNode = responseTree[0];
  215. // if (callback) callback(toolbarNode);
  216. // }.bind(this),
  217. // onFailure: function(xhr){
  218. // this.notice("request cmsToolbars error: "+xhr.responseText, "error");
  219. // }.bind(this)
  220. // });
  221. // r.send();
  222. }
  223. });