Guest User

Untitled

a guest
Jul 19th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.63 KB | None | 0 0
  1. function loadViz(){
  2.  
  3. var now = moment().minutes(0).seconds(0).milliseconds(0);
  4.  
  5.  
  6. // create a dataset with items
  7. var items = new vis.DataSet();
  8. var groups = new vis.DataSet();
  9.  
  10. var inn = top.aras.newIOMInnovator();
  11. var aras = parent.aras || parent.parent.aras;
  12. var topItem = parent.thisItem;
  13.  
  14. // retrieve top node ID
  15. var topItemId = topItem.getID();
  16. var simData = inn.getItemById("Ansys_SimData",topItem.getProperty("simulationdata",""));
  17. var simDataConfigId = simData.getProperty("config_id");
  18.  
  19. if (simDataConfigId !== ""){
  20.  
  21. const start = now.clone().add(Math.random() * 200, 'hours');
  22.  
  23. let simContainers = topItem.newItem("Ansys_SimData","get");
  24. simContainers.setProperty("config_id",simDataConfigId);
  25. simContainers.setAttribute("orderBy","major_rev");
  26. simContainers.setPropertyCondition("id","is not null");
  27. simContainers = simContainers.apply();
  28.  
  29.  
  30. var simContainer = simContainers.getItemByIndex(simContainers.getItemCount()-1);
  31. var wf = inn.newItem("Workflow","get");
  32. wf.setProperty("source_id",simContainer.getID());
  33. var wfp = wf.createRelatedItem("Workflow Process","get");
  34. var activities = wfp.createRelationship("Workflow Process Activity","get");
  35. activities.setAttribute("orderBy","name");
  36. //activities.setAttribute("where","is_auto = '0'");
  37. wf = wf.apply();
  38.  
  39. var trailingDate;
  40.  
  41. var processes= wf.getItemsByXPath(".//Item[@type='Workflow Process']");
  42.  
  43. for (var j=0; j < processes.getItemCount();j++){
  44. var pro = processes.getItemByIndex(j);
  45.  
  46. var activities = pro.getItemsByXPath(".//Item[@type='Activity']");
  47.  
  48. let groupNames = [];
  49.  
  50.  
  51. ////////////////////////////////////////////////
  52. // reorder Activities prior to send to dataset
  53. ////////////////////////////////////////////////
  54. let ProcGroup = {
  55. id: ' Simulation Execution (' + j+')',
  56. order:' Simulation Execution (' + j+')',
  57. content: ' Simulation Execution (' + j+')',
  58. nestedGroups : []
  59. }
  60. let ordActivities = [];
  61. for (var i =0;i<activities.getItemCount();i++){
  62.  
  63. var act = activities.getItemByIndex(i);
  64. if (act.getProperty("is_auto","1")==="0"){
  65. let ordActivity = {
  66.  
  67. name :act.getProperty("name",""),
  68. state : act.getProperty("state",""),
  69. aId : act.getID(),
  70. id : act.getProperty("name","")+ ' (' + j+')',
  71. createdOn : act.getProperty("created_on",""),
  72. activeDate : act.getProperty("active_date",""),
  73. closedDate : act.getProperty("closed_date",""),
  74. expectedDuration : act.getProperty("expected_duration","1")
  75. }
  76. switch (ordActivity.state){
  77. case "Closed":
  78. ordActivity.mainSort = 1;
  79. break;
  80. case "Active":
  81. ordActivity.mainSort = 2;
  82. break;
  83. case "Pending":
  84. ordActivity.mainSort = 3;
  85. break;
  86. case "":
  87. break;
  88. }
  89. ordActivities.push(ordActivity);
  90. }
  91. }
  92.  
  93. ordActivities = _.sortBy(ordActivities, ['mainSort', 'name']);
  94.  
  95. for (i =0;i<ordActivities.length;i++){
  96. var act = ordActivities[i];
  97. if (_.indexOf(groupNames,act.name)=== -1){
  98. groupNames.push(act.name);
  99. groups.add({
  100. id: act.name+ ' (' + j+')',
  101. order:act.name,
  102. content: act.name,
  103. });
  104. ProcGroup.nestedGroups.push( act.name+ ' (' + j+')');
  105. }
  106. var item ={
  107. id: act.aId+'-'+i,
  108. group: act.name+ ' (' + j+')',
  109. content: act.name
  110. };
  111.  
  112. // test if is active
  113. var expectedDuration = parseInt(act.expectedDuration);
  114. switch (act.state){
  115. case "Active":
  116. item.start = moment(act.activeDate);
  117. item.end = item.start.clone().add(expectedDuration, 'd');
  118. trailingDate = item.end.format();
  119. item.className = "active";
  120. item.type = "range";
  121. break;
  122. case "Closed":
  123. item.start = moment(act.activeDate);
  124. item.end = moment(act.closedDate);
  125. trailingDate = item.end.format();
  126. item.className = "closed";
  127. item.type = "range";
  128. break;
  129. case "Pending":
  130. if (trailingDate) {
  131. item.start = moment(trailingDate);
  132. }else {
  133. item.start = moment(act.createdOn);
  134. }
  135. item.end = item.start.clone().add(expectedDuration, 'd');
  136. trailingDate = item.end.format();
  137. item.className = "pending";
  138. item.type = "range";
  139. break;
  140. case "":
  141. break;
  142. }
  143. items.add(item);
  144. }
  145. groups.add(ProcGroup);
  146. }
  147.  
  148. }
  149.  
  150.  
  151. // create visualization
  152. const container = document.getElementById('visualization');
  153. const content = container.innerHTML;
  154. container.innerHTML= "";
  155. const options = {
  156. groupOrder:'order'
  157. };
  158.  
  159. const timeline = new vis.Timeline(container);
  160. timeline.setOptions(options);
  161. timeline.setGroups(groups);
  162. timeline.setItems(items);
  163. }
Add Comment
Please, Sign In to add comment