cpee 2.1.51 → 2.1.52
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.
- checksums.yaml +4 -4
- data/cockpit/css/resources.css +42 -0
- data/cockpit/css/ui.css +4 -0
- data/cockpit/index.html +3 -0
- data/cockpit/js/details.js +5 -0
- data/cockpit/js/instance.js +253 -62
- data/cockpit/js/modifiers.js +8 -1
- data/cockpit/js/resources.js +16 -0
- data/cockpit/js/wfadaptor.js +3 -3
- data/cockpit/templates/Coopis 2010.xml +7 -1
- data/cockpit/themes/compact/rngs/call.rng +3 -1
- data/cockpit/themes/compact/rngs/callmanipulate.rng +3 -1
- data/cockpit/themes/compact/theme.js +1 -1
- data/cockpit/themes/control/rngs/call.rng +3 -1
- data/cockpit/themes/control/rngs/callmanipulate.rng +3 -1
- data/cockpit/themes/control/theme.js +1 -1
- data/cockpit/themes/dataflow/rngs/alternative.rng +25 -0
- data/cockpit/themes/dataflow/rngs/call.rng +228 -0
- data/cockpit/themes/dataflow/rngs/callmanipulate.rng +257 -0
- data/cockpit/themes/dataflow/rngs/choose.rng +14 -0
- data/cockpit/themes/dataflow/rngs/closed_loop.rng +62 -0
- data/cockpit/themes/dataflow/rngs/closed_loop_cancel.rng +5 -0
- data/cockpit/themes/dataflow/rngs/closed_loop_control.rng +31 -0
- data/cockpit/themes/dataflow/rngs/closed_loop_measuring.rng +12 -0
- data/cockpit/themes/dataflow/rngs/critical.rng +5 -0
- data/cockpit/themes/dataflow/rngs/escape.rng +1 -0
- data/cockpit/themes/dataflow/rngs/group.rng +3 -0
- data/cockpit/themes/dataflow/rngs/loop.rng +22 -0
- data/cockpit/themes/dataflow/rngs/manipulate.rng +9 -0
- data/cockpit/themes/dataflow/rngs/otherwise.rng +22 -0
- data/cockpit/themes/dataflow/rngs/parallel.rng +27 -0
- data/cockpit/themes/dataflow/rngs/parallel_branch.rng +2 -0
- data/cockpit/themes/dataflow/rngs/scripts.rng +23 -0
- data/cockpit/themes/dataflow/rngs/start.rng +121 -0
- data/cockpit/themes/dataflow/rngs/stop.rng +5 -0
- data/cockpit/themes/dataflow/rngs/terminate.rng +1 -0
- data/cockpit/themes/dataflow/symbols/alternative.svg +5 -0
- data/cockpit/themes/dataflow/symbols/arrow.svg +3 -0
- data/cockpit/themes/dataflow/symbols/call.svg +6 -0
- data/cockpit/themes/dataflow/symbols/call_sensor.svg +9 -0
- data/cockpit/themes/dataflow/symbols/callmanipulate.svg +8 -0
- data/cockpit/themes/dataflow/symbols/callmanipulate_sensor.svg +11 -0
- data/cockpit/themes/dataflow/symbols/choose.svg +5 -0
- data/cockpit/themes/dataflow/symbols/choose_exclusive.svg +5 -0
- data/cockpit/themes/dataflow/symbols/choose_inclusive.svg +4 -0
- data/cockpit/themes/dataflow/symbols/closed_loop.svg +5 -0
- data/cockpit/themes/dataflow/symbols/closed_loop_cancel.svg +5 -0
- data/cockpit/themes/dataflow/symbols/closed_loop_control.svg +5 -0
- data/cockpit/themes/dataflow/symbols/closed_loop_measuring.svg +6 -0
- data/cockpit/themes/dataflow/symbols/complex.svg +8 -0
- data/cockpit/themes/dataflow/symbols/critical.svg +4 -0
- data/cockpit/themes/dataflow/symbols/delete.svg +4 -0
- data/cockpit/themes/dataflow/symbols/end.svg +3 -0
- data/cockpit/themes/dataflow/symbols/escape.svg +5 -0
- data/cockpit/themes/dataflow/symbols/event_end.svg +3 -0
- data/cockpit/themes/dataflow/symbols/loop.svg +5 -0
- data/cockpit/themes/dataflow/symbols/manipulate.svg +4 -0
- data/cockpit/themes/dataflow/symbols/otherwise.svg +5 -0
- data/cockpit/themes/dataflow/symbols/parallel.svg +5 -0
- data/cockpit/themes/dataflow/symbols/parallel_branch.svg +5 -0
- data/cockpit/themes/dataflow/symbols/parallel_branch_compact.svg +4 -0
- data/cockpit/themes/dataflow/symbols/parallel_branch_event.svg +14 -0
- data/cockpit/themes/dataflow/symbols/parallel_branch_normal.svg +5 -0
- data/cockpit/themes/dataflow/symbols/parallel_eventbased_exclusive.svg +9 -0
- data/cockpit/themes/dataflow/symbols/parallel_eventbased_parallel.svg +8 -0
- data/cockpit/themes/dataflow/symbols/scripts.svg +4 -0
- data/cockpit/themes/dataflow/symbols/start.svg +3 -0
- data/cockpit/themes/dataflow/symbols/start_event.svg +5 -0
- data/cockpit/themes/dataflow/symbols/stop.svg +5 -0
- data/cockpit/themes/dataflow/symbols/terminate.svg +4 -0
- data/cockpit/themes/dataflow/symbols/test.svg +74 -0
- data/cockpit/themes/dataflow/theme.js +1556 -0
- data/cockpit/themes/default/rngs/call.rng +3 -1
- data/cockpit/themes/default/rngs/callmanipulate.rng +3 -1
- data/cockpit/themes/default/theme.js +1 -1
- data/cockpit/themes/extended/rngs/call.rng +3 -1
- data/cockpit/themes/extended/rngs/callmanipulate.rng +3 -1
- data/cockpit/themes/extended/theme.js +1 -1
- data/cockpit/themes/model/theme.js +1 -1
- data/cockpit/themes/packed/rngs/call.rng +3 -1
- data/cockpit/themes/packed/rngs/callmanipulate.rng +3 -1
- data/cockpit/themes/packed/theme.js +1 -1
- data/cockpit/themes/preset/rngs/call.rng +3 -1
- data/cockpit/themes/preset/rngs/callmanipulate.rng +3 -1
- data/cockpit/themes/preset/theme.js +1 -1
- data/cpee.gemspec +2 -2
- data/lib/cpee/message.rb +20 -8
- data/lib/cpee/persistence.rb +12 -0
- data/lib/properties.xml +1 -1
- data/server/executionhandlers/ruby/connection.rb +31 -4
- data/tools/cpee +32 -1
- metadata +62 -8
- data/server/routing/end.pid +0 -1
- data/server/routing/forward-events-00.pid +0 -1
- data/server/routing/forward-votes.pid +0 -1
- data/server/routing/persist.pid +0 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: abf105360b93a73b4be3fbceb75cc95f805fe947917d1a8da91a727a1bfce520
|
|
4
|
+
data.tar.gz: 7f7dbec843a239c9dfc97166aaddd3e6cd43ddc5d3fd10335a87d72ea6aeda1b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 60ff6635449e118df6f272a1c7d8e5f23637d30ea60e4d0c3b928d6dd63a896ddcadde07093029a64cb7050642da53311f6d80e360f1ed267c01153e3dfa4ad4
|
|
7
|
+
data.tar.gz: b8e5e91f5afdbab0e986c3bb0dc68bd468c86ee4d6633d1c8254cee9be8a4620f288968f558f0bb92e1fa0854ec9a760ec7744c14476148bf77fd939df42de1a
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
resources {
|
|
2
|
+
border-left: 1pt solid var(--wfadaptor-border);
|
|
3
|
+
}
|
|
4
|
+
#resources line.resource-line:hover {
|
|
5
|
+
stroke: red;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.resource-label {
|
|
9
|
+
position: absolute;
|
|
10
|
+
padding-left: 0.5em;
|
|
11
|
+
padding-right: 0.5em;
|
|
12
|
+
min-width: 10ex;
|
|
13
|
+
height: 2em;
|
|
14
|
+
text-align: center;
|
|
15
|
+
line-height: 2em;
|
|
16
|
+
background-color: var(--wfadaptor-background);
|
|
17
|
+
border: 1pt solid var(--wfadaptor-border);
|
|
18
|
+
border-radius: 1em;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.resource-label:before {
|
|
22
|
+
content: ' ';
|
|
23
|
+
position: absolute;
|
|
24
|
+
width: 0;
|
|
25
|
+
height: 0;
|
|
26
|
+
left: 15px;
|
|
27
|
+
top: 2em;
|
|
28
|
+
border: 8.5px solid;
|
|
29
|
+
border-color: var(--wfadaptor-border) transparent transparent var(--wfadaptor-border);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.resource-label:after {
|
|
33
|
+
content: ' ';
|
|
34
|
+
position: absolute;
|
|
35
|
+
width: 0;
|
|
36
|
+
height: 0;
|
|
37
|
+
left: 16px;
|
|
38
|
+
top: 2em;
|
|
39
|
+
border: 7.5px solid;
|
|
40
|
+
border-color: var(--wfadaptor-background) transparent transparent var(--wfadaptor-background);
|
|
41
|
+
}
|
|
42
|
+
|
data/cockpit/css/ui.css
CHANGED
|
@@ -41,6 +41,10 @@ body {
|
|
|
41
41
|
#graphgrid.striped .graphlabel, #graphgrid.striped .graphempty {
|
|
42
42
|
border-left: 1pt solid var(--wfadaptor-border);
|
|
43
43
|
}
|
|
44
|
+
#graphgrid.striped #resources rect.border {
|
|
45
|
+
width: 1pt;
|
|
46
|
+
fill: var(--wfadaptor-border);
|
|
47
|
+
}
|
|
44
48
|
#graphgrid.striped .graphlabel.even, #graphgrid.striped .graphempty.even, #graphgrid.striped .graphlast.even {
|
|
45
49
|
background-color: #e9e9e9;
|
|
46
50
|
}
|
data/cockpit/index.html
CHANGED
|
@@ -54,7 +54,9 @@
|
|
|
54
54
|
<script type="text/javascript" src="js/details.js"></script>
|
|
55
55
|
<script type="text/javascript" src="js/parameters.js"></script>
|
|
56
56
|
<script type="text/javascript" src="js/modifiers.js"></script>
|
|
57
|
+
<script type="text/javascript" src="js/resources.js"></script>
|
|
57
58
|
<link rel="stylesheet" href="css/ui.css" type="text/css"/>
|
|
59
|
+
<link rel="stylesheet" href="css/resources.css" type="text/css"/>
|
|
58
60
|
<link rel="stylesheet" href="/global_ui/uicpee.css" type="text/css"/>
|
|
59
61
|
<style>
|
|
60
62
|
/* has to be fucking inline, because firefox and chrome disagree how to handle filter urls */
|
|
@@ -245,6 +247,7 @@
|
|
|
245
247
|
<ui-content>
|
|
246
248
|
<ui-area data-belongs-to-tab="details" id='graphcolumn' oncontextmenu='return false'>
|
|
247
249
|
<div id='graphgrid'>
|
|
250
|
+
<div class="resource-label" style="display: none"></div>
|
|
248
251
|
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:x="http://www.w3.org/1999/xlink" id='graphcanvas' width='1' height='1'></svg>
|
|
249
252
|
</div>
|
|
250
253
|
</ui-area>
|
data/cockpit/js/details.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
var details_updated = new Event("details:updated", {"bubbles":true, "cancelable":false});
|
|
2
|
+
|
|
1
3
|
$(document).ready(function() {
|
|
2
4
|
var timer;
|
|
3
5
|
|
|
@@ -61,6 +63,9 @@ function do_main_work() { //{{{
|
|
|
61
63
|
if (node[0].namespaceURI == nnew.attr('xmlns')) { // remove xmlns when it is the same as in the parent node
|
|
62
64
|
nnew[0].removeAttribute('xmlns');
|
|
63
65
|
}
|
|
66
|
+
|
|
67
|
+
parameters_changed
|
|
68
|
+
|
|
64
69
|
node.replaceWith(nnew);
|
|
65
70
|
|
|
66
71
|
var ttarget = manifestation.adaptor.illustrator.get_node_by_svg_id(svgid);
|
data/cockpit/js/instance.js
CHANGED
|
@@ -30,9 +30,11 @@ function global_init() {
|
|
|
30
30
|
save['details'] = undefined;
|
|
31
31
|
save['details_target'] = undefined;
|
|
32
32
|
save['instance_pos'] = [];
|
|
33
|
+
save['modeltype'] = 'CPEE';
|
|
33
34
|
save['modifiers'] = {};
|
|
34
35
|
save['modifiers_active'] = {};
|
|
35
36
|
save['modifiers_additional'] = {};
|
|
37
|
+
save['resources'] = undefined;
|
|
36
38
|
node_state = {};
|
|
37
39
|
}
|
|
38
40
|
|
|
@@ -260,14 +262,14 @@ function create_instance(base,name,load,exec) {// {{{
|
|
|
260
262
|
}
|
|
261
263
|
}// }}}
|
|
262
264
|
|
|
263
|
-
function sse() { //{{{
|
|
265
|
+
async function sse() { //{{{
|
|
264
266
|
var url = $('body').attr('current-instance');
|
|
265
267
|
if (subscription) {
|
|
266
268
|
es = new EventSource(url + "/notifications/subscriptions/" + subscription + "/sse/");
|
|
267
269
|
es.onopen = function() {
|
|
268
270
|
append_to_log("monitoring", "opened", "nice.");
|
|
269
271
|
};
|
|
270
|
-
es.onmessage = function(e) {
|
|
272
|
+
es.onmessage = async function(e) {
|
|
271
273
|
data = JSON.parse(e.data);
|
|
272
274
|
if (data['type'] == 'event') {
|
|
273
275
|
switch(data['topic']) {
|
|
@@ -281,7 +283,12 @@ function sse() { //{{{
|
|
|
281
283
|
monitor_instance_values("endpoints");
|
|
282
284
|
break;
|
|
283
285
|
case 'attributes':
|
|
284
|
-
|
|
286
|
+
if (save['resources'] != data.content.values.resource) {
|
|
287
|
+
await monitor_instance_values("attributes");
|
|
288
|
+
monitor_instance_values("endpoints");
|
|
289
|
+
} else {
|
|
290
|
+
monitor_instance_values("attributes");
|
|
291
|
+
}
|
|
285
292
|
if (save['graph_theme'] != data.content.values.theme) {
|
|
286
293
|
monitor_graph_change(true);
|
|
287
294
|
}
|
|
@@ -314,9 +321,9 @@ function sse() { //{{{
|
|
|
314
321
|
// setTimeout(sse,10000);
|
|
315
322
|
};
|
|
316
323
|
}
|
|
324
|
+
await monitor_instance_values("attributes"); // attributes first, to catch the <resources> attribute which overrides current-resources
|
|
317
325
|
monitor_instance_values("dataelements");
|
|
318
326
|
monitor_instance_values("endpoints");
|
|
319
|
-
monitor_instance_values("attributes");
|
|
320
327
|
monitor_instance_dsl();
|
|
321
328
|
monitor_instance_state();
|
|
322
329
|
} //}}}
|
|
@@ -393,11 +400,37 @@ function monitor_instance(cin,rep,load,exec) {// {{{
|
|
|
393
400
|
});
|
|
394
401
|
}// }}}
|
|
395
402
|
|
|
396
|
-
function
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
403
|
+
function get_resource(base, key, loc, cache) {
|
|
404
|
+
cache[key] = {};
|
|
405
|
+
let deferreds = [new $.Deferred(), new $.Deferred(), new $.Deferred()];
|
|
406
|
+
$.ajax({
|
|
407
|
+
url: base + 'endpoints/' + encodeURIComponent(loc) + "/symbol.svg",
|
|
408
|
+
success: function(res) {
|
|
409
|
+
cache[key]['symbol'] = res;
|
|
410
|
+
deferreds[0].resolve(true);
|
|
411
|
+
},
|
|
412
|
+
error: deferreds[0].resolve
|
|
413
|
+
})
|
|
414
|
+
$.ajax({
|
|
415
|
+
url: base + 'endpoints/' + encodeURIComponent(loc) + "/schema.rng",
|
|
416
|
+
success: function(res) {
|
|
417
|
+
cache[key]['schema'] = res;
|
|
418
|
+
deferreds[1].resolve(true);
|
|
419
|
+
},
|
|
420
|
+
error: deferreds[1].resolve
|
|
421
|
+
})
|
|
422
|
+
$.ajax({
|
|
423
|
+
url: base + 'endpoints/' + encodeURIComponent(loc) + "/properties.json",
|
|
424
|
+
success: function(res) {
|
|
425
|
+
cache[key]['properties'] = res;
|
|
426
|
+
deferreds[2].resolve(true);
|
|
427
|
+
},
|
|
428
|
+
error: deferreds[2].resolve
|
|
429
|
+
})
|
|
430
|
+
return deferreds;
|
|
431
|
+
}
|
|
400
432
|
|
|
433
|
+
function monitor_instance_values(type,vals) {// {{{
|
|
401
434
|
if (type == "dataelements" && save['state'] == "running") {
|
|
402
435
|
let de = save[type].save();
|
|
403
436
|
Object.entries(vals).forEach(([key,value]) => {
|
|
@@ -420,7 +453,8 @@ function monitor_instance_values(type,vals) {// {{{
|
|
|
420
453
|
});
|
|
421
454
|
save[type].content(de);
|
|
422
455
|
} else {
|
|
423
|
-
|
|
456
|
+
let url = $('body').attr('current-instance');
|
|
457
|
+
return $.ajax({
|
|
424
458
|
type: "GET",
|
|
425
459
|
url: url + "/properties/" + type + "/",
|
|
426
460
|
success: function(res){
|
|
@@ -430,36 +464,12 @@ function monitor_instance_values(type,vals) {// {{{
|
|
|
430
464
|
var tmp = {};
|
|
431
465
|
$(res).find(" > endpoints > *").each(function(k,v) {
|
|
432
466
|
save['endpoints_list'][v.localName] = v.lastChild.nodeValue;
|
|
467
|
+
let rep = $('body').attr('current-resources');
|
|
433
468
|
$.ajax({
|
|
434
469
|
url: rep + 'endpoints/' + encodeURIComponent($(v).text()),
|
|
435
470
|
success: function() {
|
|
436
471
|
tmp[v.tagName] = {};
|
|
437
|
-
|
|
438
|
-
$.ajax({
|
|
439
|
-
url: rep + 'endpoints/' + encodeURIComponent($(v).text()) + "/symbol.svg",
|
|
440
|
-
success: function(res) {
|
|
441
|
-
tmp[v.tagName]['symbol'] = res;
|
|
442
|
-
deferreds[0].resolve(true);
|
|
443
|
-
},
|
|
444
|
-
error: deferreds[0].resolve
|
|
445
|
-
})
|
|
446
|
-
$.ajax({
|
|
447
|
-
url: rep + 'endpoints/' + encodeURIComponent($(v).text()) + "/schema.rng",
|
|
448
|
-
success: function(res) {
|
|
449
|
-
tmp[v.tagName]['schema'] = res;
|
|
450
|
-
deferreds[1].resolve(true);
|
|
451
|
-
},
|
|
452
|
-
error: deferreds[1].resolve
|
|
453
|
-
})
|
|
454
|
-
$.ajax({
|
|
455
|
-
url: rep + 'endpoints/' + encodeURIComponent($(v).text()) + "/properties.json",
|
|
456
|
-
success: function(res) {
|
|
457
|
-
tmp[v.tagName]['properties'] = res;
|
|
458
|
-
deferreds[2].resolve(true);
|
|
459
|
-
},
|
|
460
|
-
error: deferreds[2].resolve
|
|
461
|
-
})
|
|
462
|
-
$.when.apply($, deferreds).then(function(x) {
|
|
472
|
+
$.when.apply($, get_resource(rep,v.tagName,$(v).text(),tmp)).then(function(x) {
|
|
463
473
|
save['endpoints_cache'] = tmp;
|
|
464
474
|
// when updating attributes clear the attributes, because they might change as well. New arguments are possible.
|
|
465
475
|
$('#dat_details').empty();
|
|
@@ -467,8 +477,33 @@ function monitor_instance_values(type,vals) {// {{{
|
|
|
467
477
|
});
|
|
468
478
|
}
|
|
469
479
|
});
|
|
480
|
+
if (save['resources']) {
|
|
481
|
+
let rep = save['resources'];
|
|
482
|
+
$.ajax({
|
|
483
|
+
url: rep + 'endpoints/' + encodeURIComponent(encodeURIComponent($(v).text())),
|
|
484
|
+
success: function() {
|
|
485
|
+
tmp[v.tagName] = {};
|
|
486
|
+
$.when.apply($, get_resource(rep,v.tagName,encodeURIComponent($(v).text()),tmp)).then(function(x) {
|
|
487
|
+
save['endpoints_cache'] = tmp;
|
|
488
|
+
// when updating attributes clear the attributes, because they might change as well. New arguments are possible.
|
|
489
|
+
$('#dat_details').empty();
|
|
490
|
+
adaptor_update();
|
|
491
|
+
});
|
|
492
|
+
}
|
|
493
|
+
});
|
|
494
|
+
}
|
|
470
495
|
});
|
|
471
496
|
} else if(type == "attributes") {
|
|
497
|
+
if ($(" > attributes > resources",res).length > 0) {
|
|
498
|
+
save['resources'] = $(" > attributes > resources",res).text();
|
|
499
|
+
} else {
|
|
500
|
+
save['resources'] = undefined;
|
|
501
|
+
}
|
|
502
|
+
if ($(" > attributes > modeltype",res).length > 0) {
|
|
503
|
+
save['modeltype'] = $(" > attributes > modeltype",res).text();
|
|
504
|
+
} else {
|
|
505
|
+
save['modeltype'] = undefined;
|
|
506
|
+
}
|
|
472
507
|
if ($('#modifiers > div').length == 0) {
|
|
473
508
|
modifiers_display().then(function(){ modifiers_select(); });
|
|
474
509
|
} else {
|
|
@@ -519,7 +554,7 @@ function adaptor_init(url,theme,dslx) { //{{{
|
|
|
519
554
|
save['graph_theme'] = theme;
|
|
520
555
|
save['graph_adaptor'] = new WfAdaptor($('body').data('theme-base') + '/' + theme + '/theme.js',function(graphrealization){
|
|
521
556
|
manifestation.endpoints = save.endpoints_list;
|
|
522
|
-
graphrealization.draw_labels = function(max,labels,
|
|
557
|
+
graphrealization.draw_labels = function(max,labels,dimensions,striped) {
|
|
523
558
|
$('#graphcanvas').css('grid-row', '1/span ' + (max.row + 2));
|
|
524
559
|
if (striped == true) {
|
|
525
560
|
if (!$('#graphgrid').hasClass('striped')) {
|
|
@@ -529,10 +564,17 @@ function adaptor_init(url,theme,dslx) { //{{{
|
|
|
529
564
|
$('#graphgrid').removeClass('striped');
|
|
530
565
|
}
|
|
531
566
|
|
|
532
|
-
$('#graphgrid .graphlabel, #graphgrid .graphempty, #graphgrid .graphlast').remove();
|
|
567
|
+
$('#graphgrid .graphlabel, #graphgrid .graphempty, #resources, #graphgrid .graphlast').remove();
|
|
533
568
|
var tlabels = {};
|
|
534
569
|
var tcolumns = [];
|
|
535
570
|
var tcolumncount = {}
|
|
571
|
+
var thidden = [];
|
|
572
|
+
|
|
573
|
+
var tsvgs = {};
|
|
574
|
+
const mapPoints = new Map();
|
|
575
|
+
let iconsize = 14;
|
|
576
|
+
let iconshift = 7;
|
|
577
|
+
|
|
536
578
|
_.each(labels,function(val){
|
|
537
579
|
if (val.label != "") {
|
|
538
580
|
tlabels[val.row] = [];
|
|
@@ -541,35 +583,143 @@ function adaptor_init(url,theme,dslx) { //{{{
|
|
|
541
583
|
tcolumns.push(col.column);
|
|
542
584
|
tcolumncount[col.column] = 0;
|
|
543
585
|
}
|
|
586
|
+
if (!thidden.includes(col.column) && col.type == 'resource') {
|
|
587
|
+
thidden.push(col.column);
|
|
588
|
+
}
|
|
544
589
|
if (col.value != undefined) {
|
|
590
|
+
|
|
591
|
+
// Start Peilei
|
|
592
|
+
if (col.type == "resource") {
|
|
593
|
+
let str = '';
|
|
594
|
+
for (const [k, v] of Object.entries(col.value)) {
|
|
595
|
+
var p = {};
|
|
596
|
+
p.AR = v;
|
|
597
|
+
p.yc = dimensions.height_shift/2 + dimensions.height * val.row - 20;
|
|
598
|
+
if (!mapPoints.has(k)) {
|
|
599
|
+
p.y0 = p.y0 == undefined ? (dimensions.height_shift/2 + dimensions.height * val.row - 20) : p.y0;
|
|
600
|
+
p.ymax = (p.ymax == undefined) ? p.y0 : p.ymax; //(dimensions.height_shift/2 + dimensions.height * val.row - 20 > p.ymax ? dimensions.height_shift/2 + dimensions.height * val.row - 20 : p.ymax);
|
|
601
|
+
} else {
|
|
602
|
+
p.y0 = mapPoints.get(k).y0;
|
|
603
|
+
p.ymax = mapPoints.get(k).ymax; //(dimensions.height_shift/2 + dimensions.height * val.row - 20 > p.ymax ? dimensions.height_shift/2 + dimensions.height * val.row - 20 : p.ymax);
|
|
604
|
+
}
|
|
605
|
+
mapPoints.set(k, p);
|
|
606
|
+
}
|
|
607
|
+
var cx = iconshift*2;
|
|
608
|
+
str += '<g xmlns="http://www.w3.org/2000/svg">';
|
|
609
|
+
|
|
610
|
+
for (const [k, p] of mapPoints) {
|
|
611
|
+
let firstAssignFlag = 0;
|
|
612
|
+
p.x0 = p.xc = cx;
|
|
613
|
+
|
|
614
|
+
// Including Triangle
|
|
615
|
+
if (k in col.value) { // Define points for a triangle pointing to the right
|
|
616
|
+
if (p.AR == "Read") {
|
|
617
|
+
str += '<polygon xmlns="http://www.w3.org/2000/svg" points="' + (cx - 5) + ',' + (dimensions.height_shift/2 + dimensions.height * val.row - 20) + ' ' + (cx + 5) + ',' + (dimensions.height_shift/2 + dimensions.height * val.row - 15) + ' ' + (cx + 5) + ',' + (dimensions.height_shift/2 + dimensions.height * val.row - 25) + '" fill="green" class="resource-point">';
|
|
618
|
+
if (p.yc == p.y0) {
|
|
619
|
+
firstAssignFlag = 1;
|
|
620
|
+
}
|
|
621
|
+
} else if (p.AR == "Assign") { // Define points for a triangle pointing to the left
|
|
622
|
+
str += '<polygon xmlns="http://www.w3.org/2000/svg" points="' + (cx + 5) + ',' + (dimensions.height_shift/2 + dimensions.height * val.row - 20) + ' ' + (cx - 5) + ',' + (dimensions.height_shift/2 + dimensions.height * val.row - 15) + ' ' + (cx - 5) + ',' + (dimensions.height_shift/2 + dimensions.height * val.row - 25) + '" fill="orange" class="resource-point">';
|
|
623
|
+
} else if (p.AR == "AssignRead") {
|
|
624
|
+
p.yc = dimensions.height_shift/2 + dimensions.height * val.row - 20;
|
|
625
|
+
str += '<circle xmlns="http://www.w3.org/2000/svg" cx="' + cx + '" cy="' + p.yc + '" r="5" fill="blue" class="resource-point">';
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
if (dimensions.height_shift/2 + dimensions.height * val.row != p.y0) {
|
|
629
|
+
p.yc = dimensions.height_shift/2 + dimensions.height * val.row - 20;
|
|
630
|
+
if (dimensions.height_shift/2 + dimensions.height * val.row - 20 > p.ymax) {
|
|
631
|
+
p.ymax = dimensions.height_shift/2 + dimensions.height * val.row - 20;
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
// Converted from <title>
|
|
636
|
+
str += '<text xmlns="http://www.w3.org/2000/svg">' + k + '</text>';
|
|
637
|
+
|
|
638
|
+
if (p.AR == "Read" || p.AR == "Assign") {
|
|
639
|
+
str += '</polygon>';
|
|
640
|
+
} else if (p.AR == "AssignRead") {
|
|
641
|
+
str += '</circle>';
|
|
642
|
+
}
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
if (firstAssignFlag == 1) {
|
|
646
|
+
// Additional logic and construction of another polygon for orange triangle pointing left
|
|
647
|
+
p.y0 -= dimensions.height;
|
|
648
|
+
str += '<polygon xmlns="http://www.w3.org/2000/svg" points="' + (cx + 5) + ',' + (dimensions.height_shift/2 + dimensions.height * (val.row - 1) - 20) + ' ' + (cx - 5) + ',' + (dimensions.height_shift/2 + dimensions.height * (val.row - 1) - 15) + ' ' + (cx - 5) + ',' + (dimensions.height_shift/2 + dimensions.height * (val.row - 1) - 25) + '" fill="orange" class="resource-point">' + '<text xmlns="http://www.w3.org/2000/svg">' + k + '</text></polygon>';
|
|
649
|
+
}
|
|
650
|
+
cx += iconsize;
|
|
651
|
+
}
|
|
652
|
+
|
|
653
|
+
for (const [k, p] of mapPoints) {
|
|
654
|
+
if(k in col.value) {
|
|
655
|
+
if (dimensions.height_shift/2+dimensions.height*val.row != p.y0) {
|
|
656
|
+
p.yc = dimensions.height_shift/2 + dimensions.height * val.row - 20;
|
|
657
|
+
if(dimensions.height_shift/2 + dimensions.height * val.row - 20 > p.ymax) {
|
|
658
|
+
p.ymax = dimensions.height_shift/2 + dimensions.height * val.row - 20;
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
str += '</g>';
|
|
664
|
+
|
|
665
|
+
tsvgs[val.row] = $X(str);
|
|
666
|
+
}
|
|
667
|
+
|
|
545
668
|
tcolumncount[col.column] += 1;
|
|
546
669
|
}
|
|
547
670
|
tlabels[val.row][tcolumns.indexOf(col.column)] = { label: col.value, type: val.tname, id: val.element_id };
|
|
548
671
|
});
|
|
549
672
|
}
|
|
550
673
|
});
|
|
674
|
+
|
|
551
675
|
$('#graphgrid').css({
|
|
552
|
-
'grid-template-rows': (
|
|
676
|
+
'grid-template-rows': (dimensions.height_shift/2) + 'px repeat(' + max.row + ', 1fr) ' + (dimensions.height_shift/2) + 'px',
|
|
553
677
|
'grid-template-columns': 'max-content' + (tcolumns.length > 0 ? ' repeat(' + tcolumns.length.toString() + ',max-content)' : '') + ' auto'
|
|
554
678
|
});
|
|
679
|
+
|
|
555
680
|
for (var i = 0; i < max.row; i++) {
|
|
556
|
-
for (var j = 0; j < tcolumns.length; j++) {
|
|
557
|
-
if (
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
} else {
|
|
563
|
-
if (tcolumncount[tcolumns[j]] != 0) {
|
|
564
|
-
var ele = $('<div element-row="' + i + '" class="graphempty ' + (i % 2 == 0 ? 'odd' : 'even') + '" style="grid-column: ' + (j+2) + '; grid-row: ' + (i+2) + '; padding-bottom: ' + shift + 'px"> </div>');
|
|
681
|
+
for (var j = 0; j < tcolumns.length - 1; j++) {
|
|
682
|
+
if (thidden != tcolumns[j]) {
|
|
683
|
+
if (tlabels[i+1] != undefined && tlabels[i+1][j] != undefined && tlabels[i+1][j].label != undefined && tlabels[i+1][j].label != '') {
|
|
684
|
+
var col = tlabels[i+1][j];
|
|
685
|
+
var ele = $('<div element-row="' + i + '" class="graphlabel ' + (i % 2 == 0 ? 'odd' : 'even') + '" element-type="' + col.type + '" element-id="' + col.id + '" style="grid-column: ' + (j+2) + '; grid-row: ' + (i+2) + '"><span>' + col.label + '</span></div>');
|
|
686
|
+
graphrealization.illustrator.draw.bind_event(ele, col.type, false);
|
|
565
687
|
$('#graphgrid').append(ele);
|
|
688
|
+
} else {
|
|
689
|
+
if (tcolumncount[tcolumns[j]] != 0) {
|
|
690
|
+
var ele = $('<div element-row="' + i + '" class="graphempty ' + (i % 2 == 0 ? 'odd' : 'even') + '" style="grid-column: ' + (j+2) + '; grid-row: ' + (i+2) + '; padding-bottom: ' + dimensions.height_shift + 'px"> </div>');
|
|
691
|
+
$('#graphgrid').append(ele);
|
|
692
|
+
}
|
|
566
693
|
}
|
|
567
694
|
}
|
|
568
695
|
}
|
|
696
|
+
|
|
569
697
|
var j = tcolumns.length;
|
|
570
|
-
var ele = $('<div element-row="' + i + '" class="graphlast ' + (i % 2 == 0 ? 'odd' : 'even') + '" style="grid-column: ' + (j+2) + '; grid-row: ' + (i+2) + '; padding-bottom: ' +
|
|
698
|
+
var ele = $('<div element-row="' + i + '" class="graphlast ' + (i % 2 == 0 ? 'odd' : 'even') + '" style="grid-column: ' + (j+2) + '; grid-row: ' + (i+2) + '; padding-bottom: ' + dimensions.height_shift + 'px"> </div>');
|
|
571
699
|
$('#graphgrid').append(ele);
|
|
572
700
|
}
|
|
701
|
+
|
|
702
|
+
if (Object.keys(tsvgs).length > 0) {
|
|
703
|
+
let dataflow = $X('<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:x="http://www.w3.org/1999/xlink" id="resources"></svg>');
|
|
704
|
+
dataflow.css('grid-row', '1/span ' + (max.row + 2));
|
|
705
|
+
dataflow.css('grid-column', tcolumns.indexOf(thidden.first) + 2);
|
|
706
|
+
dataflow.attr('height', $('#graphcanvas').attr('height'));
|
|
707
|
+
dataflow.attr('width', mapPoints.size * iconsize + iconshift * 2);
|
|
708
|
+
|
|
709
|
+
for (var i = 0; i < max.row; i++) { // Needs parenthesises below
|
|
710
|
+
dataflow.append($X('<rect xmlns="http://www.w3.org/2000/svg" class="stripe ' + (i % 2 == 0 ? 'even' : 'odd') + '" x="0" y="' + (dimensions.height * i + 5.2) + '" width="' + (mapPoints.size * iconsize + iconshift * 2) + '" height="' + dimensions.height + '"></rect>'));
|
|
711
|
+
dataflow.append($X('<rect xmlns="http://www.w3.org/2000/svg" class="border" x="0" y="' + (dimensions.height * i + 5.2) + '" height="' + dimensions.height + '"></rect>'));
|
|
712
|
+
}
|
|
713
|
+
for (const [k, p] of mapPoints) {
|
|
714
|
+
dataflow.append($X('<line xmlns="http://www.w3.org/2000/svg" x1="' + p.x0 + '" y1="' + p.y0 + '" x2="' + p.xc + '" y2="' + p.ymax + '" class="resource-line" stroke-opacity="0.1" stroke="orange" stroke-width="10" marker-end="url(#arrowhead)"><text>' + k + '</text></line>'));
|
|
715
|
+
}
|
|
716
|
+
for (var i = 0; i < max.row; i++) {
|
|
717
|
+
dataflow.append($(tsvgs[i+1]));
|
|
718
|
+
}
|
|
719
|
+
$('#graphgrid').append(dataflow);
|
|
720
|
+
|
|
721
|
+
$('.resource-label').hide(); // Speech Bubble hide by default
|
|
722
|
+
}
|
|
573
723
|
};
|
|
574
724
|
graphrealization.set_svg_container($('#graphcanvas'));
|
|
575
725
|
graphrealization.set_label_container($('#graphgrid'));
|
|
@@ -582,17 +732,50 @@ function adaptor_init(url,theme,dslx) { //{{{
|
|
|
582
732
|
save['graph'].removeAttr('svg-subtype');
|
|
583
733
|
save['graph'].removeAttr('svg-label');
|
|
584
734
|
document.dispatchEvent(graph_changed);
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
735
|
+
if (save['modeltype'] != 'CPEE') {
|
|
736
|
+
$.ajax({
|
|
737
|
+
type: "PUT",
|
|
738
|
+
url: url + "/properties/attributes/modeltype/",
|
|
739
|
+
data: {'value': 'CPEE'},
|
|
740
|
+
error: report_failure
|
|
741
|
+
});
|
|
742
|
+
$.ajax({
|
|
743
|
+
type: "PUT",
|
|
744
|
+
url: url + "/properties/transformation/",
|
|
745
|
+
contentType: 'text/xml',
|
|
746
|
+
headers: {
|
|
747
|
+
'Content-ID': 'transformation',
|
|
748
|
+
'CPEE-Event-Source': myid
|
|
749
|
+
},
|
|
750
|
+
data: '<transformation xmlns="http://cpee.org/ns/properties/2.0"><description type="copy"/><dataelements type="none"/><endpoints type="none"/></transformation>',
|
|
751
|
+
success: function() {
|
|
752
|
+
$.ajax({
|
|
753
|
+
type: "PUT",
|
|
754
|
+
url: url + "/properties/description/",
|
|
755
|
+
contentType: 'text/xml',
|
|
756
|
+
headers: {
|
|
757
|
+
'Content-ID': 'description',
|
|
758
|
+
'CPEE-Event-Source': myid
|
|
759
|
+
},
|
|
760
|
+
data: g,
|
|
761
|
+
error: report_failure
|
|
762
|
+
});
|
|
763
|
+
},
|
|
764
|
+
error: report_failure
|
|
765
|
+
});
|
|
766
|
+
} else {
|
|
767
|
+
$.ajax({
|
|
768
|
+
type: "PUT",
|
|
769
|
+
url: url + "/properties/description/",
|
|
770
|
+
contentType: 'text/xml',
|
|
771
|
+
headers: {
|
|
772
|
+
'Content-ID': 'description',
|
|
773
|
+
'CPEE-Event-Source': myid
|
|
774
|
+
},
|
|
775
|
+
data: g,
|
|
776
|
+
error: report_failure
|
|
777
|
+
});
|
|
778
|
+
}
|
|
596
779
|
adaptor_update();
|
|
597
780
|
manifestation.events.click(svgid);
|
|
598
781
|
format_instance_pos();
|
|
@@ -762,9 +945,17 @@ function monitor_instance_state_change(notification) { //{{{
|
|
|
762
945
|
if (notification == "stopped") {
|
|
763
946
|
monitor_instance_pos();
|
|
764
947
|
}
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
948
|
+
if (notification == "running") {
|
|
949
|
+
// // we cant do that, because the events might not be ordered. so jus remove all the blue ones.
|
|
950
|
+
// format_visual_clear();
|
|
951
|
+
|
|
952
|
+
for (const [key, ele] of Object.entries(node_state)) {
|
|
953
|
+
for (i=0; i<ele.passive; i++) {
|
|
954
|
+
format_visual_remove(key,'passive');
|
|
955
|
+
}
|
|
956
|
+
}
|
|
957
|
+
// save_blue_states has to be left alone, because we dont know the uuid
|
|
958
|
+
}
|
|
768
959
|
|
|
769
960
|
var but = "";
|
|
770
961
|
if (notification == "ready" || notification == "stopped") {
|
data/cockpit/js/modifiers.js
CHANGED
|
@@ -61,7 +61,9 @@ async function modifiers_display() {
|
|
|
61
61
|
url: rep + 'modifiers/'
|
|
62
62
|
}).then(async function(res) {
|
|
63
63
|
let ipromises = [];
|
|
64
|
+
let iinserts = {};
|
|
64
65
|
$('resource',res).each(function(_,r) {
|
|
66
|
+
iinserts[$(r).text()] = '';
|
|
65
67
|
ipromises.push(
|
|
66
68
|
$.ajax({
|
|
67
69
|
url: rep + 'modifiers/' + $(r).text()
|
|
@@ -87,13 +89,18 @@ async function modifiers_display() {
|
|
|
87
89
|
);
|
|
88
90
|
|
|
89
91
|
});
|
|
90
|
-
$(
|
|
92
|
+
iinserts[$(r).text()] = $(clone);
|
|
91
93
|
|
|
92
94
|
await Promise.all(cpromises);
|
|
93
95
|
})
|
|
94
96
|
);
|
|
95
97
|
});
|
|
96
98
|
await Promise.all(ipromises);
|
|
99
|
+
|
|
100
|
+
// always insert in order
|
|
101
|
+
for (const [_, fragment] of Object.entries(iinserts)) {
|
|
102
|
+
fragment.insertBefore($('#modifiers template'));
|
|
103
|
+
}
|
|
97
104
|
})
|
|
98
105
|
);
|
|
99
106
|
await Promise.all(promises);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
$(document).ready(function() {
|
|
2
|
+
$('.resource-label').on('mouseover',()=>{
|
|
3
|
+
$('.resource-label').hide(); // Speech Bubble hide when over
|
|
4
|
+
});
|
|
5
|
+
$('#graphgrid').on('mouseover','#resources line.resource-line, #resources g polygon.resource-point',(data)=>{
|
|
6
|
+
const left = $('.resource-label').offset().left;
|
|
7
|
+
const pos = $(data.target).offset().left - 11;
|
|
8
|
+
if ($('.resource-label').is(":hidden") || left != pos) {
|
|
9
|
+
let labeltext = $('text',data.currentTarget).text();
|
|
10
|
+
$('.resource-label').text(labeltext);
|
|
11
|
+
$('.resource-label').css('left', pos);
|
|
12
|
+
$('.resource-label').css('top', data.originalEvent.clientY - 50);
|
|
13
|
+
$('.resource-label').show();
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
data/cockpit/js/wfadaptor.js
CHANGED
|
@@ -48,7 +48,7 @@ function WfAdaptor(theme_base,doit) { // Controller {{{
|
|
|
48
48
|
} // }}}
|
|
49
49
|
this.notify = function() { // public {{{
|
|
50
50
|
} // }}}
|
|
51
|
-
this.draw_labels = function(max,labels,
|
|
51
|
+
this.draw_labels = function(max,labels,dimensions,striped){ // public {{{
|
|
52
52
|
} // }}}
|
|
53
53
|
this.set_svg_container = function (container) { // {{{
|
|
54
54
|
illustrator.set_svg_container(container); // TODO: shadowing the container element
|
|
@@ -376,9 +376,9 @@ function WfDescription(wf_adaptor, wf_illustrator) { // Model {{{
|
|
|
376
376
|
}
|
|
377
377
|
}
|
|
378
378
|
if (illustrator.compact == false) {
|
|
379
|
-
adaptor.draw_labels(graph.max,labels,illustrator.height_shift,illustrator.striped == true ? true : false);
|
|
379
|
+
adaptor.draw_labels(graph.max,labels,{ 'height': illustrator.height, 'height_shift': illustrator.height_shift },illustrator.striped == true ? true : false);
|
|
380
380
|
} else {
|
|
381
|
-
adaptor.draw_labels(graph.max,[],illustrator.height_shift,false);
|
|
381
|
+
adaptor.draw_labels(graph.max,[],{ 'height': illustrator.height, 'height_shift': illustrator.height_shift },false);
|
|
382
382
|
}
|
|
383
383
|
if (illustrator.compact == false) {
|
|
384
384
|
if (labels.length > 0) {
|
|
@@ -134,8 +134,13 @@ data.costs += result.value('costs').to_f</finalize>
|
|
|
134
134
|
<manipulate id="a3">data.persons -= 1</manipulate>
|
|
135
135
|
</loop>
|
|
136
136
|
</parallel>
|
|
137
|
-
<choose mode="
|
|
137
|
+
<choose mode="exclusive">
|
|
138
138
|
<alternative condition="data.costs > 700">
|
|
139
|
+
<_probability>
|
|
140
|
+
<_probability_min/>
|
|
141
|
+
<_probability_max/>
|
|
142
|
+
<_probability_avg/>
|
|
143
|
+
</_probability>
|
|
139
144
|
<call id="a4" endpoint="approve">
|
|
140
145
|
<parameters>
|
|
141
146
|
<label>Approve Hotel</label>
|
|
@@ -173,6 +178,7 @@ data.costs += result.value('costs').to_f</finalize>
|
|
|
173
178
|
</documentation>
|
|
174
179
|
</call>
|
|
175
180
|
</alternative>
|
|
181
|
+
<otherwise/>
|
|
176
182
|
</choose>
|
|
177
183
|
</description>
|
|
178
184
|
</description>
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
<data type="string" rngui:readonly="true"/>
|
|
4
4
|
</attribute>
|
|
5
5
|
<attribute name="endpoint" rngui:label="Endpoint">
|
|
6
|
-
<data type="string"
|
|
6
|
+
<data type="string">
|
|
7
|
+
<param name="pattern">^[a-z_][a-zA-Z0-9_]*$</param>
|
|
8
|
+
</data>
|
|
7
9
|
</attribute>
|
|
8
10
|
<element name="parameters" rngui:header="Properties">
|
|
9
11
|
<element name="label" rngui:label="Label">
|