Main.js 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819
  1. MWF.APPPD = MWF.xApplication.process.ProcessDesigner;
  2. MWF.APPPD.options = {
  3. "multitask": true,
  4. "executable": false
  5. };
  6. //MWF.xDesktop.requireApp("process.ProcessManager", "Actions.RestActions", null, false);
  7. MWF.require("MWF.widget.MWFRaphael", null, false);
  8. MWF.xApplication.process.ProcessDesigner.Main = new Class({
  9. Extends: MWF.xApplication.Common.Main,
  10. Implements: [Options, Events],
  11. options: {
  12. "style": "default",
  13. "template": "process.json",
  14. "name": "process.ProcessDesigner",
  15. "icon": "icon.png",
  16. "title": MWF.APPPD.LP.title,
  17. "appTitle": MWF.APPPD.LP.title,
  18. "id": "",
  19. "tooltip": {
  20. "unCategory": MWF.APPPD.LP.unCategory
  21. },
  22. "actions": null,
  23. "category": null,
  24. "processData": null
  25. },
  26. onQueryLoad: function(){
  27. this.shortcut = true;
  28. if (this.status){
  29. this.options.id = this.status.id;
  30. }
  31. if (!this.options.id){
  32. this.options.desktopReload = false;
  33. this.options.title = this.options.title + "-"+MWF.APPPD.LP.newProcess;
  34. }
  35. this.actions = MWF.Actions.get("x_processplatform_assemble_designer");
  36. //this.actions = new MWF.xApplication.process.ProcessManager.Actions.RestActions();
  37. this.lp = MWF.xApplication.process.ProcessDesigner.LP;
  38. // this.processData = this.options.processData;
  39. },
  40. loadApplication: function(callback){
  41. this.gadgets = [];
  42. this.gadgetMode="all";
  43. this.gadgetDecrease = 0;
  44. this.createNode();
  45. if (!this.options.isRefresh){
  46. this.maxSize(function(){
  47. this.openProcess();
  48. }.bind(this));
  49. }else{
  50. this.openProcess();
  51. }
  52. this.addKeyboardEvents();
  53. if (callback) callback();
  54. },
  55. addKeyboardEvents: function(){
  56. this.addEvent("copy", function(){
  57. this.copyModule();
  58. }.bind(this));
  59. this.addEvent("paste", function(){
  60. this.pasteModule();
  61. }.bind(this));
  62. this.addEvent("keySave", function(e){
  63. this.keySave(e);
  64. }.bind(this));
  65. this.addEvent("keyDelete", function(e){
  66. this.keyDelete(e);
  67. }.bind(this));
  68. //this.addEvent("cut", function(){
  69. // this.cutModule();
  70. //}.bind(this));
  71. },
  72. keySave: function(e){
  73. if (this.shortcut) {
  74. if (this.process) this.saveProcess();
  75. e.preventDefault();
  76. }
  77. },
  78. keyDelete: function(e){
  79. if (this.shortcut) {
  80. if (this.process) {
  81. if (this.process.selectedActivitys.length) {
  82. } else if (this.process.currentSelected) {
  83. var p = this.content.getPosition();
  84. if (this.process.currentSelected.type) {
  85. var a = this.process.currentSelected;
  86. var e = {"event": {"x": a.center.x + p.x, "y": a.center.y + p.y}};
  87. this.process.deleteActivity(e, this.process.currentSelected);
  88. } else {
  89. var r = this.process.currentSelected;
  90. var e = {"event": {"x": r.beginPoint.x + p.x, "y": r.beginPoint.y + p.y}};
  91. this.process.deleteRoute(e, this.process.currentSelected);
  92. }
  93. }
  94. }
  95. }
  96. },
  97. copyModule: function(){
  98. if (this.shortcut) {
  99. if (this.process) {
  100. // if (this.process.isFocus){
  101. //if (!this.paperInNode.contains(document.activeElement)) return false;
  102. if (this.process.selectedActivitys.length) {
  103. var activitys = [];
  104. var routes = [];
  105. this.process.selectedActivitys.each(function (activity) {
  106. //if (activity.data.type.toLowerCase()!=="begin"){
  107. activitys.push(Object.clone(activity.data));
  108. activity.routes.each(function (route) {
  109. if (route.toActivity) {
  110. //if (this.process.selectedActivitys.indexOf(route.toActivity) != -1){
  111. routes.push(Object.clone(route.data));
  112. //}else{
  113. // activity.routes = null;
  114. //}
  115. } else {
  116. routes.push(Object.clone(route.data));
  117. }
  118. }.bind(this));
  119. //}
  120. //activity.routes = activity.routes.clean();
  121. }.bind(this));
  122. MWF.clipboard.data = {
  123. "type": "process",
  124. "data": {
  125. "activitys": activitys,
  126. "routes": routes
  127. }
  128. };
  129. } else if (this.process.currentSelected) {
  130. if (this.process.currentSelected.type) {
  131. //if (this.process.currentSelected.data.type.toLowerCase()!=="begin"){
  132. var data = Object.clone(this.process.currentSelected.data);
  133. MWF.clipboard.data = {
  134. "type": "process",
  135. "data": {
  136. "activitys": [data],
  137. "routes": []
  138. }
  139. };
  140. //}
  141. } else {
  142. MWF.clipboard.data = null;
  143. }
  144. }
  145. // }
  146. }
  147. }
  148. },
  149. pasteModuleError: function(bakData){
  150. this.notice(this.lp.notice.processCopyError, "error");
  151. this.process.reload(bakData);
  152. MWF.clipboard.data = null;
  153. },
  154. pasteModule: function(){
  155. if (this.process){
  156. // if (this.process.isFocus){
  157. //if (!this.paperInNode.contains(document.activeElement)) return false;
  158. if (MWF.clipboard.data){
  159. if (MWF.clipboard.data.type=="process"){
  160. var bakData = Object.clone(this.process.process);
  161. this.process.unSelectedAll();
  162. var activitys = MWF.clipboard.data.data.activitys;
  163. var routes = MWF.clipboard.data.data.routes;
  164. var checkUUIDs;
  165. this.actions.getId(activitys.length+routes.length, function(ids) {
  166. try {
  167. checkUUIDs = ids.data;
  168. var idReplace = {};
  169. var processId = this.process.process.id;
  170. activitys.each(function(d){
  171. var id = checkUUIDs.pop().id;
  172. idReplace[d.id] = id;
  173. d.id = id;
  174. d.process = processId;
  175. });
  176. routes.each(function(d){
  177. var id = checkUUIDs.pop().id;
  178. idReplace[d.id] = id;
  179. d.id = id;
  180. d.process = processId;
  181. d.activity = idReplace[d.activity];
  182. });
  183. activitys.each(function(d){
  184. if (d.route){
  185. d.route = idReplace[d.route];
  186. }
  187. if (d.routeList){
  188. d.routeList.each(function(r, i){
  189. d.routeList[i] = idReplace[r]
  190. });
  191. }
  192. });
  193. var loadRoutes = function(){
  194. try{
  195. routes.each(function(item){
  196. this.process.process.routeList.push(Object.clone(item));
  197. this.process.routes[item.id] = new MWF.APPPD.Route(item, this.process);
  198. this.process.routeDatas[item.id] = item;
  199. // this.routes[item.id].load();
  200. }.bind(this));
  201. activitys.each(function(d){
  202. //this.process[d.type+"s"][d.id].loadRoutes();
  203. (this.process[d.type] || this.process[d.type+"s"][d.id]).loadRoutes();
  204. if (activitys.length>1){
  205. (this.process[d.type] || this.process[d.type+"s"][d.id]).selectedMulti();
  206. }else{
  207. this.process[d.type+"s"][d.id].selected();
  208. }
  209. }.bind(this));
  210. routes.each(function(item){
  211. var route = this.process.routes[item.id];
  212. if (!route.loaded) route.load();
  213. }.bind(this));
  214. MWF.clipboard.data = null;
  215. }catch(e){
  216. this.pasteModuleError(bakData);
  217. }
  218. };
  219. var loadedCount = 0;
  220. activitys.each(function(activity){
  221. //if (activity.type.toLowerCase()!=="begin"){
  222. var data = Object.clone(activity);
  223. var type = data.type;
  224. if (type.toLowerCase()=="begin"){
  225. if (!this.process.begin){
  226. this.process.process.begin = data;
  227. this.process.loadBegin(function(){
  228. loadedCount++;
  229. if (loadedCount==activitys.length) loadRoutes.apply(this);
  230. }.bind(this));
  231. }else{
  232. //loadedCount++;
  233. activitys.erase(activity);
  234. if (loadedCount==activitys.length) loadRoutes.apply(this);
  235. }
  236. }else{
  237. if (!this.process.process[type+"List"]) this.process.process[type+"List"] = [];
  238. this.process.process[type+"List"].push(data);
  239. var c = type.capitalize();
  240. // if (type==="begin") {
  241. // if (!this.process.begin){
  242. // this.process.loadActivity(c, data, this.process.begin, function(){
  243. // loadedCount++;
  244. // if (loadedCount==activitys.length) loadRoutes.apply(this);
  245. // }.bind(this));
  246. // }
  247. // }else{
  248. this.process.loadActivity(c, data, this.process[type+"s"], function(){
  249. loadedCount++;
  250. if (loadedCount==activitys.length) loadRoutes.apply(this);
  251. }.bind(this));
  252. // }
  253. }
  254. // }
  255. }.bind(this));
  256. }catch(e){
  257. this.pasteModuleError(bakData)
  258. }
  259. }.bind(this));
  260. }
  261. }
  262. // }
  263. }
  264. },
  265. createNode: function(){
  266. this.content.setStyle("overflow", "hidden");
  267. this.node = new Element("div", {
  268. "styles": {"width": "100%", "height": "100%", "overflow": "hidden"}
  269. }).inject(this.content);
  270. },
  271. openProcess: function(){
  272. this.loadNodes();
  273. this.loadGadgets();
  274. this.loadToolbar(function(){
  275. this.resizePaper();
  276. this.addEvent("resize", function(){this.resizePaper();}.bind(this));
  277. this.getProcessData(function(){
  278. this.loadPaper();
  279. }.bind(this));
  280. }.bind(this));
  281. this.resizeNode();
  282. this.addEvent("resize", this.resizeNode.bind(this));
  283. },
  284. resizeNode: function(){
  285. var nodeSize = this.node.getSize();
  286. var titleSize = this.gadgetTitleNode.getSize();
  287. var titleMarginTop = this.gadgetTitleNode.getStyle("margin-top").toFloat();
  288. var titleMarginBottom = this.gadgetTitleNode.getStyle("margin-bottom").toFloat();
  289. var titlePaddingTop = this.gadgetTitleNode.getStyle("padding-top").toFloat();
  290. var titlePaddingBottom = this.gadgetTitleNode.getStyle("padding-bottom").toFloat();
  291. y = titleSize.y+titleMarginTop+titleMarginBottom+titlePaddingTop+titlePaddingBottom;
  292. y = nodeSize.y-y;
  293. this.gadgetContentNode.setStyle("height", ""+y+"px");
  294. },
  295. getProcessData: function(callback){
  296. if (!this.options.id){
  297. this.loadNewProcessData(callback);
  298. }else{
  299. this.loadProcessData(callback);
  300. }
  301. },
  302. loadNewProcessData: function(callback){
  303. //MWF.getJSON(this.path+"process.json", {
  304. var url = "../x_component_process_ProcessDesigner/$Process/template/"+this.options.template;
  305. MWF.getJSON(url, {
  306. "onSuccess": function(obj){
  307. obj.id="";
  308. obj.isNewProcess = true;
  309. this.processData = obj;
  310. if (callback) callback();
  311. }.bind(this),
  312. "onerror": function(text){
  313. this.notice(text, "error");
  314. }.bind(this),
  315. "onRequestFailure": function(xhr){
  316. this.notice(xhr.responseText, "error");
  317. }.bind(this)
  318. });
  319. },
  320. loadProcessData: function(callback){
  321. this.actions.getProcess(this.options.id, function(process){
  322. if (process){
  323. this.processData = process.data;
  324. this.processData.isNewProcess = false;
  325. this.setTitle(this.options.appTitle + "-"+this.processData.name);
  326. if (!this.application){
  327. this.actions.getApplication(process.data.application, function(json){
  328. this.application = {"name": json.data.name, "id": json.data.id};
  329. if (callback) callback();
  330. }.bind(this));
  331. }else{
  332. if (callback) callback();
  333. }
  334. }
  335. }.bind(this));
  336. },
  337. loadGadgets: function(){
  338. this.gadgetTitleNode = new Element("div", {
  339. "styles": this.css.gadgetTitleNode,
  340. "text": MWF.APPPD.LP.tools
  341. }).inject(this.gadgetAreaNode);
  342. this.gadgetTitleActionNode = new Element("div", {
  343. "styles": this.css.gadgetTitleActionNode,
  344. "events": {"click": function(e){this.switchGadgetAreaMode();}.bind(this)}
  345. }).inject(this.gadgetAreaNode);
  346. this.gadgetContentNode = new Element("div", {
  347. "styles": this.css.gadgetContentNode,
  348. "events": {"selectstart": function(e){e.preventDefault(); e.stopPropagation();}}
  349. }).inject(this.gadgetAreaNode);
  350. MWF.getJSON(this.path+"gadget.json", function(json){
  351. Object.each(json, function(value, key){
  352. this.createGadgetNode(value, key);
  353. }.bind(this));
  354. }.bind(this));
  355. this.setScrollBar(this.gadgetContentNode, null, {
  356. "V": {"x": 0, "y": 0},
  357. "H": {"x": 0, "y": 0}
  358. });
  359. },
  360. switchGadgetAreaMode: function(){
  361. if (this.gadgetMode=="all"){
  362. var size = this.gadgetAreaNode.getSize();
  363. this.gadgetDecrease = (size.x.toFloat())-60;
  364. this.gadgets.each(function(node){
  365. node.getLast().setStyle("display", "none");
  366. });
  367. this.gadgetTitleNode.set("text", "");
  368. this.gadgetAreaNode.setStyle("width", "60px");
  369. var rightMargin = this.rightContentNode.getStyle("margin-left").toFloat();
  370. rightMargin = rightMargin - this.gadgetDecrease;
  371. this.rightContentNode.setStyle("margin-left", ""+rightMargin+"px");
  372. this.gadgetTitleActionNode.setStyles(this.css.gadgetTitleActionNodeRight);
  373. this.gadgetMode="simple";
  374. }else{
  375. sizeX = 60 + this.gadgetDecrease;
  376. var rightMargin = this.rightContentNode.getStyle("margin-left").toFloat();
  377. rightMargin = rightMargin + this.gadgetDecrease;
  378. this.gadgetAreaNode.setStyle("width", ""+sizeX+"px");
  379. this.rightContentNode.setStyle("margin-left", ""+rightMargin+"px");
  380. this.gadgets.each(function(node){
  381. node.getLast().setStyle("display", "block");
  382. });
  383. this.gadgetTitleNode.set("text", MWF.APPPD.LP.tools);
  384. this.gadgetTitleActionNode.setStyles(this.css.gadgetTitleActionNode);
  385. this.gadgetMode="all";
  386. }
  387. },
  388. createGadgetNode: function(data, key){
  389. var _self = this;
  390. var gadgetNode = new Element("div", {
  391. "styles": this.css.gadgetToolNode,
  392. "title": data.text,
  393. "events": {
  394. "mouseover": function(e){
  395. try {
  396. this.setStyles(_self.css.gadgetToolNodeOver);
  397. }catch(e){
  398. this.setStyles(_self.css.gadgetToolNodeOverCSS2);
  399. };
  400. },
  401. "mouseout": function(e){
  402. try {
  403. this.setStyles(_self.css.gadgetToolNode);
  404. }catch(e){};
  405. },
  406. "mousedown": function(e){
  407. try {
  408. this.setStyles(_self.css.gadgetToolNodeDown);
  409. }catch(e){
  410. this.setStyles(_self.css.gadgetToolNodeDownCSS2);
  411. };
  412. },
  413. "mouseup": function(e){
  414. try {
  415. this.setStyles(_self.css.gadgetToolNodeUp);
  416. }catch(e){
  417. this.setStyles(_self.css.gadgetToolNodeUpCSS2);
  418. };
  419. }
  420. }
  421. }).inject(this.gadgetContentNode);
  422. gadgetNode.store("gadgetClass", data.className);
  423. gadgetNode.store("gadgetType", key);
  424. gadgetNode.store("gadgetIcon", data.icon);
  425. var iconNode = new Element("div", {
  426. "styles": this.css.gadgetToolIconNode
  427. }).inject(gadgetNode);
  428. iconNode.setStyle("background-image", "url("+this.path+this.options.style+"/gadget/"+data.icon+")");
  429. var textNode = new Element("div", {
  430. "styles": this.css.gadgetToolTextNode,
  431. "text": data.text
  432. });
  433. textNode.inject(gadgetNode);
  434. // var designer = this;
  435. gadgetNode.addEvent("mousedown", function(e){
  436. var className = this.retrieve("gadgetClass");
  437. var gadgetType = this.retrieve("gadgetType");
  438. var gadgetIcon = this.retrieve("gadgetIcon");
  439. _self.gadgetCreateActivity(this, gadgetType, gadgetIcon, className, e);
  440. });
  441. this.gadgets.push(gadgetNode);
  442. },
  443. gadgetCreateActivity: function(node, gadgetType, gadgetIcon, className, e){
  444. var activity = null;
  445. // if (activity){
  446. var moveNode = new Element("div", {
  447. "styles": {
  448. "width": "30px",
  449. "height": "30px",
  450. "opacity": "1",
  451. "background": "url("+this.path+this.options.style+"/gadget/"+gadgetIcon+") top left no-repeat",
  452. "postion": "absolute"
  453. }
  454. }).inject(this.paperNode);
  455. var moveNodeSize = moveNode.getSize();
  456. //moveNode.position({"relativeTo": node, "position": "upperLeft", "edge": "upperLeft"});
  457. var x = e.page.x;
  458. var y = e.page.y;
  459. moveNode.positionTo(x, y);
  460. var droppables = [this.paperNode];
  461. var nodeDrag = new Drag.Move(moveNode, {
  462. "droppables": droppables,
  463. "onEnter": function(dragging, inObj){
  464. moveNode.setStyles({
  465. "opacity":"1",
  466. "background": "url("+this.path+this.options.style+"/gadget/"+gadgetIcon+") top left no-repeat"
  467. });
  468. //moveNode.setStyle("opacity","0");
  469. //activity = this.process.createActivity(gadgetType, className);
  470. //if (activity){
  471. // activity.selected();
  472. // activity.activityMoveStart();
  473. //
  474. // moveNode.dragMove = true;
  475. //
  476. // var p = moveNode.getPosition(this.paperNode);
  477. // var dx = p.x - activity.point.x;
  478. // var dy = p.y - activity.point.y;
  479. // activity.activityMove(dx, dy, 0, 0, e);
  480. //
  481. // moveNode.dx = activity.point.x;
  482. // moveNode.dy = activity.point.y;
  483. // activity.activityMoveStart();
  484. //}else{
  485. // moveNode.setStyles({
  486. // "opacity":"1",
  487. // "background": "url("+this.path+this.options.style+"/gadget/stop.png) top left no-repeat",
  488. // });
  489. //}
  490. }.bind(this),
  491. "onLeave": function(dragging, inObj){
  492. moveNode.setStyles({
  493. "opacity":"1",
  494. "background": "url("+this.path+this.options.style+"/gadget/stop.png) top left no-repeat"
  495. });
  496. if (activity) activity.destroy();
  497. moveNode.dragMove = false;
  498. }.bind(this),
  499. "onDrag": function(e){
  500. if (moveNode.dragMove){
  501. var p = moveNode.getPosition(this.paperNode);
  502. var dx = p.x-moveNode.dx;
  503. var dy = p.y-moveNode.dy;
  504. activity.activityMove(dx, dy, 0, 0, e);
  505. }
  506. }.bind(this),
  507. "onDrop": function(dragging, inObj){
  508. //if (moveNode.dragMove){
  509. // activity.activityMoveEnd();
  510. //}
  511. }.bind(this),
  512. "onComplete": function(e){
  513. var p = moveNode.getPosition(this.paperNode);
  514. //var dx = p.x - activity.point.x;
  515. //var dy = p.y - activity.point.y;
  516. activity = this.process.createActivity(gadgetType, className, {"x": p.x, "y": p.y});
  517. if (activity) activity.selected();
  518. // activity.activityMoveStart();
  519. //moveNode.dragMove = true;
  520. // activity.activityMove(dx, dy, 0, 0, e);
  521. //moveNode.dx = activity.point.x;
  522. //moveNode.dy = activity.point.y;
  523. //activity.activityMoveStart();
  524. // activity.activityMoveEnd();
  525. moveNode.destroy();
  526. }.bind(this),
  527. "onCancel": function(dragging){
  528. if (activity) activity.destroy();
  529. moveNode.destroy();
  530. }.bind(this)
  531. });
  532. nodeDrag.start(e);
  533. // }
  534. },
  535. loadNodes: function(){
  536. this.gadgetAreaNode = new Element("div", {
  537. "styles": this.css.gadgetAreaNode
  538. }).inject(this.node);
  539. this.rightContentNode = new Element("div", {
  540. "styles": this.css.rightContentNode
  541. }).inject(this.node);
  542. this.toolbarNode = new Element("div", {
  543. "styles": this.css.toolbarNode
  544. }).inject(this.rightContentNode);
  545. this.paperAreaNode = new Element("div", {
  546. "styles": this.css.paperAreaNode
  547. }).inject(this.rightContentNode);
  548. this.paperNode = new Element("div", {
  549. "styles": this.css.paperNode
  550. }).inject(this.paperAreaNode);
  551. },
  552. loadToolbar: function(callback){
  553. this.getProcessToolbarHTML(function(toolbarNode){
  554. var spans = toolbarNode.getElements("span");
  555. spans.each(function(item, idx){
  556. var img = item.get("MWFButtonImage");
  557. if (img){
  558. item.set("MWFButtonImage", this.path+""+this.options.style+"/toolbarIcon/"+img);
  559. }
  560. }.bind(this));
  561. $(toolbarNode).inject(this.toolbarNode);
  562. MWF.require("MWF.widget.Toolbar", function(){
  563. this.processToolbar = new MWF.widget.Toolbar(toolbarNode, {"style": "Process"}, this);
  564. this.processToolbar.load();
  565. if (callback) callback();
  566. }.bind(this));
  567. var select = toolbarNode.getElement("select");
  568. if (select){
  569. select.addEvent("change", function(){
  570. this.process.setStyle(select.options[select.selectedIndex].value);
  571. }.bind(this));
  572. }
  573. this.processEditionNode = toolbarNode.getElement(".processEdition");
  574. this.processEditionInforNode = toolbarNode.getElement(".processEditionInfor");
  575. }.bind(this));
  576. },
  577. getProcessToolbarHTML: function(callback){
  578. var toolbarUrl = this.path+"processToolbars.html";
  579. var r = new Request.HTML({
  580. url: toolbarUrl,
  581. method: "get",
  582. onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript){
  583. var toolbarNode = responseTree[0];
  584. if (callback) callback(toolbarNode);
  585. }.bind(this),
  586. onFailure: function(xhr){
  587. this.notice("request processToolbars error: "+xhr.responseText, "error");
  588. }.bind(this)
  589. });
  590. r.send();
  591. },
  592. resizePaper: function(){
  593. var nodeSize = this.node.getSize();
  594. var toolbarSize = this.processToolbar.node.getSize();
  595. var y = nodeSize.y - toolbarSize.y;
  596. var marginTop = this.paperNode.getStyle("margin-top").toFloat();
  597. var marginBottom = this.paperNode.getStyle("margin-bottom").toFloat();
  598. y = y - marginTop - marginBottom;
  599. //this.paperAreaNode.setStyle("height", ""+y+"px");
  600. this.paperNode.setStyle("height", ""+y+"px");
  601. if (this.paper) this.paper.setSize("100%", "100%");
  602. if (this.process){
  603. if (this.process.panel){
  604. this.process.panel.modulePanel.container.position({
  605. relativeTo: this.paperNode,
  606. position: 'upperRight',
  607. edge: 'upperRight'
  608. });
  609. var size = this.process.panel.modulePanel.container.getSize();
  610. var pSize = this.paperNode.getSize();
  611. if (pSize.y<size.y){
  612. var height = (this.paperNode.getSize().y.toFloat())-6;
  613. this.process.panel.modulePanel.container.setStyle("height", ""+height+"px");
  614. this.process.panel.modulePanel.content.setStyle("height", this.process.panel.modulePanel.getContentHeight());
  615. this.process.panel.setPanelSize();
  616. }
  617. if (pSize.x<size.x){
  618. this.process.panel.modulePanel.container.setStyle("width", ""+pSize.x+"px");
  619. }
  620. if (this.process.panel.propertyPanel){
  621. this.process.panel.propertyPanel.container.position({
  622. relativeTo: this.paperNode,
  623. position: 'bottomRight',
  624. edge: 'bottomRight'
  625. });
  626. var size = this.process.panel.propertyPanel.container.getSize();
  627. var pSize = this.paperNode.getSize();
  628. if (pSize.y<size.y){
  629. var height = (this.paperNode.getSize().y.toFloat())-6;
  630. this.process.panel.propertyPanel.container.setStyle("height", ""+height+"px");
  631. this.process.panel.propertyPanel.content.setStyle("height", this.process.panel.propertyPanel.getContentHeight());
  632. this.process.panel.setPropertyPanelSize();
  633. }
  634. if (pSize.x<size.x){
  635. this.process.panel.propertyPanel.container.setStyle("width", ""+pSize.x+"px");
  636. }
  637. }
  638. }
  639. }
  640. },
  641. loadPaper: function(){
  642. MWFRaphael.load(function(){
  643. this.paperInNode = new Element("div", {"styles": this.css.paperInNode}).inject(this.paperNode);
  644. this.paper = Raphael(this.paperInNode, "100%", "99%");
  645. this.paper.container = this.paperNode;
  646. MWF.xDesktop.requireApp("process.ProcessDesigner", "Process", function(){
  647. this.process = new MWF.APPPD.Process(this.paper, this.processData, this, {
  648. "style":"flat",
  649. "onPostLoad": function(){
  650. this.fireEvent("postProcessLoad");
  651. }.bind(this)
  652. });
  653. this.process.load();
  654. }.bind(this));
  655. }.bind(this));
  656. },
  657. setToolBardisabled: function(type){
  658. switch (type){
  659. case "default":
  660. break;
  661. case "createRoute":
  662. break;
  663. case "decision":
  664. break;
  665. default:
  666. }
  667. },
  668. recordStatus: function(){
  669. debugger;
  670. return {"id": this.options.id};
  671. },
  672. saveProcess: function(){
  673. if (!this.process.process.name){
  674. this.notice(this.lp.notice.no_name, "error");
  675. return false;
  676. }
  677. this.process.save(function(){
  678. var name = this.process.process.name;
  679. this.setTitle(this.options.appTitle + "-"+name);
  680. this.options.desktopReload = true;
  681. this.options.id = this.process.process.id;
  682. }.bind(this));
  683. },
  684. saveNewProcess: function(b, e){
  685. //this.process.saveNew(e);
  686. },
  687. createManualActivity: function(){
  688. this.process.createManualActivity();
  689. },
  690. createConditionActivity: function(){
  691. this.process.createConditionActivity();
  692. },
  693. createAutoActivity: function(){
  694. this.process.createAutoActivity();
  695. },
  696. createSplitActivity: function(){
  697. this.process.createSplitActivity();
  698. },
  699. createMergeActivity: function(){
  700. this.process.createMergeActivity();
  701. },
  702. createEmbedActivity: function(){
  703. this.process.createEmbedActivity();
  704. },
  705. createInvokesActivity: function(){
  706. this.process.createInvokesActivity();
  707. },
  708. createBeginActivity: function(){
  709. this.process.createBeginActivity();
  710. },
  711. createEndActivity: function(){
  712. this.process.createEndActivity();
  713. },
  714. createRoute: function(){
  715. this.process.createRoute();
  716. },
  717. processExplode: function(){
  718. this.process.explode();
  719. },
  720. saveNewEdition: function(el, e){
  721. this.process.saveNewEdition(e);
  722. },
  723. listEdition: function(el, e){
  724. this.process.listEdition(e);
  725. },
  726. onPostClose: function() {
  727. if (this.process) {
  728. this.process.activitys.each(function (activity) {
  729. activity.routes.each(function (route) {
  730. MWF.release(route);
  731. });
  732. MWF.release(activity);
  733. });
  734. MWF.release(this.process);
  735. }
  736. }
  737. });