cpee 2.1.126 → 2.1.128

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 (73) hide show
  1. checksums.yaml +4 -4
  2. data/cockpit/css/llm.css +12 -0
  3. data/cockpit/css/ui.css +11 -0
  4. data/cockpit/js/instance.js +51 -51
  5. data/cockpit/js/llm.js +11 -3
  6. data/cockpit/js/wfadaptor.js +1 -2
  7. data/cockpit/llm.html +2 -2
  8. data/cockpit/llmmodel.html +206 -0
  9. data/cockpit/themes/base.js +41 -18
  10. data/cockpit/themes/preset_model/rngs/alternative.rng +8 -0
  11. data/cockpit/themes/preset_model/rngs/call.rng +34 -0
  12. data/cockpit/themes/preset_model/rngs/callmanipulate.rng +39 -0
  13. data/cockpit/themes/preset_model/rngs/choose.rng +27 -0
  14. data/cockpit/themes/preset_model/rngs/critical.rng +8 -0
  15. data/cockpit/themes/preset_model/rngs/escape.rng +5 -0
  16. data/cockpit/themes/preset_model/rngs/group.rng +3 -0
  17. data/cockpit/themes/preset_model/rngs/loop.rng +14 -0
  18. data/cockpit/themes/preset_model/rngs/manipulate.rng +32 -0
  19. data/cockpit/themes/preset_model/rngs/otherwise.rng +5 -0
  20. data/cockpit/themes/preset_model/rngs/parallel.rng +24 -0
  21. data/cockpit/themes/preset_model/rngs/parallel_branch.rng +5 -0
  22. data/cockpit/themes/preset_model/rngs/scripts.rng +5 -0
  23. data/cockpit/themes/preset_model/rngs/start.rng +22 -0
  24. data/cockpit/themes/preset_model/rngs/stop.rng +5 -0
  25. data/cockpit/themes/preset_model/rngs/terminate.rng +8 -0
  26. data/cockpit/themes/preset_model/rngs/wait_for_signal.rng +8 -0
  27. data/cockpit/themes/preset_model/symbols/alternative.svg +15 -0
  28. data/cockpit/themes/preset_model/symbols/arrow.svg +3 -0
  29. data/cockpit/themes/preset_model/symbols/call.svg +19 -0
  30. data/cockpit/themes/preset_model/symbols/call_sensor.svg +23 -0
  31. data/cockpit/themes/preset_model/symbols/callmanipulate.svg +23 -0
  32. data/cockpit/themes/preset_model/symbols/callmanipulate_sensor.svg +26 -0
  33. data/cockpit/themes/preset_model/symbols/callmanipulate_sensor_signal.svg +32 -0
  34. data/cockpit/themes/preset_model/symbols/callmanipulate_signal.svg +29 -0
  35. data/cockpit/themes/preset_model/symbols/choose.svg +15 -0
  36. data/cockpit/themes/preset_model/symbols/choose_exclusive.svg +15 -0
  37. data/cockpit/themes/preset_model/symbols/choose_exclusive_finish.svg +5 -0
  38. data/cockpit/themes/preset_model/symbols/choose_inclusive.svg +13 -0
  39. data/cockpit/themes/preset_model/symbols/choose_inclusive_finish.svg +4 -0
  40. data/cockpit/themes/preset_model/symbols/closed_loop.svg +5 -0
  41. data/cockpit/themes/preset_model/symbols/closed_loop_cancel.svg +5 -0
  42. data/cockpit/themes/preset_model/symbols/closed_loop_control.svg +5 -0
  43. data/cockpit/themes/preset_model/symbols/closed_loop_measuring.svg +6 -0
  44. data/cockpit/themes/preset_model/symbols/complex.svg +8 -0
  45. data/cockpit/themes/preset_model/symbols/critical.svg +5 -0
  46. data/cockpit/themes/preset_model/symbols/delete.svg +4 -0
  47. data/cockpit/themes/preset_model/symbols/end.svg +3 -0
  48. data/cockpit/themes/preset_model/symbols/escape.svg +5 -0
  49. data/cockpit/themes/preset_model/symbols/event_end.svg +3 -0
  50. data/cockpit/themes/preset_model/symbols/loop.svg +15 -0
  51. data/cockpit/themes/preset_model/symbols/loop_end.svg +15 -0
  52. data/cockpit/themes/preset_model/symbols/manipulate.svg +19 -0
  53. data/cockpit/themes/preset_model/symbols/mark.svg +8 -0
  54. data/cockpit/themes/preset_model/symbols/otherwise.svg +5 -0
  55. data/cockpit/themes/preset_model/symbols/parallel.svg +6 -0
  56. data/cockpit/themes/preset_model/symbols/parallel_branch.svg +5 -0
  57. data/cockpit/themes/preset_model/symbols/parallel_branch_event.svg +14 -0
  58. data/cockpit/themes/preset_model/symbols/parallel_branch_normal.svg +5 -0
  59. data/cockpit/themes/preset_model/symbols/parallel_eventbased_exclusive.svg +9 -0
  60. data/cockpit/themes/preset_model/symbols/parallel_eventbased_parallel.svg +8 -0
  61. data/cockpit/themes/preset_model/symbols/scripts.svg +4 -0
  62. data/cockpit/themes/preset_model/symbols/start.svg +3 -0
  63. data/cockpit/themes/preset_model/symbols/start_event.svg +5 -0
  64. data/cockpit/themes/preset_model/symbols/stop.svg +5 -0
  65. data/cockpit/themes/preset_model/symbols/terminate.svg +4 -0
  66. data/cockpit/themes/preset_model/symbols/wait_for_signal.svg +21 -0
  67. data/cockpit/themes/preset_model/theme.js +50 -0
  68. data/cpee.gemspec +1 -1
  69. data/server/routing/end.pid +1 -1
  70. data/server/routing/forward-events-00.pid +1 -1
  71. data/server/routing/forward-votes.pid +1 -1
  72. data/server/routing/persist.pid +1 -1
  73. metadata +60 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ab0596aa5b8fd02e48ecb1f32f0487d0ba38cb50c266a1eea316bdd8b3e72299
4
- data.tar.gz: 06eb40788ffede2e143987ff2a15ee6cb15ba8bd455a3a7e5455d1f0c5e4dc17
3
+ metadata.gz: bcd03c0a07a2a1e264b5d3f8470ab2b0c1f9e6603b02e9c3448493cf6410d717
4
+ data.tar.gz: 4c38994ad48fa9703749b8d675bfa657cbac4f34e31ec17cce66405b486c5ae4
5
5
  SHA512:
6
- metadata.gz: e494deb1d688f09d89bb1e29c2c973d2388ad86ad1625b3ec88cbce0f6da0f0b700338d23d6d4ae41bf55f53665d4c46986cccb19eb8a0d7a522b235cd9bd733
7
- data.tar.gz: 140db69200f00160050fc0119be5b7e9a023bb9219f6c7ec02e88c51670e4f758dc21bf5017998173847e07b1174784a001f5fc1243380b1a4c47ffe8b47ed16
6
+ metadata.gz: 488800a06b5b45929a7b6f0dbad7300d6bdd77c4f7f3865d8e4968e5c3b197243d791346394bc7bbe320b9ece2bd56bb8a675982a7b58a1003a966b1b3fb18be
7
+ data.tar.gz: 6225dabee23d8f553b3fb02595995fbc44774d993735e6171ddd6d8961e2035d7e9a547b16395a9bf5dc6d7a5defe762fbdbbce7bdf20d51b06489c6d8f06fb4
data/cockpit/css/llm.css CHANGED
@@ -2,6 +2,10 @@
2
2
  display: none;
3
3
  }
4
4
 
5
+ #graphcolumn {
6
+ min-width: 30em !important;
7
+ }
8
+
5
9
  #status {
6
10
  padding: 0.2em 0.5em;
7
11
  border-top: 0.1em solid var(--x-ui-border-color);
@@ -111,3 +115,11 @@
111
115
  .llm_button:hover {
112
116
  background-color: var(--wfadaptor-selected);
113
117
  }
118
+
119
+ #detailcolumn {
120
+ padding-left: 0em !important;
121
+ }
122
+ #details {
123
+ padding-left: 1.5em;
124
+ min-height: 7em;
125
+ }
data/cockpit/css/ui.css CHANGED
@@ -185,6 +185,11 @@ span.vote {
185
185
  color: #73d216;
186
186
  }
187
187
 
188
+ #details {
189
+ flex: 0 1 auto;
190
+ height: 100%;
191
+ overflow: scroll;
192
+ }
188
193
  #modelling {
189
194
  flex: 0 1 auto;
190
195
  height: 100%;
@@ -198,6 +203,10 @@ span.vote {
198
203
  margin-right: 0.2em;
199
204
  margin-bottom: 0.2em;
200
205
  }
206
+ #detailcolumn ui-resizehandle {
207
+ margin-right: 0.5em;
208
+ margin-bottom: 0.2em;
209
+ }
201
210
 
202
211
  #graphcolumn {
203
212
  margin: 0;
@@ -210,6 +219,8 @@ span.vote {
210
219
  }
211
220
  #detailcolumn {
212
221
  padding-left: 1.5em;
222
+ display: flex;
223
+ flex-direction: column;
213
224
  }
214
225
 
215
226
  #dat_log tr:nth-child(odd) { background-color: #e8e8e8; color: #333; }
@@ -95,6 +95,47 @@ var sub_less = 'topic' + '=' + 'activity' + '&' +// {{{
95
95
  'topic' + '=' + 'handlers' + '&' +
96
96
  'events' + '=' + 'change';// }}}
97
97
 
98
+ function sanitize_url(url) { //{{{
99
+ var lastChar = url.substr(url.length - 1)
100
+ if (lastChar != '/') {
101
+ url = (url + '/');
102
+ }
103
+ return url;
104
+ }
105
+ //}}}
106
+ function translate_endpoint(ep) { //{{{
107
+ return ep.replace(/\{[^\/\}]+\}/g,'*');
108
+ } //}}}
109
+ function get_resource(base, key, loc, cache) { //{{{
110
+ cache[key] = {};
111
+ let deferreds = [new $.Deferred(), new $.Deferred(), new $.Deferred()];
112
+ $.ajax({
113
+ url: base + 'endpoints/' + encodeURIComponent(translate_endpoint(loc)) + "/symbol.svg",
114
+ success: function(res) {
115
+ cache[key]['symbol'] = res;
116
+ deferreds[0].resolve(true);
117
+ },
118
+ error: deferreds[0].resolve
119
+ })
120
+ $.ajax({
121
+ url: base + 'endpoints/' + encodeURIComponent(translate_endpoint(loc)) + "/schema.rng",
122
+ success: function(res) {
123
+ cache[key]['schema'] = res;
124
+ deferreds[1].resolve(true);
125
+ },
126
+ error: deferreds[1].resolve
127
+ })
128
+ $.ajax({
129
+ url: base + 'endpoints/' + encodeURIComponent(translate_endpoint(loc)) + "/properties.json",
130
+ success: function(res) {
131
+ cache[key]['properties'] = res;
132
+ deferreds[2].resolve(true);
133
+ },
134
+ error: deferreds[2].resolve
135
+ })
136
+ return deferreds;
137
+ } //}}}
138
+
98
139
  function cockpit() { //{{{
99
140
  $("button[name=base]").click(function(){ create_instance($("input[name=base-url]").val(),null,false,false); });
100
141
  $("button[name=instance]").click(function(){ uidash_activate_tab("#tabinstance"); monitor_instance($("input[name=instance-url]").val(),$("input[name=res-url]").val(),false,false); });
@@ -229,14 +270,6 @@ function cockpit() { //{{{
229
270
  });
230
271
  } //}}}
231
272
 
232
- function sanitize_url(url) { //{{{
233
- var lastChar = url.substr(url.length - 1)
234
- if (lastChar != '/') {
235
- url = (url + '/');
236
- }
237
- return url;
238
- }
239
- //}}}
240
273
  function check_subscription() { // {{{
241
274
  var url = $('body').attr('current-instance');
242
275
  var num = 0;
@@ -326,6 +359,7 @@ async function sse() { //{{{
326
359
  break;
327
360
  case 'description':
328
361
  monitor_instance_dsl();
362
+ monitor_graph_change(false);
329
363
  break;
330
364
  case 'endpoints':
331
365
  monitor_instance_values("endpoints");
@@ -373,6 +407,7 @@ async function sse() { //{{{
373
407
  await monitor_instance_values("attributes"); // attributes first, to catch the <resources> attribute which overrides current-resources
374
408
  monitor_instance_values("dataelements");
375
409
  monitor_instance_dsl();
410
+ monitor_graph_change(false);
376
411
  monitor_instance_state();
377
412
  } //}}}
378
413
 
@@ -453,40 +488,6 @@ function monitor_instance(cin,rep,load,exec) {// {{{
453
488
  });
454
489
  }// }}}
455
490
 
456
- function translate_endpoint(ep) {
457
- return ep.replace(/\{[^\/\}]+\}/g,'*');
458
- }
459
-
460
- function get_resource(base, key, loc, cache) {
461
- cache[key] = {};
462
- let deferreds = [new $.Deferred(), new $.Deferred(), new $.Deferred()];
463
- $.ajax({
464
- url: base + 'endpoints/' + encodeURIComponent(translate_endpoint(loc)) + "/symbol.svg",
465
- success: function(res) {
466
- cache[key]['symbol'] = res;
467
- deferreds[0].resolve(true);
468
- },
469
- error: deferreds[0].resolve
470
- })
471
- $.ajax({
472
- url: base + 'endpoints/' + encodeURIComponent(translate_endpoint(loc)) + "/schema.rng",
473
- success: function(res) {
474
- cache[key]['schema'] = res;
475
- deferreds[1].resolve(true);
476
- },
477
- error: deferreds[1].resolve
478
- })
479
- $.ajax({
480
- url: base + 'endpoints/' + encodeURIComponent(translate_endpoint(loc)) + "/properties.json",
481
- success: function(res) {
482
- cache[key]['properties'] = res;
483
- deferreds[2].resolve(true);
484
- },
485
- error: deferreds[2].resolve
486
- })
487
- return deferreds;
488
- }
489
-
490
491
  function monitor_instance_values(type,vals) {// {{{
491
492
  if (type == "dataelements" && save['state'] == "running") {
492
493
  let de = save[type].save();
@@ -771,7 +772,6 @@ function monitor_instance_dsl() {// {{{
771
772
  res = res.replace(/activity\s+\[:([A-Za-z][a-zA-Z0-9_]+)([^\]]*\])/g,"<span class='activities' id=\"activity-$1\">activity [:$1$2</span>");
772
773
 
773
774
  ctv.append(res);
774
- monitor_graph_change(false);
775
775
  }
776
776
  }
777
777
  });
@@ -1600,9 +1600,7 @@ function append_to_log(what,type,message) {//{{{
1600
1600
  }
1601
1601
  }//}}}
1602
1602
 
1603
- function report_failure(){}
1604
-
1605
- function ui_pos(e,bl) {
1603
+ function ui_pos(e,bl) { //{{{
1606
1604
  var url = $('body').attr('current-instance');
1607
1605
  var coll = [];
1608
1606
  $('g.element.primitive > g.activities.active, g.element.primitive > g.activities.passive').each(function(a,b){
@@ -1626,16 +1624,18 @@ function ui_pos(e,bl) {
1626
1624
  success: monitor_instance_pos,
1627
1625
  error: report_failure
1628
1626
  });
1629
- }
1630
- function del_ui_pos(e) {
1627
+ } //}}}
1628
+ function del_ui_pos(e) { //{{{
1631
1629
  ui_pos(e,function(coll){
1632
1630
  coll.splice(coll.findIndex((ele)=>ele[0] == $(e).attr('id')),1);
1633
1631
  return coll;
1634
1632
  });
1635
- }
1636
- function add_ui_pos(e) {
1633
+ } //}}}
1634
+ function add_ui_pos(e) { //{{{
1637
1635
  ui_pos(e,function(coll){
1638
1636
  coll.push([$(e).attr('id'), e.nodeName == 'stop' ? 'after' : 'at']);
1639
1637
  return coll;
1640
1638
  });
1641
- }
1639
+ } //}}}
1640
+
1641
+ function report_failure(){}
data/cockpit/js/llm.js CHANGED
@@ -343,7 +343,7 @@ $(document).ready(async function() { //{{{
343
343
  var menu = new CustomMenu(e);
344
344
 
345
345
  var mode_entries = [];
346
- $('#mode option').each(function(){
346
+ $('#mode.active option').each(function(){
347
347
  mode_entries.push({
348
348
  label: $(this).text(),
349
349
  menu_icon: $(this).is(':selected') ? mode_active : mode_inactive,
@@ -357,7 +357,7 @@ $(document).ready(async function() { //{{{
357
357
  });
358
358
 
359
359
  var llm_entries = [];
360
- $('#llms option').each(function(){
360
+ $('#llms.active option').each(function(){
361
361
  llm_entries.push({
362
362
  label: $(this).text(),
363
363
  menu_icon: $(this).is(':selected') ? llm_active : llm_inactive,
@@ -370,7 +370,15 @@ $(document).ready(async function() { //{{{
370
370
  });
371
371
  });
372
372
 
373
- menu.contextmenu({ 'Models': mode_entries, 'LLMs': llm_entries });
373
+ let res = {};
374
+ if (mode_entries.length > 0) {
375
+ res['Models'] = mode_entries;
376
+ }
377
+ if (llm_entries.length > 0) {
378
+ res['LLMs'] = llm_entries;
379
+ }
380
+
381
+ menu.contextmenu(res);
374
382
  });
375
383
  $("#loadtxt").change(function(e){
376
384
  let files = document.getElementById('loadtxt').files;
@@ -923,7 +923,6 @@ function WfDescription(wf_adaptor, wf_illustrator) { // Model {{{
923
923
  } // }}}
924
924
 
925
925
  var reset_used_id_list = this.reset_used_id_list = function() { // {{{
926
- console.log('bbbbb');
927
926
  used_id_list = [];
928
927
  } // }}}
929
928
  var get_free_id = this.get_free_id = function(prefix,aname,other) { // {{{
@@ -990,7 +989,7 @@ function WfDescription(wf_adaptor, wf_illustrator) { // Model {{{
990
989
  adaptor.notify(newn.attr('svg-id'));
991
990
  else if (svgid != undefined)
992
991
  adaptor.notify(svgid);
993
- else if (newn.parent('[svg-id]').length > 0)
992
+ else if (newn.parents('[svg-id]').length > 0)
994
993
  adaptor.notify(newn.parent('[svg-id]').attr('svg-id'));
995
994
  else
996
995
  console.info('Something went horribly wrong');
data/cockpit/llm.html CHANGED
@@ -277,14 +277,14 @@
277
277
  <option value="model">Only Model</option>
278
278
  <option value="dataflow" selected="selected">Model and Dataflow</option>
279
279
  </select>
280
- <select name="mode" id="mode" class='hidden'>
280
+ <select name="mode" id="mode" class='active hidden'>
281
281
  <option value="noendpoints" selected="selected">Generate/Adapt from Scratch</option>
282
282
  <option value="endpoints">Generate/Adapt with Endpoint Knowledge</option>
283
283
  </select>
284
284
  <button id='prompt_submit_button' title="CTRL-ENTER to Submit" class="llm_button small">➤</button>
285
285
  <button id='prompt_reset_button' title="Reset Context" class="llm_button small">🗲</button>
286
286
  <button id='prompt_prop_button' title="Properties" class="llm_button small">⚙</button>
287
- <select name="llms" id="llms" class='hidden'>
287
+ <select name="llms" id="llms" class='active hidden'>
288
288
  <option value="gemini-3.1-flash-lite" selected="selected">gemini 3.1 Flash Lite</option>
289
289
  <option value="gemini-3.1-flash">gemini 3.1 Flash</option>
290
290
  <option value="gemini-3.1-pro">gemini 3.1 Pro</option>
@@ -0,0 +1,206 @@
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
+ <!DOCTYPE html>
18
+ <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
19
+ <head>
20
+ <meta charset="utf-8"/>
21
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
22
+ <title>CPEE Cockpit</title>
23
+
24
+ <!-- libs, do not modify. When local than load local libs. -->
25
+ <script type="text/javascript" src="/js_libs/jquery.min.js"></script>
26
+ <script type="text/javascript" src="/js_libs/jquery.browser.js"></script>
27
+ <script type="text/javascript" src="/js_libs/jquery.svg.min.js"></script>
28
+ <script type="text/javascript" src="/js_libs/jquery.svgdom.min.js"></script>
29
+ <script type="text/javascript" src="/js_libs/vkbeautify.js"></script>
30
+ <script type="text/javascript" src="/js_libs/util.js"></script>
31
+ <script type="text/javascript" src="/js_libs/printf.js"></script>
32
+ <script type="text/javascript" src="/js_libs/strftime.min.js"></script>
33
+ <script type="text/javascript" src="/js_libs/parsequery.js"></script>
34
+ <script type="text/javascript" src="/js_libs/underscore.min.js"></script>
35
+ <script type="text/javascript" src="/js_libs/jquery.caret.min.js"></script>
36
+ <script type="text/javascript" src="/js_libs/jquery.cookie.js"></script>
37
+
38
+ <script type="text/javascript" src="/js_libs/relaxngui.js"></script>
39
+
40
+ <script type="text/javascript" src="/js_libs/uidash.js"></script>
41
+ <script type="text/javascript" src="/js_libs/custommenu.js"></script>
42
+
43
+ <link rel="stylesheet" href="/js_libs/custommenu.css" type="text/css"/>
44
+ <link rel="stylesheet" href="/js_libs/uidash.css" type="text/css"/>
45
+
46
+ <link rel="stylesheet" href="/js_libs/relaxngui.css" type="text/css"/>
47
+
48
+ <!-- modelling ui -->
49
+ <script type="text/javascript" src="js/wfadaptor.js"></script>
50
+ <link rel="stylesheet" href="css/wfadaptor.css" type="text/css" data-include-export="true"/>
51
+
52
+ <!-- custom stuff, play arround -->
53
+ <script type="text/javascript" src="js/ui.js"></script>
54
+ <script type="text/javascript" src="js/instance.js"></script>
55
+ <script type="text/javascript" src="js/details.js"></script>
56
+ <script type="text/javascript" src="js/parameters.js"></script>
57
+ <script type="text/javascript" src="js/extended_columns.js"></script>
58
+ <script type="text/javascript" src="js/modifiers.js"></script>
59
+ <script type="text/javascript" src="themes/base.js"></script>
60
+
61
+ <script type="text/javascript" src="js/llm.js"></script>
62
+ <link rel="stylesheet" href="css/llm.css" type="text/css"/>
63
+ <link rel="stylesheet" href="css/llmmodel.css" type="text/css"/>
64
+
65
+ <link rel="stylesheet" href="css/ui.css" type="text/css"/>
66
+ <link rel="stylesheet" href="css/extended_columns-label.css" type="text/css"/>
67
+ <link rel="stylesheet" href="css/extended_columns-svg.css" type="text/css" data-include-export="true"/>
68
+ <link rel="stylesheet" href="/global_ui/uicpee.css" type="text/css"/>
69
+ <style></style>
70
+ </head>
71
+ <body data-base-port="8298" data-res-port="9303" data-theme-base="themes" is="x-ui-">
72
+ <div class='hidden' id='relaxngworker'></div>
73
+
74
+ <div class='menu' id='templates'></div>
75
+ <div class='menu' id='modeltypes'></div>
76
+
77
+ <template id="label">
78
+ <svg width="20" height="20" xmlns="http://www.w3.org/2000/svg" style="position: absolute; top: 0; left: 0;" class="displaylabel">
79
+ <g transform="translate(1 %%1) rotate(-%%2)">
80
+ <rect class="displaylabel" width="200" height="14" x="8" y="0" rx="5" ry="5"/>
81
+ <path class="displaylabel" d="M10,13 0,13 8,8"/>
82
+ <path class="displaylabelinner" d="M10,11.5 8.5,11.5 8.5,9.5 10,9.5"/>
83
+ <text class="label" x="18" y="10">aaaa</text>
84
+ </g>
85
+ </svg>
86
+ </template>
87
+
88
+ <ui-tabbed id="instance">
89
+ <ui-tabbar>
90
+ <ui-tab class="switch" ></ui-tab>
91
+ <ui-tab class="" data-tab="new" id="tabnew" >New</ui-tab>
92
+ <ui-tab class="inactive hidden" data-tab="instance" id="tabinstance" >Instance</ui-tab>
93
+ <ui-behind ><a style='display:none' target='_blank' id='current-instance'></a><a style='display:none' target='_blank' id='current-instance-properties'>P</a><a style='display:none' target='_blank' id='current-instance-subscriptions'>S</a><a style='display:none' target='_blank' id='current-instance-callbacks'>C</a></ui-behind>
94
+ <ui-last ><a class="logo" href=".."></a></ui-last>
95
+ </ui-tabbar>
96
+ <ui-content>
97
+ <ui-area data-belongs-to-tab="new" id="areanew"> <!--{{{-->
98
+ <table class='x-ui-layout'>
99
+ <tr>
100
+ <td>Resources:</td>
101
+ <td><input name="res-url" type="text" value=""/></td>
102
+ <td></td>
103
+ </tr>
104
+ <tr>
105
+ <td>Engine:</td>
106
+ <td><input name="base-url" type="text" value=""/></td>
107
+ <td><button name="base">create new instance</button></td>
108
+ </tr>
109
+ <tr>
110
+ <td>Instance:</td>
111
+ <td><input name="instance-url" type="text" value=""/></td>
112
+ <td><button name="instance">monitor instance</button></td>
113
+ </tr>
114
+ </table>
115
+ </ui-area> <!--}}}-->
116
+ <ui-area data-belongs-to-tab="instance" id="areainstance" class="inactive"> <!--{{{-->
117
+ <div>
118
+ <div class='section'>
119
+ <div>
120
+ <form id='fuckchrome'>
121
+ <input type='file' name='testsetfile' id='testsetfile'/>
122
+ </form>
123
+ <button title='a template includes various settings, subscriptions or a (partial) model' name="loadtestset">load template</button><button title='a testset includes various settings, subscriptions or a model' name="loadtestsetfile">load testset</button>
124
+ </div>
125
+ <div>
126
+ <input type='file' name='modelfile' id='modelfile'/>
127
+ <button title='a standalone process model is only loadable if the currently loaded testset sucessfully prepared the current instance for the type of model' name="loadmodelfile">load model</button>
128
+ </div>
129
+ </div><div class='section'>
130
+ <a id="savetestsetfile" href="" download=""></a>
131
+ <a id="savesvgfile" href="" download=""></a>
132
+ <button title='a testset includes various settings, subscriptions and a model' name="savetestsetfile">save<br>testset</button>
133
+ <button title='a testset includes various settings, subscriptions and a model' name="savesvgfile">save svg<br>graph</button>
134
+ </div><div class='section' id='modifiers'>
135
+ <template id="item">
136
+ <div>
137
+ <div class='title'><strong></strong></div>
138
+ <div class='select'><select></select></div>
139
+ <div class='additional'></div>
140
+ </div>
141
+ </template>
142
+ </div>
143
+ </div>
144
+ </ui-area> <!--}}}-->
145
+ </ui-content>
146
+ </ui-tabbed>
147
+
148
+ <ui-rest id="main" class="hidden">
149
+ <ui-tabbar>
150
+ <ui-before ></ui-before>
151
+ <ui-tab class="" data-tab="details" id="tabdetails">Graph</ui-tab>
152
+ <ui-tab class="inactive" data-tab="dsl" id="tabdsl" >Description</ui-tab>
153
+ <ui-tab class="inactive" data-tab="log" id="tablog" >Log</ui-tab>
154
+ <ui-behind ><a style='display:none' target='_blank' id='current-track'>T</a><a style='display:none' target='_blank' id='current-graph'>G</a></ui-behind>
155
+ </ui-tabbar>
156
+ <ui-content>
157
+ <ui-area data-belongs-to-tab="details" id='graphcolumn' oncontextmenu='return false'>
158
+ <ui-part id='modelling'>
159
+ <div id='graphgrid'>
160
+ <div class="resource-label" style="display: none"></div>
161
+ <svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:x="http://www.w3.org/1999/xlink" id='graphcanvas' class='graphcolumn' width='1' height='1'></svg>
162
+ </div>
163
+ </ui-part>
164
+ </ui-area>
165
+ <ui-resizehandle data-belongs-to-tab="details" data-label="drag to resize"></ui-resizehandle>
166
+ <ui-area data-belongs-to-tab="details" id="detailcolumn">
167
+ <ui-part id='details'>
168
+ <div id="dat_details" class='x-ui-layout'></div>
169
+ </ui-part>
170
+ <ui-resizehandle class='hidden'>drag to resize</ui-resizehandle>
171
+ <ui-part id='input'>
172
+ <div id='status'></div>
173
+ <div id='prompt_container' class="max">
174
+ <div id='prompt' contenteditable="true" title="Please enter your modelling instructions here..." placeholder="Please enter your modelling instructions here..."></div>
175
+ <div id='prompt_submit_container' class="single">
176
+ <select name="generation" id="generation" class='hidden'>
177
+ <option value="model" selected="selected">Only Model</option>
178
+ <option value="dataflow">Model and Dataflow</option>
179
+ </select>
180
+ <select name="mode" id="mode" class='hidden'>
181
+ <option value="noendpoints_docdescription" selected="selected">Generate/Adapt DocDescription</option>
182
+ <option value="noendpoints">Generate/Adapt from Scratch</option>
183
+ <option value="endpoints">Generate/Adapt with Endpoint Knowledge</option>
184
+ </select>
185
+ <button id='prompt_submit_button' title="CTRL-ENTER to Submit" class="llm_button small">➤</button>
186
+ <button id='prompt_reset_button' title="Reset Context" class="llm_button small">🗲</button>
187
+ <button id='prompt_prop_button' title="Properties" class="llm_button small">⚙</button>
188
+ <select name="llms" id="llms" class='active hidden'>
189
+ <option value="gemini-3.1-flash-lite" selected="selected">gemini 3.1 Flash Lite</option>
190
+ <option value="gemini-3.1-flash">gemini 3.1 Flash</option>
191
+ <option value="gemini-3.1-pro">gemini 3.1 Pro</option>
192
+ </select>
193
+ </div>
194
+ </div>
195
+ </ui-part>
196
+ </ui-area>
197
+ <ui-area data-belongs-to-tab="dsl" id="areadsl" class="inactive"></ui-area>
198
+ <ui-area data-belongs-to-tab="log" id="arealog" class="inactive"> <!--{{{-->
199
+ <div>Persistent Log: <a style='display:none' target='_blank' id='current-log'></a> [<a style='display:none' target='_blank' id='xml-log'>X</a>,<a style='display:none' target='_blank' id='shifted-log'>S</a>]</div>
200
+ <table id="dat_log" class="x-ui-layout"></table>
201
+ </ui-area> <!--}}}-->
202
+ </ui-content>
203
+ </ui-rest>
204
+
205
+ </body>
206
+ </html>
@@ -4,6 +4,7 @@ function WFAdaptorManifestationBase(adaptor) {
4
4
  this.adaptor = adaptor;
5
5
  this.resources = {};
6
6
  this.elements = {};
7
+ this.strings = {};
7
8
  this.events = {};
8
9
  this.compact = false;
9
10
  this.striped = false;
@@ -261,17 +262,19 @@ function WFAdaptorManifestationBase(adaptor) {
261
262
  })
262
263
  }
263
264
  }
264
- if($('> code', xml_node).length > 0 && xml_node.get(0).tagName == 'call') {
265
- var icon = contextMenuHandling_clean_icon(self.elements.callmanipulate.illustrator.svg);
266
- icon.find('.part-extra .colorstyle').css('fill','var(--wfadaptor-important');
267
- menu['Delete'].push({
268
- 'label': 'Remove Scripts',
269
- 'function_call': self.adaptor.description.remove,
270
- 'menu_icon': icon,
271
- 'type': undefined,
272
- 'params': ['> code', xml_node]
273
- });
265
+
266
+ if (self.elements[xml_node.get(0).tagName].removable_children) {
267
+ let group = self.elements[xml_node.get(0).tagName].removable_children(xml_node);
268
+ if (group.length > 0) {
269
+ if (!('Delete' in menu)) {
270
+ menu['Delete'] = [];
271
+ }
272
+ $(group).each((_,e)=>{
273
+ menu['Delete'].push(e);
274
+ });
275
+ }
274
276
  }
277
+
275
278
  if (xml_node.get(0).tagName == "call" || xml_node.get(0).tagName == "manipulate" || xml_node.get(0).tagName == "stop") {
276
279
  let exec_icon = contextMenuHandling_clean_icon(self.elements.call.illustrator.svg);
277
280
  let mark_icon = self.resources.mark;
@@ -386,6 +389,9 @@ function WFAdaptorManifestationBase(adaptor) {
386
389
  this.events.dragstart = function (svgid, e) { //{{{
387
390
  } //}}}
388
391
 
392
+ // Other Strings
393
+ this.strings.scripts = 'Scripts';
394
+
389
395
  // Other resources
390
396
  this.resources.arrow = self.adaptor.theme_dir + 'symbols/arrow.svg';
391
397
  this.resources.delete = self.adaptor.theme_dir + 'symbols/delete.svg';
@@ -442,7 +448,7 @@ function WFAdaptorManifestationBase(adaptor) {
442
448
  'permissible_children': function(node,mode) { //{{{
443
449
  if(node.children('code').length < 1)
444
450
  return [
445
- {'label': 'Scripts',
451
+ {'label': self.strings.scripts,
446
452
  'function_call': self.adaptor.description.insert_last_into,
447
453
  'menu_icon': contextMenuHandling_clean_icon(self.elements.callmanipulate.illustrator.svg),
448
454
  'type': undefined,
@@ -450,6 +456,23 @@ function WFAdaptorManifestationBase(adaptor) {
450
456
  ];
451
457
  return [];
452
458
  }, //}}}
459
+ 'removable_children': function(node) { //{{{
460
+ if(node.children('code').length > 0) {
461
+ var icon = contextMenuHandling_clean_icon(self.elements.callmanipulate.illustrator.svg);
462
+ icon.find('.part-extra .colorstyle').css('fill','var(--wfadaptor-important');
463
+ return [
464
+ {
465
+ 'label': 'Remove ' + self.strings.scripts,
466
+ 'function_call': self.adaptor.description.remove,
467
+ 'menu_icon': icon,
468
+ 'type': undefined,
469
+ 'params': ['> code', node]
470
+ }
471
+ ];
472
+ } else {
473
+ return [];
474
+ }
475
+ }, //}}}
453
476
  'adaptor': {//{{{
454
477
  'mousedown': function (node,e) { self.events.mousedown(node,e,true,true); },
455
478
  'touchstart': function (node,e) { self.events.touchstart(node,e,true,true); },
@@ -760,7 +783,7 @@ function WFAdaptorManifestationBase(adaptor) {
760
783
  if (mode == 'into') { func = self.adaptor.description.insert_first_into }
761
784
  else { func = self.adaptor.description.insert_after }
762
785
  var childs = [
763
- {'label': 'Service Call with Scripts',
786
+ {'label': 'Service Call with ' + self.strings.scripts,
764
787
  'function_call': func,
765
788
  'menu_icon': contextMenuHandling_clean_icon(self.elements.callmanipulate.illustrator.svg),
766
789
  'type': 'callmanipulate',
@@ -857,7 +880,7 @@ function WFAdaptorManifestationBase(adaptor) {
857
880
  'params': [self.adaptor.description.elements.parallel_branch, node]}];
858
881
  }
859
882
  var childs = [
860
- {'label': 'Service Call with Scripts',
883
+ {'label': 'Service Call with ' + self.strings.scripts,
861
884
  'function_call': func,
862
885
  'menu_icon': contextMenuHandling_clean_icon(self.elements.callmanipulate.illustrator.svg),
863
886
  'type': 'callmanipulate',
@@ -948,7 +971,7 @@ function WFAdaptorManifestationBase(adaptor) {
948
971
  if (mode == 'into') { func = self.adaptor.description.insert_first_into }
949
972
  else { func = self.adaptor.description.insert_after }
950
973
  var childs = [
951
- {'label': 'Service Call with Scripts',
974
+ {'label': 'Service Call with ' + self.strings.scripts,
952
975
  'function_call': func,
953
976
  'menu_icon': contextMenuHandling_clean_icon(self.elements.callmanipulate.illustrator.svg),
954
977
  'type': 'callmanipulate',
@@ -1069,7 +1092,7 @@ function WFAdaptorManifestationBase(adaptor) {
1069
1092
  if (mode.match(/into/)) { func = self.adaptor.description.insert_first_into }
1070
1093
  else { func = self.adaptor.description.insert_after }
1071
1094
  var childs = [
1072
- {'label': 'Service Call with Scripts',
1095
+ {'label': 'Service Call with ' + self.strings.scripts,
1073
1096
  'function_call': func,
1074
1097
  'menu_icon': contextMenuHandling_clean_icon(self.elements.callmanipulate.illustrator.svg),
1075
1098
  'type': 'callmanipulate',
@@ -1147,7 +1170,7 @@ function WFAdaptorManifestationBase(adaptor) {
1147
1170
  if (mode == 'into') { func = self.adaptor.description.insert_first_into }
1148
1171
  else { func = self.adaptor.description.insert_after }
1149
1172
  var childs = [
1150
- {'label': 'Service Call with Scripts',
1173
+ {'label': 'Service Call with ' + self.strings.scripts,
1151
1174
  'function_call': func,
1152
1175
  'menu_icon': contextMenuHandling_clean_icon(self.elements.callmanipulate.illustrator.svg),
1153
1176
  'type': 'callmanipulate',
@@ -1237,7 +1260,7 @@ function WFAdaptorManifestationBase(adaptor) {
1237
1260
  if (mode == 'into') { func = self.adaptor.description.insert_first_into }
1238
1261
  else { func = self.adaptor.description.insert_after }
1239
1262
  var childs = [
1240
- {'label': 'Service Call with Scripts',
1263
+ {'label': 'Service Call with ' + self.strings.scripts,
1241
1264
  'function_call': func,
1242
1265
  'menu_icon': contextMenuHandling_clean_icon(self.elements.callmanipulate.illustrator.svg),
1243
1266
  'type': 'callmanipulate',
@@ -1412,7 +1435,7 @@ function WFAdaptorManifestationBase(adaptor) {
1412
1435
  if (mode == 'into') { func = self.adaptor.description.insert_first_into }
1413
1436
  else { func = self.adaptor.description.insert_after }
1414
1437
  var childs = [
1415
- {'label': 'Service Call with Scripts',
1438
+ {'label': 'Service Call with ' + self.strings.scripts,
1416
1439
  'function_call': func,
1417
1440
  'menu_icon': contextMenuHandling_clean_icon(self.elements.callmanipulate.illustrator.svg),
1418
1441
  'type': 'callmanipulate',
@@ -0,0 +1,8 @@
1
+ <element xmlns="http://relaxng.org/ns/structure/1.0" xmlns:rngui="http://rngui.org" rngui:version="1.2" name="alternative" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" ns="http://cpee.org/ns/description/1.0">
2
+ <attribute name="eid" rngui:label="ID" rngui:default="javascript:get_free_id('e','eid')">
3
+ <data type="string" rngui:readonly="true"/>
4
+ </attribute>
5
+ <attribute name="condition" rngui:label="Condition">
6
+ <data type="string" rngui:label="Condition"/>
7
+ </attribute>
8
+ </element>