cpee 2.0.21 → 2.0.26

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 (118) hide show
  1. checksums.yaml +4 -4
  2. data/cockpit/CPEE.xml +8 -0
  3. data/cockpit/Signavio.xml +8 -0
  4. data/cockpit/css/model.css +2 -0
  5. data/cockpit/css/replay.css +55 -0
  6. data/cockpit/css/ui.css +29 -5
  7. data/cockpit/edit.html +263 -0
  8. data/cockpit/graph.html +3 -3
  9. data/cockpit/index.html +11 -8
  10. data/cockpit/js/details.js +0 -1
  11. data/cockpit/js/edit.js +32 -0
  12. data/cockpit/js/instance.js +52 -52
  13. data/cockpit/js/model.js +6 -36
  14. data/cockpit/js/parameters.js +9 -4
  15. data/cockpit/js/replay.js +40 -0
  16. data/cockpit/js/ui.js +7 -0
  17. data/cockpit/model.html +8 -4
  18. data/cockpit/replay.html +53 -0
  19. data/cockpit/templates/Coopis 2010.xml +1 -1
  20. data/cockpit/templates/IUPC arXiv:1104.3609 P34 1.xml +1 -1
  21. data/cockpit/templates/IUPC arXiv:1104.3609 P34 2.xml +1 -1
  22. data/cockpit/templates/IUPC arXiv:1104.3609 P34 3.xml +1 -1
  23. data/cockpit/templates/Track Test Local.xml +6 -2
  24. data/cockpit/templates/Track Test.xml +5 -1
  25. data/cockpit/templates/UR-VUE 2020 Manual Adjust.xml +5 -1
  26. data/cockpit/templates/UR-VUE 2020 Solution Baseline.xml +8 -4
  27. data/cockpit/templates/UR-VUE 2020 Solution NN.xml +8 -4
  28. data/cockpit/templates/UR-VUE 2020 Solution View.xml +8 -4
  29. data/cockpit/templates/UR-VUE 2020.xml +8 -4
  30. data/cockpit/templates/instantiate.local/Take_Sub.xml +1 -1
  31. data/cockpit/themes/compact/rngs/call.rng +93 -41
  32. data/cockpit/themes/compact/rngs/callmanipulate.rng +113 -40
  33. data/cockpit/themes/compact/theme.js +57 -25
  34. data/cockpit/themes/{diana → control}/rngs/alternative.rng +0 -0
  35. data/cockpit/themes/control/rngs/call.rng +174 -0
  36. data/cockpit/themes/control/rngs/callmanipulate.rng +218 -0
  37. data/cockpit/themes/{diana → control}/rngs/choose.rng +0 -0
  38. data/cockpit/themes/{diana → control}/rngs/closed_loop.rng +0 -0
  39. data/cockpit/themes/{diana → control}/rngs/closed_loop_cancel.rng +0 -0
  40. data/cockpit/themes/{diana → control}/rngs/closed_loop_control.rng +0 -0
  41. data/cockpit/themes/{diana → control}/rngs/closed_loop_measuring.rng +0 -0
  42. data/cockpit/themes/{diana → control}/rngs/critical.rng +0 -0
  43. data/cockpit/themes/{diana → control}/rngs/escape.rng +0 -0
  44. data/cockpit/themes/{diana → control}/rngs/group.rng +0 -0
  45. data/cockpit/themes/{diana → control}/rngs/loop.rng +0 -0
  46. data/cockpit/themes/{diana → control}/rngs/manipulate.rng +0 -0
  47. data/cockpit/themes/{diana → control}/rngs/otherwise.rng +0 -0
  48. data/cockpit/themes/{diana → control}/rngs/parallel.rng +0 -0
  49. data/cockpit/themes/{diana → control}/rngs/parallel_branch.rng +0 -0
  50. data/cockpit/themes/{diana → control}/rngs/scripts.rng +0 -0
  51. data/cockpit/themes/{diana → control}/rngs/stop.rng +0 -0
  52. data/cockpit/themes/{diana → control}/rngs/terminate.rng +0 -0
  53. data/cockpit/themes/{diana → control}/symbols/alternative.svg +0 -0
  54. data/cockpit/themes/{diana → control}/symbols/arrow.svg +0 -0
  55. data/cockpit/themes/{diana → control}/symbols/call.svg +0 -0
  56. data/cockpit/themes/{diana → control}/symbols/callmanipulate.svg +0 -0
  57. data/cockpit/themes/{diana → control}/symbols/choose.svg +0 -0
  58. data/cockpit/themes/{diana → control}/symbols/choose_exclusive.svg +0 -0
  59. data/cockpit/themes/{diana → control}/symbols/choose_inclusive.svg +0 -0
  60. data/cockpit/themes/{diana → control}/symbols/closed_loop.svg +0 -0
  61. data/cockpit/themes/{diana → control}/symbols/closed_loop_cancel.svg +0 -0
  62. data/cockpit/themes/{diana → control}/symbols/closed_loop_control.svg +0 -0
  63. data/cockpit/themes/{diana → control}/symbols/closed_loop_measuring.svg +0 -0
  64. data/cockpit/themes/{diana → control}/symbols/complex.svg +0 -0
  65. data/cockpit/themes/{diana → control}/symbols/critical.svg +0 -0
  66. data/cockpit/themes/{diana → control}/symbols/end.svg +0 -0
  67. data/cockpit/themes/{diana → control}/symbols/escape.svg +0 -0
  68. data/cockpit/themes/{diana → control}/symbols/event_end.svg +0 -0
  69. data/cockpit/themes/{diana → control}/symbols/loop.svg +0 -0
  70. data/cockpit/themes/{diana → control}/symbols/manipulate.svg +0 -0
  71. data/cockpit/themes/{diana → control}/symbols/otherwise.svg +0 -0
  72. data/cockpit/themes/{diana → control}/symbols/parallel.svg +0 -0
  73. data/cockpit/themes/{diana → control}/symbols/parallel_branch.svg +0 -0
  74. data/cockpit/themes/{diana → control}/symbols/parallel_branch_compact.svg +0 -0
  75. data/cockpit/themes/{diana → control}/symbols/parallel_branch_event.svg +0 -0
  76. data/cockpit/themes/{diana → control}/symbols/parallel_branch_normal.svg +0 -0
  77. data/cockpit/themes/{diana → control}/symbols/scripts.svg +0 -0
  78. data/cockpit/themes/{diana → control}/symbols/start.svg +0 -0
  79. data/cockpit/themes/{diana → control}/symbols/stop.svg +0 -0
  80. data/cockpit/themes/{diana → control}/symbols/terminate.svg +0 -0
  81. data/cockpit/themes/{diana → control}/theme.js +74 -28
  82. data/cockpit/themes/default/rngs/call.rng +93 -41
  83. data/cockpit/themes/default/rngs/callmanipulate.rng +113 -40
  84. data/cockpit/themes/default/theme.js +1318 -0
  85. data/cockpit/themes/extended/rngs/call.rng +93 -41
  86. data/cockpit/themes/extended/rngs/callmanipulate.rng +113 -40
  87. data/cockpit/themes/extended/theme.js +50 -19
  88. data/cockpit/themes/model/rngs/call.rng +21 -20
  89. data/cockpit/themes/model/rngs/callmanipulate.rng +23 -22
  90. data/cockpit/themes/model/theme.js +51 -20
  91. data/cockpit/themes/packed/rngs/call.rng +93 -41
  92. data/cockpit/themes/packed/rngs/callmanipulate.rng +113 -40
  93. data/cockpit/themes/packed/theme.js +50 -19
  94. data/cockpit/themes/preset/rngs/call.rng +93 -41
  95. data/cockpit/themes/preset/rngs/callmanipulate.rng +113 -40
  96. data/cockpit/themes/preset/theme.js +49 -18
  97. data/cockpit/track.html +3 -10
  98. data/cockpit/transformations.xml +4 -0
  99. data/cpee.gemspec +2 -2
  100. data/lib/callbacks.xml +5 -0
  101. data/lib/cpee/controller.rb +30 -28
  102. data/lib/cpee/implementation_callbacks.rb +60 -0
  103. data/lib/cpee/implementation_notifications.rb +6 -2
  104. data/server/handlerwrappers/default.rb +17 -5
  105. data/server/resources/notifications/logging/subscription.xml +6 -0
  106. data/server/resources/transformation_dslx.xsl +1 -1
  107. data/server/routing/end.pid +1 -0
  108. data/server/routing/end.rb +1 -0
  109. data/server/routing/forward-events.pid +1 -0
  110. data/server/routing/forward-votes.pid +1 -0
  111. data/server/routing/forward-votes.rb +6 -5
  112. data/server/routing/persist.pid +1 -0
  113. data/server/routing/persist.rb +4 -4
  114. data/server/server.pid +1 -0
  115. metadata +63 -50
  116. data/cockpit/edit.html +0 -1
  117. data/cockpit/themes/diana/rngs/call.rng +0 -122
  118. data/cockpit/themes/diana/rngs/callmanipulate.rng +0 -145
@@ -26,7 +26,8 @@
26
26
  </zeroOrMore>
27
27
  </element>
28
28
  <element name="stream" rngui:header="Data Stream Handling" rngui:fold="closed">
29
- <element name="sensors" rngui:header="Sensors" rngui:fold="closed">
29
+
30
+ <element name="sensors" rngui:header="Sensor Data Streams" rngui:fold="closed">
30
31
  <zeroOrMore rngui:label="Add Sensor">
31
32
  <element name="sensor">
32
33
  <element name="name" rngui:label="Label">
@@ -35,13 +36,18 @@
35
36
  <element name="extractor_url" rngui:label="Extractor Url">
36
37
  <data type="string" rngui:label="Service Url"/>
37
38
  </element>
38
- <element name="extractor_arg" rngui:label="Extractor Argument">
39
- <data type="string" rngui:label="Value / Json"/>
39
+ <element name="extractor_params" rngui:label="Extractor Arguments:">
40
+ <zeroOrMore rngui:label="Create Extractor Argument Pairs">
41
+ <element rngui:label="Name">
42
+ <anyName/>
43
+ <data type="string" rngui:label="Value / Json"/>
44
+ </element>
45
+ </zeroOrMore>
40
46
  </element>
41
47
  <element name="visualizer_url" rngui:label="Visualizer Url">
42
48
  <data type="string" rngui:label="Service Url"/>
43
49
  </element>
44
- <element name="visualizer_params" rngui:header="Visualizer Arguments">
50
+ <element name="visualizer_params" rngui:label="Visualizer Arguments">
45
51
  <zeroOrMore rngui:label="Create Visualizer Argument Pairs">
46
52
  <element rngui:label="Name">
47
53
  <anyName/>
@@ -52,44 +58,46 @@
52
58
  </element>
53
59
  </zeroOrMore>
54
60
  </element>
55
- <element name="aggregators" rngui:header="Aggregators" rngui:fold="closed">
56
- <zeroOrMore rngui:label="Add Aggregator">
57
- <element name="aggregator">
58
- <element name="name" rngui:label="Label">
59
- <data type="string" rngui:label="Label"/>
60
- </element>
61
- <element name="aggregator_url" rngui:label="Aggregator Url">
62
- <data type="string" rngui:label="Service Url"/>
63
- </element>
64
- <element name="aggregator_arg" rngui:label="Aggregator Argument">
65
- <data type="string" rngui:label="Value / Json"/>
66
- </element>
67
- </element>
68
- </zeroOrMore>
69
- </element>
70
- <element name="costs" rngui:header="Costs" rngui:fold="closed">
71
- <zeroOrMore rngui:label="Create Cost Factor">
72
- <element name="cost_factor">
61
+
62
+ <element name="ips" rngui:header="Impact Profiles" rngui:fold="closed">
63
+ <zeroOrMore rngui:label="Add Impact Profile">
64
+ <element name="ip">
73
65
  <element name="name" rngui:label="Label">
74
66
  <data type="string" rngui:label="Label"/>
75
67
  </element>
76
68
  <element name="target" rngui:label="Target Value">
77
69
  <data type="string" rngui:label="Value"/>
78
70
  </element>
79
- <element name="vfunc_url" rngui:label="Violation Function Url">
80
- <data type="string" rngui:label="Service Url"/>
81
- </element>
82
- <element name="vfunc_arg" rngui:label="Violation Function Argument">
83
- <data type="string" rngui:label="Service Url"/>
71
+ <element name="ifs" rngui:header="Impact Factors">
72
+ <zeroOrMore rngui:label="Add Impact Factor">
73
+ <element name="if">
74
+ <element name="ivs" rngui:header="Impact Values">
75
+ <zeroOrMore rngui:label="Add Impact Value ">
76
+ <element name="iv">
77
+ <element name="extractor_url" rngui:label="Extractor Url">
78
+ <data type="string" rngui:label="Service Url + Parameters"/>
79
+ </element>
80
+ <element name="aggregator_url" rngui:label="Aggregator Url">
81
+ <data type="string" rngui:label="Service Url + Parameters"/>
82
+ </element>
83
+ </element>
84
+ </zeroOrMore>
85
+ </element>
86
+ <element name="aggregator_url" rngui:label="Impact Function Url">
87
+ <data type="string" rngui:label="Service Url + Parameters"/>
88
+ </element>
89
+ </element>
90
+ </zeroOrMore>
84
91
  </element>
85
- <element name="vcost" rngui:label="Violation Cost">
86
- <data type="string" rngui:label="Value"/>
92
+ <element name="vfunc_url" rngui:label="Violation Function Url">
93
+ <data type="string" rngui:label="Service Url + Parameters"/>
87
94
  </element>
88
95
  </element>
89
96
  </zeroOrMore>
90
97
  </element>
98
+
91
99
  </element>
92
- <element name="report" rngui:header="Reporting Annotation" rngui:fold="closed">
100
+ <element name="report" rngui:header="Reporting" rngui:fold="closed">
93
101
  <element name="url" rngui:label='HTML Snippet'>
94
102
  <data type="string" rngui:label="url to report snippet"/>
95
103
  </element>
@@ -97,21 +105,40 @@
97
105
  </element>
98
106
  <element name="annotations" rngui:header="Annotations">
99
107
  <element name="_timing" rngui:header="Timing" rngui:fold="closed">
100
- <element name="_timing_wait" rngui:label="&#x3C9; - Wait">
101
- <data type="float" rngui:label="[0,1]" rngui:default="0.5"/>
102
- </element>
103
- <element name="_timing_threshold" rngui:label="&#x3BA; - Threshold">
104
- <data type="float" rngui:label="[0,3,n]" rngui:default="3"/>
105
- </element>
106
- <element name="_timing_min" rngui:label="Min in min">
107
- <data type="float" rngui:label="Minutes"/>
108
- </element>
109
- <element name="_timing_max" rngui:label="Max in min">
110
- <data type="float" rngui:label="Minutes"/>
108
+ <element name="_timing_weight" rngui:label="&#x3C9; - Weight">
109
+ <data type="float" rngui:label="[0,1]"/>
111
110
  </element>
112
111
  <element name="_timing_avg" rngui:label="Avg in min">
113
112
  <data type="float" rngui:label="Minutes"/>
114
113
  </element>
114
+ <element name="explanations" rngui:header="Explanations">
115
+ <zeroOrMore rngui:label="Add Explanation">
116
+ <element name="explanation">
117
+ <element name="type" rngui:label="Type">
118
+ <choice>
119
+ <value>&gt;</value>
120
+ <value>&lt;</value>
121
+ </choice>
122
+ </element>
123
+ <element name="deviation" rngui:label="Deviation">
124
+ <data type="float" rngui:label="Minutes"/>
125
+ </element>
126
+ <element name="behaviour" rngui:label="Behaviour">
127
+ <choice>
128
+ <value>Immediately</value>
129
+ <value>Wait until next</value>
130
+ <value>Use grace period value</value>
131
+ </choice>
132
+ </element>
133
+ <element name="grace" rngui:label="Grace Period" rngui:default="0.0">
134
+ <data type="float" rngui:label="Minutes"/>
135
+ </element>
136
+ <element name="text" rngui:label="Explanation">
137
+ <data type="string" rngui:label="Patterns"/>
138
+ </element>
139
+ </element>
140
+ </zeroOrMore>
141
+ </element>
115
142
  </element>
116
143
  <element name="_notes" rngui:header="Notes" rngui:fold="closed">
117
144
  <element name="_notes_general" rngui:label="General">
@@ -119,4 +146,29 @@
119
146
  </element>
120
147
  </element>
121
148
  </element>
149
+ <element name="input" rngui:header="Input Arguments Documentation" rngui:fold="closed">
150
+ <zeroOrMore rngui:label="Create Argument">
151
+ <element name="item" rngui:label="Description">
152
+ <attribute name="label" rngui:label="Name">
153
+ <data type="string"/>
154
+ </attribute>
155
+ <text rngui:wrap="true" rngui:label="What does it do?"/>
156
+ </element>
157
+ </zeroOrMore>
158
+ </element>
159
+ <element name="output" rngui:header="Output Elements Documentation" rngui:fold="closed">
160
+ <zeroOrMore rngui:label="Create Element">
161
+ <element name="item" rngui:label="Description">
162
+ <attribute name="label" rngui:label="Name">
163
+ <data type="string"/>
164
+ </attribute>
165
+ <text rngui:wrap="true" rngui:label="What does it do?"/>
166
+ </element>
167
+ </zeroOrMore>
168
+ </element>
169
+ <element name="implementation" rngui:header="Implementation Documentation" rngui:fold="closed">
170
+ <element name="description" rngui:label="Description">
171
+ <text rngui:wrap="true" rngui:label="What is supposed to happen?"/>
172
+ </element>
173
+ </element>
122
174
  </element>
@@ -26,7 +26,8 @@
26
26
  </zeroOrMore>
27
27
  </element>
28
28
  <element name="stream" rngui:header="Data Stream Handling" rngui:fold="closed">
29
- <element name="sensors" rngui:header="Sensors" rngui:fold="closed">
29
+
30
+ <element name="sensors" rngui:header="Sensor Data Streams" rngui:fold="closed">
30
31
  <zeroOrMore rngui:label="Add Sensor">
31
32
  <element name="sensor">
32
33
  <element name="name" rngui:label="Label">
@@ -35,8 +36,13 @@
35
36
  <element name="extractor_url" rngui:label="Extractor Url">
36
37
  <data type="string" rngui:label="Service Url"/>
37
38
  </element>
38
- <element name="extractor_arg" rngui:label="Extractor Argument">
39
- <data type="string" rngui:label="Value / Json"/>
39
+ <element name="extractor_params" rngui:label="Extractor Arguments:">
40
+ <zeroOrMore rngui:label="Create Extractor Argument Pairs">
41
+ <element rngui:label="Name">
42
+ <anyName/>
43
+ <data type="string" rngui:label="Value / Json"/>
44
+ </element>
45
+ </zeroOrMore>
40
46
  </element>
41
47
  <element name="visualizer_url" rngui:label="Visualizer Url">
42
48
  <data type="string" rngui:label="Service Url"/>
@@ -52,50 +58,68 @@
52
58
  </element>
53
59
  </zeroOrMore>
54
60
  </element>
55
- <element name="aggregators" rngui:header="Aggregators" rngui:fold="closed">
56
- <zeroOrMore rngui:label="Add Aggregator">
57
- <element name="aggregator">
58
- <element name="name" rngui:label="Label">
59
- <data type="string" rngui:label="Label"/>
60
- </element>
61
- <element name="aggregator_url" rngui:label="Aggregator Url">
62
- <data type="string" rngui:label="Service Url"/>
63
- </element>
64
- <element name="aggregator_arg" rngui:label="Aggregator Argument">
65
- <data type="string" rngui:label="Value / Json"/>
66
- </element>
67
- </element>
68
- </zeroOrMore>
69
- </element>
70
- <element name="costs" rngui:header="Costs" rngui:fold="closed">
71
- <zeroOrMore rngui:label="Create Cost Factor">
72
- <element name="cost_factor">
61
+
62
+ <element name="ips" rngui:header="Impact Profiles" rngui:fold="closed">
63
+ <zeroOrMore rngui:label="Add Impact Profile">
64
+ <element name="ip">
73
65
  <element name="name" rngui:label="Label">
74
66
  <data type="string" rngui:label="Label"/>
75
67
  </element>
76
68
  <element name="target" rngui:label="Target Value">
77
69
  <data type="string" rngui:label="Value"/>
78
70
  </element>
79
- <element name="vfunc_url" rngui:label="Violation Function Url">
80
- <data type="string" rngui:label="Service Url"/>
81
- </element>
82
- <element name="vfunc_arg" rngui:label="Violation Function Argument">
83
- <data type="string" rngui:label="Service Url"/>
71
+ <element name="ifs" rngui:header="Impact Factors">
72
+ <zeroOrMore rngui:label="Add Impact Factor">
73
+ <element name="if">
74
+ <element name="ivs" rngui:header="Impact Values">
75
+ <zeroOrMore rngui:label="Add Impact Value ">
76
+ <element name="iv">
77
+ <element name="extractor_url" rngui:label="Extractor Url">
78
+ <data type="string" rngui:label="Service Url + Parameters"/>
79
+ </element>
80
+ <element name="extractor_params" rngui:header="Extractor Arguments">
81
+ <zeroOrMore rngui:label="Create Extractor Argument Pairs">
82
+ <element rngui:label="Name">
83
+ <anyName/>
84
+ <data type="string" rngui:label="Value / Json"/>
85
+ </element>
86
+ </zeroOrMore>
87
+ </element>
88
+ <element name="aggregator_url" rngui:label="Aggregator Url">
89
+ <data type="string" rngui:label="Service Url + Parameters"/>
90
+ </element>
91
+ <element name="aggregator_params" rngui:header="Extractor Arguments">
92
+ <zeroOrMore rngui:label="Create Aggregator Argument Pairs">
93
+ <element rngui:label="Name">
94
+ <anyName/>
95
+ <data type="string" rngui:label="Value / Json"/>
96
+ </element>
97
+ </zeroOrMore>
98
+ </element>
99
+ </element>
100
+ </zeroOrMore>
101
+ </element>
102
+ <element name="aggregator_url" rngui:label="Impact Function Url">
103
+ <data type="string" rngui:label="Service Url + Parameters"/>
104
+ </element>
105
+ </element>
106
+ </zeroOrMore>
84
107
  </element>
85
- <element name="vcost" rngui:label="Violation Cost">
86
- <data type="string" rngui:label="Value"/>
108
+ <element name="vfunc_url" rngui:label="Violation Function Url">
109
+ <data type="string" rngui:label="Service Url + Parameters"/>
87
110
  </element>
88
111
  </element>
89
112
  </zeroOrMore>
90
113
  </element>
114
+
91
115
  </element>
92
- <element name="report" rngui:header="Reporting Annotation" rngui:fold="closed">
116
+ <element name="report" rngui:header="Reporting" rngui:fold="closed">
93
117
  <element name="url" rngui:label='HTML Snippet'>
94
118
  <data type="string" rngui:label="url to report snippet"/>
95
119
  </element>
96
120
  </element>
97
121
  </element>
98
- <element name="code" rngui:header="Implementation">
122
+ <element name="code" rngui:header="Output Handling">
99
123
  <element name="prepare" rngui:header="Prepare" rngui:label="Code" rngui:fold="closed_conditional">
100
124
  <text rngui:label="Script that is executed, before a service call"/>
101
125
  </element>
@@ -120,21 +144,40 @@
120
144
  </element>
121
145
  <element name="annotations" rngui:header="Annotations">
122
146
  <element name="_timing" rngui:header="Timing" rngui:fold="closed">
123
- <element name="_timing_wait" rngui:label="&#x3C9; - Wait">
147
+ <element name="_timing_weight" rngui:label="&#x3C9; - Weight">
124
148
  <data type="float" rngui:label="[0,1]"/>
125
149
  </element>
126
- <element name="_timing_threshold" rngui:label="&#x3BA; - Threshold">
127
- <data type="float" rngui:label="[0,3,n]"/>
128
- </element>
129
- <element name="_timing_min" rngui:label="Min in min">
130
- <data type="float" rngui:label="Minutes"/>
131
- </element>
132
- <element name="_timing_max" rngui:label="Max in min">
133
- <data type="float" rngui:label="Minutes"/>
134
- </element>
135
150
  <element name="_timing_avg" rngui:label="Avg in min">
136
151
  <data type="float" rngui:label="Minutes"/>
137
152
  </element>
153
+ <element name="explanations" rngui:header="Explanations">
154
+ <zeroOrMore rngui:label="Add Explanation">
155
+ <element name="explanation">
156
+ <element name="type" rngui:label="Type">
157
+ <choice>
158
+ <value>&gt;</value>
159
+ <value>&lt;</value>
160
+ </choice>
161
+ </element>
162
+ <element name="deviation" rngui:label="Deviation">
163
+ <data type="float" rngui:label="Minutes"/>
164
+ </element>
165
+ <element name="behaviour" rngui:label="Behaviour">
166
+ <choice>
167
+ <value>Immediately</value>
168
+ <value>Wait until next</value>
169
+ <value>Use grace period value</value>
170
+ </choice>
171
+ </element>
172
+ <element name="grace" rngui:label="Grace Period" rngui:default="0.0">
173
+ <data type="float" rngui:label="Minutes"/>
174
+ </element>
175
+ <element name="text" rngui:label="Explanation">
176
+ <data type="string" rngui:label="Patterns"/>
177
+ </element>
178
+ </element>
179
+ </zeroOrMore>
180
+ </element>
138
181
  </element>
139
182
  <element name="_notes" rngui:header="Notes" rngui:fold="closed">
140
183
  <element name="_notes_general" rngui:label="General">
@@ -142,4 +185,34 @@
142
185
  </element>
143
186
  </element>
144
187
  </element>
188
+ <element name="input" rngui:header="Input Arguments Documentation" rngui:fold="closed">
189
+ <zeroOrMore rngui:label="Create Argument">
190
+ <element name="item" rngui:label="Description">
191
+ <attribute name="label" rngui:label="Name">
192
+ <data type="string"/>
193
+ </attribute>
194
+ <text rngui:wrap="true" rngui:label="What does it do?"/>
195
+ </element>
196
+ </zeroOrMore>
197
+ </element>
198
+ <element name="output" rngui:header="Output Elements Documentation" rngui:fold="closed">
199
+ <zeroOrMore rngui:label="Create Element">
200
+ <element name="item" rngui:label="Description">
201
+ <attribute name="label" rngui:label="Name">
202
+ <data type="string"/>
203
+ </attribute>
204
+ <text rngui:wrap="true" rngui:label="What does it do?"/>
205
+ </element>
206
+ </zeroOrMore>
207
+ </element>
208
+ <element name="implementation" rngui:header="Implementation Documentation" rngui:fold="closed">
209
+ <element name="description" rngui:label="Description">
210
+ <text rngui:wrap="true" rngui:label="What is supposed to happen?"/>
211
+ </element>
212
+ </element>
213
+ <element name="code" rngui:header="Output Handling Documentation" rngui:fold="closed">
214
+ <element name="description" rngui:label="Description">
215
+ <text rngui:wrap="true" rngui:label="Which output elements are important? How to transform and save them?"/>
216
+ </element>
217
+ </element>
145
218
  </element>
@@ -49,6 +49,16 @@ function WFAdaptorManifestation(adaptor) {
49
49
  });
50
50
  return svgid;
51
51
  }; //}}}
52
+ //{{{ Return the json for all marked tasks
53
+ this.marked_text = function(){
54
+ var nodes = [];
55
+ var markymark = _.uniq(self.marked());
56
+ $(markymark).each(function(key,svgid){
57
+ var node = self.adaptor.description.get_node_by_svg_id(svgid);
58
+ nodes.push($(node).serializePrettyXML());
59
+ });
60
+ return JSON.stringify(nodes);
61
+ }; //}}}
52
62
  //{{{ Render the details from rng (right hand side of graph tab)
53
63
  this.update_details = function(svgid){
54
64
  var tab = $('#dat_details');
@@ -76,35 +86,46 @@ function WFAdaptorManifestation(adaptor) {
76
86
  }; //}}}
77
87
 
78
88
  function copyOrMove(menu,group,xml_node,mode) { //{{{
79
- var markymark = _.uniq(self.marked());
89
+ var nodes = localStorage.getItem('marked');
90
+
91
+ if (typeof(nodes) != "string") { return; }
92
+
93
+ nodes = JSON.parse(nodes);
94
+ $(nodes).each(function(key,str) {
95
+ nodes[key] = $X(str);;
96
+ });
97
+
80
98
  var check1 = [];
81
99
  var check2 = [];
82
- $(markymark).each(function(key,svgid){
83
- var node = self.adaptor.description.get_node_by_svg_id(svgid);
100
+ $(nodes).each(function(key,node){
84
101
  check1.push($(node).attr('svg-type'));
85
102
  });
86
103
  $(group).each(function(key,value){
87
104
  check2.push(value.type);
88
105
  });
89
106
 
90
- if (markymark.length > 0 && _.uniq(check1).length == _.intersection(check1,check2).length) {
91
- var nodes = [];
92
- $(markymark).each(function(key,svgid){
93
- var node = self.adaptor.description.get_node_by_svg_id(svgid);
94
- nodes.unshift(node);
95
- });
96
-
107
+ if (nodes.length > 0 && _.uniq(check1).length == _.intersection(check1,check2).length) {
108
+ if (myid == localStorage.getItem('marked_from')) {
109
+ $(nodes).each(function(key,node){
110
+ nodes[key] = self.adaptor.description.get_node_by_svg_id($(node).attr('svg-id'));
111
+ });
112
+ }
113
+ nodes.reverse();
97
114
  var iconm = self.resources['arrow'].clone();
98
115
  var iconc = self.resources['arrow'].clone();
99
116
  iconm.children('.rfill').addClass('menu');
117
+ if (myid == localStorage.getItem('marked_from')) {
118
+ menu.push(
119
+ {
120
+ 'label': '<em>Move Marked Elements</em>',
121
+ 'function_call': mode,
122
+ 'menu_icon': iconm,
123
+ 'type': undefined,
124
+ 'params': [nodes, xml_node]
125
+ }
126
+ );
127
+ }
100
128
  menu.push(
101
- {
102
- 'label': '<em>Move Marked Elements</em>',
103
- 'function_call': mode,
104
- 'menu_icon': iconm,
105
- 'type': undefined,
106
- 'params': [nodes, xml_node]
107
- },
108
129
  {
109
130
  'label': '<em>Copy Marked Elements</em>',
110
131
  'function_call': mode,
@@ -217,16 +238,26 @@ function WFAdaptorManifestation(adaptor) {
217
238
  self.adaptor.illustrator.get_elements().removeClass('selected');
218
239
  self.adaptor.illustrator.get_labels().removeClass('selected');
219
240
 
220
- if (e && e.ctrlKey) {
241
+ if (e && (e.ctrlKey || e.metaKey)) {
221
242
  if (save['state'] != "ready" && save['state'] != "stopped") { return false; }
222
243
  var tab = $('#dat_details');
223
244
  tab.empty();
224
245
  var vtarget = self.adaptor.illustrator.get_node_by_svg_id(svgid);
225
246
  if (vtarget.length > 0) {
226
- vtarget.parents('g.element[element-id]').toggleClass('marked');
247
+ var vt = vtarget.parents('g.element[element-id]');
248
+ vt.toggleClass('marked');
249
+ if (vt.hasClass('marked')) {
250
+ localStorage.setItem('marked',self.marked_text());
251
+ localStorage.setItem('marked_from',myid);
252
+ } else {
253
+ localStorage.removeItem('marked');
254
+ localStorage.removeItem('marked_from');
255
+ }
227
256
  }
228
257
  } else {
229
258
  self.adaptor.illustrator.get_elements().removeClass('marked');
259
+ localStorage.removeItem('marked');
260
+ localStorage.removeItem('marked_from');
230
261
 
231
262
  var vtarget = self.adaptor.illustrator.get_node_by_svg_id(svgid);
232
263
  if (vtarget.length > 0) {