EditionList.js 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572
  1. MWF.xApplication.process.ProcessDesigner.widget = MWF.xApplication.process.ProcessDesigner.widget || {};
  2. MWF.xApplication.process.ProcessDesigner.widget.EditionList = new Class({
  3. Implements: [Options, Events],
  4. Extends: MWF.widget.Common,
  5. options: {
  6. "style": "default"
  7. },
  8. initialize: function(application, edition, process, options){
  9. this.setOptions(options);
  10. this.application = application;
  11. this.edition = edition;
  12. this.process = process;
  13. this.path = "/x_component_process_ProcessDesigner/widget/$EditionList/";
  14. this.cssPath = "/x_component_process_ProcessDesigner/widget/$EditionList/"+this.options.style+"/css.wcss";
  15. this._loadCss();
  16. this.currentItem = null;
  17. this.items = [];
  18. this.lp = MWF.xApplication.process.ProcessDesigner.LP;
  19. },
  20. load: function(){
  21. o2.Actions.load("x_processplatform_assemble_designer").ProcessAction.listEdition(this.application, this.edition, function(json){
  22. this.editionList = json.data;
  23. this.listEditionDlg();
  24. }.bind(this));
  25. this.node = new Element("div", {"styles": this.css.node});
  26. this.leftNode = new Element("div", {"styles": this.css.leftNode}).inject(this.node);
  27. this.rightNode = new Element("div", {"styles": this.css.rightNode}).inject(this.node);
  28. this.listNode = new Element("div", {"styles": this.css.listNode}).inject(this.leftNode);
  29. this.resizeNode = new Element("div", {"styles": this.css.resizeNode}).inject(this.rightNode);
  30. this.diffNode = new Element("ul", {"styles": this.css.diffNode}).inject(this.rightNode);
  31. this.createListTable();
  32. this.show();
  33. },
  34. createListTable: function(){
  35. var tableHtml = "<table width='100%' cellspacing='0' cellpadding='3' style='margin-top: 1px'><tr>" +
  36. "<th></th>" +
  37. "<th>"+this.lp.edition_list.number+"</th>" +
  38. "<th>"+this.lp.edition_list.update+"</th>" +
  39. "<th>"+this.lp.edition_list.updatePerson+"</th>" +
  40. "<th>"+this.lp.edition_list.enabled+"</th>" +
  41. "<th>"+this.lp.edition_list.description+"</th>" +
  42. "<th>"+this.lp.edition_list.action+"</th>" +
  43. "</tr></table>";
  44. this.listNode.set("html", tableHtml);
  45. this.listTable = this.listNode.getElement("table");
  46. this.listTable.setStyles(this.css.listTable);
  47. var ths = this.listNode.getElements("th").setStyles(this.css.listTable_th);
  48. ths[ths.length-1].setStyles(this.css.listTable_td_right);
  49. },
  50. reloadList: function(){
  51. debugger;
  52. this.items = [];
  53. this.listNode.empty();
  54. this.diffNode.empty();
  55. this.createListTable();
  56. o2.Actions.load("x_processplatform_assemble_designer").ProcessAction.listEdition(this.application, this.edition, function(json){
  57. this.editionList = json.data;
  58. this.listEditionDlg();
  59. }.bind(this));
  60. },
  61. show: function(){
  62. if (!this.dlg){
  63. this.dlg = o2.DL.open({
  64. "title": this.lp.edition_list.editionList,
  65. "content": this.node,
  66. "offset": {"y": -100},
  67. "isMax": true,
  68. "width": 900,
  69. "height": 500,
  70. "buttonList": [
  71. {
  72. "text": this.lp.edition_list.open,
  73. "action": function(){ this.openCurrentEdition(); this.dlg.close();}.bind(this),
  74. "title": this.lp.edition_list.openInfor
  75. },
  76. {
  77. "type": "cancel",
  78. "text": MWF.xApplication.process.ProcessDesigner.LP.close,
  79. "action": function(){ this.close(); }
  80. }
  81. ],
  82. "onPostShow": function(){
  83. this.setEvent();
  84. }.bind(this)
  85. });
  86. }
  87. },
  88. listEditionDlg: function(){
  89. //for (var i=0; i<10; i++){
  90. this.editionList.each(function(edition){
  91. var item = new MWF.xApplication.process.ProcessDesigner.widget.EditionList.Item(this, edition);
  92. this.items.push(item);
  93. }.bind(this));
  94. //}
  95. },
  96. setEvent: function(){
  97. var buttons = this.dlg.button.getElements("input");
  98. this.openCurrentEditionButton = buttons[0];
  99. var display = this.openCurrentEditionButton.getStyle("display");
  100. this.openCurrentEditionButton.store("dsp", display);
  101. this.openCurrentEditionButton.setStyle("display", "none");
  102. var size, leftSize;
  103. var drag = new Drag(this.resizeNode, {
  104. "onSnap": function(el){
  105. el.setStyle("background", "#cccccc");
  106. },
  107. "onStart": function(el, e){
  108. size = this.node.getSize();
  109. leftSize = this.leftNode.getSize();
  110. drag.x = e.event.x;
  111. }.bind(this),
  112. "onComplete": function(el){
  113. el.setStyle("background-color", "transparent");
  114. },
  115. "onDrag": function(el, e){
  116. var x = drag.x - e.event.x;
  117. var w = leftSize.x-x;
  118. w = (w/size.x)*100;
  119. if (w<30) w = 30;
  120. if (w>70) w = 70;
  121. this.leftNode.setStyle("width", ""+w+"%");
  122. w = 100-w;
  123. this.rightNode.setStyle("width", ""+w+"%");
  124. }.bind(this)
  125. });
  126. },
  127. openCurrentEdition: function(){
  128. if (this.currentItem && this.currentItem.edition.fullProcess.id != this.process.process.id){
  129. this.process.save(function(){
  130. this.process.reload(this.currentItem.edition.fullProcess);
  131. }.bind(this));
  132. }
  133. },
  134. checkButtonDisable: function(){
  135. if (this.currentItem && this.currentItem.edition.fullProcess.id != this.process.process.id){
  136. this.openCurrentEditionButton.setStyle("display", this.openCurrentEditionButton.retrieve("dsp"));
  137. }else{
  138. this.openCurrentEditionButton.setStyle("display", "none");
  139. }
  140. }
  141. });
  142. MWF.xApplication.process.ProcessDesigner.widget.EditionList.Item = new Class({
  143. initialize: function(list, edition){
  144. this.list = list;
  145. this.edition = edition;
  146. this.table = this.list.listTable;
  147. this.css = this.list.css;
  148. this.lp = this.list.lp;
  149. this.isCurrentEdition = (this.list.process.process.id == this.edition.id);
  150. this.load();
  151. },
  152. load: function(){
  153. this.node = new Element("tr").inject(this.table);
  154. var html = "<td></td>" +
  155. "<td>"+this.edition.editionNumber+"</td>" +
  156. "<td>"+this.edition.updateTime+"</td>" +
  157. "<td>"+o2.name.cn(this.edition.lastUpdatePerson)+"</td>" +
  158. "<td>"+(this.edition.editionEnable ? this.lp.edition_list.yes : this.lp.edition_list.no)+"</td>"+
  159. "<td>"+(this.edition.editionDes || "")+"</td>"+
  160. "<td></td>";
  161. this.node.set("html", html);
  162. var tds = this.node.getElements("td").setStyles((this.isCurrentEdition) ? this.css.listTable_td_current : this.css.listTable_td);
  163. tds[tds.length-1].setStyles(this.css.listTable_td_right);
  164. this.iconTd = tds[0].setStyles(this.css.listTable_td_icon);
  165. this.selectIconNode = new Element("div", {"styles": this.css.unselectIcon}).inject(this.iconTd);
  166. this.actionTd = tds[tds.length-1].setStyles(this.css.listTable_td_action);
  167. this.createActions();
  168. this.setEvent();
  169. },
  170. createActions: function(){
  171. if (!this.edition.editionEnable){
  172. this.enableAction = new Element("div.mainColor_bg", {"styles": this.css.enableAction, "text": this.lp.edition_list.enable}).inject(this.actionTd);
  173. var text = this.lp.edition_list.enableInfor.replace(/{v}/, this.edition.editionNumber);
  174. this.enableAction.set("title", text);
  175. }
  176. if (!this.isCurrentEdition && !this.edition.editionEnable){
  177. this.delAction = new Element("div", {"styles": this.css.delAction, "text": this.lp.edition_list.del}).inject(this.actionTd);
  178. text = this.lp.edition_list.delInfor.replace(/{v}/, this.edition.editionNumber);
  179. this.delAction.set("title", text);
  180. }
  181. },
  182. setEvent: function(){
  183. this.node.addEvent("click", function(){
  184. this.selected();
  185. }.bind(this));
  186. if (this.enableAction) this.enableAction.addEvents({
  187. "click": function(e){ this.enable(e); e.stopPropagation();}.bind(this),
  188. });
  189. if (this.delAction) this.delAction.addEvents({
  190. "click": function(e){ this.del(e); e.stopPropagation();}.bind(this),
  191. });
  192. },
  193. enable: function(e){
  194. var actions = o2.Actions.load("x_processplatform_assemble_designer").ProcessAction;
  195. var _self = this;
  196. this.list.process.designer.confirm("infor", e, this.lp.edition_list.enabledProcessTitle, {"html": this.lp.edition_list.enabledProcessInfor}, 600, 120, function(){
  197. _self.list.process.save(function(){
  198. actions.enableProcess(this.edition.id, function(json){
  199. this.list.reloadList();
  200. actions.get(this.list.process.process.id, function(processJson){
  201. this.list.process.reload(processJson.data);
  202. }.bind(this));
  203. }.bind(this));
  204. }.bind(_self));
  205. this.close();
  206. },function(){this.close();})
  207. },
  208. del: function(e){
  209. var _self = this;
  210. var infor = this.lp.edition_list.deleteEditionInfor.replace(/{v}/g, this.edition.editionNumber);
  211. this.list.process.designer.confirm("warn", e, this.lp.edition_list.deleteEditionTitle, infor, 460, 120, function(){
  212. _self.deleteEdition();
  213. this.close();
  214. }, function(){
  215. this.close();
  216. });
  217. },
  218. deleteEdition: function(callback){
  219. o2.Actions.load("x_processplatform_assemble_designer").ProcessAction["delete"](this.edition.id, "true", function(){
  220. this.unSelected();
  221. this.node.destroy();
  222. if (callback) callback();
  223. }.bind(this));
  224. },
  225. selected: function(){
  226. if (this.list.currentItem) this.list.currentItem.unSelected();
  227. this.node.setStyles(this.css.itemTr_selected).addClass("lightColor_bg");
  228. this.selectIconNode.setStyles(this.css.selectIcon).addClass("mainColor_bg");
  229. this.list.currentItem = this;
  230. this.checkDiff();
  231. this.list.checkButtonDisable();
  232. },
  233. unSelected: function(){
  234. this.node.setStyles(this.css.itemTr).removeClass("lightColor_bg");
  235. this.selectIconNode.setStyles(this.css.unselectIcon).removeClass("mainColor_bg");
  236. this.list.currentItem = null;
  237. this.list.diffNode.empty();
  238. },
  239. checkDiff: function(){
  240. this.getFullProcess(function(){
  241. var prevItem = this.getPrevItem();
  242. if (prevItem){
  243. prevItem.getFullProcess();
  244. var diffs = this.getDiffWithProcess(prevItem.edition.fullProcess);
  245. if (diffs.length){
  246. this.appendDiffLine(this.lp.edition_list.hasDiffs);
  247. //for (var i=0; i<10; i++){
  248. diffs.each(function(v){
  249. this.appendDiffLine(v);
  250. }.bind(this));
  251. //}
  252. }else{
  253. this.appendDiffLine(this.lp.edition_list.noDiffs);
  254. }
  255. }else{
  256. this.appendDiffLine(this.lp.edition_list.newProcess);
  257. this.appendDiffLine(this.getNewProcessInfor());
  258. }
  259. }.bind(this));
  260. },
  261. appendDiffLine: function(text){
  262. new Element("li", {"styles": this.css.diffLine, "html": text}).inject(this.list.diffNode);
  263. },
  264. getDiffWithProcess: function(process){
  265. var diffs = [];
  266. var notDiffFields = ["id", "editionName", "editionEnable", "editionNumber", "createTime", "updateTime", "creatorPerson", "lastUpdateTime", "lastUpdatePerson"];
  267. Object.each(process, function(v, k){
  268. var t = o2.typeOf(v);
  269. if (t!="array" && t!="object"){
  270. if (notDiffFields.indexOf(k)==-1){
  271. if (this.edition.fullProcess[k]!=v){
  272. diffs.push(this.getModifyFieldDiffInfor("modifyProcess", v, k, this.edition.fullProcess[k]));
  273. }
  274. }
  275. }else if (k=="controllerList" || k=="startableIdentityList" || k=="startableUnitList"){
  276. var newArrValue = JSON.stringify(o2.name.cns(this.edition.fullProcess[k]));
  277. var oldArrValue = JSON.stringify(o2.name.cns(v));
  278. if (newArrValue!=oldArrValue){
  279. if (this.edition.fullProcess[k]!=v){
  280. diffs.push(this.getModifyFieldDiffInfor("modifyProcess", oldArrValue, k, newArrValue));
  281. }
  282. }
  283. }
  284. }.bind(this));
  285. var diffActivitys = this.getAllDiffActivitys(process);
  286. diffs = diffs.concat(this.getDiffActivityListAddDelete(diffActivitys));
  287. diffs = diffs.concat(this.getDiffActivityListModify(diffActivitys, process));
  288. return diffs;
  289. },
  290. getModifyFieldDiffInfor: function(lp, v, k, nv, next, act, rname){
  291. var infor = this.lp.edition_list[lp];
  292. var oldV = (v.length>60) ? v.substring(0,60)+" ..." : v;
  293. var newV = (nv.length>60) ? nv.substring(0,60)+" ..." : nv;
  294. infor = infor.replace(/\{field\}/, k).replace(/\{old\}/, oldV).replace(/\{new\}/, newV).replace(/\{next\}/, next).replace(/\{name\}/, act).replace(/\{rname\}/, rname);
  295. return infor;
  296. },
  297. getAllDiffActivitys: function(process){
  298. var diffActivitys ={ "addActivitys": [], "deleteActivitys": [], "sameActivitys": [] };
  299. this.concatDiffActivitys(diffActivitys, this.getDiffActivitys([process.begin], [this.edition.fullProcess.begin]));
  300. this.concatDiffActivitys(diffActivitys, this.getDiffActivitys(process.manualList, this.edition.fullProcess.manualList));
  301. this.concatDiffActivitys(diffActivitys, this.getDiffActivitys(process.conditionList, this.edition.fullProcess.conditionList));
  302. this.concatDiffActivitys(diffActivitys, this.getDiffActivitys(process.choiceList, this.edition.fullProcess.choiceList));
  303. this.concatDiffActivitys(diffActivitys, this.getDiffActivitys(process.splitList, this.edition.fullProcess.splitList));
  304. this.concatDiffActivitys(diffActivitys, this.getDiffActivitys(process.parallelList, this.edition.fullProcess.parallelList));
  305. this.concatDiffActivitys(diffActivitys, this.getDiffActivitys(process.mergeList, this.edition.fullProcess.mergeList));
  306. this.concatDiffActivitys(diffActivitys, this.getDiffActivitys(process.embedList, this.edition.fullProcess.embedList));
  307. this.concatDiffActivitys(diffActivitys, this.getDiffActivitys(process.delayList, this.edition.fullProcess.delayList));
  308. this.concatDiffActivitys(diffActivitys, this.getDiffActivitys(process.invokeList, this.edition.fullProcess.invokeList));
  309. this.concatDiffActivitys(diffActivitys, this.getDiffActivitys(process.serviceList, this.edition.fullProcess.serviceList));
  310. this.concatDiffActivitys(diffActivitys, this.getDiffActivitys(process.agentList, this.edition.fullProcess.agentList));
  311. this.concatDiffActivitys(diffActivitys, this.getDiffActivitys(process.messageList, this.edition.fullProcess.messageList));
  312. this.concatDiffActivitys(diffActivitys, this.getDiffActivitys(process.cancelList, this.edition.fullProcess.cancelList));
  313. this.concatDiffActivitys(diffActivitys, this.getDiffActivitys(process.endList, this.edition.fullProcess.endList));
  314. return diffActivitys;
  315. },
  316. concatDiffActivitys:function(diffActivitys, diffActivity){
  317. diffActivitys.addActivitys = diffActivitys.addActivitys.concat(diffActivity.addActivitys);
  318. diffActivitys.deleteActivitys = diffActivitys.deleteActivitys.concat(diffActivity.deleteActivitys);
  319. diffActivitys.sameActivitys = diffActivitys.sameActivitys.concat(diffActivity.sameActivitys);
  320. },
  321. getDiffActivitys: function(prevList, currentList){
  322. prevList = prevList || [];
  323. currentList = currentList || [];
  324. var deleteActivitys = [];
  325. var addActivitys = [];
  326. var sameActivitys = [];
  327. deleteActivitys = prevList.filter(function(item){
  328. var i = currentList.findIndex(function(n){
  329. return (item.edition==n.edition);
  330. });
  331. if (i!=-1){
  332. sameActivitys.push({"prev": item, "current": currentList[i]});
  333. return false;
  334. }
  335. return true;
  336. });
  337. addActivitys = currentList.filter(function(item){
  338. var i = prevList.findIndex(function(n){
  339. return (item.edition==n.edition);
  340. });
  341. return (i==-1);
  342. });
  343. return {"addActivitys": addActivitys, "deleteActivitys": deleteActivitys, "sameActivitys": sameActivitys};
  344. },
  345. getDiffActivityListAddDelete: function(diffActivitys){
  346. var diffs = [];
  347. diffActivitys.addActivitys.each(function(n){
  348. var infor = this.lp.edition_list.addActivity;
  349. infor = infor.replace(/\{name\}/, n.name);
  350. diffs.push(infor);
  351. }.bind(this));
  352. diffActivitys.deleteActivitys.each(function(n){
  353. var infor = this.lp.edition_list.deleteActivity;
  354. infor = infor.replace(/\{name\}/, n.name);
  355. diffs.push(infor);
  356. }.bind(this));
  357. return diffs;
  358. },
  359. getDiffActivityListModify: function(diffActivitys, process){
  360. var diffs = [];
  361. var notDiffFields = ["id", "process", "edition", "createTime", "updateTime", "routeList", "route", "position"];
  362. var unitFields = [
  363. "readIdentityList", "readUnitList", "readGroupList", "readDataPathList",
  364. "reviewIdentityList", "reviewUnitList", "reviewIdentityList", "reviewUnitList",
  365. "taskIdentityList", "taskUnitList", "taskGroupList", "taskDataPathList"
  366. ];
  367. diffActivitys.sameActivitys.each(function(activity){
  368. var cur = activity.current;
  369. Object.each(activity.prev, function(v, k){
  370. var t = o2.typeOf(v);
  371. if (k=="routeList" || k=="route") {
  372. var prevRouteList = this.getProcessRoutes(((k == "route") ? [v] : v), process);
  373. var curRouteList = this.getProcessRoutes(((k == "route") ? [cur[k]] : cur[k]), this.edition.fullProcess);
  374. var diffRoutes = this.getDiffRoutes(prevRouteList, curRouteList)
  375. diffs = diffs.concat(this.getDiffRouteListAddDelete(diffRoutes, cur));
  376. diffs = diffs.concat(this.getDiffRouteListModify(diffRoutes, cur, process));
  377. }else if (t!="array" && t!="object"){
  378. if (notDiffFields.indexOf(k)==-1){
  379. if (cur[k]!=v){
  380. diffs.push(this.getModifyFieldDiffInfor("modifyActivity", v, k, cur[k], "", cur.name));
  381. }
  382. }
  383. }else if (unitFields.indexOf(k)!==-1){
  384. var newArrValue = JSON.stringify(o2.name.cns(cur[k]));
  385. var oldArrValue = JSON.stringify(o2.name.cns(v));
  386. if (newArrValue!=oldArrValue){
  387. if (this.edition.fullProcess[k]!=v){
  388. diffs.push(this.getModifyFieldDiffInfor("modifyActivity", oldArrValue, k, newArrValue, "", cur.name));
  389. }
  390. }
  391. }
  392. }.bind(this));
  393. }.bind(this));
  394. return diffs;
  395. },
  396. getDiffRoutes: function(prevRouteList, curRouteList){
  397. prevRouteList = prevRouteList || [];
  398. curRouteList = curRouteList || [];
  399. var deleteRoutes = [];
  400. var addRoutes = [];
  401. var sameRoutes = [];
  402. deleteRoutes = prevRouteList.filter(function(item){
  403. var i = curRouteList.findIndex(function(n){
  404. return (item.edition==n.edition);
  405. });
  406. if (i!=-1){
  407. sameRoutes.push({"prev": item, "current": curRouteList[i]});
  408. return false;
  409. }
  410. return true;
  411. });
  412. addRoutes = curRouteList.filter(function(item){
  413. var i = prevRouteList.findIndex(function(n){
  414. return (item.edition==n.edition);
  415. });
  416. return (i==-1);
  417. });
  418. return {"addRoutes": addRoutes, "deleteRoutes": deleteRoutes, "sameRoutes": sameRoutes};
  419. },
  420. getDiffRouteListAddDelete: function(diffRoutes, activity, toActivity){
  421. var diffs = [];
  422. diffRoutes.addRoutes.each(function(n){
  423. var infor = this.lp.edition_list.modifyActivity_addRoute;
  424. infor = infor.replace(/\{name\}/, activity.name).replace(/\{next\}/, n.toActivity.name).replace(/\{rname\}/, n.name);
  425. diffs.push(infor);
  426. }.bind(this));
  427. diffRoutes.deleteRoutes.each(function(n){
  428. var infor = this.lp.edition_list.modifyActivity_deleteRoute;
  429. infor = infor.replace(/\{name\}/, activity.name).replace(/\{next\}/, n.toActivity.name).replace(/\{rname\}/, n.name);
  430. diffs.push(infor);
  431. }.bind(this));
  432. return diffs;
  433. },
  434. getDiffRouteListModify: function(diffRoutes, curActivity, process){
  435. var diffs = [];
  436. var notDiffFields = ["id", "process", "edition", "createTime", "updateTime", "activityType", "activity"];
  437. diffRoutes.sameRoutes.each(function(route){
  438. var cur = route.current;
  439. Object.each(route.prev, function(v, k){
  440. var t = o2.typeOf(v);
  441. if (k=="activity"){
  442. var newToActivity = this.getProcessActivity(cur[k], cur["activityType"], this.edition.fullProcess);
  443. var oldToActivity = this.getProcessActivity(v, route.prev["activityType"], process);
  444. if ((newToActivity && oldToActivity) && newToActivity.edition!=oldToActivity.edition){
  445. var infor = this.lp.edition_list.modifyActivity_modifyRouteNext;
  446. infor = infor.replace(/\{name\}/, curActivity.name).replace(/\{oldnext\}/, oldToActivity.name).replace(/\{newnext\}/, newToActivity.name).replace(/\{rname\}/, cur.name);
  447. diffs.push(infor);
  448. }
  449. }else if (t!="array" && t!="object"){
  450. if (notDiffFields.indexOf(k)==-1){
  451. if (cur[k]!=v){
  452. var toActivity = this.getProcessActivity(cur["activity"], cur["activityType"], this.edition.fullProcess) || {};
  453. diffs.push(this.getModifyFieldDiffInfor("modifyActivity_modifyRouteField", v, k, cur[k], (toActivity.name || ""), curActivity.name, cur.name));
  454. }
  455. }
  456. }
  457. }.bind(this));
  458. }.bind(this));
  459. return diffs;
  460. },
  461. getProcessRoutes: function(idList, process){
  462. var routes = [];
  463. idList.each(function(id){
  464. var route = process.routeList.find(function(r){ return id== r.id;});
  465. if (route){
  466. route.toActivity = this.getProcessActivity(route.activity, route.activityType, process);
  467. routes.push(route);
  468. }
  469. }.bind(this));
  470. return routes;
  471. },
  472. getProcessActivity: function(id, tp, process){
  473. return process[tp+"List"].find(function(a){ return id== a.id;})
  474. },
  475. //
  476. // getDiffActivityCount: function(prevList, currentList){
  477. // var diffs = [];
  478. // var prevItems = prevList.map(function(item){ return {"name": item.name, "id": item.edition}; });
  479. // var currentItems = currentList.map(function(item){ return{"name": item.name, "id": item.edition}; });
  480. //
  481. // var deleteItems = prevItems.filter(function(item){
  482. // var i = currentItems.findIndex(function(n){
  483. // return (item.id==n.id);
  484. // });
  485. // if (i!=-1){
  486. // currentItems.splice(i, 1);
  487. // return false;
  488. // }
  489. // return true;
  490. // });
  491. // currentItems.each(function(n){
  492. // var infor = this.lp.edition_list.addActivity;
  493. // infor = infor.replace(/\{name\}/, n.name);
  494. // diffs.push(infor);
  495. // }.bind(this));
  496. // deleteItems.each(function(n){
  497. // var infor = this.lp.edition_list.deleteActivity;
  498. // infor = infor.replace(/\{name\}/, n.name);
  499. // diffs.push(infor);
  500. // }.bind(this));
  501. // return diffs;
  502. // },
  503. getNewProcessInfor: function(){
  504. //this.getFullProcess(function(){
  505. var process = this.edition.fullProcess;
  506. var activityInfor = "";
  507. var an = this.lp.edition_list.an;
  508. activityInfor = "1 "+an+this.lp.menu.newActivityType.begin;
  509. if (process.endList && process.endList.length) activityInfor += ", "+process.endList.length + " "+an +this.lp.menu.newActivityType.end;
  510. if (process.agentList && process.agentList.length) activityInfor += ", "+process.agentList.length + " "+an +this.lp.menu.newActivityType.agent;
  511. if (process.manualList && process.manualList.length) activityInfor += ", "+process.manualList.length + " "+an +this.lp.menu.newActivityType.manual;
  512. if (process.conditionList && process.conditionList.length) activityInfor += ", "+process.conditionList.length + " "+an +this.lp.menu.newActivityType.condition;
  513. if (process.choiceList && process.choiceList.length) activityInfor += ", "+process.choiceList.length + " "+an +this.lp.menu.newActivityType.choice;
  514. if (process.parallelList && process.parallelList.length) activityInfor += ", "+process.parallelList.length + " "+an +this.lp.menu.newActivityType.parallel;
  515. if (process.splitList && process.splitList.length) activityInfor += ", "+process.splitList.length + " "+an +this.lp.menu.newActivityType.split;
  516. if (process.mergeList && process.mergeList.length) activityInfor += ", "+process.mergeList.length + " "+an +this.lp.menu.newActivityType.merge;
  517. if (process.embedList && process.embedList.length) activityInfor += ", "+process.embedList.length + " "+an +this.lp.menu.newActivityType.embed;
  518. if (process.invokeList && process.invokeList.length) activityInfor += ", "+process.invokeList.length + " "+an +this.lp.menu.newActivityType.invoke;
  519. if (process.cancelList && process.cancelList.length) activityInfor += ", "+process.cancelList.length + " "+an +this.lp.menu.newActivityType.cancel;
  520. if (process.delayList && process.delayList.length) activityInfor += ", "+process.delayList.length + " "+an +this.lp.menu.newActivityType.delay;
  521. if (process.messageList && process.messageList.length) activityInfor += ", "+process.messageList.length + " "+an +this.lp.menu.newActivityType.message;
  522. if (process.serviceList && process.serviceList.length) activityInfor += ", "+process.serviceList.length + " "+an +this.lp.menu.newActivityType.service;
  523. return activityInfor;
  524. //}.bind(this));
  525. },
  526. getFullProcess: function(callback, async){
  527. if (this.edition.fullProcess){
  528. if (callback) callback();
  529. }else{
  530. var asyncGet = !!async;
  531. o2.Actions.load("x_processplatform_assemble_designer").ProcessAction.get(this.edition.id, function(json){
  532. this.edition.fullProcess = json.data;
  533. if (callback) callback();
  534. }.bind(this), null, asyncGet);
  535. }
  536. },
  537. getPrevItem: function(){
  538. var idx = this.list.items.indexOf(this);
  539. idx++;
  540. if (idx<this.list.items.length) return this.list.items[idx];
  541. return null;
  542. }
  543. });