cpee 2.1.110 → 2.1.112

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 (43) hide show
  1. checksums.yaml +4 -4
  2. data/cockpit/css/extended_columns-label.css +1 -1
  3. data/cockpit/css/extended_columns-svg.css +18 -6
  4. data/cockpit/css/llm.css +1 -1
  5. data/cockpit/css/ui.css +1 -1
  6. data/cockpit/css/wfadaptor.css +3 -3
  7. data/cockpit/david.html +1 -1
  8. data/cockpit/edit.html +1 -1
  9. data/cockpit/graph.html +1 -1
  10. data/cockpit/index.html +1 -1
  11. data/cockpit/js/extended_columns.js +113 -26
  12. data/cockpit/js/instance.js +34 -8
  13. data/cockpit/js/wfadaptor.js +3 -2
  14. data/cockpit/llm.html +1 -1
  15. data/cockpit/llm_alternative.html +1 -1
  16. data/cockpit/model.html +1 -1
  17. data/cockpit/only_llm.html +1 -1
  18. data/cockpit/templates/Coopis 2010 Replay.xml +214 -0
  19. data/cockpit/templates/Coopis 2010.xml +16 -9
  20. data/cockpit/templates/Frames.xml +47 -23
  21. data/cockpit/templates/ML-pipe-multi.xml +0 -1
  22. data/cockpit/templates/Worklist Vote.xml +1 -1
  23. data/cockpit/templates/Worklist.xml +1 -1
  24. data/cockpit/themes/base.js +51 -34
  25. data/cockpit/themes/control/symbols/mark.svg +8 -0
  26. data/cockpit/themes/dataflow/symbols/mark.svg +8 -0
  27. data/cockpit/themes/default/symbols/mark.svg +8 -0
  28. data/cockpit/themes/extended/symbols/mark.svg +8 -0
  29. data/cockpit/themes/felix/symbols/mark.svg +8 -0
  30. data/cockpit/themes/model/symbols/mark.svg +8 -0
  31. data/cockpit/themes/packed/symbols/mark.svg +8 -0
  32. data/cockpit/themes/preset/symbols/mark.svg +8 -0
  33. data/cockpit/themes/presetaltid/symbols/mark.svg +8 -0
  34. data/cockpit/themes/presetid/symbols/mark.svg +8 -0
  35. data/cockpit/themes/reduced/symbols/mark.svg +8 -0
  36. data/cockpit/track.html +1 -1
  37. data/cpee.gemspec +1 -1
  38. data/server/executionhandlers/eval/connection.rb +2 -1
  39. data/server/executionhandlers/ruby/connection.rb +2 -1
  40. data/server/executionhandlers/ruby/dsl_to_dslx.xsl +1 -1
  41. data/server/resources/topics.xml +2 -0
  42. data/tools/server/resources/properties.init +6 -1
  43. metadata +13 -1
@@ -0,0 +1,214 @@
1
+ <?xml version="1.0"?>
2
+ <testset xmlns="http://cpee.org/ns/properties/2.0">
3
+ <executionhandler>ruby</executionhandler>
4
+ <dataelements>
5
+ <persons>3</persons>
6
+ <card>Visa_12345</card>
7
+ <airline/>
8
+ <hotels>[]</hotels>
9
+ <from>Vienna</from>
10
+ <to>Prague</to>
11
+ <costs>0</costs>
12
+ </dataelements>
13
+ <endpoints>
14
+ <bookAir>http://gruppe.wst.univie.ac.at/~mangler/services/airline.php</bookAir>
15
+ <user>https-post://cpee.org/services/timeout-user.php</user>
16
+ <auto>https-post://cpee.org/services/timeout-auto.php</auto>
17
+ <timeout>https://cpee.org/services/timeout.php</timeout>
18
+ <bookHotel>http://gruppe.wst.univie.ac.at/~mangler/services/hotel.php</bookHotel>
19
+ <subprocess>https://cpee.org/flow/start/url/</subprocess>
20
+ <approve>http://gruppe.wst.univie.ac.at/~mangler/services/approval.php</approve>
21
+ <send>https-post://cpee.org/ing/correlators/message/send/</send>
22
+ <receive>https-get://cpee.org/ing/correlators/message/receive/</receive>
23
+ </endpoints>
24
+ <attributes>
25
+ <guarded>none</guarded>
26
+ <modeltype>CPEE</modeltype>
27
+ <theme>extended</theme>
28
+ <guarded_id/>
29
+ <info>Coopis 2010 Replay</info>
30
+ <creator>Christine Ashcreek</creator>
31
+ <author>Christine Ashcreek</author>
32
+ <design_stage>development</design_stage>
33
+ <design_dir>Templates.dir/</design_dir>
34
+ <model_uuid>8f79b49f-2747-41c1-b278-195816951bbf</model_uuid>
35
+ <model_version/>
36
+ <replay>https://cpee.org/replay/</replay>
37
+ <replay_target>https://cpee.org/replay-data/coopis/1274c1de-286e-4d73-9375-30b363d280fa.xes.yaml</replay_target>
38
+ <replay_instantiate>https://cpee.org/flow/start/url/</replay_instantiate>
39
+ </attributes>
40
+ <description>
41
+ <description xmlns="http://cpee.org/ns/description/1.0">
42
+ <call id="a1" endpoint="bookAir">
43
+ <parameters>
44
+ <label>Book Airline 1</label>
45
+ <method>:post</method>
46
+ <arguments>
47
+ <from>!data.from</from>
48
+ <to>!data.to</to>
49
+ <persons>!data.persons</persons>
50
+ </arguments>
51
+ </parameters>
52
+ <code>
53
+ <prepare/>
54
+ <finalize output="result">data.airline = result.value('id')
55
+ data.costs += result.value('costs').to_f
56
+ status.update 1, 'Hotel'</finalize>
57
+ <update output="result"/>
58
+ <rescue output="result"/>
59
+ </code>
60
+ <annotations>
61
+ <_timing>
62
+ <_timing_weight/>
63
+ <_timing_avg/>
64
+ <explanations/>
65
+ </_timing>
66
+ <_shifting>
67
+ <_shifting_type>Duration</_shifting_type>
68
+ </_shifting>
69
+ <_context_data_analysis>
70
+ <probes/>
71
+ <ips/>
72
+ </_context_data_analysis>
73
+ <report>
74
+ <url/>
75
+ </report>
76
+ <_notes>
77
+ <_notes_general/>
78
+ </_notes>
79
+ </annotations>
80
+ <documentation>
81
+ <input/>
82
+ <output/>
83
+ <implementation>
84
+ <description/>
85
+ </implementation>
86
+ <code>
87
+ <description/>
88
+ </code>
89
+ </documentation>
90
+ </call>
91
+ <parallel wait="-1" cancel="last">
92
+ <loop mode="pre_test" condition="data.persons &gt; 0">
93
+ <parallel_branch>
94
+ <call id="a2" endpoint="bookHotel">
95
+ <parameters>
96
+ <label>Book Hotel</label>
97
+ <method>:post</method>
98
+ <arguments>
99
+ <to>!data.to</to>
100
+ </arguments>
101
+ </parameters>
102
+ <code>
103
+ <prepare/>
104
+ <finalize output="result">data.hotels &lt;&lt; result.value('id')
105
+ data.costs += result.value('costs').to_f</finalize>
106
+ <update output="result"/>
107
+ <rescue output="result"/>
108
+ </code>
109
+ <annotations>
110
+ <_timing>
111
+ <_timing_weight/>
112
+ <_timing_avg/>
113
+ <explanations/>
114
+ </_timing>
115
+ <_shifting>
116
+ <_shifting_type>Duration</_shifting_type>
117
+ </_shifting>
118
+ <_context_data_analysis>
119
+ <probes/>
120
+ <ips/>
121
+ </_context_data_analysis>
122
+ <report>
123
+ <url/>
124
+ </report>
125
+ <_notes>
126
+ <_notes_general/>
127
+ </_notes>
128
+ </annotations>
129
+ <documentation>
130
+ <input/>
131
+ <output/>
132
+ <implementation>
133
+ <description/>
134
+ </implementation>
135
+ <code>
136
+ <description/>
137
+ </code>
138
+ </documentation>
139
+ </call>
140
+ </parallel_branch>
141
+ <manipulate id="a3" label="">
142
+ <code>data.persons -= 1</code>
143
+ <annotations>
144
+ <_logging_behavior>
145
+ <_exclude/>
146
+ </_logging_behavior>
147
+ <_context_data_analysis>
148
+ <probes/>
149
+ </_context_data_analysis>
150
+ </annotations>
151
+ </manipulate>
152
+ </loop>
153
+ </parallel>
154
+ <choose mode="exclusive">
155
+ <alternative condition="data.costs &gt; 700">
156
+ <_probability>
157
+ <_probability_min/>
158
+ <_probability_max/>
159
+ <_probability_avg/>
160
+ </_probability>
161
+ <call id="a4" endpoint="approve">
162
+ <parameters>
163
+ <label>Approve Hotel</label>
164
+ <method>:post</method>
165
+ <arguments>
166
+ <costs>!data.costs</costs>
167
+ </arguments>
168
+ </parameters>
169
+ <annotations>
170
+ <_timing>
171
+ <_timing_weight/>
172
+ <_timing_avg/>
173
+ <explanations/>
174
+ </_timing>
175
+ <_shifting>
176
+ <_shifting_type>Duration</_shifting_type>
177
+ </_shifting>
178
+ <_context_data_analysis>
179
+ <probes/>
180
+ <ips/>
181
+ </_context_data_analysis>
182
+ <report>
183
+ <url/>
184
+ </report>
185
+ <_notes>
186
+ <_notes_general/>
187
+ </_notes>
188
+ </annotations>
189
+ <documentation>
190
+ <input/>
191
+ <output/>
192
+ <implementation>
193
+ <description/>
194
+ </implementation>
195
+ </documentation>
196
+ </call>
197
+ </alternative>
198
+ <otherwise/>
199
+ </choose>
200
+ </description>
201
+ </description>
202
+ <transformation>
203
+ <description type="copy"/>
204
+ <dataelements type="none"/>
205
+ <endpoints type="none"/>
206
+ </transformation>
207
+ <subscriptions xmlns="http://riddl.org/ns/common-patterns/notifications-producer/2.0">
208
+ <subscription id="_matze" url="https://lehre.bpm.in.tum.de/~mangler/a.php">
209
+ <topic id="state">
210
+ <event>change</event>
211
+ </topic>
212
+ </subscription>
213
+ </subscriptions>
214
+ </testset>
@@ -2,22 +2,22 @@
2
2
  <testset xmlns="http://cpee.org/ns/properties/2.0">
3
3
  <executionhandler>ruby</executionhandler>
4
4
  <dataelements>
5
+ <airline>Aeroflot</airline>
5
6
  <persons>3</persons>
6
7
  <card>Visa_12345</card>
7
- <airline/>
8
+ <costs>565.0</costs>
8
9
  <hotels>[]</hotels>
9
10
  <from>Vienna</from>
10
11
  <to>Prague</to>
11
- <costs>0</costs>
12
12
  </dataelements>
13
13
  <endpoints>
14
- <bookAir>http://gruppe.wst.univie.ac.at/~mangler/services/airline.php</bookAir>
14
+ <bookAir>https://cpee.org/services/airline.php</bookAir>
15
15
  <user>https-post://cpee.org/services/timeout-user.php</user>
16
16
  <auto>https-post://cpee.org/services/timeout-auto.php</auto>
17
17
  <timeout>https://cpee.org/services/timeout.php</timeout>
18
- <bookHotel>http://gruppe.wst.univie.ac.at/~mangler/services/hotel.php</bookHotel>
18
+ <bookHotel>https://cpee.org/services/hotel.php</bookHotel>
19
19
  <subprocess>https://cpee.org/flow/start/url/</subprocess>
20
- <approve>http://gruppe.wst.univie.ac.at/~mangler/services/approval.php</approve>
20
+ <approve>https://cpee.org//services/approval.php</approve>
21
21
  <send>https-post://cpee.org/ing/correlators/message/send/</send>
22
22
  <receive>https-get://cpee.org/ing/correlators/message/receive/</receive>
23
23
  </endpoints>
@@ -33,9 +33,6 @@
33
33
  <design_dir>Templates.dir</design_dir>
34
34
  <model_uuid>a1cbb855-90e3-4d8c-b44b-d3ba7bff9f4e</model_uuid>
35
35
  <model_version/>
36
- <replay>https://cpee.org/replay/</replay>
37
- <replay_target>https://cpee.org/replay-data/coopis/1274c1de-286e-4d73-9375-30b363d280fa.xes.yaml</replay_target>
38
- <replay_instantiate>https://cpee.org/flow/start/url/</replay_instantiate>
39
36
  </attributes>
40
37
  <description>
41
38
  <description xmlns="http://cpee.org/ns/description/1.0">
@@ -138,7 +135,17 @@ data.costs += result.value('costs').to_f</finalize>
138
135
  </documentation>
139
136
  </call>
140
137
  </parallel_branch>
141
- <manipulate id="a3">data.persons -= 1</manipulate>
138
+ <manipulate id="a3" label="">
139
+ <code>data.persons -= 1</code>
140
+ <annotations>
141
+ <_logging_behavior>
142
+ <_exclude/>
143
+ </_logging_behavior>
144
+ <_context_data_analysis>
145
+ <probes/>
146
+ </_context_data_analysis>
147
+ </annotations>
148
+ </manipulate>
142
149
  </loop>
143
150
  </parallel>
144
151
  <choose mode="exclusive">
@@ -1,12 +1,10 @@
1
1
  <?xml version="1.0"?>
2
2
  <testset xmlns="http://cpee.org/ns/properties/2.0">
3
3
  <executionhandler>ruby</executionhandler>
4
- <dataelements>
5
- <res>{"select_0":"learned in class or from book","input_0":"sadff","select_1":"used on a class project","input_1":"asdfsaf","input_2":"sadfasdf"}</res>
6
- </dataelements>
4
+ <dataelements/>
7
5
  <endpoints>
8
- <frames_init>https-post://cpee.org/out/frames/</frames_init>
9
- <frames_display>https-put://cpee.org/out/frames/</frames_display>
6
+ <frames_init>https-post://cpee.org/out/frames/{simple}/</frames_init>
7
+ <frames_display>https-put://cpee.org/out/frames/{simple}/</frames_display>
10
8
  </endpoints>
11
9
  <attributes>
12
10
  <guarded>none</guarded>
@@ -20,7 +18,6 @@
20
18
  <model_version/>
21
19
  <design_dir>Templates.dir</design_dir>
22
20
  <design_stage>development</design_stage>
23
- <fid>gnd</fid>
24
21
  </attributes>
25
22
  <description>
26
23
  <description xmlns="http://cpee.org/ns/description/1.0">
@@ -38,14 +35,18 @@
38
35
  </arguments>
39
36
  </parameters>
40
37
  <code>
41
- <signal/>
42
- <prepare>endpoints.frames_init += attributes.fid</prepare>
38
+ <signal>false</signal>
39
+ <prepare/>
43
40
  <finalize output="result"/>
44
41
  <update output="result"/>
45
42
  <rescue output="result"/>
46
43
  </code>
47
44
  <annotations>
48
45
  <_generic/>
46
+ <_logging_behavior>
47
+ <_exclude>false</_exclude>
48
+ <_include>false</_include>
49
+ </_logging_behavior>
49
50
  <_timing>
50
51
  <_timing_weight/>
51
52
  <_timing_avg/>
@@ -93,14 +94,18 @@
93
94
  </arguments>
94
95
  </parameters>
95
96
  <code>
96
- <signal/>
97
- <prepare>endpoints.frames_display += attributes.fid</prepare>
97
+ <signal>false</signal>
98
+ <prepare/>
98
99
  <finalize output="result"/>
99
100
  <update output="result"/>
100
101
  <rescue output="result"/>
101
102
  </code>
102
103
  <annotations>
103
104
  <_generic/>
105
+ <_logging_behavior>
106
+ <_exclude>false</_exclude>
107
+ <_include>false</_include>
108
+ </_logging_behavior>
104
109
  <_timing>
105
110
  <_timing_weight/>
106
111
  <_timing_avg/>
@@ -153,14 +158,18 @@
153
158
  </arguments>
154
159
  </parameters>
155
160
  <code>
156
- <signal/>
157
- <prepare>endpoints.frames_display += attributes.fid</prepare>
161
+ <signal>false</signal>
162
+ <prepare/>
158
163
  <finalize output="result"/>
159
164
  <update output="result"/>
160
165
  <rescue output="result"/>
161
166
  </code>
162
167
  <annotations>
163
168
  <_generic/>
169
+ <_logging_behavior>
170
+ <_exclude>false</_exclude>
171
+ <_include>false</_include>
172
+ </_logging_behavior>
164
173
  <_timing>
165
174
  <_timing_weight/>
166
175
  <_timing_avg/>
@@ -213,14 +222,18 @@
213
222
  </arguments>
214
223
  </parameters>
215
224
  <code>
216
- <signal/>
217
- <prepare>endpoints.frames_display += attributes.fid</prepare>
225
+ <signal>false</signal>
226
+ <prepare/>
218
227
  <finalize output="result"/>
219
228
  <update output="result"/>
220
229
  <rescue output="result"/>
221
230
  </code>
222
231
  <annotations>
223
232
  <_generic/>
233
+ <_logging_behavior>
234
+ <_exclude>false</_exclude>
235
+ <_include>false</_include>
236
+ </_logging_behavior>
224
237
  <_timing>
225
238
  <_timing_weight/>
226
239
  <_timing_avg/>
@@ -279,14 +292,18 @@
279
292
  </arguments>
280
293
  </parameters>
281
294
  <code>
282
- <signal/>
283
- <prepare>endpoints.frames_display += attributes.fid</prepare>
295
+ <signal>false</signal>
296
+ <prepare/>
284
297
  <finalize output="result"/>
285
298
  <update output="result"/>
286
299
  <rescue output="result"/>
287
300
  </code>
288
301
  <annotations>
289
302
  <_generic/>
303
+ <_logging_behavior>
304
+ <_exclude>false</_exclude>
305
+ <_include>false</_include>
306
+ </_logging_behavior>
290
307
  <_timing>
291
308
  <_timing_weight/>
292
309
  <_timing_avg/>
@@ -325,8 +342,8 @@
325
342
  <type>wait</type>
326
343
  <lx>0</lx>
327
344
  <ly>1</ly>
328
- <x_amount>5</x_amount>
329
- <y_amount>9</y_amount>
345
+ <x_amount>3</x_amount>
346
+ <y_amount>7</y_amount>
330
347
  <button/>
331
348
  <style/>
332
349
  <urls>
@@ -347,14 +364,18 @@
347
364
  </arguments>
348
365
  </parameters>
349
366
  <code>
350
- <signal/>
351
- <prepare>endpoints.frames_display += attributes.fid</prepare>
367
+ <signal>false</signal>
368
+ <prepare/>
352
369
  <finalize output="result">data.res = result</finalize>
353
370
  <update output="result"/>
354
371
  <rescue output="result"/>
355
372
  </code>
356
373
  <annotations>
357
374
  <_generic/>
375
+ <_logging_behavior>
376
+ <_exclude>false</_exclude>
377
+ <_include>false</_include>
378
+ </_logging_behavior>
358
379
  <_timing>
359
380
  <_timing_weight/>
360
381
  <_timing_avg/>
@@ -402,14 +423,18 @@
402
423
  </arguments>
403
424
  </parameters>
404
425
  <code>
405
- <signal/>
406
- <prepare>endpoints.frames_display += attributes.fid</prepare>
426
+ <signal>false</signal>
427
+ <prepare/>
407
428
  <finalize output="result"/>
408
429
  <update output="result"/>
409
430
  <rescue output="result"/>
410
431
  </code>
411
432
  <annotations>
412
433
  <_generic/>
434
+ <_logging_behavior>
435
+ <_exclude>false</_exclude>
436
+ <_include>false</_include>
437
+ </_logging_behavior>
413
438
  <_timing>
414
439
  <_timing_weight/>
415
440
  <_timing_avg/>
@@ -440,7 +465,6 @@
440
465
  </code>
441
466
  </documentation>
442
467
  </call>
443
- <stop id="a4"/>
444
468
  </loop>
445
469
  </description>
446
470
  </description>
@@ -108,7 +108,6 @@ performance = f1_score(y_test, y_predict, average='macro')
108
108
  <info>ML-pipe-multi</info>
109
109
  <modeltype>CPEE</modeltype>
110
110
  <theme>extended</theme>
111
- <organisation1>http://cpee.org/~demo/orgviz/organisation_informatik.xml</organisation1>
112
111
  <creator>Christine Ashcreek</creator>
113
112
  <author>Christine Ashcreek</author>
114
113
  <design_stage>development</design_stage>
@@ -11,7 +11,7 @@
11
11
  <attributes>
12
12
  <info>Worklist Vote</info>
13
13
  <modeltype>CPEE</modeltype>
14
- <organisation1>http://cpee.org/~demo/orgviz/organisation_informatik.xml</organisation1>
14
+ <organisation1>https://cpee.org/~demo/orgviz/organisation_informatik.xml</organisation1>
15
15
  <theme>extended</theme>
16
16
  <creator>Christine Ashcreek</creator>
17
17
  <author>Christine Ashcreek</author>
@@ -9,7 +9,7 @@
9
9
  <info>Worklist</info>
10
10
  <modeltype>CPEE</modeltype>
11
11
  <theme>extended</theme>
12
- <organisation1>http://cpee.org/~demo/orgviz/organisation_informatik.xml</organisation1>
12
+ <organisation1>https://cpee.org/~demo/orgviz/organisation_informatik.xml</organisation1>
13
13
  <creator>Christine Ashcreek</creator>
14
14
  <author>Christine Ashcreek</author>
15
15
  <design_stage>development</design_stage>
@@ -152,6 +152,21 @@ function WFAdaptorManifestationBase(adaptor) {
152
152
  }
153
153
  }
154
154
  } //}}}
155
+ var markHandling = this.markHandling = function(svgid) { //{{{
156
+ if (save['state'] != "ready" && save['state'] != "stopped") { return false; }
157
+ var vtarget = self.adaptor.illustrator.get_node_by_svg_id(svgid);
158
+ if (vtarget.length > 0) {
159
+ var vt = vtarget.parents('g.element[element-id]');
160
+ vt.toggleClass('marked');
161
+ if (vt.hasClass('marked')) {
162
+ localStorage.setItem('marked',self.marked_text());
163
+ localStorage.setItem('marked_from',myid);
164
+ } else {
165
+ localStorage.removeItem('marked');
166
+ localStorage.removeItem('marked_from');
167
+ }
168
+ }
169
+ } //}}}
155
170
 
156
171
  var contextMenuHandling_clean_icon = this.contextMenuHandling_clean_icon = function(icon) { //{{{
157
172
  icon = icon.clone();
@@ -257,27 +272,45 @@ function WFAdaptorManifestationBase(adaptor) {
257
272
  });
258
273
  }
259
274
  if (xml_node.get(0).tagName == "call" || xml_node.get(0).tagName == "manipulate" || xml_node.get(0).tagName == "stop") {
260
- var icon = contextMenuHandling_clean_icon(self.elements.call.illustrator.svg);
261
- icon.find('.part-normal').addClass('passive');
275
+ let exec_icon = contextMenuHandling_clean_icon(self.elements.call.illustrator.svg);
276
+ let mark_icon = self.resources.mark;
277
+ exec_icon.find('.part-normal').addClass('passive');
262
278
  var vtarget = self.adaptor.illustrator.get_node_by_svg_id(svgid);
263
279
  if (vtarget.length > 0) {
264
280
  if (vtarget.parents('g.activities.passive, g.activities.active').length > 0) {
265
281
  menu['Position'] = [{
266
- 'label': 'No Execution from here',
282
+ 'label': 'No Execution from here (SHIFT-Click)',
267
283
  'function_call': del_ui_pos,
268
- 'menu_icon': icon,
284
+ 'menu_icon': exec_icon,
269
285
  'type': undefined,
270
286
  'params': xml_node
271
287
  }];
272
288
  } else {
273
289
  menu['Position'] = [{
274
- 'label': 'Execute from here',
290
+ 'label': 'Execute from here (SHIFT-Click)',
275
291
  'function_call': add_ui_pos,
276
- 'menu_icon': icon,
292
+ 'menu_icon': exec_icon,
277
293
  'type': undefined,
278
294
  'params': xml_node
279
295
  }];
280
296
  }
297
+ if (vtarget.parents('g.element.marked').length > 0) {
298
+ menu['Position'].push({
299
+ 'label': 'Unmark for copy/move (' + ($.pressCmd() ? '⌘-Click' : 'CTRL-Click') + ')',
300
+ 'function_call': markHandling,
301
+ 'menu_icon': mark_icon,
302
+ 'type': undefined,
303
+ 'params': [svgid]
304
+ });
305
+ } else {
306
+ menu['Position'].push({
307
+ 'label': 'Mark for copy/move (' + ($.pressCmd() ? '⌘-Click' : 'CTRL-Click') + ')',
308
+ 'function_call': markHandling,
309
+ 'menu_icon': mark_icon,
310
+ 'type': undefined,
311
+ 'params': [svgid]
312
+ });
313
+ }
281
314
  }
282
315
  }
283
316
  new CustomMenu(e).contextmenu(menu);
@@ -292,6 +325,10 @@ function WFAdaptorManifestationBase(adaptor) {
292
325
  return false;
293
326
  } // }}}
294
327
  this.events.mousedown = function(svgid, e, child, sibling) { // {{{
328
+ if (typeof save === 'undefined') {
329
+ return;
330
+ }
331
+
295
332
  if(e.button == 0) { // left-click
296
333
  save['details_target'].tsvgid = svgid;
297
334
  } else if(e.button == 1) { // middle-click
@@ -305,31 +342,17 @@ function WFAdaptorManifestationBase(adaptor) {
305
342
  return false;
306
343
  } // }}}
307
344
  this.events.click = function(svgid, e) { // {{{
308
- if (self.adaptor.description.get_node_by_svg_id(svgid).length == 0) {
345
+ if (typeof save === 'undefined' || self.adaptor.description.get_node_by_svg_id(svgid).length == 0) {
309
346
  return;
310
347
  }
311
348
 
312
- $('#graphgrid .selected').removeClass('selected');
313
-
314
349
  if (e && (e.ctrlKey || e.metaKey)) {
315
- if (save['state'] != "ready" && save['state'] != "stopped") { return false; }
316
- var tab = $('#dat_details');
317
- tab.empty();
318
- var vtarget = self.adaptor.illustrator.get_node_by_svg_id(svgid);
319
- if (vtarget.length > 0) {
320
- var vt = vtarget.parents('g.element[element-id]');
321
- vt.toggleClass('marked');
322
- if (vt.hasClass('marked')) {
323
- localStorage.setItem('marked',self.marked_text());
324
- localStorage.setItem('marked_from',myid);
325
- } else {
326
- localStorage.removeItem('marked');
327
- localStorage.removeItem('marked_from');
328
- }
329
- }
350
+ markHandling(svgid);
330
351
  } else if (e && (e.shiftKey)) {
331
352
  positionHandling(svgid);
332
353
  } else {
354
+ $('#graphgrid .selected').removeClass('selected');
355
+
333
356
  self.adaptor.illustrator.get_elements().removeClass('marked');
334
357
  localStorage.removeItem('marked');
335
358
  localStorage.removeItem('marked_from');
@@ -348,19 +371,12 @@ function WFAdaptorManifestationBase(adaptor) {
348
371
  this.events.dblclick = function(svgid, e) { // {{{
349
372
  } // }}}
350
373
  this.events.mouseover = function(svgid, e) { // {{{
351
- let er = self.adaptor.illustrator.svg.container.find('[element-id = "' + svgid + '"][element-row]').attr('element-row');
352
- $('.resource-row[element-row=' + er + '] .resource-point').each((_,e) => {
353
- let pos = e.getBoundingClientRect();
354
- let text = $('text',e).text();
355
- show_dataflow_label(pos.x + 12, pos.y + 5, 60, text);
356
- })
357
374
  self.adaptor.illustrator.svg.container.find('.tile[element-id = "' + svgid + '"]').css('display','block');
358
375
  self.adaptor.illustrator.svg.container.find('[element-id = "' + svgid + '"]').addClass('hover');
359
376
  self.adaptor.illustrator.svg.label_container.find('[element-id = "' + svgid + '"]').addClass('hover');
360
377
  return false;
361
378
  } // }}}
362
379
  this.events.mouseout = function(svgid, e) { // {{{
363
- $('.displaylabel').remove();
364
380
  self.adaptor.illustrator.svg.container.find('.tile[element-id = "' + svgid + '"]').css('display','none');
365
381
  self.adaptor.illustrator.svg.container.find('[element-id = "' + svgid + '"]').removeClass('hover');
366
382
  self.adaptor.illustrator.svg.label_container.find('[element-id = "' + svgid + '"]').removeClass('hover');
@@ -372,6 +388,7 @@ function WFAdaptorManifestationBase(adaptor) {
372
388
  // Other resources
373
389
  this.resources.arrow = self.adaptor.theme_dir + 'symbols/arrow.svg';
374
390
  this.resources.delete = self.adaptor.theme_dir + 'symbols/delete.svg';
391
+ this.resources.mark = self.adaptor.theme_dir + 'symbols/mark.svg';
375
392
 
376
393
  // Primitive Elements
377
394
  this.elements.call = { /*{{{*/
@@ -1350,9 +1367,9 @@ function WFAdaptorManifestationBase(adaptor) {
1350
1367
  $('call > code > prepare',n).each(function(j,m){
1351
1368
  item += m.textContent + '\n';
1352
1369
  });
1353
- if (n.nodeName == 'manipulate') { // css selector can not directly access manipulate
1354
- item += n.textContent + '\n';
1355
- }
1370
+ $('manipulate > code',n).each(function(j,m){
1371
+ item += m.textContent + '\n';
1372
+ });
1356
1373
  $('call > parameters > arguments *',n).each(function(j,m){
1357
1374
  let x = m.textContent;
1358
1375
  if (x.charAt(0) == '!') { item += x + '\n'; }
@@ -0,0 +1,8 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg">
2
+ <g class="marked">
3
+ <g class="markstyle" transform="translate(12,15) scale(2,2)">
4
+ <circle cx="2" cy="0" r="7"/>
5
+ <path d="m -1 0 l 2 2 l 4 -4" class="standline"/>
6
+ </g>
7
+ </g>
8
+ </svg>
@@ -0,0 +1,8 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg">
2
+ <g class="marked">
3
+ <g class="markstyle" transform="translate(12,15) scale(2,2)">
4
+ <circle cx="2" cy="0" r="7"/>
5
+ <path d="m -1 0 l 2 2 l 4 -4" class="standline"/>
6
+ </g>
7
+ </g>
8
+ </svg>