cpee 2.1.92 → 2.1.95

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (296) hide show
  1. checksums.yaml +4 -4
  2. data/cockpit/css/{resources-label.css → extended_columns-label.css} +4 -0
  3. data/cockpit/css/ui.css +6 -5
  4. data/cockpit/css/wfadaptor.css +27 -105
  5. data/cockpit/david.html +292 -0
  6. data/cockpit/edit.html +16 -7
  7. data/cockpit/graph.html +3 -3
  8. data/cockpit/index.html +15 -7
  9. data/cockpit/js/details.js +7 -0
  10. data/cockpit/js/extended_columns.js +233 -0
  11. data/cockpit/js/instance.js +45 -167
  12. data/cockpit/js/wfadaptor.js +138 -94
  13. data/cockpit/llm.html +3 -3
  14. data/cockpit/llm_alternative.html +3 -3
  15. data/cockpit/model.html +2 -2
  16. data/cockpit/only_llm.html +19 -12
  17. data/cockpit/templates/Coopis 2010.xml +11 -4
  18. data/cockpit/templates/Frames.xml +210 -55
  19. data/cockpit/templates/Track Test.xml +1 -1
  20. data/cockpit/themes/base.js +16 -13
  21. data/cockpit/themes/control/rngs/call.rng +9 -0
  22. data/cockpit/themes/control/rngs/callmanipulate.rng +10 -1
  23. data/cockpit/themes/control/rngs/loop.rng +7 -0
  24. data/cockpit/themes/control/rngs/manipulate.rng +8 -0
  25. data/cockpit/themes/control/rngs/start.rng +1 -0
  26. data/cockpit/themes/control/symbols/arrow.svg +1 -1
  27. data/cockpit/themes/control/symbols/callmanipulate.svg +1 -1
  28. data/cockpit/themes/control/symbols/callmanipulate_sensor.svg +2 -1
  29. data/cockpit/themes/control/symbols/callmanipulate_sensor_signal.svg +1 -1
  30. data/cockpit/themes/control/symbols/callmanipulate_signal.svg +1 -1
  31. data/cockpit/themes/control/symbols/critical.svg +3 -2
  32. data/cockpit/themes/control/symbols/delete.svg +2 -2
  33. data/cockpit/themes/control/symbols/end.svg +1 -1
  34. data/cockpit/themes/control/symbols/manipulate.svg +2 -2
  35. data/cockpit/themes/control/symbols/parallel.svg +2 -1
  36. data/cockpit/themes/control/symbols/scripts.svg +1 -1
  37. data/cockpit/themes/dataflow/rngs/call.rng +9 -0
  38. data/cockpit/themes/dataflow/rngs/callmanipulate.rng +10 -1
  39. data/cockpit/themes/dataflow/rngs/loop.rng +7 -0
  40. data/cockpit/themes/dataflow/rngs/manipulate.rng +8 -0
  41. data/cockpit/themes/dataflow/rngs/start.rng +1 -0
  42. data/cockpit/themes/dataflow/symbols/arrow.svg +1 -1
  43. data/cockpit/themes/dataflow/symbols/callmanipulate.svg +1 -1
  44. data/cockpit/themes/dataflow/symbols/callmanipulate_sensor.svg +2 -1
  45. data/cockpit/themes/dataflow/symbols/callmanipulate_sensor_signal.svg +1 -1
  46. data/cockpit/themes/dataflow/symbols/callmanipulate_signal.svg +1 -1
  47. data/cockpit/themes/dataflow/symbols/critical.svg +3 -2
  48. data/cockpit/themes/dataflow/symbols/delete.svg +2 -2
  49. data/cockpit/themes/dataflow/symbols/end.svg +1 -1
  50. data/cockpit/themes/dataflow/symbols/manipulate.svg +2 -2
  51. data/cockpit/themes/dataflow/symbols/parallel.svg +2 -1
  52. data/cockpit/themes/dataflow/symbols/scripts.svg +1 -1
  53. data/cockpit/themes/dataflow/theme.js +8 -8
  54. data/cockpit/themes/default/rngs/call.rng +9 -0
  55. data/cockpit/themes/default/rngs/callmanipulate.rng +10 -1
  56. data/cockpit/themes/default/rngs/loop.rng +7 -0
  57. data/cockpit/themes/default/rngs/manipulate.rng +8 -0
  58. data/cockpit/themes/default/rngs/start.rng +1 -0
  59. data/cockpit/themes/default/symbols/arrow.svg +1 -1
  60. data/cockpit/themes/default/symbols/callmanipulate.svg +1 -1
  61. data/cockpit/themes/default/symbols/callmanipulate_sensor.svg +2 -1
  62. data/cockpit/themes/default/symbols/callmanipulate_sensor_signal.svg +1 -1
  63. data/cockpit/themes/default/symbols/callmanipulate_signal.svg +1 -1
  64. data/cockpit/themes/default/symbols/critical.svg +3 -2
  65. data/cockpit/themes/default/symbols/delete.svg +2 -2
  66. data/cockpit/themes/default/symbols/end.svg +1 -1
  67. data/cockpit/themes/default/symbols/manipulate.svg +2 -2
  68. data/cockpit/themes/default/symbols/parallel.svg +2 -1
  69. data/cockpit/themes/default/symbols/scripts.svg +1 -1
  70. data/cockpit/themes/extended/rngs/call.rng +9 -0
  71. data/cockpit/themes/extended/rngs/callmanipulate.rng +10 -1
  72. data/cockpit/themes/extended/rngs/loop.rng +7 -0
  73. data/cockpit/themes/extended/rngs/manipulate.rng +8 -0
  74. data/cockpit/themes/extended/rngs/start.rng +1 -0
  75. data/cockpit/themes/extended/symbols/arrow.svg +1 -1
  76. data/cockpit/themes/extended/symbols/callmanipulate.svg +1 -1
  77. data/cockpit/themes/extended/symbols/callmanipulate_sensor.svg +2 -1
  78. data/cockpit/themes/extended/symbols/callmanipulate_sensor_signal.svg +1 -1
  79. data/cockpit/themes/extended/symbols/callmanipulate_signal.svg +1 -1
  80. data/cockpit/themes/extended/symbols/critical.svg +3 -2
  81. data/cockpit/themes/extended/symbols/delete.svg +2 -2
  82. data/cockpit/themes/extended/symbols/end.svg +1 -1
  83. data/cockpit/themes/extended/symbols/manipulate.svg +2 -2
  84. data/cockpit/themes/extended/symbols/parallel.svg +2 -1
  85. data/cockpit/themes/extended/symbols/scripts.svg +1 -1
  86. data/cockpit/themes/felix/symbols/arrow.svg +1 -1
  87. data/cockpit/themes/felix/symbols/callmanipulate.svg +1 -1
  88. data/cockpit/themes/felix/symbols/callmanipulate_sensor.svg +2 -1
  89. data/cockpit/themes/felix/symbols/callmanipulate_sensor_signal.svg +1 -1
  90. data/cockpit/themes/felix/symbols/callmanipulate_signal.svg +1 -1
  91. data/cockpit/themes/felix/symbols/critical.svg +3 -2
  92. data/cockpit/themes/felix/symbols/delete.svg +2 -2
  93. data/cockpit/themes/felix/symbols/end.svg +1 -1
  94. data/cockpit/themes/felix/symbols/manipulate.svg +2 -2
  95. data/cockpit/themes/felix/symbols/parallel.svg +2 -1
  96. data/cockpit/themes/felix/symbols/scripts.svg +1 -1
  97. data/cockpit/themes/model/symbols/arrow.svg +1 -1
  98. data/cockpit/themes/model/symbols/callmanipulate.svg +1 -1
  99. data/cockpit/themes/model/symbols/callmanipulate_sensor.svg +2 -1
  100. data/cockpit/themes/model/symbols/callmanipulate_sensor_signal.svg +1 -1
  101. data/cockpit/themes/model/symbols/callmanipulate_signal.svg +1 -1
  102. data/cockpit/themes/model/symbols/critical.svg +3 -2
  103. data/cockpit/themes/model/symbols/delete.svg +2 -2
  104. data/cockpit/themes/model/symbols/end.svg +1 -1
  105. data/cockpit/themes/model/symbols/manipulate.svg +2 -2
  106. data/cockpit/themes/model/symbols/parallel.svg +2 -1
  107. data/cockpit/themes/model/symbols/scripts.svg +1 -1
  108. data/cockpit/themes/packed/rngs/call.rng +9 -0
  109. data/cockpit/themes/packed/rngs/callmanipulate.rng +10 -1
  110. data/cockpit/themes/packed/rngs/loop.rng +7 -0
  111. data/cockpit/themes/packed/rngs/manipulate.rng +8 -0
  112. data/cockpit/themes/packed/rngs/start.rng +1 -0
  113. data/cockpit/themes/packed/symbols/arrow.svg +1 -1
  114. data/cockpit/themes/packed/symbols/callmanipulate.svg +1 -1
  115. data/cockpit/themes/packed/symbols/callmanipulate_sensor.svg +2 -1
  116. data/cockpit/themes/packed/symbols/callmanipulate_sensor_signal.svg +1 -1
  117. data/cockpit/themes/packed/symbols/callmanipulate_signal.svg +1 -1
  118. data/cockpit/themes/packed/symbols/critical.svg +3 -2
  119. data/cockpit/themes/packed/symbols/delete.svg +2 -2
  120. data/cockpit/themes/packed/symbols/end.svg +1 -1
  121. data/cockpit/themes/packed/symbols/manipulate.svg +2 -2
  122. data/cockpit/themes/packed/symbols/parallel.svg +2 -1
  123. data/cockpit/themes/packed/symbols/scripts.svg +1 -1
  124. data/cockpit/themes/preset/rngs/call.rng +9 -0
  125. data/cockpit/themes/preset/rngs/callmanipulate.rng +10 -1
  126. data/cockpit/themes/preset/rngs/loop.rng +7 -0
  127. data/cockpit/themes/preset/rngs/manipulate.rng +8 -0
  128. data/cockpit/themes/preset/rngs/start.rng +1 -0
  129. data/cockpit/themes/preset/symbols/arrow.svg +1 -1
  130. data/cockpit/themes/preset/symbols/callmanipulate.svg +1 -1
  131. data/cockpit/themes/preset/symbols/callmanipulate_sensor.svg +2 -1
  132. data/cockpit/themes/preset/symbols/callmanipulate_sensor_signal.svg +1 -1
  133. data/cockpit/themes/preset/symbols/callmanipulate_signal.svg +1 -1
  134. data/cockpit/themes/preset/symbols/critical.svg +3 -2
  135. data/cockpit/themes/preset/symbols/delete.svg +2 -2
  136. data/cockpit/themes/preset/symbols/end.svg +1 -1
  137. data/cockpit/themes/preset/symbols/manipulate.svg +2 -2
  138. data/cockpit/themes/preset/symbols/parallel.svg +2 -1
  139. data/cockpit/themes/preset/symbols/scripts.svg +1 -1
  140. data/cockpit/themes/presetaltid/rngs/alternative.rng +25 -0
  141. data/cockpit/themes/presetaltid/rngs/call.rng +251 -0
  142. data/cockpit/themes/presetaltid/rngs/callmanipulate.rng +283 -0
  143. data/cockpit/themes/presetaltid/rngs/choose.rng +17 -0
  144. data/cockpit/themes/presetaltid/rngs/closed_loop.rng +62 -0
  145. data/cockpit/themes/presetaltid/rngs/closed_loop_cancel.rng +5 -0
  146. data/cockpit/themes/presetaltid/rngs/closed_loop_control.rng +31 -0
  147. data/cockpit/themes/presetaltid/rngs/closed_loop_measuring.rng +12 -0
  148. data/cockpit/themes/presetaltid/rngs/critical.rng +5 -0
  149. data/cockpit/themes/presetaltid/rngs/escape.rng +1 -0
  150. data/cockpit/themes/presetaltid/rngs/group.rng +3 -0
  151. data/cockpit/themes/presetaltid/rngs/loop.rng +29 -0
  152. data/cockpit/themes/presetaltid/rngs/manipulate.rng +30 -0
  153. data/cockpit/themes/presetaltid/rngs/otherwise.rng +22 -0
  154. data/cockpit/themes/presetaltid/rngs/parallel.rng +27 -0
  155. data/cockpit/themes/presetaltid/rngs/parallel_branch.rng +2 -0
  156. data/cockpit/themes/presetaltid/rngs/scripts.rng +23 -0
  157. data/cockpit/themes/presetaltid/rngs/start.rng +145 -0
  158. data/cockpit/themes/presetaltid/rngs/stop.rng +5 -0
  159. data/cockpit/themes/presetaltid/rngs/terminate.rng +1 -0
  160. data/cockpit/themes/presetaltid/rngs/wait_for_signal.rng +8 -0
  161. data/cockpit/themes/presetaltid/symbols/alternative.svg +15 -0
  162. data/cockpit/themes/presetaltid/symbols/arrow.svg +3 -0
  163. data/cockpit/themes/presetaltid/symbols/call.svg +19 -0
  164. data/cockpit/themes/presetaltid/symbols/call_sensor.svg +23 -0
  165. data/cockpit/themes/presetaltid/symbols/callmanipulate.svg +23 -0
  166. data/cockpit/themes/presetaltid/symbols/callmanipulate_sensor.svg +26 -0
  167. data/cockpit/themes/presetaltid/symbols/callmanipulate_sensor_signal.svg +32 -0
  168. data/cockpit/themes/presetaltid/symbols/callmanipulate_signal.svg +29 -0
  169. data/cockpit/themes/presetaltid/symbols/choose.svg +15 -0
  170. data/cockpit/themes/presetaltid/symbols/choose_exclusive.svg +15 -0
  171. data/cockpit/themes/presetaltid/symbols/choose_exclusive_finish.svg +5 -0
  172. data/cockpit/themes/presetaltid/symbols/choose_inclusive.svg +13 -0
  173. data/cockpit/themes/presetaltid/symbols/choose_inclusive_finish.svg +4 -0
  174. data/cockpit/themes/presetaltid/symbols/closed_loop.svg +5 -0
  175. data/cockpit/themes/presetaltid/symbols/closed_loop_cancel.svg +5 -0
  176. data/cockpit/themes/presetaltid/symbols/closed_loop_control.svg +5 -0
  177. data/cockpit/themes/presetaltid/symbols/closed_loop_measuring.svg +6 -0
  178. data/cockpit/themes/presetaltid/symbols/complex.svg +8 -0
  179. data/cockpit/themes/presetaltid/symbols/critical.svg +5 -0
  180. data/cockpit/themes/presetaltid/symbols/delete.svg +4 -0
  181. data/cockpit/themes/presetaltid/symbols/end.svg +3 -0
  182. data/cockpit/themes/presetaltid/symbols/escape.svg +5 -0
  183. data/cockpit/themes/presetaltid/symbols/event_end.svg +3 -0
  184. data/cockpit/themes/presetaltid/symbols/loop.svg +15 -0
  185. data/cockpit/themes/presetaltid/symbols/loop_end.svg +15 -0
  186. data/cockpit/themes/presetaltid/symbols/manipulate.svg +19 -0
  187. data/cockpit/themes/presetaltid/symbols/otherwise.svg +5 -0
  188. data/cockpit/themes/presetaltid/symbols/parallel.svg +6 -0
  189. data/cockpit/themes/presetaltid/symbols/parallel_branch.svg +5 -0
  190. data/cockpit/themes/presetaltid/symbols/parallel_branch_event.svg +14 -0
  191. data/cockpit/themes/presetaltid/symbols/parallel_branch_normal.svg +5 -0
  192. data/cockpit/themes/presetaltid/symbols/parallel_eventbased_exclusive.svg +9 -0
  193. data/cockpit/themes/presetaltid/symbols/parallel_eventbased_parallel.svg +8 -0
  194. data/cockpit/themes/presetaltid/symbols/scripts.svg +4 -0
  195. data/cockpit/themes/presetaltid/symbols/start.svg +3 -0
  196. data/cockpit/themes/presetaltid/symbols/start_event.svg +5 -0
  197. data/cockpit/themes/presetaltid/symbols/stop.svg +5 -0
  198. data/cockpit/themes/presetaltid/symbols/terminate.svg +4 -0
  199. data/cockpit/themes/presetaltid/symbols/wait_for_signal.svg +21 -0
  200. data/cockpit/themes/presetaltid/theme.js +16 -0
  201. data/cockpit/themes/presetid/rngs/alternative.rng +25 -0
  202. data/cockpit/themes/presetid/rngs/call.rng +251 -0
  203. data/cockpit/themes/presetid/rngs/callmanipulate.rng +283 -0
  204. data/cockpit/themes/presetid/rngs/choose.rng +17 -0
  205. data/cockpit/themes/presetid/rngs/closed_loop.rng +62 -0
  206. data/cockpit/themes/presetid/rngs/closed_loop_cancel.rng +5 -0
  207. data/cockpit/themes/presetid/rngs/closed_loop_control.rng +31 -0
  208. data/cockpit/themes/presetid/rngs/closed_loop_measuring.rng +12 -0
  209. data/cockpit/themes/presetid/rngs/critical.rng +5 -0
  210. data/cockpit/themes/presetid/rngs/escape.rng +1 -0
  211. data/cockpit/themes/presetid/rngs/group.rng +3 -0
  212. data/cockpit/themes/presetid/rngs/loop.rng +29 -0
  213. data/cockpit/themes/presetid/rngs/manipulate.rng +30 -0
  214. data/cockpit/themes/presetid/rngs/otherwise.rng +22 -0
  215. data/cockpit/themes/presetid/rngs/parallel.rng +27 -0
  216. data/cockpit/themes/presetid/rngs/parallel_branch.rng +2 -0
  217. data/cockpit/themes/presetid/rngs/scripts.rng +23 -0
  218. data/cockpit/themes/presetid/rngs/start.rng +145 -0
  219. data/cockpit/themes/presetid/rngs/stop.rng +5 -0
  220. data/cockpit/themes/presetid/rngs/terminate.rng +1 -0
  221. data/cockpit/themes/presetid/rngs/wait_for_signal.rng +8 -0
  222. data/cockpit/themes/presetid/symbols/alternative.svg +15 -0
  223. data/cockpit/themes/presetid/symbols/arrow.svg +3 -0
  224. data/cockpit/themes/presetid/symbols/call.svg +19 -0
  225. data/cockpit/themes/presetid/symbols/call_sensor.svg +23 -0
  226. data/cockpit/themes/presetid/symbols/callmanipulate.svg +23 -0
  227. data/cockpit/themes/presetid/symbols/callmanipulate_sensor.svg +26 -0
  228. data/cockpit/themes/presetid/symbols/callmanipulate_sensor_signal.svg +32 -0
  229. data/cockpit/themes/presetid/symbols/callmanipulate_signal.svg +29 -0
  230. data/cockpit/themes/presetid/symbols/choose.svg +15 -0
  231. data/cockpit/themes/presetid/symbols/choose_exclusive.svg +15 -0
  232. data/cockpit/themes/presetid/symbols/choose_exclusive_finish.svg +5 -0
  233. data/cockpit/themes/presetid/symbols/choose_inclusive.svg +13 -0
  234. data/cockpit/themes/presetid/symbols/choose_inclusive_finish.svg +4 -0
  235. data/cockpit/themes/presetid/symbols/closed_loop.svg +5 -0
  236. data/cockpit/themes/presetid/symbols/closed_loop_cancel.svg +5 -0
  237. data/cockpit/themes/presetid/symbols/closed_loop_control.svg +5 -0
  238. data/cockpit/themes/presetid/symbols/closed_loop_measuring.svg +6 -0
  239. data/cockpit/themes/presetid/symbols/complex.svg +8 -0
  240. data/cockpit/themes/presetid/symbols/critical.svg +5 -0
  241. data/cockpit/themes/presetid/symbols/delete.svg +4 -0
  242. data/cockpit/themes/presetid/symbols/end.svg +3 -0
  243. data/cockpit/themes/presetid/symbols/escape.svg +5 -0
  244. data/cockpit/themes/presetid/symbols/event_end.svg +3 -0
  245. data/cockpit/themes/presetid/symbols/loop.svg +15 -0
  246. data/cockpit/themes/presetid/symbols/loop_end.svg +15 -0
  247. data/cockpit/themes/presetid/symbols/manipulate.svg +19 -0
  248. data/cockpit/themes/presetid/symbols/otherwise.svg +5 -0
  249. data/cockpit/themes/presetid/symbols/parallel.svg +6 -0
  250. data/cockpit/themes/presetid/symbols/parallel_branch.svg +5 -0
  251. data/cockpit/themes/presetid/symbols/parallel_branch_event.svg +14 -0
  252. data/cockpit/themes/presetid/symbols/parallel_branch_normal.svg +5 -0
  253. data/cockpit/themes/presetid/symbols/parallel_eventbased_exclusive.svg +9 -0
  254. data/cockpit/themes/presetid/symbols/parallel_eventbased_parallel.svg +8 -0
  255. data/cockpit/themes/presetid/symbols/scripts.svg +4 -0
  256. data/cockpit/themes/presetid/symbols/start.svg +3 -0
  257. data/cockpit/themes/presetid/symbols/start_event.svg +5 -0
  258. data/cockpit/themes/presetid/symbols/stop.svg +5 -0
  259. data/cockpit/themes/presetid/symbols/terminate.svg +4 -0
  260. data/cockpit/themes/presetid/symbols/wait_for_signal.svg +21 -0
  261. data/cockpit/themes/presetid/theme.js +16 -0
  262. data/cockpit/themes/reduced/rngs/call.rng +9 -0
  263. data/cockpit/themes/reduced/rngs/callmanipulate.rng +10 -1
  264. data/cockpit/themes/reduced/rngs/loop.rng +7 -0
  265. data/cockpit/themes/reduced/rngs/manipulate.rng +8 -0
  266. data/cockpit/themes/reduced/rngs/start.rng +1 -0
  267. data/cockpit/themes/reduced/symbols/arrow.svg +1 -1
  268. data/cockpit/themes/reduced/symbols/callmanipulate.svg +1 -1
  269. data/cockpit/themes/reduced/symbols/callmanipulate_sensor.svg +2 -1
  270. data/cockpit/themes/reduced/symbols/callmanipulate_sensor_signal.svg +1 -1
  271. data/cockpit/themes/reduced/symbols/callmanipulate_signal.svg +1 -1
  272. data/cockpit/themes/reduced/symbols/critical.svg +3 -2
  273. data/cockpit/themes/reduced/symbols/delete.svg +2 -2
  274. data/cockpit/themes/reduced/symbols/end.svg +1 -1
  275. data/cockpit/themes/reduced/symbols/manipulate.svg +2 -2
  276. data/cockpit/themes/reduced/symbols/parallel.svg +2 -1
  277. data/cockpit/themes/reduced/symbols/scripts.svg +1 -1
  278. data/cockpit/track.html +3 -3
  279. data/cpee.gemspec +1 -1
  280. data/lib/cpee/implementation.rb +25 -38
  281. data/server/executionhandlers/ruby/connection.rb +11 -3
  282. data/server/routing/end.pid +1 -1
  283. data/server/routing/forward-events-00.pid +1 -1
  284. data/server/routing/forward-events-01.pid +1 -0
  285. data/server/routing/forward-events-02.pid +1 -0
  286. data/server/routing/forward-events-03.pid +1 -0
  287. data/server/routing/forward-events-04.pid +1 -0
  288. data/server/routing/forward-events-05.pid +1 -0
  289. data/server/routing/forward-events-06.pid +1 -0
  290. data/server/routing/forward-votes.pid +1 -1
  291. data/server/routing/persist.pid +1 -1
  292. metadata +133 -6
  293. data/cockpit/js/resources.js +0 -64
  294. data/server/executionhandlers/ruby/ShiftingTestSimple.xml +0 -100
  295. data/server/server.pid +0 -1
  296. /data/cockpit/css/{resources-svg.css → extended_columns-svg.css} +0 -0
@@ -169,7 +169,7 @@ function WfAdaptor(theme_base,doit) { // Controller {{{
169
169
  manifestation.elements[element].description = [ manifestation.elements[element].description ];
170
170
  }
171
171
  if ($.isArray(manifestation.elements[element].description)) {
172
- _.each(manifestation.elements[element].description,function(val,ind){
172
+ manifestation.elements[element].description.forEach(function(val,ind){
173
173
  deferreds.push(
174
174
  $.ajax({
175
175
  type: "GET",
@@ -213,7 +213,8 @@ function WfIllustrator(wf_adaptor) { // View {{{
213
213
  this.svg = {};
214
214
  this.draw = {};
215
215
  this.dim = {};
216
- this.dim.props = [];
216
+ this.dim.symbols = [];
217
+ this.dim.connections = [];
217
218
  this.compact = true;
218
219
  this.rotated_labels = true;
219
220
  this.striped = true;
@@ -238,6 +239,11 @@ function WfIllustrator(wf_adaptor) { // View {{{
238
239
  ' <clipPath id="endclip">' +
239
240
  ' <rect x="20" y="-1" width="' + self.endclipshift + '" height="35"/>' +
240
241
  ' </clipPath>' +
242
+ ' <linearGradient id="custom-gradient" x2="0.35" y2="1">' +
243
+ ' <stop offset="0%" stop-color="var(--wfadaptor-background)"/>' +
244
+ ' <stop offset="50%" stop-color="var(--custom-color)"/>' +
245
+ ' <stop offset="100%" stop-color="var(--custom-color)"/>' +
246
+ ' </linearGradient>' +
241
247
  '</defs>'));
242
248
  self.svg.defs = {};
243
249
  self.svg.defs['unknown'] = $X('<g xmlns="http://www.w3.org/2000/svg" class="unknown">' +
@@ -262,8 +268,17 @@ function WfIllustrator(wf_adaptor) { // View {{{
262
268
  let bb = graph.svg[0].getBBox();
263
269
  self.svg.container.attr('height', bb.y + bb.height + self.height_shift); // small border on the bottom
264
270
  self.svg.container.attr('width', bb.x + bb.width + self.width_shift); // small border on the right
265
- self.svg.container.attr('data-pos-matrix', JSON.stringify(self.dim.props));
271
+ self.svg.container.attr('data-pos-matrix', JSON.stringify(self.dim.symbols));
272
+ self.svg.container.attr('data-con-list', JSON.stringify(self.dim.connections));
266
273
  } // }}}
274
+ this.set_duration = function(start) { //{{{
275
+ self.svg.container.append(
276
+ $X('<text class="duration" transform="translate(3,' + self.height_shift + ') rotate(90)" xmlns="http://www.w3.org/2000/svg">' +
277
+ Math.trunc(performance.now()-start) + ' ms' +
278
+ '</text>')
279
+ );
280
+ } //}}}
281
+
267
282
  this.get_node_by_svg_id = function(svg_id) { // {{{
268
283
  return $('[element-id = \'' + svg_id + '\'] g.activities', self.svg.container);
269
284
  } // }}}
@@ -281,22 +296,25 @@ function WfIllustrator(wf_adaptor) { // View {{{
281
296
  var clear = this.clear = function() { // {{{
282
297
  $('> :not(defs)', self.svg.container).each(function() {$(this).remove()});
283
298
  $('> defs > [belongs-to=element]', self.svg.container).each(function() {$(this).remove()});
284
- self.dim.props = [];
299
+ self.dim.symbols = [];
300
+ self.dim.connections = [];
285
301
  } // }}}
286
302
  var get_symbol = this.get_symbol = function() { // {{{
287
303
  } // }}}
304
+ var get_properties = this.get_properties = function() { // {{{
305
+ } // }}}
288
306
 
289
307
  // Helper Functions {{{
290
308
  var debug_dim = this.dim.debug = function() { //{{{
291
309
  line = '\n';
292
- for (let i=1; i < self.dim.props.length; i++) {
310
+ for (let i=1; i < self.dim.symbols.length; i++) {
293
311
  line += $.sprintf('%02d',i) + ': ';
294
- if (self.dim.props[i]) {
295
- for (let j=1; j < self.dim.props[i].length; j++) {
312
+ if (self.dim.symbols[i]) {
313
+ for (let j=1; j < self.dim.symbols[i].length; j++) {
296
314
  line += ' [ ';
297
- if (self.dim.props[i] && self.dim.props[i][j] && self.dim.props[i][j].x) { line += $.sprintf('%3d',self.dim.props[i][j].x); } else { line += ' '; }
315
+ if (self.dim.symbols[i] && self.dim.symbols[i][j] && self.dim.symbols[i][j].x) { line += $.sprintf('%3d',self.dim.symbols[i][j].x); } else { line += ' '; }
298
316
  line += ', ';
299
- if (self.dim.props[i] && self.dim.props[i][j] && self.dim.props[i][j].width) { line += $.sprintf('%3d',self.dim.props[i][j].width); } else { line += ' '; }
317
+ if (self.dim.symbols[i] && self.dim.symbols[i][j] && self.dim.symbols[i][j].width) { line += $.sprintf('%3d',self.dim.symbols[i][j].width); } else { line += ' '; }
300
318
  line += ' ] ';
301
319
  }
302
320
  }
@@ -305,54 +323,62 @@ function WfIllustrator(wf_adaptor) { // View {{{
305
323
  return line;
306
324
  } //}}}
307
325
 
308
- var set_x = this.dim.set_x = function(row,col,twidth) { //{{{
309
- if (!self.dim.props[row]) { self.dim.props[row] = []; }
310
- if (!self.dim.props[row][col]) { self.dim.props[row][col] = {}; }
326
+ var set_x = this.dim.set_x = function(row,col,twidth,sname) { //{{{
327
+ if (!self.dim.symbols[row]) { self.dim.symbols[row] = []; }
328
+ if (!self.dim.symbols[row][col]) { self.dim.symbols[row][col] = {}; }
311
329
 
312
- if (self.dim.props[row-1] && self.dim.props[row-1][col] && self.dim.props[row-1][col].x) { // row before
313
- self.dim.props[row][col].x = self.dim.props[row-1][col].x;
314
- } else if (self.dim.props[row] && self.dim.props[row][col-1] && self.dim.props[row][col-1].x) { // column before
330
+ if (self.dim.symbols[row-1] && self.dim.symbols[row-1][col] && self.dim.symbols[row-1][col].x) { // row before
331
+ self.dim.symbols[row][col].x = self.dim.symbols[row-1][col].x;
332
+ } else if (self.dim.symbols[row] && self.dim.symbols[row][col-1] && self.dim.symbols[row][col-1].x) { // column before
315
333
  let mx = 0;
316
- for (let i=row; i<self.dim.props.length; i++) {
317
- if (self.dim.props[i][col-1] && mx < self.dim.props[i][col-1].x + self.dim.props[i][col-1].width) {
318
- mx = self.dim.props[i][col-1].x + self.dim.props[i][col-1].width;
334
+ for (let i=row; i<self.dim.symbols.length; i++) {
335
+ if (self.dim.symbols[i][col-1] && mx < self.dim.symbols[i][col-1].x + self.dim.symbols[i][col-1].width) {
336
+ mx = self.dim.symbols[i][col-1].x + self.dim.symbols[i][col-1].width;
319
337
  }
320
338
  }
321
- self.dim.props[row][col].x = mx;
322
- } else if (self.dim.props[row-1] && self.dim.props[row-1][col-1] && self.dim.props[row-1][col-1].x) { // diagonal left above
323
- self.dim.props[row][col].x = self.dim.props[row-1][col-1].x + self.dim.props[row-1][col-1].width;
324
- } else if (self.dim.props.length > row + 1) { // same column below
339
+ self.dim.symbols[row][col].x = mx;
340
+ } else if (self.dim.symbols[row-1] && self.dim.symbols[row-1][col-1] && self.dim.symbols[row-1][col-1].x) { // diagonal left above
341
+ self.dim.symbols[row][col].x = self.dim.symbols[row-1][col-1].x + self.dim.symbols[row-1][col-1].width;
342
+ } else if (self.dim.symbols.length > row + 1) { // same column below
325
343
  let mx = 0;
326
- for (let i=row; i<self.dim.props.length; i++) {
327
- if (self.dim.props[i] && self.dim.props[i][col] && mx < self.dim.props[i][col].x) {
328
- mx = self.dim.props[i][col].x;
344
+ for (let i=row; i<self.dim.symbols.length; i++) {
345
+ if (self.dim.symbols[i] && self.dim.symbols[i][col] && mx < self.dim.symbols[i][col].x) {
346
+ mx = self.dim.symbols[i][col].x;
329
347
  }
330
348
  }
331
- self.dim.props[row][col].x = mx;
349
+ self.dim.symbols[row][col].x = mx;
332
350
  } else { // same column above
333
351
  let mx = 0;
334
352
  for (let i=row; i>0; i--) {
335
- if (self.dim.props[i] && self.dim.props[i][col] && mx < self.dim.props[i][col].x) {
336
- mx = self.dim.props[i][col].x;
353
+ if (self.dim.symbols[i] && self.dim.symbols[i][col] && mx < self.dim.symbols[i][col].x) {
354
+ mx = self.dim.symbols[i][col].x;
337
355
  }
338
356
  }
339
- self.dim.props[row][col].x = mx;
357
+ self.dim.symbols[row][col].x = mx;
340
358
  }
341
- if (self.dim.props[row][col].width) {
342
- if (twidth > self.dim.props[row][col].width) {
343
- self.dim.props[row][col].width = twidth;
359
+ if (self.dim.symbols[row][col].width) {
360
+ if (twidth > self.dim.symbols[row][col].width) {
361
+ self.dim.symbols[row][col].width = twidth;
344
362
  }
345
363
  } else {
346
- self.dim.props[row][col].width = twidth;
364
+ self.dim.symbols[row][col].width = twidth;
347
365
  }
366
+ self.dim.symbols[row][col].type = sname;
348
367
  // console.log('set_x ',row,col,debug_dim());
349
368
  } //}}}
350
- var set_x_cond = this.dim.set_x_cond = function(row,col,tx,twidth) { //{{{
351
- if (!self.dim.props[row]) { self.dim.props[row] = []; }
352
- if (!self.dim.props[row][col] || self.dim.props[row][col].width < twidth) {
353
- self.dim.props[row][col] = {};
354
- self.dim.props[row][col].x = tx;
355
- self.dim.props[row][col].width = twidth;
369
+ var set_x_cond = this.dim.set_x_cond = function(row,col,tx,twidth,sname,label,subtype,sty,eid) { //{{{
370
+ if (!self.dim.symbols[row]) { self.dim.symbols[row] = []; }
371
+ if (!self.dim.symbols[row][col] || self.dim.symbols[row][col].width < twidth) {
372
+ self.dim.symbols[row][col] = {};
373
+ self.dim.symbols[row][col].x = tx;
374
+ self.dim.symbols[row][col].width = twidth;
375
+ }
376
+ self.dim.symbols[row][col].type = sname;
377
+ self.dim.symbols[row][col].label = label;
378
+ self.dim.symbols[row][col].subtype = subtype;
379
+ self.dim.symbols[row][col].eid = eid;
380
+ for (const s in sty) {
381
+ self.dim.symbols[row][col][s] = sty[s];
356
382
  }
357
383
  // console.log('set_x_cond',row,col,debug_dim());
358
384
  } //}}}
@@ -361,26 +387,26 @@ function WfIllustrator(wf_adaptor) { // View {{{
361
387
  if (row<0) { row = 0 };
362
388
 
363
389
  let mlen = 0;
364
- if (self.dim.props[row] && self.dim.props[row][col] && self.dim.props[row][col].x) { // this column
365
- mlen = self.dim.props[row][col].x;
366
- } else if (self.dim.props[row] && !self.dim.props[row][col] && self.dim.props.length > row && self.dim.props[row+1] && self.dim.props[row+1][col] && self.dim.props[row+1][col].x ) { // row after
367
- mlen = self.dim.props[row+1][col].x;
368
- } else if (self.dim.props[row-1] && self.dim.props[row-1][col] && self.dim.props[row-1][col].x) { // row before
369
- mlen = self.dim.props[row-1][col].x;
370
- } else if (self.dim.props[row] && self.dim.props[row][col-1] && self.dim.props[row][col-1].x) { // column before
371
- for (let i=row; i<self.dim.props.length; i++) {
372
- if (self.dim.props[i][col-1] && mlen < self.dim.props[i][col-1].x + self.dim.props[i][col-1].width) {
373
- mlen = self.dim.props[i][col-1].x + self.dim.props[i][col-1].width;
390
+ if (self.dim.symbols[row] && self.dim.symbols[row][col] && self.dim.symbols[row][col].x) { // this column
391
+ mlen = self.dim.symbols[row][col].x;
392
+ } else if (self.dim.symbols[row] && !self.dim.symbols[row][col] && self.dim.symbols.length > row && self.dim.symbols[row+1] && self.dim.symbols[row+1][col] && self.dim.symbols[row+1][col].x ) { // row after
393
+ mlen = self.dim.symbols[row+1][col].x;
394
+ } else if (self.dim.symbols[row-1] && self.dim.symbols[row-1][col] && self.dim.symbols[row-1][col].x) { // row before
395
+ mlen = self.dim.symbols[row-1][col].x;
396
+ } else if (self.dim.symbols[row] && self.dim.symbols[row][col-1] && self.dim.symbols[row][col-1].x) { // column before
397
+ for (let i=row; i<self.dim.symbols.length; i++) {
398
+ if (self.dim.symbols[i][col-1] && mlen < self.dim.symbols[i][col-1].x + self.dim.symbols[i][col-1].width) {
399
+ mlen = self.dim.symbols[i][col-1].x + self.dim.symbols[i][col-1].width;
374
400
  }
375
401
  }
376
- } else if (self.dim.props[row+1] && self.dim.props[row+1][col] && self.dim.props[row+1][col].x) { // directly below
377
- mlen = self.dim.props[row+1][col].x;
378
- } else if (self.dim.props[row-1] && self.dim.props[row-1][col-1] && self.dim.props[row-1][col-1].x) { // diagonal left above
379
- mlen = self.dim.props[row-1][col-1].x + self.dim.props[row-1][col-1].width;
402
+ } else if (self.dim.symbols[row+1] && self.dim.symbols[row+1][col] && self.dim.symbols[row+1][col].x) { // directly below
403
+ mlen = self.dim.symbols[row+1][col].x;
404
+ } else if (self.dim.symbols[row-1] && self.dim.symbols[row-1][col-1] && self.dim.symbols[row-1][col-1].x) { // diagonal left above
405
+ mlen = self.dim.symbols[row-1][col-1].x + self.dim.symbols[row-1][col-1].width;
380
406
  } else { // same column below
381
- for (let i=row; i<self.dim.props.length; i++) {
382
- if (self.dim.props[i] && self.dim.props[i][col] && mlen < self.dim.props[i][col].x + self.dim.props[i][col].width) {
383
- mlen = self.dim.props[i][col].x;
407
+ for (let i=row; i<self.dim.symbols.length; i++) {
408
+ if (self.dim.symbols[i] && self.dim.symbols[i][col] && mlen < self.dim.symbols[i][col].x + self.dim.symbols[i][col].width) {
409
+ mlen = self.dim.symbols[i][col].x;
384
410
  }
385
411
  }
386
412
  // found nothing in the rows below
@@ -396,8 +422,8 @@ function WfIllustrator(wf_adaptor) { // View {{{
396
422
 
397
423
  mlen = 0;
398
424
  for (let i=rowf; i<=rowt; i++) {
399
- if (self.dim.props[i] && self.dim.props[i][col] && mlen < self.dim.props[i][col].x + self.dim.props[i][col].width) {
400
- mlen = self.dim.props[i][col].x + self.dim.props[i][col].width;
425
+ if (self.dim.symbols[i] && self.dim.symbols[i][col] && mlen < self.dim.symbols[i][col].x + self.dim.symbols[i][col].width) {
426
+ mlen = self.dim.symbols[i][col].x + self.dim.symbols[i][col].width;
401
427
  }
402
428
  }
403
429
  // console.log(deb,rowf,rowt,col,'--> ' + mlen,debug_dim());
@@ -405,19 +431,19 @@ function WfIllustrator(wf_adaptor) { // View {{{
405
431
  } //}}}
406
432
  var get_x_width = this.dim.get_x_width = function(maxcol) { //{{{
407
433
  let cwidth = 0;
408
- for (let i=0; i < self.dim.props.length; i++) {
434
+ for (let i=0; i < self.dim.symbols.length; i++) {
409
435
  let lwidth = 0;
410
436
  for (let j=0; j <= maxcol; j++) {
411
- if (typeof self.dim.props[i] !== 'undefined' && typeof self.dim.props[i][j] !== 'undefined') {
412
- lwidth += self.dim.props[i][j].width;
437
+ if (typeof self.dim.symbols[i] !== 'undefined' && typeof self.dim.symbols[i][j] !== 'undefined') {
438
+ lwidth += self.dim.symbols[i][j].width;
413
439
  } else {
414
440
  // go up the column and find the next valid value
415
441
  let x = i;
416
442
  let found = false;
417
443
  while (x > 0 && !found) {
418
444
  x -= 1;
419
- if (typeof self.dim.props[x] !== 'undefined' && typeof self.dim.props[x][j] !== 'undefined') {
420
- lwidth += self.dim.props[x][j].width;
445
+ if (typeof self.dim.symbols[x] !== 'undefined' && typeof self.dim.symbols[x][j] !== 'undefined') {
446
+ lwidth += self.dim.symbols[x][j].width;
421
447
  found = true;
422
448
  }
423
449
  }
@@ -535,11 +561,12 @@ function WfIllustrator(wf_adaptor) { // View {{{
535
561
  '</g>');
536
562
 
537
563
  // add the element-endpoint and other stuff to each symbol (from theme info function)
538
- _.each(info,function(val,key) {
539
- g.attr(key, val);
540
- });
564
+ for (const key in info) {
565
+ g.attr(key, info[key]);
566
+ }
541
567
 
542
568
  var sym = self.svg.defs[sname].clone();
569
+ var subtype = undefined;
543
570
 
544
571
  if (g.attr('element-endpoint')) {
545
572
  let tsym = self.get_symbol(g.attr('element-endpoint'));
@@ -572,6 +599,18 @@ function WfIllustrator(wf_adaptor) { // View {{{
572
599
  sym.prepend(ts);
573
600
  }
574
601
  }
602
+ let tprop = self.get_properties(g.attr('element-endpoint'));
603
+ if (tprop) {
604
+ subtype = tprop.subtype;
605
+ }
606
+ }
607
+
608
+ sym.attr('class','activities');
609
+ let sty = { ...self.global_style, ...style };
610
+ for (const s in sty) {
611
+ $('.colorstyle', sym).each((_,ele) => {
612
+ $(ele).css(s,sty[s]);
613
+ });
575
614
  }
576
615
 
577
616
  var tit = $X('<title xmlns="http://www.w3.org/2000/svg"></title>');
@@ -579,16 +618,21 @@ function WfIllustrator(wf_adaptor) { // View {{{
579
618
  sym.prepend(tit);
580
619
  let lab = $('.label',sym);
581
620
  if (lab.length > 0 && self.compact) {
621
+ let l_maxlen = 40; // max label size
622
+ let l_split = 18; // desired split position
623
+ let l_dev = 10; // if one split line is bigger than l_split + l_dev, split was not successfull and we have to display a more truncated string
624
+ let l_trunc = 18; // trucation size
625
+
582
626
  let sta = $('.part-start',sym);
583
627
  let mid = $('.part-middle',sym);
584
628
  let end = $('.part-end',sym);
585
629
  let xtr = $('.part-extra',sym);
586
630
  let nor = $('.part-normal',sym);
587
631
  if (title && title != '') {
588
- if (title.length < 22) {
632
+ if (title.length < l_split) {
589
633
  lab.text(title);
590
634
  } else {
591
- if (title.length > 60) { title = title.substr(0,60) + '\u2026'; }
635
+ if (title.length > l_maxlen) { title = title.substr(0,l_maxlen) + '\u2026'; }
592
636
  if (title.includes(' ')) {
593
637
  let len = title.length;
594
638
  let pos = -2;
@@ -605,11 +649,11 @@ function WfIllustrator(wf_adaptor) { // View {{{
605
649
  });
606
650
  let l1 = title.substr(0,it);
607
651
  let l2 = title.substr(it+1);
608
- if (l1.length > 30) {
609
- title = title.substr(0,30) + '\u2026';
652
+ if (l1.length > l_split+l_dev) {
653
+ title = title.substr(0,l_trunc) + '\u2026';
610
654
  lab.text(title);
611
655
  } else {
612
- if (l2.length > 30) { l2 = l2.substr(0,30) + '\u2026'; }
656
+ if (l2.length > l_split) { l2 = l2.substr(0,l_trunc) + '\u2026'; }
613
657
  let a1 = $X('<tspan x="0" dy="-8" xmlns="http://www.w3.org/2000/svg"></tspan>');
614
658
  a1.text(l1);
615
659
  let a2 = $X('<tspan x="0" dy="12" xmlns="http://www.w3.org/2000/svg"></tspan>');
@@ -618,7 +662,7 @@ function WfIllustrator(wf_adaptor) { // View {{{
618
662
  lab.append(a2);
619
663
  }
620
664
  } else {
621
- if (title.length > 30) { title = title.substr(0,30) + '\u2026'; }
665
+ if (title.length > l_split) { title = title.substr(0,l_trunc) + '\u2026'; }
622
666
  lab.text(title);
623
667
  }
624
668
  }
@@ -636,7 +680,7 @@ function WfIllustrator(wf_adaptor) { // View {{{
636
680
  if (xtr.length > 0) {
637
681
  xtr.attr('transform','translate(' + (pos.x + width - self.endclipshift - 4) + ',0)');
638
682
  }
639
- set_x_cond(row,col,dstart,pos.x + width - self.endclipshift - 4 + this.get_width(end) + 2 * self.width_shift_label);
683
+ set_x_cond(row,col,dstart,pos.x + width - self.endclipshift - 4 + this.get_width(end) + 2 * self.width_shift_label,sname,title,subtype,sty,id);
640
684
  } else {
641
685
  let tdim = 0;
642
686
  if (self.rotated_labels && self.elements[sname].rotatelabels != false) {
@@ -645,14 +689,14 @@ function WfIllustrator(wf_adaptor) { // View {{{
645
689
  } else {
646
690
  tdim = self.width + width + self.width_shift_label;
647
691
  }
648
- set_x_cond(row,col,dstart,tdim);
692
+ set_x_cond(row,col,dstart,tdim,sname,title,subtype,sty,id);
649
693
  }
650
694
  } else {
651
- set_x_cond(row,col,dstart,self.width);
695
+ set_x_cond(row,col,dstart,self.width,sname,title,subtype,sty,id);
652
696
  }
653
697
  if (nor.length > 0) { nor.remove(); }
654
698
  } else {
655
- set_x_cond(row,col,dstart,self.width);
699
+ set_x_cond(row,col,dstart,self.width,sname,title,subtype,sty,id);
656
700
  if (sta.length > 0) { sta.remove(); }
657
701
  if (mid.length > 0) { mid.remove(); }
658
702
  if (end.length > 0) { end.remove(); }
@@ -661,16 +705,9 @@ function WfIllustrator(wf_adaptor) { // View {{{
661
705
  $('.part-start',sym).remove();
662
706
  $('.part-middle',sym).remove();
663
707
  $('.part-end',sym).remove();
664
- set_x_cond(row,col,dstart,self.width);
708
+ set_x_cond(row,col,dstart,self.width,sname,title,subtype,sty,id);
665
709
  }
666
710
 
667
- sym.attr('class','activities');
668
- let sty = { ...self.global_style, ...style };
669
- for (const s in sty) {
670
- $('.colorstyle', sym).each((_,ele) => {
671
- $(ele).css(s,sty[s]);
672
- });
673
- }
674
711
 
675
712
  $(g[0].childNodes[0]).append(sym);
676
713
  if (!addition) {
@@ -708,13 +745,14 @@ function WfIllustrator(wf_adaptor) { // View {{{
708
745
  group.prepend($X('<rect element-id="' + id + '" x="' + (bstart - 1.1 * self.width_shift - self.group_extend) + '" ' +
709
746
  'y="' + ((p1.row-1)*self.height+self.height_shift/2-self.group_extend) + '" ' +
710
747
  'width="' + (bend-bstart+2*self.group_extend) + '" ' +
711
- 'height="' + (((p2.row+1)-p1.row)*self.height+5*self.group_extend) + '" ' +
748
+ 'height="' + (((p2.row+1)-p1.row)*self.height+2*self.group_extend) + '" ' +
712
749
  'class="tile" rx="12" ry="12" xmlns="http://www.w3.org/2000/svg"/>'));
713
750
  } // }}}
714
751
  var draw_connection = this.draw.draw_connection = function(group, start, end, context_row, arrow) { // {{{
715
752
  let sr = Math.min(start.row,end.row);
716
753
  let cstart = get_x(sr,start.col,'conn from');
717
754
  let cend = get_x(sr,end.col,'conn to');
755
+ self.dim.connections.push({from: {row: start.row, col: start.col}, to: {row: end.row, col: end.col}});
718
756
 
719
757
  if(((end['row']-start['row']) == 0) && ((end['col']-start['col']) == 0)) return;
720
758
  var line;
@@ -749,8 +787,8 @@ function WfIllustrator(wf_adaptor) { // View {{{
749
787
  }
750
788
  } else if(end['row']-start['row'] < 0) { // upwards
751
789
  line.attr("d", "M " + String(cstart) + "," + String(start['row']*self.height-15) +" "+
752
- String(cstart) + "," + String((self.dim.props.length-1)*self.height+4) +" "+
753
- String(cend+15) + "," + String((self.dim.props.length-1)*self.height+4) +" "+
790
+ String(cstart) + "," + String((self.dim.symbols.length-1)*self.height+4) +" "+
791
+ String(cend+15) + "," + String((self.dim.symbols.length-1)*self.height+4) +" "+
754
792
  String(cend+15) + "," + String(end['row']*self.height+15)+" "+
755
793
  String(cend) + "," + String(end['row']*self.height-15)
756
794
  );
@@ -787,7 +825,7 @@ function WfDescription(wf_adaptor, wf_illustrator) { // Model {{{
787
825
  illustrator.draw.draw_stripe(i,graph.max.col);
788
826
  }
789
827
  }
790
- adaptor.draw_labels(graph.max,labels,{ 'height': illustrator.height, 'height_shift': illustrator.height_shift },illustrator.striped == true ? true : false);
828
+ adaptor.draw_labels(graph.max,labels,{ 'height': illustrator.height, 'stripe_height': illustrator.default_height, 'height_shift': illustrator.height_shift },illustrator.striped == true ? true : false);
791
829
  } //}}}
792
830
 
793
831
  // Generic Functions {{{
@@ -803,10 +841,12 @@ function WfDescription(wf_adaptor, wf_illustrator) { // Model {{{
803
841
  }
804
842
  id_counter = {};
805
843
  labels = [];
844
+ let start = performance.now();
806
845
  illustrator.clear();
807
846
  var graph = parse(description.children('description').get(0), {'row':0,'col':0,final:false,wide:false});
808
847
  illustrator.set_svg(graph);
809
848
  self.set_labels(graph);
849
+ illustrator.set_duration(start);
810
850
  } // }}}
811
851
  var gd = this.get_description = function() { // public {{{
812
852
  var serxml = $(description.get(0).documentElement).clone(true);
@@ -854,20 +894,24 @@ function WfDescription(wf_adaptor, wf_illustrator) { // Model {{{
854
894
  var refresh = this.refresh = function(doit) {
855
895
  id_counter = {};
856
896
  labels = [];
897
+ let start = performance.now();
857
898
  illustrator.clear();
858
899
  var graph = parse(description.children('description').get(0), {'row':0,'col':0});
859
900
  illustrator.set_svg(graph);
860
901
  self.set_labels(graph);
902
+ illustrator.set_duration(start);
861
903
  doit(self);
862
904
  }
863
905
  var update = this.update = function(svgid) { // {{{
864
906
  id_counter = {};
865
907
  if(update_illustrator){
908
+ let start = performance.now();
866
909
  labels = [];
867
910
  illustrator.clear();
868
911
  var graph = parse(description.children('description').get(0), {'row':0,'col':0});
869
912
  illustrator.set_svg(graph);
870
913
  self.set_labels(graph);
914
+ illustrator.set_duration(start);
871
915
  }
872
916
 
873
917
  var newn = $('*[new=true]',description);
@@ -966,7 +1010,7 @@ function WfDescription(wf_adaptor, wf_illustrator) { // Model {{{
966
1010
  labels.push({...{row: pos.row, element_id: 'start', tname: 'start', label: illustrator.elements[sname].label(root)},...illustrator.draw.get_y(pos.row)});
967
1011
  }
968
1012
  illustrator.global_style = (illustrator.elements[sname].style && root) ? illustrator.elements[sname].style(root) : {};
969
- illustrator.draw.draw_symbol(sname, 'description', 'START', pos.row, pos.row, pos.row, pos.col, block.svg, false, [], {})
1013
+ illustrator.draw.draw_symbol(sname, 'description', 'START', pos.row, pos.row, pos.row, pos.col, block.svg, false, {}, {})
970
1014
  } // }}}
971
1015
 
972
1016
  $(root).children().filter(function(){ return this.localName[0] != '_'; }).each(function() {
@@ -982,12 +1026,12 @@ function WfDescription(wf_adaptor, wf_illustrator) { // Model {{{
982
1026
  if(root_expansion == 'horizontal') {
983
1027
  // for noindent themes do not indent the first column
984
1028
  if (!pos.noindent || (pos.noindent && endnodes.length > 1)) {
985
- illustrator.dim.set_x(pos.row,pos.col,illustrator.width);
1029
+ illustrator.dim.set_x(pos.row,pos.col,illustrator.width,sname);
986
1030
  pos.col++;
987
1031
  }
988
1032
  if (!illustrator.compact) {
989
1033
  if (block.max.row) {
990
- illustrator.dim.set_x(pos.row,pos.col,illustrator.width);
1034
+ illustrator.dim.set_x(pos.row,pos.col,illustrator.width,sname);
991
1035
  pos.row = block.max.row + 1;
992
1036
  }
993
1037
  }
@@ -997,7 +1041,7 @@ function WfDescription(wf_adaptor, wf_illustrator) { // Model {{{
997
1041
  if(illustrator.elements[tname] != undefined && !illustrator.elements[tname].svg) pos.row--;
998
1042
  // TODO: Remaining problem is the order inside the svg. Thats why the connection is above the icon
999
1043
 
1000
- illustrator.dim.set_x(pos.row,pos.col,illustrator.width);
1044
+ illustrator.dim.set_x(pos.row,pos.col,illustrator.width,sname);
1001
1045
  // but fuuuuu, we calculate the gateways only later, so we couldnt even have them bigger for now
1002
1046
 
1003
1047
  // console.log('----> down', tname, parent_pos.row, pos.row, parent_pos.col, pos.col, illustrator.dim.debug());
@@ -1116,12 +1160,12 @@ function WfDescription(wf_adaptor, wf_illustrator) { // Model {{{
1116
1160
  }
1117
1161
  if (second) {
1118
1162
  // wide is only for the special case of variable parallel, only event_end has it, all others should reference the first row
1119
- illustrator.draw.draw_symbol(sname, $(context).attr('svg-id'), $(context).attr('svg-label'), illustrator.elements[sname].wide == true ? parent_pos.row+1 : parent_pos.row, block.max.row, pos.row, pos.col, second.svg, true, [], style).addClass(illustrator.elements[sname] ? illustrator.elements[sname].type : 'primitive unknown');
1163
+ illustrator.draw.draw_symbol(sname, $(context).attr('svg-id'), $(context).attr('svg-label'), illustrator.elements[sname].wide == true ? parent_pos.row+1 : parent_pos.row, block.max.row, pos.row, pos.col, second.svg, true, {}, style).addClass(illustrator.elements[sname] ? illustrator.elements[sname].type : 'primitive unknown');
1120
1164
  } else {
1121
1165
  $(context).attr('svg-type',tname);
1122
1166
  $(context).attr('svg-subtype',sname);
1123
1167
  if((illustrator.elements[sname] && illustrator.elements[sname].svg) || sname == 'unknown') {
1124
- let info = [];
1168
+ let info = {};
1125
1169
  if (illustrator.elements[sname].info && context) {
1126
1170
  info = illustrator.elements[sname].info(context);
1127
1171
  }
data/cockpit/llm.html CHANGED
@@ -54,7 +54,7 @@
54
54
  <script type="text/javascript" src="js/instance.js"></script>
55
55
  <script type="text/javascript" src="js/details.js"></script>
56
56
  <script type="text/javascript" src="js/parameters.js"></script>
57
- <script type="text/javascript" src="js/resources.js"></script>
57
+ <script type="text/javascript" src="js/extended_columns.js"></script>
58
58
  <script type="text/javascript" src="js/modifiers.js"></script>
59
59
  <script type="text/javascript" src="themes/base.js"></script>
60
60
 
@@ -62,8 +62,8 @@
62
62
  <link rel="stylesheet" href="css/llm.css" type="text/css"/>
63
63
 
64
64
  <link rel="stylesheet" href="css/ui.css" type="text/css"/>
65
- <link rel="stylesheet" href="css/resources-label.css" type="text/css"/>
66
- <link rel="stylesheet" href="css/resources-svg.css" type="text/css" data-include-export="true"/>
65
+ <link rel="stylesheet" href="css/extended_columns-label.css" type="text/css"/>
66
+ <link rel="stylesheet" href="css/extended_columns-svg.css" type="text/css" data-include-export="true"/>
67
67
  <link rel="stylesheet" href="/global_ui/uicpee.css" type="text/css"/>
68
68
  <style>
69
69
  /* has to be fucking inline, because firefox and chrome disagree how to handle filter urls */
@@ -58,14 +58,14 @@
58
58
  <script type="text/javascript" src="js/instance.js"></script>
59
59
  <script type="text/javascript" src="js/details.js"></script>
60
60
  <script type="text/javascript" src="js/parameters.js"></script>
61
- <script type="text/javascript" src="js/resources.js"></script>
61
+ <script type="text/javascript" src="js/extended_columns.js"></script>
62
62
  <script type="text/javascript" src="js/modifiers.js"></script>
63
63
  <script type="text/javascript" src="themes/base.js"></script>
64
64
 
65
65
 
66
66
  <link rel="stylesheet" href="css/ui.css" type="text/css"/>
67
- <link rel="stylesheet" href="css/resources-label.css" type="text/css"/>
68
- <link rel="stylesheet" href="css/resources-svg.css" type="text/css" data-include-export="true"/>
67
+ <link rel="stylesheet" href="css/extended_columns-label.css" type="text/css"/>
68
+ <link rel="stylesheet" href="css/extended_columns-svg.css" type="text/css" data-include-export="true"/>
69
69
  <link rel="stylesheet" href="/global_ui/uicpee.css" type="text/css"/>
70
70
  <style>
71
71
  /* has to be fucking inline, because firefox and chrome disagree how to handle filter urls */
data/cockpit/model.html CHANGED
@@ -59,8 +59,8 @@
59
59
  <script type="text/javascript" src="themes/base.js"></script>
60
60
  <link rel="stylesheet" href="css/ui.css" type="text/css"/>
61
61
  <link rel="stylesheet" href="css/model.css" type="text/css"/>
62
- <link rel="stylesheet" href="css/resources-label.css" type="text/css"/>
63
- <link rel="stylesheet" href="css/resources-svg.css" type="text/css" data-include-export="true"/>
62
+ <link rel="stylesheet" href="css/extended_columns-label.css" type="text/css"/>
63
+ <link rel="stylesheet" href="css/extended_columns-svg.css" type="text/css" data-include-export="true"/>
64
64
  <link rel="stylesheet" href="/global_ui/uicpee.css" type="text/css"/>
65
65
  <style>
66
66
  /* has to be fucking inline, because firefox and chrome disagree how to handle filter urls */
@@ -19,6 +19,7 @@
19
19
  <head>
20
20
  <meta charset="utf-8"/>
21
21
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
22
+ <link rel="icon" type="image/png" href="/favicon.png">
22
23
  <title>CPEE Cockpit</title>
23
24
 
24
25
  <!-- libs, do not modify. When local than load local libs. -->
@@ -40,6 +41,8 @@
40
41
  <script type="text/javascript" src="/js_libs/uidash.js"></script>
41
42
  <script type="text/javascript" src="/js_libs/custommenu.js"></script>
42
43
 
44
+ <script type="text/javascript" src="/js_libs/build-bpmn.js"></script>
45
+
43
46
  <link rel="stylesheet" href="/js_libs/custommenu.css" type="text/css"/>
44
47
  <link rel="stylesheet" href="/js_libs/uidash.css" type="text/css"/>
45
48
 
@@ -54,7 +57,7 @@
54
57
  <script type="text/javascript" src="js/instance.js"></script>
55
58
  <script type="text/javascript" src="js/details.js"></script>
56
59
  <script type="text/javascript" src="js/parameters.js"></script>
57
- <script type="text/javascript" src="js/resources.js"></script>
60
+ <script type="text/javascript" src="js/extended_columns.js"></script>
58
61
  <script type="text/javascript" src="js/modifiers.js"></script>
59
62
  <script type="text/javascript" src="themes/base.js"></script>
60
63
 
@@ -62,8 +65,8 @@
62
65
  <link rel="stylesheet" href="css/llm.css" type="text/css"/>
63
66
 
64
67
  <link rel="stylesheet" href="css/ui.css" type="text/css"/>
65
- <link rel="stylesheet" href="css/resources-label.css" type="text/css"/>
66
- <link rel="stylesheet" href="css/resources-svg.css" type="text/css" data-include-export="true"/>
68
+ <link rel="stylesheet" href="css/extended_columns-label.css" type="text/css"/>
69
+ <link rel="stylesheet" href="css/extended_columns-svg.css" type="text/css" data-include-export="true"/>
67
70
  <link rel="stylesheet" href="/global_ui/uicpee.css" type="text/css"/>
68
71
  <style>
69
72
  /* has to be fucking inline, because firefox and chrome disagree how to handle filter urls */
@@ -178,10 +181,16 @@
178
181
  <button title='a standalone process model is only loadable if the currently loaded testset sucessfully prepared the current instance for the type of model' name="loadmodelfile">load model</button>
179
182
  </div>
180
183
  </div><div class='section'>
181
- <a id="savetestsetfile" href="" download=""></a>
182
- <a id="savesvgfile" href="" download=""></a>
183
- <button title='a testset includes various settings, subscriptions and a model' name="savetestsetfile">save<br>testset</button>
184
- <button title='a testset includes various settings, subscriptions and a model' name="savesvgfile">save svg<br>graph</button>
184
+ <div>
185
+ <a id="savetestsetfile" href="" download=""></a>
186
+ <a id="savesvgfile" href="" download=""></a>
187
+ <button title='a testset includes various settings, subscriptions and a model' name="savetestsetfile">save<br>testset</button>
188
+ <button title='the SVG contains the graphical repesentation of the CPEE tree as you see it on the screen' name="savesvgfile">save svg<br>graph</button>
189
+ </div>
190
+ <div>
191
+ <a id="savebpmnfile" href="" download=""></a>
192
+ <button title='the BPMN includes a graphical representation that can be loaded in Signavio and Camundal' name="savebpmnfile">save BPMN</button>
193
+ </div>
185
194
  </div><div class='section' id='modifiers'>
186
195
  <template id="item">
187
196
  <div>
@@ -232,11 +241,9 @@
232
241
  </ui-area>
233
242
  <ui-resizehandle data-belongs-to-tab="details" data-label="drag to resize"></ui-resizehandle>
234
243
  <ui-area data-belongs-to-tab="details" id="detailcolumn">
235
- <div id="modelling">
236
- <div id='graphgrid'>
237
- <div class="resource-label" style="display: none"></div>
238
- <svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:x="http://www.w3.org/1999/xlink" id='graphcanvas' width='1' height='1'></svg>
239
- </div>
244
+ <div id='graphgrid'>
245
+ <div class="resource-label" style="display: none"></div>
246
+ <svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:x="http://www.w3.org/1999/xlink" id='graphcanvas' width='1' height='1'></svg>
240
247
  </div>
241
248
  </ui-area>
242
249
  <ui-area data-belongs-to-tab="log" id="arealog" class="inactive"> <!--{{{-->