cpee 2.0.27 → 2.1.2

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 (367) hide show
  1. checksums.yaml +4 -4
  2. data/cockpit/config.json.example +7 -0
  3. data/cockpit/css/wfadaptor.css +11 -0
  4. data/cockpit/js/instance.js +8 -3
  5. data/cockpit/js/wfadaptor.js +2 -0
  6. data/cockpit/templates.legacy/Async.xml +12 -12
  7. data/cockpit/templates.legacy/BCO.xml +9 -11
  8. data/cockpit/templates.legacy/BCS.xml +9 -11
  9. data/cockpit/templates.legacy/Centurio.xml +7 -7
  10. data/cockpit/templates.legacy/Concurrent.xml +7 -7
  11. data/cockpit/templates.legacy/Coopis Testset.xml +7 -7
  12. data/cockpit/templates.legacy/Endpoints and Data Manipulation.xml +6 -7
  13. data/cockpit/templates.legacy/ICSOC Testset.xml +7 -7
  14. data/cockpit/templates.legacy/Infinity.xml +7 -7
  15. data/cockpit/templates.legacy/Lego Boxer.xml +13 -13
  16. data/cockpit/templates.legacy/Lego Conveyor.xml +13 -13
  17. data/cockpit/templates.legacy/Lego Crane.xml +16 -16
  18. data/cockpit/templates.legacy/Lego Ejector.xml +16 -16
  19. data/cockpit/templates.legacy/Lego Full.xml +12 -12
  20. data/cockpit/templates.legacy/Lego Liddy.xml +13 -13
  21. data/cockpit/templates.legacy/Lego Plate.xml +13 -13
  22. data/cockpit/templates.legacy/Lego Transporter.xml +14 -14
  23. data/cockpit/templates.legacy/Lego_Part_1.xml +12 -12
  24. data/cockpit/templates.legacy/LgLinear.xml +7 -10
  25. data/cockpit/templates.legacy/Linear.xml +11 -14
  26. data/cockpit/templates.legacy/Log.xml +11 -12
  27. data/cockpit/templates.legacy/Mangler 1.xml +7 -7
  28. data/cockpit/templates.legacy/Mangler 2.xml +7 -7
  29. data/cockpit/templates.legacy/Manuel Labels.xml +11 -11
  30. data/cockpit/templates.legacy/Promise.xml +30 -30
  31. data/cockpit/templates.legacy/SOPROMO Test Sonification.xml +7 -7
  32. data/cockpit/templates.legacy/Subprocess.xml +15 -15
  33. data/cockpit/templates.legacy/Syncing P34 1.xml +8 -11
  34. data/cockpit/templates.legacy/Syncing P34 2.xml +8 -11
  35. data/cockpit/templates.legacy/Syncing P34 3.xml +8 -11
  36. data/cockpit/templates.legacy/Syncing P34.xml +8 -11
  37. data/cockpit/templates.legacy/TEST - Bad Loop.xml +7 -7
  38. data/cockpit/templates.legacy/TEST - Wrong Positions.xml +7 -7
  39. data/cockpit/templates.legacy/Take_5.xml +14 -14
  40. data/cockpit/templates.legacy/Update.xml +11 -11
  41. data/cockpit/templates.legacy/Worklist Parallel.xml +17 -17
  42. data/cockpit/templates.legacy/Worklist Test CPEE.xml +14 -14
  43. data/cockpit/templates.legacy/Worklist Test.xml +14 -14
  44. data/cockpit/templates.legacy/Worklist Test2.xml +14 -14
  45. data/cockpit/templates/Coopis 2010.xml +19 -11
  46. data/cockpit/templates/Coopis 2010.xml.active +1 -0
  47. data/cockpit/templates/Coopis 2010.xml.active-uuid +1 -0
  48. data/cockpit/templates/IUPC arXiv:1104.3609 P34 1.xml +13 -12
  49. data/cockpit/templates/IUPC arXiv:1104.3609 P34 2.xml +13 -12
  50. data/cockpit/templates/IUPC arXiv:1104.3609 P34 3.xml +13 -12
  51. data/cockpit/templates/Track Test Local.xml +3 -3
  52. data/cockpit/templates/Track Test.xml +2 -2
  53. data/cockpit/templates/UR-VUE 2020 Manual Adjust.xml +2 -2
  54. data/cockpit/templates/UR-VUE 2020 Solution Baseline.xml +2 -2
  55. data/cockpit/templates/UR-VUE 2020 Solution NN.xml +2 -2
  56. data/cockpit/templates/UR-VUE 2020 Solution View.xml +2 -2
  57. data/cockpit/templates/UR-VUE 2020.xml +4 -2
  58. data/cockpit/templates/Worklist.xml +19 -14
  59. data/cockpit/templates/instantiate.local/Take_Sub.xml +2 -2
  60. data/cockpit/templates/instantiate/Take_Perf.xml +1 -1
  61. data/cockpit/templates/instantiate/Take_Sub.xml +2 -2
  62. data/cockpit/templates/instantiate/Take_X.xml +2 -2
  63. data/cockpit/themes/compact/rngs/parallel.rng +6 -0
  64. data/cockpit/themes/compact/rngs/start.rng +83 -0
  65. data/cockpit/themes/compact/symbols/parallel_branch_event.svg +2 -2
  66. data/cockpit/themes/compact/symbols/parallel_eventbased_exclusive.svg +9 -0
  67. data/cockpit/themes/compact/symbols/parallel_eventbased_parallel.svg +8 -0
  68. data/cockpit/themes/compact/symbols/start.svg +1 -1
  69. data/cockpit/themes/compact/theme.js +45 -2
  70. data/cockpit/themes/control/rngs/parallel.rng +6 -0
  71. data/cockpit/themes/control/rngs/start.rng +83 -0
  72. data/cockpit/themes/control/symbols/parallel_branch_event.svg +2 -2
  73. data/cockpit/themes/control/symbols/parallel_eventbased_exclusive.svg +9 -0
  74. data/cockpit/themes/control/symbols/parallel_eventbased_parallel.svg +8 -0
  75. data/cockpit/themes/control/symbols/start.svg +1 -1
  76. data/cockpit/themes/control/theme.js +45 -2
  77. data/cockpit/themes/default/rngs/parallel.rng +6 -0
  78. data/cockpit/themes/default/rngs/start.rng +83 -0
  79. data/cockpit/themes/default/symbols/parallel_branch_event.svg +2 -2
  80. data/cockpit/themes/default/symbols/parallel_eventbased_exclusive.svg +9 -0
  81. data/cockpit/themes/default/symbols/parallel_eventbased_parallel.svg +8 -0
  82. data/cockpit/themes/default/symbols/start.svg +1 -1
  83. data/cockpit/themes/default/theme.js +46 -3
  84. data/cockpit/themes/extended/rngs/parallel.rng +6 -0
  85. data/cockpit/themes/extended/rngs/start.rng +83 -0
  86. data/cockpit/themes/extended/symbols/parallel_branch_event.svg +2 -2
  87. data/cockpit/themes/extended/symbols/parallel_eventbased_exclusive.svg +9 -0
  88. data/cockpit/themes/extended/symbols/parallel_eventbased_parallel.svg +8 -0
  89. data/cockpit/themes/extended/symbols/start.svg +1 -1
  90. data/cockpit/themes/extended/theme.js +45 -2
  91. data/cockpit/themes/model/symbols/parallel_branch_event.svg +2 -2
  92. data/cockpit/themes/model/symbols/parallel_eventbased_exclusive.svg +9 -0
  93. data/cockpit/themes/model/symbols/parallel_eventbased_parallel.svg +8 -0
  94. data/cockpit/themes/model/symbols/start.svg +1 -1
  95. data/cockpit/themes/model/theme.js +45 -2
  96. data/cockpit/themes/packed/rngs/parallel.rng +6 -0
  97. data/cockpit/themes/packed/rngs/start.rng +83 -0
  98. data/cockpit/themes/packed/symbols/parallel_branch_event.svg +2 -2
  99. data/cockpit/themes/packed/symbols/parallel_eventbased_exclusive.svg +9 -0
  100. data/cockpit/themes/packed/symbols/parallel_eventbased_parallel.svg +8 -0
  101. data/cockpit/themes/packed/symbols/start.svg +1 -1
  102. data/cockpit/themes/packed/theme.js +45 -2
  103. data/cockpit/themes/preset/rngs/parallel.rng +6 -0
  104. data/cockpit/themes/preset/rngs/start.rng +83 -0
  105. data/cockpit/themes/preset/symbols/parallel_branch_event.svg +2 -2
  106. data/cockpit/themes/preset/symbols/parallel_eventbased_exclusive.svg +9 -0
  107. data/cockpit/themes/preset/symbols/parallel_eventbased_parallel.svg +8 -0
  108. data/cockpit/themes/preset/symbols/start.svg +1 -1
  109. data/cockpit/themes/preset/theme.js +46 -3
  110. data/cpee.gemspec +2 -2
  111. data/lib/cpee/attributes_helper.rb +14 -0
  112. data/lib/cpee/implementation.rb +10 -8
  113. data/lib/cpee/implementation_callbacks.rb +14 -0
  114. data/lib/cpee/implementation_notifications.rb +14 -0
  115. data/lib/cpee/implementation_properties.rb +128 -24
  116. data/lib/cpee/persistence.rb +0 -27
  117. data/lib/cpee/statemachine.rb +14 -0
  118. data/lib/cpee/value_helper.rb +14 -0
  119. data/lib/properties.xml +4 -4
  120. data/lib/properties/{handlerwrapper.rng → executionhandler.rng} +3 -3
  121. data/lib/properties/properties.rng +2 -2
  122. data/lib/properties/set-properties.rng +2 -2
  123. data/lib/properties/set-some-properties.rng +2 -2
  124. data/server/{resources → executionhandlers/ruby}/backend/README.md +0 -0
  125. data/server/{resources → executionhandlers/ruby}/backend/instance.template +2 -4
  126. data/server/{resources → executionhandlers/ruby}/backend/opts.yaml +2 -2
  127. data/server/executionhandlers/ruby/backend/run +37 -0
  128. data/server/{handlerwrappers/default.rb → executionhandlers/ruby/connection.rb} +7 -3
  129. data/server/executionhandlers/ruby/controller.rb +195 -0
  130. data/server/{resources/transformation_dslx.xsl → executionhandlers/ruby/dsl_to_dslx.xsl} +57 -8
  131. data/server/executionhandlers/ruby/execution.rb +81 -0
  132. data/server/resources/properties.empty +1 -1
  133. data/server/resources/properties.init +1 -1
  134. data/server/resources/topics.xml +2 -2
  135. data/server/routing/persist.rb +3 -3
  136. data/tools/cpee +10 -4
  137. data/tools/server/cpee +1 -1
  138. data/tools/server/resources/properties.init +1 -1
  139. metadata +37 -239
  140. data/cockpit/js_libs.zip +0 -0
  141. data/cockpit/templates.legacy/convert_cpee2.rb +0 -15
  142. data/lib/cpee/controller.rb +0 -199
  143. data/lib/cpee/transform.rb +0 -95
  144. data/server/resources/backend/instance.rb +0 -23
  145. data/server/resources/backend/run +0 -33
  146. data/server/routing/end.pid +0 -1
  147. data/server/routing/forward-events.pid +0 -1
  148. data/server/routing/forward-votes.pid +0 -1
  149. data/server/routing/persist.pid +0 -1
  150. data/server/server.pid +0 -1
  151. data/tools/test/README +0 -4
  152. data/tools/test/config.json +0 -3
  153. data/tools/test/contrib/graph_example.svg +0 -1166
  154. data/tools/test/contrib/legend.svg +0 -817
  155. data/tools/test/contrib/symbols.svg +0 -224
  156. data/tools/test/contrib/transformation1.xsl +0 -264
  157. data/tools/test/contrib/transformation2.xsl +0 -10
  158. data/tools/test/contrib/tree_example.svg +0 -788
  159. data/tools/test/css/model.css +0 -24
  160. data/tools/test/css/track.css +0 -60
  161. data/tools/test/css/ui.css +0 -214
  162. data/tools/test/css/wfadaptor.css +0 -422
  163. data/tools/test/edit.html +0 -258
  164. data/tools/test/graph.html +0 -69
  165. data/tools/test/index.html +0 -258
  166. data/tools/test/js/details.js +0 -109
  167. data/tools/test/js/instance.js +0 -1344
  168. data/tools/test/js/model.js +0 -41
  169. data/tools/test/js/parameters.js +0 -82
  170. data/tools/test/js/track.js +0 -18
  171. data/tools/test/js/ui.js +0 -104
  172. data/tools/test/js/wfadaptor.js +0 -763
  173. data/tools/test/js_libs.zip +0 -0
  174. data/tools/test/js_libs/Makefile +0 -2
  175. data/tools/test/js_libs/ansi_up.js +0 -333
  176. data/tools/test/js_libs/console.js +0 -80
  177. data/tools/test/js_libs/custommenu.css +0 -84
  178. data/tools/test/js_libs/custommenu.js +0 -104
  179. data/tools/test/js_libs/experiments1/relaxngui.css +0 -185
  180. data/tools/test/js_libs/experiments1/relaxngui.js +0 -488
  181. data/tools/test/js_libs/experiments1/rngtest9.html +0 -60
  182. data/tools/test/js_libs/experiments1/rngtest9.rng +0 -35
  183. data/tools/test/js_libs/experiments1/rngtest9.xml +0 -8
  184. data/tools/test/js_libs/jquery-2.2.4.min.js +0 -4
  185. data/tools/test/js_libs/jquery-3.2.1.min.js +0 -4
  186. data/tools/test/js_libs/jquery-3.3.1.min.js +0 -2
  187. data/tools/test/js_libs/jquery.browser.js +0 -40
  188. data/tools/test/js_libs/jquery.caret.min.js +0 -10
  189. data/tools/test/js_libs/jquery.cookie.js +0 -117
  190. data/tools/test/js_libs/jquery.min.js +0 -1
  191. data/tools/test/js_libs/jquery.svg.min.js +0 -6
  192. data/tools/test/js_libs/jquery.svgdom.min.js +0 -6
  193. data/tools/test/js_libs/markdown.min.js +0 -1
  194. data/tools/test/js_libs/parsequery.js +0 -21
  195. data/tools/test/js_libs/printf.js +0 -368
  196. data/tools/test/js_libs/relaxngui.css +0 -213
  197. data/tools/test/js_libs/relaxngui.js +0 -543
  198. data/tools/test/js_libs/strftime.min.js +0 -1
  199. data/tools/test/js_libs/tests/dataelements.html +0 -59
  200. data/tools/test/js_libs/tests/dataelements.rng +0 -8
  201. data/tools/test/js_libs/tests/dataelements.xml +0 -3
  202. data/tools/test/js_libs/tests/relaxngui.css +0 -203
  203. data/tools/test/js_libs/tests/relaxngui.js +0 -502
  204. data/tools/test/js_libs/tests/rngtest1.html +0 -66
  205. data/tools/test/js_libs/tests/rngtest1.rng +0 -147
  206. data/tools/test/js_libs/tests/rngtest1.xml +0 -13
  207. data/tools/test/js_libs/tests/rngtest2.html +0 -60
  208. data/tools/test/js_libs/tests/rngtest2.rng +0 -6
  209. data/tools/test/js_libs/tests/rngtest2.xml +0 -3
  210. data/tools/test/js_libs/tests/rngtest3.html +0 -60
  211. data/tools/test/js_libs/tests/rngtest3.rng +0 -23
  212. data/tools/test/js_libs/tests/rngtest3.xml +0 -9
  213. data/tools/test/js_libs/tests/rngtest4.html +0 -60
  214. data/tools/test/js_libs/tests/rngtest4.rng +0 -19
  215. data/tools/test/js_libs/tests/rngtest4.xml +0 -12
  216. data/tools/test/js_libs/tests/rngtest5.html +0 -60
  217. data/tools/test/js_libs/tests/rngtest5.rng +0 -75
  218. data/tools/test/js_libs/tests/rngtest5.xml +0 -40
  219. data/tools/test/js_libs/tests/rngtest6.html +0 -60
  220. data/tools/test/js_libs/tests/rngtest6.rng +0 -24
  221. data/tools/test/js_libs/tests/rngtest6.xml +0 -6
  222. data/tools/test/js_libs/tests/rngtest8.html +0 -60
  223. data/tools/test/js_libs/tests/rngtest8.rng +0 -13
  224. data/tools/test/js_libs/tests/rngtest8.xml +0 -2
  225. data/tools/test/js_libs/tests/rngtest9.html +0 -60
  226. data/tools/test/js_libs/tests/rngtest9.rng +0 -31
  227. data/tools/test/js_libs/tests/rngtest9.xml +0 -8
  228. data/tools/test/js_libs/ui.css +0 -333
  229. data/tools/test/js_libs/ui.html +0 -168
  230. data/tools/test/js_libs/ui.js +0 -177
  231. data/tools/test/js_libs/underscore.min.js +0 -27
  232. data/tools/test/js_libs/util.js +0 -81
  233. data/tools/test/js_libs/vkbeautify.0.99.00.beta.js +0 -358
  234. data/tools/test/js_libs/vkbeautify.js +0 -1
  235. data/tools/test/js_libs/webcomponents.min.js +0 -196
  236. data/tools/test/model.html +0 -192
  237. data/tools/test/rngs/attributes.rng +0 -8
  238. data/tools/test/rngs/dataelements.rng +0 -8
  239. data/tools/test/rngs/endpoints.rng +0 -8
  240. data/tools/test/templates.legacy/Async.xml +0 -46
  241. data/tools/test/templates.legacy/BCO.xml +0 -70
  242. data/tools/test/templates.legacy/BCS.xml +0 -70
  243. data/tools/test/templates.legacy/Centurio.xml +0 -75
  244. data/tools/test/templates.legacy/Concurrent.xml +0 -40
  245. data/tools/test/templates.legacy/Coopis Testset.xml +0 -76
  246. data/tools/test/templates.legacy/Endpoints and Data Manipulation.xml +0 -30
  247. data/tools/test/templates.legacy/ICSOC Testset.xml +0 -95
  248. data/tools/test/templates.legacy/Infinity.xml +0 -28
  249. data/tools/test/templates.legacy/Lego Boxer.xml +0 -31
  250. data/tools/test/templates.legacy/Lego Conveyor.xml +0 -31
  251. data/tools/test/templates.legacy/Lego Crane.xml +0 -87
  252. data/tools/test/templates.legacy/Lego Ejector.xml +0 -55
  253. data/tools/test/templates.legacy/Lego Full.xml +0 -142
  254. data/tools/test/templates.legacy/Lego Liddy.xml +0 -40
  255. data/tools/test/templates.legacy/Lego Plate.xml +0 -31
  256. data/tools/test/templates.legacy/Lego Transporter.xml +0 -43
  257. data/tools/test/templates.legacy/Lego_Part_1.xml +0 -85
  258. data/tools/test/templates.legacy/LgLinear.xml +0 -65
  259. data/tools/test/templates.legacy/Linear.xml +0 -77
  260. data/tools/test/templates.legacy/Log.xml +0 -117
  261. data/tools/test/templates.legacy/Mangler 1.xml +0 -87
  262. data/tools/test/templates.legacy/Mangler 2.xml +0 -103
  263. data/tools/test/templates.legacy/Manuel Labels.xml +0 -55
  264. data/tools/test/templates.legacy/Promise.xml +0 -275
  265. data/tools/test/templates.legacy/SOPROMO Test Sonification.xml +0 -83
  266. data/tools/test/templates.legacy/Subprocess.xml +0 -56
  267. data/tools/test/templates.legacy/Syncing P34 1.xml +0 -77
  268. data/tools/test/templates.legacy/Syncing P34 2.xml +0 -77
  269. data/tools/test/templates.legacy/Syncing P34 3.xml +0 -77
  270. data/tools/test/templates.legacy/Syncing P34.xml +0 -77
  271. data/tools/test/templates.legacy/TEST - Bad Loop.xml +0 -173
  272. data/tools/test/templates.legacy/TEST - Wrong Positions.xml +0 -174
  273. data/tools/test/templates.legacy/Take_5.xml +0 -48
  274. data/tools/test/templates.legacy/Update.xml +0 -32
  275. data/tools/test/templates.legacy/Worklist Parallel.xml +0 -104
  276. data/tools/test/templates.legacy/Worklist Test CPEE.xml +0 -40
  277. data/tools/test/templates.legacy/Worklist Test.xml +0 -42
  278. data/tools/test/templates.legacy/Worklist Test2.xml +0 -43
  279. data/tools/test/templates.legacy/convert_cpee2.rb +0 -15
  280. data/tools/test/templates.legacy/convert_preset.rb +0 -32
  281. data/tools/test/templates.legacy/testsets.xml +0 -37
  282. data/tools/test/templates.legacy/transformations.xml +0 -4
  283. data/tools/test/templates/Coopis 2010.xml +0 -76
  284. data/tools/test/templates/IUPC arXiv:1104.3609 P34 1.xml +0 -77
  285. data/tools/test/templates/IUPC arXiv:1104.3609 P34 2.xml +0 -77
  286. data/tools/test/templates/IUPC arXiv:1104.3609 P34 3.xml +0 -77
  287. data/tools/test/templates/Track Test Local.xml +0 -82
  288. data/tools/test/templates/Track Test.xml +0 -82
  289. data/tools/test/templates/UR-VUE 2020 Manual Adjust.xml +0 -182
  290. data/tools/test/templates/UR-VUE 2020 Solution Baseline.xml +0 -203
  291. data/tools/test/templates/UR-VUE 2020 Solution NN.xml +0 -197
  292. data/tools/test/templates/UR-VUE 2020 Solution View.xml +0 -151
  293. data/tools/test/templates/UR-VUE 2020.xml +0 -26
  294. data/tools/test/templates/Worklist.xml +0 -42
  295. data/tools/test/templates/instantiate.local/Take_Sub.xml +0 -59
  296. data/tools/test/templates/instantiate/Take_Perf.xml +0 -46
  297. data/tools/test/templates/instantiate/Take_Sub.xml +0 -58
  298. data/tools/test/templates/instantiate/Take_X.xml +0 -48
  299. data/tools/test/themes/compact/theme.js +0 -1285
  300. data/tools/test/themes/diana/theme.js +0 -1650
  301. data/tools/test/themes/extended/theme.js +0 -1325
  302. data/tools/test/themes/model/rngs/alternative.rng +0 -1
  303. data/tools/test/themes/model/rngs/call.rng +0 -67
  304. data/tools/test/themes/model/rngs/callmanipulate.rng +0 -72
  305. data/tools/test/themes/model/rngs/choose.rng +0 -1
  306. data/tools/test/themes/model/rngs/critical.rng +0 -1
  307. data/tools/test/themes/model/rngs/escape.rng +0 -1
  308. data/tools/test/themes/model/rngs/group.rng +0 -1
  309. data/tools/test/themes/model/rngs/loop.rng +0 -1
  310. data/tools/test/themes/model/rngs/manipulate.rng +0 -1
  311. data/tools/test/themes/model/rngs/otherwise.rng +0 -1
  312. data/tools/test/themes/model/rngs/parallel.rng +0 -1
  313. data/tools/test/themes/model/rngs/parallel_branch.rng +0 -1
  314. data/tools/test/themes/model/rngs/scripts.rng +0 -7
  315. data/tools/test/themes/model/rngs/stop.rng +0 -1
  316. data/tools/test/themes/model/rngs/terminate.rng +0 -1
  317. data/tools/test/themes/model/theme.js +0 -1268
  318. data/tools/test/themes/packed/theme.js +0 -1286
  319. data/tools/test/themes/preset/rngs/alternative.rng +0 -25
  320. data/tools/test/themes/preset/rngs/call.rng +0 -122
  321. data/tools/test/themes/preset/rngs/callmanipulate.rng +0 -145
  322. data/tools/test/themes/preset/rngs/choose.rng +0 -14
  323. data/tools/test/themes/preset/rngs/closed_loop.rng +0 -62
  324. data/tools/test/themes/preset/rngs/closed_loop_cancel.rng +0 -5
  325. data/tools/test/themes/preset/rngs/closed_loop_control.rng +0 -31
  326. data/tools/test/themes/preset/rngs/closed_loop_measuring.rng +0 -12
  327. data/tools/test/themes/preset/rngs/critical.rng +0 -5
  328. data/tools/test/themes/preset/rngs/escape.rng +0 -1
  329. data/tools/test/themes/preset/rngs/group.rng +0 -3
  330. data/tools/test/themes/preset/rngs/loop.rng +0 -22
  331. data/tools/test/themes/preset/rngs/manipulate.rng +0 -9
  332. data/tools/test/themes/preset/rngs/otherwise.rng +0 -22
  333. data/tools/test/themes/preset/rngs/parallel.rng +0 -21
  334. data/tools/test/themes/preset/rngs/parallel_branch.rng +0 -8
  335. data/tools/test/themes/preset/rngs/scripts.rng +0 -23
  336. data/tools/test/themes/preset/rngs/stop.rng +0 -5
  337. data/tools/test/themes/preset/rngs/terminate.rng +0 -1
  338. data/tools/test/themes/preset/symbols/alternative.svg +0 -5
  339. data/tools/test/themes/preset/symbols/arrow.svg +0 -3
  340. data/tools/test/themes/preset/symbols/call.svg +0 -6
  341. data/tools/test/themes/preset/symbols/callmanipulate.svg +0 -8
  342. data/tools/test/themes/preset/symbols/choose.svg +0 -5
  343. data/tools/test/themes/preset/symbols/choose_exclusive.svg +0 -5
  344. data/tools/test/themes/preset/symbols/choose_inclusive.svg +0 -4
  345. data/tools/test/themes/preset/symbols/closed_loop.svg +0 -5
  346. data/tools/test/themes/preset/symbols/closed_loop_cancel.svg +0 -5
  347. data/tools/test/themes/preset/symbols/closed_loop_control.svg +0 -5
  348. data/tools/test/themes/preset/symbols/closed_loop_measuring.svg +0 -6
  349. data/tools/test/themes/preset/symbols/complex.svg +0 -8
  350. data/tools/test/themes/preset/symbols/critical.svg +0 -4
  351. data/tools/test/themes/preset/symbols/end.svg +0 -3
  352. data/tools/test/themes/preset/symbols/escape.svg +0 -5
  353. data/tools/test/themes/preset/symbols/event_end.svg +0 -3
  354. data/tools/test/themes/preset/symbols/loop.svg +0 -5
  355. data/tools/test/themes/preset/symbols/manipulate.svg +0 -4
  356. data/tools/test/themes/preset/symbols/otherwise.svg +0 -5
  357. data/tools/test/themes/preset/symbols/parallel.svg +0 -5
  358. data/tools/test/themes/preset/symbols/parallel_branch.svg +0 -5
  359. data/tools/test/themes/preset/symbols/parallel_branch_compact.svg +0 -4
  360. data/tools/test/themes/preset/symbols/parallel_branch_event.svg +0 -14
  361. data/tools/test/themes/preset/symbols/parallel_branch_normal.svg +0 -5
  362. data/tools/test/themes/preset/symbols/scripts.svg +0 -4
  363. data/tools/test/themes/preset/symbols/start.svg +0 -3
  364. data/tools/test/themes/preset/symbols/stop.svg +0 -5
  365. data/tools/test/themes/preset/symbols/terminate.svg +0 -4
  366. data/tools/test/themes/preset/theme.js +0 -1287
  367. data/tools/test/track.html +0 -142
@@ -1,41 +0,0 @@
1
- document.addEventListener('graph:changed', function (e) {
2
- $("button[name=save]").prop("disabled",false);
3
- }, false);
4
-
5
- $(document).ready(function() {
6
- $('#tabmodel').click(function(event){
7
- $('#model ui-behind button:nth-child(1)').addClass('hidden');
8
- });
9
- $('#tabdataelements').click(function(event){
10
- $('#model ui-behind button:nth-child(1)').removeClass('hidden');
11
- });
12
-
13
- $('#model ui-behind button:nth-child(1)').click(function(event){
14
- var but = $(document).find('#model ui-content ui-area:not(.inactive) button');
15
- but.click();
16
- var are = $(document).find('#model ui-content ui-area:not(.inactive)');
17
- var tab = $(document).find('#model ui-content ui-area:not(.inactive) .relaxngui_table');
18
- are.animate({ scrollTop: tab.height() }, "slow");
19
- });
20
-
21
- $("button[name=save]").click(function(){
22
- var def = new $.Deferred();
23
- def.done(function(name,testset) {
24
- $.ajax({
25
- url: $('body').attr('current-save') + ($('body').attr('current-save-dir') ? ($('body').attr('current-save-dir') + '/').replace(/\/+/,'/') : '') + name + '.xml',
26
- type: 'PUT',
27
- contentType: 'application/xml',
28
- data: testset.serializePrettyXML(),
29
- headers: { 'Content-ID': 'content' },
30
- success: function() {
31
- $("button[name=save]").prop("disabled",true);
32
- $("#lastsavedline").removeClass('hidden');
33
- var dt = new Date();
34
- var time = dt.getHours() + ":" + dt.getMinutes() + ":" + dt.getSeconds();
35
- $("#lastsaved").text(time);
36
- }
37
- });
38
- });
39
- get_testset(def);
40
- });
41
- });
@@ -1,82 +0,0 @@
1
- $(document).ready(function() {
2
- // hook up dataelements with relaxngui //{{{
3
- $.ajax({
4
- type: "GET",
5
- url: "rngs/dataelements.rng",
6
- dataType: "xml",
7
- success: function(rng){
8
- save['dataelements'] = new RelaxNGui(rng,$('#dat_dataelements'));
9
- }
10
- }); //}}}
11
- // hook up endpoints with relaxngui //{{{
12
- $.ajax({
13
- type: "GET",
14
- dataType: "xml",
15
- url: "rngs/endpoints.rng",
16
- success: function(rng){
17
- save['endpoints'] = new RelaxNGui(rng,$('#dat_endpoints'));
18
- }
19
- }); //}}}
20
- // hook up attributes with relaxngui //{{{
21
- $.ajax({
22
- type: "GET",
23
- dataType: "xml",
24
- url: "rngs/attributes.rng",
25
- success: function(rng){
26
- save['attributes'] = new RelaxNGui(rng,$('#dat_attributes'));
27
- }
28
- }); //}}}
29
-
30
- // new entry //{{{
31
- $('#parameters ui-behind button:nth-child(1)').click(function(event){
32
- var but = $(document).find('#parameters ui-content ui-area:not(.inactive) button');
33
- but.click();
34
- var are = $(document).find('#parameters ui-content ui-area:not(.inactive)');
35
- var tab = $(document).find('#parameters ui-content ui-area:not(.inactive) .relaxngui_table');
36
- are.animate({ scrollTop: tab.height() }, "slow");
37
- }); //}}}
38
-
39
- var timer;
40
- // when input in one of the inputs, save
41
- $(document).on('input','#dat_dataelements input, #dat_endpoints input, #dat_attributes input',function(event){
42
- clearTimeout(timer);
43
- timer = setTimeout(function(){ do_parameters_save(event); }, 5000);
44
- });
45
- $(document).on('blur','#dat_dataelements input, #dat_endpoints input, #dat_attributes input',function(event){
46
- clearTimeout(timer);
47
- do_parameters_save(event);
48
- }); //}}}
49
- $(document).on('keypress','#dat_dataelements input, #dat_endpoints input, #dat_attributes input',function(event){
50
- if (event.keyCode == 13) {
51
- clearTimeout(timer);
52
- do_parameters_save(event);
53
- }
54
- }); //}}}
55
- $(document).on('relaxngui_remove', '#dat_dataelements, #dat_endpoints, #dat_attributes', function(event){
56
- clearTimeout(timer);
57
- do_parameters_save(event);
58
- });
59
- $(document).on('relaxngui_move', '#dat_dataelements, #dat_endpoints, #dat_attributes', function(event){
60
- clearTimeout(timer);
61
- do_parameters_save(event);
62
- });
63
- });
64
-
65
- function do_parameters_save(event) { //{{{
66
- var visid = $('ui-tabbar ui-tab',$(event.target).parents('ui-tabbed')).not('.switch').not('.inactive').attr('data-tab');
67
- if (save[visid].has_changed()) {
68
- var url = $('body').attr('current-instance');
69
- save[visid].set_checkpoint();
70
- var send = save[visid].save_text();
71
- $.ajax({
72
- type: "PUT",
73
- url: url + "/properties/" + visid + "/",
74
- contentType: 'text/xml',
75
- headers: {
76
- 'Content-ID': visid,
77
- 'CPEE-Event-Source': myid
78
- },
79
- data: send
80
- });
81
- }
82
- } //}}}
@@ -1,18 +0,0 @@
1
- function closeIFrame(srch) {
2
- var count = 0;
3
- $('iframe').each(function(i,val){
4
- if ($(val).attr('src') == 'track.html' + srch) {
5
- $(val).remove();
6
- }
7
- count += 1;
8
- });
9
- if (count == 1) {
10
- $('#graphcolumn').removeClass('resize');
11
- }
12
- }
13
-
14
- $(document).ready(function() {
15
- $("a[name=glob_unshow]").click(e => {
16
- parent.closeIFrame(window.location.search);
17
- });
18
- });
data/tools/test/js/ui.js DELETED
@@ -1,104 +0,0 @@
1
- function config_defaults(){
2
- var default_values = {};
3
- // logs is missing, so that the button is not shown, when there is no info
4
- if (location.protocol.match(/^file/)) {
5
- default_values['res-url'] = 'http://localhost:' + $('body').data('res-port');
6
- default_values['base-url'] = 'http://localhost:' + $('body').data('base-port');
7
- default_values['save-url'] = 'http://localhost:' + $('body').data('base-port') + '/design';
8
- } else {
9
- default_values['res-url'] = location.protocol + "//" + location.hostname + ":" + $('body').data('res-port');
10
- default_values['base-url'] = location.protocol + "//" + location.hostname + ":" + $('body').data('base-port');
11
- default_values['save-url'] = location.protocol + "//" + location.hostname + ":" + $('body').data('base-port') + '/design';
12
- }
13
- default_values['templates-url'] = 'templates/';
14
- return default_values;
15
- }
16
-
17
- $(document).ready(function() {
18
- if (!($.cookie('cpee_iagree')) && $("body > div[id='disclaimer']").length > 0) {
19
- $("body > :not([id='disclaimer'])").remove();
20
- $("body > [id='disclaimer']").removeClass('hidden');
21
-
22
- $("#iagree").click(function(){
23
- if($(this).is(':checked')){
24
- $("#icontinue").prop("disabled", false);
25
- } else {
26
- $("#icontinue").prop("disabled", true);
27
- }
28
- });
29
- $("#icontinue").click(function(){
30
- $.cookie('cpee_iagree','yes');
31
- location.reload();
32
- });
33
- } else {
34
- $.ajax({
35
- url: "config.json",
36
- success: function(res){
37
- var res_def = config_defaults();
38
- if (res['log-url']) { // just leave it out when it is not configured
39
- $("body").attr('current-logs',res['log-url']);
40
- }
41
- if (res['res-url']) {
42
- $("body").attr('current-resources',res['res-url']);
43
- } else {
44
- $("body").attr('current-resources',res_def['res-url']);
45
- }
46
- if (res['base-url']) {
47
- $("body").attr('current-base',res['base-url']);
48
- } else {
49
- $("body").attr('current-base',res_def['base-url']);
50
- }
51
- if (res['save-url']) {
52
- $("body").attr('current-save',res['save-url']);
53
- } else {
54
- $("body").attr('current-save',res_def['save-url']);
55
- }
56
- if (res['templates-url']) {
57
- $("body").attr('current-templates',res['templates-url']);
58
- } else {
59
- $("body").attr('current-templates',res_def['templates-url']);
60
- }
61
- $("input[name=res-url]").val($("body").attr('current-resources'));
62
- $("input[name=base-url]").val($("body").attr('current-base'));
63
- cockpit();
64
- },
65
- error: function(){
66
- var res = config_defaults();
67
- $("body").attr('current-resources',res['res-url']);
68
- $("body").attr('current-base',res['base-url']);
69
- $("body").attr('current-save',res['save-url']);
70
- $("body").attr('current-templates',res['templates-url']);
71
- $("input[name=res-url]").val($("body").attr('current-resources'));
72
- $("input[name=base-url]").val($("body").attr('current-base'));
73
- cockpit();
74
- }
75
- });
76
- }
77
- });
78
-
79
- $(document).on('copy', '[contenteditable]', function (e) {
80
- e = e.originalEvent;
81
- var selectedText = window.getSelection();
82
- var range = selectedText.getRangeAt(0);
83
- var selectedTextReplacement = range.toString()
84
- e.clipboardData.setData('text/plain', selectedTextReplacement);
85
- e.preventDefault(); // default behaviour is to copy any selected text
86
- });
87
-
88
- // Paste fix for contenteditable
89
- $(document).on('paste', '[contenteditable]', function (e) {
90
- e.preventDefault();
91
-
92
- if (window.clipboardData) {
93
- content = window.clipboardData.getData('Text');
94
- if (window.getSelection) {
95
- var selObj = window.getSelection();
96
- var selRange = selObj.getRangeAt(0);
97
- selRange.deleteContents();
98
- selRange.insertNode(document.createTextNode(content));
99
- }
100
- } else if (e.originalEvent.clipboardData) {
101
- content = (e.originalEvent || e).clipboardData.getData('text/plain');
102
- document.execCommand('insertText', false, content);
103
- }
104
- });
@@ -1,763 +0,0 @@
1
- /*
2
- This file is part of CPEE.
3
-
4
- CPEE is free software: you can redistribute it and/or modify it under the terms
5
- of the GNU General Public License as published by the Free Software Foundation,
6
- either version 3 of the License, or (at your option) any later version.
7
-
8
- CPEE is distributed in the hope that it will be useful, but WITHOUT ANY
9
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
10
- PARTICULAR PURPOSE. See the GNU General Public License for more details.
11
-
12
- You should have received a copy of the GNU General Public License along with
13
- CPEE (file COPYING in the main directory). If not, see
14
- <http://www.gnu.org/licenses/>.
15
- */
16
-
17
- // TODO: changes in svg-script:
18
- // 1) drawing functions
19
- // 2) creation of svg-container (Bug: arrows on lines)
20
- // 3) after-function to insert using namespace of description
21
-
22
- // WfAdaptor:
23
- // Handles interaction between Illustartor and Description
24
- // e.g. Event fires to Adaptor to insert Element and Illustrator and Description do it
25
- function WfAdaptor(theme_base,doit) { // Controller {{{
26
-
27
- // public variables {{{
28
- this.illustrator;
29
- this.description;
30
- this.elements = {};
31
- this.theme_base = theme_base;
32
- this.theme_dir = theme_base.replace(/theme.js/,'');
33
- // }}}
34
-
35
- // private variables {{{
36
- var illustrator;
37
- var description;
38
- var self = this;
39
- // }}}
40
-
41
- // helper funtions
42
- this.set_description = function(desc,auto_update) { // public {{{
43
- this.description.set_description(desc,auto_update);
44
- } // }}}
45
-
46
- this.get_description = function() { // public {{{
47
- return description.get_description();
48
- } // }}}
49
- this.notify = function() { // public {{{
50
- } // }}}
51
- this.draw_labels = function(max,labels,height_shift,striped){ // public {{{
52
- } // }}}
53
- this.set_svg_container = function (container) { // {{{
54
- illustrator.set_svg_container(container); // TODO: shadowing the container element
55
- } // }}}
56
- this.set_label_container = function(container) { // {{{
57
- illustrator.set_label_container(container);
58
- } // }}}
59
-
60
- // initialize
61
- this.illustrator = illustrator = new WfIllustrator(this);
62
- this.description = description = new WfDescription(this, this.illustrator);
63
-
64
- this.update = function(doit){ doit(self); };
65
-
66
- $.getScript(theme_base, function() {
67
- manifestation = new WFAdaptorManifestation(self);
68
- illustrator.compact = manifestation.compact == true ? true : false;
69
- illustrator.striped = manifestation.striped == true ? true : false;
70
- description.source = manifestation.source;
71
- var deferreds = [];
72
- // copy parent stuff
73
- for(element in manifestation.elements) {
74
- if (manifestation.elements[element].parent) {
75
- if (!manifestation.elements[element].description) {
76
- manifestation.elements[element].description = manifestation.elements[manifestation.elements[element].parent].description;
77
- }
78
- if (!manifestation.elements[element].adaptor) {
79
- manifestation.elements[element].adaptor = manifestation.elements[manifestation.elements[element].parent].adaptor;
80
- }
81
- var ill = manifestation.elements[manifestation.elements[element].parent].illustrator;
82
- for (var key in ill) {
83
- if (manifestation.elements[element].illustrator[key] == undefined) {
84
- manifestation.elements[element].illustrator[key] = ill[key];
85
- }
86
- }
87
- if (manifestation.elements[element].type == undefined) {
88
- manifestation.elements[element].type = manifestation.elements[manifestation.elements[element].parent].type;
89
- }
90
- }
91
- }
92
- // doit
93
- for(element in manifestation.resources) {
94
- deferreds.push(
95
- $.ajax({
96
- type: "GET",
97
- dataType: "xml",
98
- url: manifestation.resources[element],
99
- context: element,
100
- success: function(res){
101
- manifestation.resources[this] = $(res.documentElement);
102
- }
103
- })
104
- );
105
- }
106
- for(element in manifestation.elements) {
107
- if (manifestation.elements[element].illustrator) {
108
- if (manifestation.elements[element].illustrator.svg) {
109
- deferreds.push(
110
- $.ajax({
111
- type: "GET",
112
- dataType: "xml",
113
- url: manifestation.elements[element].illustrator.svg,
114
- context: element,
115
- success: function(res){
116
- manifestation.elements[this].illustrator.svg = $(res.documentElement);
117
- }
118
- })
119
- );
120
- }
121
- illustrator.elements[element] = manifestation.elements[element].illustrator;
122
- illustrator.elements[element].type = manifestation.elements[element].type || 'abstract';
123
- }
124
- if (manifestation.elements[element].description) {
125
- if ( typeof manifestation.elements[element].description === 'string' ) {
126
- manifestation.elements[element].description = [ manifestation.elements[element].description ];
127
- }
128
- if ($.isArray(manifestation.elements[element].description)) {
129
- _.each(manifestation.elements[element].description,function(val,ind){
130
- deferreds.push(
131
- $.ajax({
132
- type: "GET",
133
- dataType: "xml",
134
- url: val,
135
- context: element,
136
- success: function(res){
137
- manifestation.elements[this].description = $(res.documentElement);
138
- description.elements[this] = manifestation.elements[this].description;
139
- }
140
- })
141
- );
142
- });
143
- }
144
- }
145
- if (manifestation.elements[element].adaptor) {
146
- self.elements[element] = manifestation.elements[element].adaptor;
147
- }
148
- }
149
- $.when.apply($, deferreds).then(function(x) {
150
- doit(self);
151
- });
152
- });
153
- } // }}}
154
-
155
- // WfIllustrator:
156
- // Is in charge of displaying the Graph. It is further able insert and remove elements with given ID's from the illsutration.
157
- function WfIllustrator(wf_adaptor) { // View {{{
158
- // Variable {{{
159
- // public
160
- this.height = 40;
161
- this.width = 40;
162
- this.height_shift = this.height * 0.26;
163
- this.width_shift = this.width * 0.39;
164
- this.elements = {}; // the svgs
165
- this.svg = {};
166
- this.draw = {};
167
- this.compact = true;
168
- this.striped = true;
169
- // private
170
- var self = this;
171
- var adaptor = null;
172
- // }}}
173
- // Generic Functions {{{
174
- this.set_label_container = function(con) { // {{{
175
- self.svg.label_container = con;
176
- } // }}}
177
- this.set_svg_container = function(con) { // {{{
178
- self.svg.container = con;
179
- self.svg.container.append($X('<defs xmlns="http://www.w3.org/2000/svg">' +
180
- ' <marker id="arrow" viewBox="0 0 10 10" refX="33" refY="5" orient="auto" markerUnits="strokeWidth" markerWidth="4.5" makerHeight="4.5">' +
181
- ' <path d="m 2 2 l 6 3 l -6 3 z"/>' +
182
- ' </marker>' +
183
- '</defs>'));
184
- self.svg.defs = {};
185
- self.svg.defs['unknown'] = $X('<g xmlns="http://www.w3.org/2000/svg" class="unknown">' +
186
- '<circle cx="15" cy="15" r="14" class="unkown"/>' +
187
- '<text transform="translate(15,20)" class="normal">?</text>' +
188
- '</g>');
189
- for(element in self.elements)
190
- if(self.elements[element].svg) {
191
- var sym = $X('<g xmlns="http://www.w3.org/2000/svg"/>').append(self.elements[element].svg.clone().children()); // append all children to symbol
192
- $.each(self.elements[element].svg.attr('class').split(/\s+/), function(index, item) { sym.addClass(item); }); // copy all classes from the root node
193
- self.svg.defs[element] = sym;
194
- }
195
- } // }}}
196
- var clear = this.clear = function() { // {{{
197
- $('> :not(defs)', self.svg.container).each(function() {$(this).remove()});
198
- } // }}}
199
- this.set_svg = function(graph) { // {{{
200
- if(graph.max.row < 1) graph.max.row = 1;
201
- if(graph.max.col < 1) graph.max.col = 1;
202
- self.svg.container.attr('height', (graph.max.row) * self.height + self.height_shift);
203
- self.svg.container.attr('width', (graph.max.col+0.55) * self.width );
204
- self.svg.container.append(graph.svg);
205
- } // }}}
206
- this.get_node_by_svg_id = function(svg_id) { // {{{
207
- return $('[element-id = \'' + svg_id + '\'] g.activities', self.svg.container);
208
- } // }}}
209
- this.get_label_by_svg_id = function(svg_id) { // {{{
210
- return $('[element-id = \'' + svg_id + '\']', self.svg.label_container);
211
- } // }}}
212
- this.get_elements = function() { // {{{
213
- return $('g.element', self.svg.container);
214
- } // }}}
215
- this.get_labels = function() { // {{{
216
- return $('[element-id]', self.svg.label_container);
217
- } // }}}
218
- // }}}
219
- // Helper Functions {{{
220
- var draw_stripe = this.draw.draw_stripe = function (row, maxcol) { // {{{
221
- if (maxcol < 1) maxcol = 1;
222
- var g = $X('<rect class="stripe ' + (row % 2 == 0 ? 'even' : 'odd') + '" x="0" y="' + String(row*self.height+self.height_shift/2) + '" width="' + (self.width * maxcol + self.width - self.width_shift) + '" height="' + (self.height) + '" xmlns="http://www.w3.org/2000/svg"></rect>');
223
- self.svg.container.prepend(g);
224
- return g;
225
- } // }}}
226
-
227
- var draw_label = this.draw.draw_label = function (tname, id, label, row, col, group) { // {{{
228
- var g = $X('<text class="label" transform="translate(' + String(col*self.width-self.width_shift) + ',' + String(row*self.height+20-(self.height-self.height_shift)) + ')" xmlns="http://www.w3.org/2000/svg"></text>');
229
- var spli = $(label.split(/\n/));
230
- spli.each(function(k,v) {
231
- var tspan = $X('<tspan x="0" dy="' + (spli.length > 1 ? '-7' : '0') + '" xmlns="http://www.w3.org/2000/svg"></tspan>');
232
- if (k == 0) {
233
- tspan.text(v);
234
- } else {
235
- tspan.text(v);
236
- tspan.attr('dy','15');
237
- tspan.attr('dx','15');
238
- }
239
- g.append(tspan);
240
- });
241
- if(group) { group.find('g.element[element-id=' + id + ']').append(g); }
242
- else {self.svg.container.append(g);}
243
- return g;
244
- } // }}}
245
- var draw_symbol = this.draw.draw_symbol = function (sname, id, title, row, col, group, addition) { // {{{
246
- if(self.elements[sname] == undefined || self.elements[sname].svg == undefined) sname = 'unknown';
247
- if (addition) {
248
- var g = $X('<g class="element" element-type="' + sname + '" element-id="' + id + '" xmlns="http://www.w3.org/2000/svg">' +
249
- '<g transform="translate(' + String(col*self.width-self.width_shift) + ',' + String(row*self.height-(self.height-self.height_shift)) + ')"></g>' +
250
- '</g>');
251
- } else {
252
- var g = $X('<g class="element" element-type="' + sname + '" element-id="' + id + '" xmlns="http://www.w3.org/2000/svg">' +
253
- '<g transform="translate(' + String(col*self.width-self.width_shift) + ',' + String(row*self.height-(self.height-self.height_shift)) + ')">' +
254
- '<text class="super" transform="translate(30,8.4)">' +
255
- '<tspan class="active">0</tspan>' +
256
- '<tspan class="colon">,</tspan>' +
257
- '<tspan class="vote">0</tspan>' +
258
- '</text>' +
259
- '</g>' +
260
- '</g>');
261
- }
262
- var sym = self.svg.defs[sname].clone();
263
- var tit = $X('<title xmlns="http://www.w3.org/2000/svg"></title>');
264
- tit.text(title);
265
- sym.prepend(tit);
266
- sym.attr('class','activities');
267
- $(g[0].childNodes[0]).append(sym);
268
-
269
- // Binding events for symbol
270
- bind_event(g,sname,true);
271
-
272
- if(group) {group.append(g);}
273
- else {self.svg.container.children('g:first').append(g);}
274
- return g;
275
- } // }}}
276
- var bind_event = this.draw.bind_event = function(sym,tname,context) { //{{{
277
- for(event_name in adaptor.elements[tname]) {
278
- sym.bind(event_name, {'function_call':adaptor.elements[tname][event_name]}, function(e) { e.data.function_call($(this).attr('element-id'),e)});
279
- if(event_name == 'mousedown') sym.bind('contextmenu', false);
280
- }
281
- } //}}}
282
- var draw_border = this.draw.draw_border = function(id, p1, p2, group) { // {{{
283
- group.prepend($X('<rect element-id="' + id + '" x="' + (p1.col-0.50)*self.width + '" ' +
284
- 'y="' + (p1.row-0.80)*self.height + '" ' +
285
- 'width="' + ((p2.col+1.00)-p1.col)*self.width + '" ' +
286
- 'height="' + ((p2.row+1.00)-p1.row)*self.height +'" ' +
287
- 'class="block" rx="15" ry="15" xmlns="http://www.w3.org/2000/svg"/>'));
288
- } // }}}
289
- var draw_tile = this.draw.draw_tile = function(id, p1, p2, group) { // {{{
290
- group.prepend($X('<rect element-id="' + id + '" x="' + ((p1.col-1)*self.width + 1.3 * self.width_shift) + '" ' +
291
- 'y="' + ((p1.row-1)*self.height+self.height_shift/2) + '" ' +
292
- 'width="' + ((p2.col+1)-p1.col)*self.width + '" ' +
293
- 'height="' + ((p2.row+1)-p1.row)*self.height +'" ' +
294
- 'class="tile" rx="15" ry="15" xmlns="http://www.w3.org/2000/svg"/>'));
295
- } // }}}
296
- var draw_connection = this.draw.draw_connection = function(group, start, end, max_line, num_lines, arrow) { // {{{
297
- if(((end['row']-start['row']) == 0) && ((end['col']-start['col']) == 0)) return;
298
- var line;
299
- if (arrow)
300
- line = $X('<path xmlns="http://www.w3.org/2000/svg" class="ourline" marker-end="url(#arrow)"/>');
301
- else
302
- line = $X('<path xmlns="http://www.w3.org/2000/svg" class="ourline"/>');
303
- if (end['row']-start['row'] == 0 || end['col']-start['col'] == 0) { // straight line
304
- line.attr("d", "M " + String(start['col']*self.width) + "," + String(start['row']*self.height-15) +" "+
305
- String(end['col']*self.width) + "," + String(end['row']*self.height-15)
306
- );
307
- } else if (end['row']-start['row'] > 0) { // downwards
308
- if (end['col']-start['col'] > 0) {// left - right
309
- if (self.compact) {
310
- line.attr("d", "M " + String(start['col']*self.width) + "," + String(start['row']*self.height-15) +" "+
311
- String(start['col']*self.width+14) + "," + String((end['row']-1)*self.height) +" "+ // first turn of hotizontal-line going away from node
312
- String(end['col']*self.width) + "," + String((end['row']-1)*self.height) +" "+
313
- String(end['col']*self.width) + "," + String(end['row']*self.height-15)
314
- );
315
- } else {
316
- line.attr("d", "M " + String(start['col']*self.width) + "," + String(start['row']*self.height-15) +" "+
317
- String(end['col']*self.width) + "," + String(start['row']*self.height-15) +" "+
318
- String(end['col']*self.width) + "," + String(end['row']*self.height-15)
319
- );
320
- }
321
- } else { // right - left
322
- line.attr("d", "M " + String(start['col']*self.width) + "," + String(start['row']*self.height-15) +" "+
323
- String(start['col']*self.width) + "," + String(end['row']*self.height-35) +" "+
324
- String(end['col']*self.width+14) + "," + String(end['row']*self.height-35) +" "+ // last turn of horizontal-line going into the node
325
- String(end['col']*self.width) + "," + String(end['row']*self.height-15)
326
- );
327
- }
328
- } else if(end['row']-start['row'] < 0) { // upwards
329
- if(num_lines > 1) {// ??? no idea
330
- line.attr("d", "M " + String(start['col']*self.width) + "," + String(start['row']*self.height-15) +" "+
331
- String(start['col']*self.width) + "," + String((max_line-1)*self.height+5) +" "+
332
- String(end['col']*self.width+20) + "," + String((max_line-1)*self.height+5) +" "+
333
- String(end['col']*self.width+20) + "," + String(end['row']*self.height+25)+" "+
334
- String(end['col']*self.width) + "," + String(end['row']*self.height-15)
335
- );
336
- } else {
337
- line.attr("d", "M " + String(start['col']*self.width) + "," + String(start['row']*self.height-15) +" "+
338
- String(end['col']*self.width+15) + "," + String(start['row']*self.height-15) +" "+
339
- String(end['col']*self.width+15) + "," + String(end['row']*self.height+15)+" "+
340
- String(end['col']*self.width) + "," + String(end['row']*self.height-15)
341
- );
342
- }
343
- }
344
- self.svg.container.append(line);
345
- } // }}}
346
- // }}}
347
- // Initialize {{{
348
- adaptor = wf_adaptor;
349
- // }}}
350
- } // }}}
351
-
352
- // WfDescription:
353
- // Manages the description. Is is further able to add/remove elements from the controlflow description.
354
- function WfDescription(wf_adaptor, wf_illustrator) { // Model {{{
355
- // public variables
356
- this.elements = {}; // the rngs
357
- this.source = null;
358
- // private variables
359
- var self = this;
360
- var adaptor;
361
- var illustrator;
362
- var description;
363
- var id_counter = {};
364
- var update_illustrator = true;
365
- var labels = [];
366
-
367
- // Set Labels //{{{
368
- this.set_labels = function(graph) {
369
- if (illustrator.compact == false) {
370
- adaptor.draw_labels(graph.max,labels,illustrator.height_shift,illustrator.striped == true ? true : false);
371
- } else {
372
- adaptor.draw_labels(graph.max,[],illustrator.height_shift,false);
373
- }
374
- if (illustrator.striped == true && illustrator.compact == false) {
375
- for (var i=0; i < graph.max.row; i++) {
376
- illustrator.draw.draw_stripe(i,graph.max.col);
377
- }
378
- }
379
- if (illustrator.compact == false) {
380
- if (labels.length > 0) {
381
- _.each(labels,function(a,key) {
382
- if (a.label && a.label[0] && a.label[0].column == 'Label' && a.label[0].value) {
383
- illustrator.draw.draw_label(a.tname, a.element_id, a.label[0].value, a.row, graph.max.col + 1, graph.svg);
384
- }
385
- });
386
- }
387
- }
388
- } //}}}
389
-
390
- // Generic Functions {{{
391
- this.set_description = function(desc, auto_update) { // public {{{
392
- if(auto_update != undefined) update_illustrator = auto_update;
393
- if(typeof desc == "string") {
394
- description = $($.parseXML(desc));
395
- } else if(desc instanceof jQuery) {
396
- description = desc;
397
- } else {
398
- alert("WfDescription: unknown description type:\nConstructor-Name: " + desc.constructor + " / TypeOf: " + (typeof desc));
399
- description = null;
400
- }
401
- id_counter = {};
402
- labels = [];
403
- illustrator.clear();
404
- var graph = parse(description.children('description').get(0), {'row':0,'col':0,final:false,wide:false});
405
- self.set_labels(graph);
406
- // set labels
407
- illustrator.set_svg(graph);
408
- } // }}}
409
- var gd = this.get_description = function() { // public {{{
410
- var serxml = $(description.get(0).documentElement).clone(true);
411
- serxml.removeAttr('svg-id');
412
- serxml.removeAttr('svg-type');
413
- serxml.removeAttr('svg-subtype');
414
- serxml.removeAttr('svg-label');
415
- $('*[svg-id]',serxml).each(function(){
416
- $(this).removeAttr('svg-id');
417
- });
418
- $('*[svg-type]',serxml).each(function(){
419
- $(this).removeAttr('svg-type');
420
- });
421
- $('*[svg-subtype]',serxml).each(function(){
422
- $(this).removeAttr('svg-subtype');
423
- });
424
- $('*[svg-label]',serxml).each(function(){
425
- $(this).removeAttr('svg-label');
426
- });
427
- return serxml.serializeXML();
428
- } // }}}
429
- this.get_node_by_svg_id = function(svg_id) { // {{{
430
- return $('[svg-id = \'' + svg_id + '\']', description);
431
- } // }}}
432
- var context_eval = this.context_eval = function(what) { // {{{
433
- return eval(what);
434
- } // }}}
435
- var get_free_id = this.get_free_id = function(other) { // {{{
436
- var existing = new Array();
437
- if (other) {
438
- if ($(other).attr('id')) {
439
- existing.push($(other).attr('id'));
440
- }
441
- $(other).find("[id]").each(function(k,v){
442
- existing.push($(v).attr('id'));
443
- });
444
- }
445
- $('*[id]', description).each(function(){existing.push($(this).attr('id'))});
446
- var id = 1;
447
- while ($.inArray('a' + id,existing) != -1) {
448
- id += 1;
449
- }
450
- return 'a' + id;
451
- } // }}}
452
- var refresh = this.refresh = function(doit) {
453
- id_counter = {};
454
- labels = [];
455
- illustrator.clear();
456
- var graph = parse(description.children('description').get(0), {'row':0,'col':0});
457
- self.set_labels(graph);
458
- // set labels
459
- illustrator.set_svg(graph);
460
- doit(self);
461
- }
462
- var update = this.update = function(svgid) { // {{{
463
- id_counter = {};
464
- if(update_illustrator){
465
- labels = [];
466
- illustrator.clear();
467
- var graph = parse(description.children('description').get(0), {'row':0,'col':0});
468
- self.set_labels(graph);
469
- illustrator.set_svg(graph);
470
- }
471
-
472
- var newn = $('*[new=true]',description);
473
- newn.removeAttr('new');
474
-
475
- if (newn.attr('svg-id') != undefined)
476
- adaptor.notify(newn.attr('svg-id'));
477
- else if (svgid != undefined)
478
- adaptor.notify(svgid);
479
- else if (newn.parent('[svg-id]').length > 0)
480
- adaptor.notify(newn.parent('[svg-id]').attr('svg-id'));
481
- else
482
- console.info('Something went horribly wrong');
483
- } // }}}
484
- // }}}
485
- // Adaption functions {{{
486
- this.insert_after = function(new_node, target, source_opts) { // {{{
487
- if ($.isArray(new_node)) {
488
- $.each(new_node,function(k,v){
489
- var nn = self.source(v,source_opts);
490
- target.after(nn);
491
- nn.attr('new','true');
492
- });
493
- } else {
494
- var nn = self.source(new_node,source_opts);
495
- target.after(nn);
496
- nn.attr('new','true');
497
- }
498
- update();
499
- } // }}}
500
- this.insert_first_into = function(new_node, target, source_opts) { // {{{
501
- if ($.isArray(new_node)) {
502
- $.each(new_node,function(k,v){
503
- var nn = self.source(v,source_opts);
504
- target.prepend(nn);
505
- nn.attr('new','true');
506
- });
507
- } else {
508
- var nn = self.source(new_node,source_opts);
509
- target.prepend(nn);
510
- nn.attr('new','true');
511
- }
512
- update();
513
- } // }}}
514
- this.insert_last_into = function(new_node, target) { // {{{
515
- if ($.isArray(new_node)) {
516
- $.each(new_node,function(k,v){
517
- var nn = self.source(v);
518
- target.append(nn);
519
- nn.attr('new','true');
520
- });
521
- } else {
522
- var nn = self.source(new_node);
523
- target.append(nn);
524
- nn.attr('new','true');
525
- }
526
- update();
527
- } // }}}
528
- this.remove = function(selector, target) {//{{{
529
- var svgid;
530
- if(selector == undefined) {
531
- svgid = target.attr('svg-id');
532
- target.remove()
533
- } else {
534
- svgid = $(selector, target).attr('svg-id');
535
- if (!svgid) {
536
- svgid = target.attr('svg-id');
537
- }
538
- $(selector, target).remove();
539
- }
540
- update(svgid);
541
- }
542
- // }}}
543
- // }}}
544
- // Helper Functions {{{
545
- var parse = function(root, parent_pos) { // private {{{
546
- var pos = jQuery.extend(true, {}, parent_pos);
547
- var max = {'row': 0,'col': 0};
548
- var prev = [parent_pos]; // connects parent with child(s), depending on the expansion
549
- var endnodes = [];
550
- var sname = sym_name(root.tagName,root);
551
- var root_expansion = illustrator.elements[root.tagName].expansion(root);
552
- var block = {'max':{}}; // e.g. {'max':{'row':0,'col':0}, 'endpoints':[]};
553
-
554
- var group = $X('<g class="group" xmlns="http://www.w3.org/2000/svg"/>');
555
-
556
- if(root_expansion == 'horizontal') pos.row++;
557
- if(illustrator.elements[root.tagName].col_shift(root) == true && root_expansion != 'horizontal') pos.col++;
558
-
559
- if(root.tagName == 'description') { // First parsing {{{
560
- pos.row++;
561
- $(root).attr('svg-id','description');
562
- group.attr('element-id','group-description');
563
- if (illustrator.elements[sname].label) {
564
- labels.push({row: pos.row, element_id: 'start', tname: 'start', label: illustrator.elements[sname].label(root)});
565
- }
566
- illustrator.draw.draw_symbol('start', 'description', 'START', pos.row, pos.col, group);
567
- } // }}}
568
-
569
- $(root).children().filter(function(){ return this.localName[0] != '_'; }).each(function() {
570
- var context = this;
571
- var tname = context.tagName;
572
- var sname = sym_name(tname,context);
573
- pos.final = illustrator.elements[sname].final ? true : false;
574
- pos.wide = illustrator.elements[sname].wide ? true : false;
575
-
576
- // Calculate next position {{{
577
- if(root_expansion == 'vertical') pos.row++;
578
- if(root_expansion == 'horizontal') {
579
- pos.col++;
580
- if (!illustrator.compact) {
581
- if (block.max.row) {
582
- pos.row = block.max.row + 1;
583
- }
584
- }
585
- }
586
-
587
- if(illustrator.elements[tname] != undefined && illustrator.elements[tname].type == 'complex') {
588
- if(illustrator.elements[tname] != undefined && !illustrator.elements[tname].svg) pos.row--;
589
- // TODO: Remaining problem is the order inside the svg. Thats why the connection is above the icon
590
- block = parse(context, jQuery.extend(true, {}, pos));
591
- group.append(block.svg);
592
- block.svg.attr('id', 'group-' + $(context).attr('svg-id'));
593
- if(illustrator.elements[sname].endnodes == 'aggregate') endnodes = []; // resets endpoints e.g. potential preceding primitive
594
- } else {
595
- if(illustrator.elements[tname] != undefined && illustrator.elements[tname].type == 'primitive' && illustrator.elements[tname].svg) { // This enables "invisble" elements, by returning undefined in the SVG function (e.g. constraints)
596
- block.max.row = pos.row;
597
- block.max.col = pos.col;
598
- block.endnodes = [pos];
599
- block.svg = group;
600
- }
601
- }
602
- // }}}
603
-
604
- var g;
605
- set_details(tname,sname,pos,context);
606
-
607
- var origpos = jQuery.extend(true, {}, pos);
608
- [g, endnodes] = draw_position(tname,origpos,prev,block,group,endnodes,context);
609
-
610
- // Prepare next iteration {{{
611
- if(root_expansion == 'vertical') { prev = jQuery.extend(true, {}, endnodes); pos.row = block.max.row;} // covers e.g. input's for alternative, parallel_branch, ... everything with horizontal expansion
612
- if(root_expansion == 'horizontal') pos.col = block.max.col;
613
- if(max.row < block.max.row) max.row = block.max.row;
614
- if(max.col < block.max.col) max.col = block.max.col;
615
- // }}}
616
-
617
- if (illustrator.elements[sname].closing_symbol) {
618
- var ctname = illustrator.elements[sname].closing_symbol;
619
- var csname = sym_name(ctname,context);
620
- pos.row++;
621
- max.row++;
622
- block.max.row = pos.row;
623
- if (illustrator.elements[sname].endnodes == 'this') {
624
- pos.col++;
625
- if (pos.col > max.col) {
626
- max.col++;
627
- block.max.col = pos.col;
628
- }
629
- draw_position(ctname,pos,block.endnodes,block,group,[],context,{svg: g, pos: origpos});
630
- pos.col--;
631
- } else {
632
- [undefined, endnodes] = draw_position(ctname,pos,prev,block,group,[],context,{svg: g, pos: origpos});
633
- }
634
- set_details(ctname,csname,pos,context,true);
635
- prev = jQuery.extend(true, {}, endnodes);
636
- }
637
- });
638
-
639
- if($(root).children().filter(function(){ return this.attributes['svg-id'] != undefined; }).length == 0) { // empty complex found
640
- endnodes = [parent_pos];
641
- max.row = parent_pos.row;
642
- max.col = parent_pos.col;
643
- }
644
-
645
- if(root.tagName == 'description' && illustrator.elements[root.tagName].closing_symbol) {
646
- pos.row++;
647
- max.row = pos.row;
648
- draw_position(illustrator.elements['start'].closing_symbol,pos,prev,block,group,[],this,{svg: group, pos: pos});
649
- }
650
-
651
- return {'endnodes': endnodes, 'max':max, 'svg':group};
652
- } // }}}
653
- var sym_name = function(tname,context) { //{{{
654
- var sname;
655
- if(!illustrator.elements[tname]) {sname = 'unknown';}
656
- else if(typeof illustrator.elements[tname].resolve_symbol == 'function') {sname = illustrator.elements[tname].resolve_symbol(context,illustrator.elements[tname].col_shift ? illustrator.elements[tname].col_shift(context) : undefined);}
657
- else if(typeof illustrator.elements[tname].resolve_symbol == 'string') {sname = illustrator.elements[tname].resolve_symbol;}
658
- else {sname = tname;}
659
- return sname;
660
- } //}}}
661
- var set_details = function(tname,sname,pos,context,simple) { //{{{
662
- if (simple == undefined || simple == false) {
663
- if($(context).attr('id') == undefined) {
664
- if(id_counter[tname] == undefined) id_counter[tname] = -1;
665
- $(context).attr('svg-id', tname + '_' + (++id_counter[tname]));
666
- } else {
667
- $(context).attr('svg-id', $(context).attr('id'));
668
- }
669
- }
670
- if (illustrator.elements[sname].label) {
671
- var lab = illustrator.elements[sname].label(context);
672
- if (lab && lab[0] && lab[0].value && lab[0].column == 'Label' && lab[0].value != '') {
673
- $(context).attr('svg-label', lab[0].value);
674
- }
675
- labels.push({row: pos.row, element_id: $(context).attr('svg-id'), tname: tname, label: lab});
676
- }
677
- } //}}}
678
- var draw_position = function(tname,pos,prev,block,group,endnodes,context,second) { // private {{{
679
- var sname = sym_name(tname,context);
680
- // Draw Symbol {{{
681
- if (second) {
682
- illustrator.draw.draw_symbol(sname, $(context).attr('svg-id'), $(context).attr('svg-label'), pos.row, pos.col, second.svg, true).addClass(illustrator.elements[sname] ? illustrator.elements[sname].type : 'primitive unknown');
683
- } else {
684
- $(context).attr('svg-type',tname);
685
- $(context).attr('svg-subtype',sname);
686
- if((illustrator.elements[sname] && illustrator.elements[sname].svg) || sname == 'unknown') {
687
- var g = illustrator.draw.draw_symbol(sname, $(context).attr('svg-id'), $(context).attr('svg-label'), pos.row, pos.col, block.svg).addClass(illustrator.elements[sname] ? illustrator.elements[sname].type : 'primitive unknown');
688
- if (illustrator.elements[sname].info) {
689
- var info = illustrator.elements[sname].info(context);
690
- _.each(info,function(val,key) {
691
- g.attr(key, val);
692
- });
693
- }
694
- } else { console.log("no icon "+ sname);}
695
- if(illustrator.elements[sname] && illustrator.elements[sname].border) {
696
- var wide = (illustrator.elements[sname].wide == true && block.max.col == pos.col) ? pos.col + 1 : block.max.col;
697
- if (illustrator.elements[sname].closing_symbol) {
698
- illustrator.draw.draw_border($(context).attr('svg-id'), pos, { col: wide, row: block.max.row + 1 }, block.svg);
699
- } else {
700
- illustrator.draw.draw_border($(context).attr('svg-id'), pos, { col: wide, row: block.max.row }, block.svg);
701
- }
702
- }
703
- if(illustrator.elements[sname] && illustrator.elements[sname].type == 'complex') {
704
- var wide = (illustrator.elements[sname].wide == true && block.max.col == pos.col) ? pos.col + 1 : block.max.col;
705
- if (illustrator.elements[sname].closing_symbol) {
706
- illustrator.draw.draw_tile($(context).attr('svg-id'), pos, { col: wide, row: block.max.row + 1 }, block.svg);
707
- } else {
708
- illustrator.draw.draw_tile($(context).attr('svg-id'), pos, { col: wide, row: block.max.row }, block.svg);
709
- }
710
- }
711
- }
712
- // }}}
713
- // Calculate Connection {{{
714
- if(illustrator.elements[sname] != undefined && illustrator.elements[sname].closeblock == true) { // Close Block if element e.g. loop
715
- if (second) {
716
- if (second.pos.row+1 < pos.row) { // when no content, dont paint the up arrow
717
- illustrator.draw.draw_connection(group, pos, second.pos, block.max.row+1, 1, true);
718
- }
719
- } else {
720
- for(node in block.endnodes) {
721
- if (!block.endnodes[node].final) {
722
- illustrator.draw.draw_connection(group, block.endnodes[node], pos, block.max.row+1, block.endnodes.length, true);
723
- }
724
- }
725
- }
726
- }
727
- if(illustrator.elements[sname] != undefined && illustrator.elements[sname].endnodes != 'this') {
728
- for(i in block.endnodes) { endnodes.push(block.endnodes[i]); } // collects all endpoints from different childs e.g. alternatives from choose
729
- } else { endnodes = [jQuery.extend(true, {}, pos)]; } // sets this element as only endpoint (aggregate)
730
- if(prev[0].row == 0 || prev[0].col == 0) { // this enforces the connection from description to the first element
731
- illustrator.draw.draw_connection(group, { row: 1, col: 1 }, pos, null, null, true);
732
- } else {
733
- if (illustrator.elements[sname].noarrow == undefined || illustrator.elements[sname].noarrow == false) {
734
- for (node in prev) {
735
- if (!prev[node].final) {
736
- if (prev[node].wide) {
737
- var pn = jQuery.extend(true, {}, prev[node]);
738
- if (pos.col > prev[node].col) {
739
- pn.col = pos.col;
740
- }
741
- illustrator.draw.draw_connection(group, pn, pos, null, null, true);
742
- } else {
743
- illustrator.draw.draw_connection(group, prev[node], pos, null, null, true);
744
- }
745
- }
746
- }
747
- } else {
748
- for(node in prev) {
749
- if (!prev[node].final)
750
- illustrator.draw.draw_connection(group, prev[node], pos, null, null, false);
751
- }
752
- }
753
- }
754
- // }}}
755
- return [g, endnodes];
756
- } // }}}
757
- // }}}
758
-
759
- // Initialze {{{
760
- adaptor = wf_adaptor;
761
- illustrator = wf_illustrator;
762
- // }}}
763
- } // }}}