EditionList.js 28 KB

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