cpee 2.1.5 → 2.1.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c55f39b3a28510aa125fab8be30c6abefcda2ecea411b37193c85659ce87ad60
4
- data.tar.gz: 28efcb5ebe9c46f4b1c0e107f557b7ac4ccc295d254c9a5515812f94420d8e1b
3
+ metadata.gz: 37a2b6910315c8913216a368e40556013da8a33e5887adb75729a52ead89daba
4
+ data.tar.gz: 93b34b46c2e9db0586ce251a51e388f668b128cf497cb1ba95920cbe5424e09b
5
5
  SHA512:
6
- metadata.gz: 80afb6a0631c42f8ce45f90b545067f85384c32da9964f61857a07314ae1252dbfb19f833581de426c788f2cf2fe52d409451e44b71f63aa1bf286c922f6c80f
7
- data.tar.gz: b15f56166f86bd72b791d8ef23ccb41d0eec8d840073777a2315e18993a2e88db071472e956c3b5f43afce5189461111b3326bdc7e9f48c3c7cd7d37ae0eb4fa
6
+ metadata.gz: f6ed4c4157ebb113589f14c1ab020c4199b30b3e673547b48522cf7cc901a4cbfb70b3ffeb7c21f942df2e151d474a5f7662f64ed1fff4ac60005424e403e83f
7
+ data.tar.gz: 87d605938e321c920c969aaf525e6fb7213e9eeef18ef99884175e5d75d14e25f793f1953d55b79dccce61e8270c5d222061c9d10c75fc18d4af9df3726df23d
data/cockpit/css/ui.css CHANGED
@@ -129,11 +129,13 @@ ui-tabbed ui-tabbar ui-behind button {
129
129
  #areaendpoints button.relaxngui_control { display: none; }
130
130
  #areaattributes button.relaxngui_control { display: none; }
131
131
 
132
+ #areainstance { height: 100%; }
133
+ #areainstance > div { display: flex; height: 100%; }
132
134
  #areainstance input[type=file] { display: none; }
133
- #areainstance div.section { display: table-cell; vertical-align: middle; }
134
- #areainstance div.section:nth-child(1) { padding: 0 0.5em 0 0; white-space: nowrap; }
135
- #areainstance div.section:nth-child(2) { border-left: 1px solid var(--x-ui-border-color); padding: 0 0.5em; white-space: nowrap; }
136
- #areainstance div.section:nth-child(3) { border-left: 1px solid var(--x-ui-border-color); padding: 0 0 0 0.5em; white-space: nowrap; }
135
+ #areainstance div.section { vertical-align: middle; height: 100%; }
136
+ #areainstance div.section:nth-child(1) { flex: 0 0 auto; padding: 0 0.5em 0 0; white-space: nowrap; }
137
+ #areainstance div.section:nth-child(2) { flex: 0 0 auto; border-left: 1px solid var(--x-ui-border-color); padding: 0 0.5em; white-space: nowrap; }
138
+ #areainstance div.section:nth-child(3) { flex: 1 1 auto; border-left: 1px solid var(--x-ui-border-color); padding: 0 0 0 0.5em; white-space: nowrap; }
137
139
 
138
140
  #areainstance div.section:nth-child(1) > div:nth-child(2) { white-space: normal; text-align: right; }
139
141
 
@@ -144,9 +146,14 @@ ui-tabbed ui-tabbar ui-behind button {
144
146
  #areainstance div.section:nth-child(1) button[name=loadtestsetfile] { white-space: normal; width: 10em; height: 3.5em; margin-left: 0.2em; }
145
147
  #areainstance div.section:nth-child(1) button[name=loadmodelfile] { white-space: normal; width: 10em; height: 2em; margin-top: 0.2em; }
146
148
 
147
- #areainstance div.section:nth-child(2) button { white-space: normal; width: 6em; height: 4.5em; vertical-align: middle; margin: 0; padding: 0; }
148
- #areainstance div.section:nth-child(3) div { white-space: normal; vertical-align: middle; margin: 0; padding: 0; }
149
- #areainstance div.section:nth-child(3) button[name=loadmodeltype] { white-space: normal; width: 10em; height: 2em; }
149
+ #areainstance div.section:nth-child(2) button { white-space: normal; width: 6em; height: 5.7em; vertical-align: middle; margin: 0; padding: 0; }
150
+
151
+ #areainstance div.section:nth-child(3) { overflow-y: scroll; }
152
+ #areainstance div.section:nth-child(3) strong { margin:0; padding:0; white-space: normal; font-size: 1em; }
153
+ #areainstance div.section:nth-child(3) > div:not(:first-child) { padding-top: 0.5em; }
154
+ #areainstance div.section:nth-child(3) > div { padding-bottom: 0.2em; }
155
+ #areainstance div.section:nth-child(3) select { margin-left: 1em; }
156
+ #areainstance div.section:nth-child(3) div.additional { margin-left: 1em; }
150
157
 
151
158
  #areaexecution input { padding: 0; margin:0; }
152
159
  #areaexecution table.x-ui-compact { width: 100%; }
data/cockpit/edit.html CHANGED
@@ -144,29 +144,32 @@
144
144
  </table>
145
145
  </ui-area> <!--}}}-->
146
146
  <ui-area data-belongs-to-tab="instance" id="areainstance" class="inactive"> <!--{{{-->
147
- <div class='section'>
148
- <div>
149
- <form id='fuckchrome'>
150
- <input type='file' name='testsetfile' id='testsetfile'/>
151
- </form>
152
- <button title='save a testset includes various settings, subscriptions and a model' name="save" disabled=""><div>save</div><div class="hidden" id='lastsavedline'>(last: <span id="lastsaved"></span>)</div></button>
153
- <button title='a testset includes various settings, subscriptions or a model' name="loadtestsetfile">load testset</button>
154
- </div>
155
- <div>
156
- <input type='file' name='modelfile' id='modelfile'/>
157
- <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>
158
- </div>
159
- </div><div class='section'>
160
- <a id="savetestsetfile" href="" download=""></a>
161
- <a id="savesvgfile" href="" download=""></a>
162
- <button title='a testset includes various settings, subscriptions and a model' name="savetestsetfile">save testset</button>
163
- <button title='a testset includes various settings, subscriptions and a model' name="savesvgfile">save svg graph</button>
164
- </div><div class='section'>
165
- <div>
166
- Current model: <span id='currentmodel'></span>
167
- </div>
168
- <div>
169
- <button title='a testset includes various settings, subscriptions and a model' name="loadmodeltype">set model type</button>
147
+ <div>
148
+ <div class='section'>
149
+ <div>
150
+ <form id='fuckchrome'>
151
+ <input type='file' name='testsetfile' id='testsetfile'/>
152
+ </form>
153
+ <button title='save a testset includes various settings, subscriptions and a model' name="save" disabled=""><div>save</div><div class="hidden" id='lastsavedline'>(last: <span id="lastsaved"></span>)</div></button>
154
+ <button title='a testset includes various settings, subscriptions or a model' name="loadtestsetfile">load testset</button>
155
+ </div>
156
+ <div>
157
+ <input type='file' name='modelfile' id='modelfile'/>
158
+ <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>
159
+ </div>
160
+ </div><div class='section'>
161
+ <a id="savetestsetfile" href="" download=""></a>
162
+ <a id="savesvgfile" href="" download=""></a>
163
+ <button title='a testset includes various settings, subscriptions and a model' name="savetestsetfile">save testset</button>
164
+ <button title='a testset includes various settings, subscriptions and a model' name="savesvgfile">save svg graph</button>
165
+ </div><div class='section' id='modifiers'>
166
+ <template id="item">
167
+ <div>
168
+ <div class='title'><strong></strong></div>
169
+ <div class='select'><select/></div>
170
+ <div class='additional'></div>
171
+ </div>
172
+ </template>
170
173
  </div>
171
174
  </div>
172
175
  </ui-area> <!--}}}-->
data/cockpit/index.html CHANGED
@@ -146,28 +146,31 @@
146
146
  </table>
147
147
  </ui-area> <!--}}}-->
148
148
  <ui-area data-belongs-to-tab="instance" id="areainstance" class="inactive"> <!--{{{-->
149
- <div class='section'>
150
- <div>
151
- <form id='fuckchrome'>
152
- <input type='file' name='testsetfile' id='testsetfile'/>
153
- </form>
154
- <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>
155
- </div>
156
- <div>
157
- <input type='file' name='modelfile' id='modelfile'/>
158
- <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>
159
- </div>
160
- </div><div class='section'>
161
- <a id="savetestsetfile" href="" download=""></a>
162
- <a id="savesvgfile" href="" download=""></a>
163
- <button title='a testset includes various settings, subscriptions and a model' name="savetestsetfile">save testset</button>
164
- <button title='a testset includes various settings, subscriptions and a model' name="savesvgfile">save svg graph</button>
165
- </div><div class='section'>
166
- <div>
167
- Current model: <span id='currentmodel'></span>
168
- </div>
169
- <div>
170
- <button title='a testset includes various settings, subscriptions and a model' name="loadmodeltype">set model type</button>
149
+ <div>
150
+ <div class='section'>
151
+ <div>
152
+ <form id='fuckchrome'>
153
+ <input type='file' name='testsetfile' id='testsetfile'/>
154
+ </form>
155
+ <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>
156
+ </div>
157
+ <div>
158
+ <input type='file' name='modelfile' id='modelfile'/>
159
+ <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>
160
+ </div>
161
+ </div><div class='section'>
162
+ <a id="savetestsetfile" href="" download=""></a>
163
+ <a id="savesvgfile" href="" download=""></a>
164
+ <button title='a testset includes various settings, subscriptions and a model' name="savetestsetfile">save testset</button>
165
+ <button title='a testset includes various settings, subscriptions and a model' name="savesvgfile">save svg graph</button>
166
+ </div><div class='section' id='modifiers'>
167
+ <template id="item">
168
+ <div>
169
+ <div class='title'><strong></strong></div>
170
+ <div class='select'><select/></div>
171
+ <div class='additional'></div>
172
+ </div>
173
+ </template>
171
174
  </div>
172
175
  </div>
173
176
  </ui-area> <!--}}}-->
@@ -28,6 +28,8 @@ function global_init() {
28
28
  save['details'] = undefined;
29
29
  save['details_target'] = undefined;
30
30
  save['instance_pos'] = [];
31
+ save['modifiers'] = {};
32
+ save['modifiers_active'] = {};
31
33
  node_state = {};
32
34
  }
33
35
 
@@ -95,6 +97,7 @@ function cockpit() { //{{{
95
97
  $("input[name=votecontinue]").click(check_subscription);
96
98
  $("input[name=testsetfile]").change(load_testsetfile_after);
97
99
  $("input[name=modelfile]").change(load_modelfile_after);
100
+ $("#modifiers").on('change','div.select select',function(e){ modifiers_update(e); });
98
101
 
99
102
  $.ajax({
100
103
  url: $('body').attr('current-templates'),
@@ -276,7 +279,6 @@ function sse() { //{{{
276
279
  break;
277
280
  case 'attributes':
278
281
  monitor_instance_values("attributes");
279
- monitor_instance_transformation();
280
282
  if (!suspended_monitoring) { // or else it would load twice, because dsl changes also trigger
281
283
  if (save['graph_theme'] != data.content.values.theme) {
282
284
  monitor_graph_change(true);
@@ -313,7 +315,6 @@ function sse() { //{{{
313
315
  monitor_instance_values("dataelements");
314
316
  monitor_instance_values("endpoints");
315
317
  monitor_instance_values("attributes");
316
- monitor_instance_transformation();
317
318
  monitor_instance_dsl();
318
319
  monitor_instance_state();
319
320
  } //}}}
@@ -444,6 +445,11 @@ function monitor_instance_values(val) {// {{{
444
445
  });
445
446
  });
446
447
  } else if(val == "attributes") {
448
+ if ($('#modifiers > div').length == 0) {
449
+ modifiers_display().then(modifiers_select);
450
+ } else {
451
+ modifiers_select();
452
+ }
447
453
  var text = $(" > attributes > info",res).text() + " (" + url.replace(/\/$/,'').split(/[\\/]/).pop() + ")";
448
454
  $('#title').text(text);
449
455
  document.title = text;
@@ -632,19 +638,6 @@ function monitor_instance_state() {// {{{
632
638
  }
633
639
  });
634
640
  }// }}}
635
- function monitor_instance_transformation() {// {{{
636
- var url = $('body').attr('current-instance');
637
- $.ajax({
638
- type: "GET",
639
- url: url + "/properties/attributes/modeltype/",
640
- success: function(res){
641
- $("#currentmodel").text(res);
642
- },
643
- error: function() {
644
- $("#currentmodel").text('???');
645
- }
646
- });
647
- }// }}}
648
641
 
649
642
  function monitor_instance_pos() {// {{{
650
643
  var url = $('body').attr('current-instance');
@@ -1159,14 +1152,15 @@ async function load_testset_handlers(url,testset,vals) {// {{{
1159
1152
  if ($("*",han).length == 0) {
1160
1153
  $.ajax({
1161
1154
  type: "DELETE",
1162
- url: url + "/notifications/subscriptions/" + vals[suburl],
1155
+ url: url + "/notifications/subscriptions/" + vals[suburl] + '/'
1163
1156
  })
1157
+ delete vals[suburl];
1164
1158
  } else {
1165
1159
  let inp = load_testset_extract_handlers([],han,suburl);
1166
1160
  promises.push(
1167
1161
  $.ajax({
1168
1162
  type: "PUT",
1169
- url: url + "/notifications/subscriptions/" + vals[suburl],
1163
+ url: url + "/notifications/subscriptions/" + vals[suburl] + '/',
1170
1164
  data: inp.join('&')
1171
1165
  })
1172
1166
  )
@@ -1285,7 +1279,6 @@ function format_visual_vote_clear() {//{{{
1285
1279
 
1286
1280
  function format_instance_pos() { //{{{
1287
1281
  $(save['instance_pos']).each(function(){
1288
- console.log(this);
1289
1282
  var taskname = this.nodeName;
1290
1283
  var taskstate = this.textContent;
1291
1284
  format_visual_add(taskname,save['state'] == 'running' ? (taskstate == 'at' ? 'active' : 'passive') : 'passive');
@@ -1378,6 +1371,113 @@ function append_to_log(what,type,message) {//{{{
1378
1371
  }
1379
1372
  }//}}}
1380
1373
 
1374
+ async function modifiers_display() {
1375
+ let promises = [];
1376
+ let rep = $('body').attr('current-resources');
1377
+ $('#modifiers > div').remove();
1378
+
1379
+ promises.push(
1380
+ $.ajax({
1381
+ url: rep + 'modifiers/'
1382
+ }).then(async function(res) {
1383
+ let ipromises = [];
1384
+ $('resource',res).each(function(_,r) {
1385
+ ipromises.push(
1386
+ $.ajax({
1387
+ url: rep + 'modifiers/' + $(r).text()
1388
+ }).then(async function(ses){
1389
+ let clone = document.importNode(document.querySelector('#modifiers template').content,true);
1390
+ let t = $(r).text();
1391
+ $('> div',clone).attr('data-resource',t);
1392
+ $('div.title *',clone).text(decodeURIComponent(t));
1393
+
1394
+ let cpromises = [];
1395
+ $('resource',ses).each(function(_,s) {
1396
+ let opt = $('<option/>');
1397
+ opt.text(decodeURIComponent($(s).text()));
1398
+ $('div.select select',clone).append(opt);
1399
+
1400
+ cpromises.push(
1401
+ $.ajax({
1402
+ url: rep + 'modifiers/' + $(r).text() + '/' + $(s).text() + '/condition.json'
1403
+ }).then(function(tes){
1404
+ save['modifiers'][$(r).text() + '/' + $(s).text()] = tes;
1405
+ })
1406
+ );
1407
+
1408
+ });
1409
+ $(clone).insertBefore($('#modifiers template'));
1410
+
1411
+ await Promise.all(cpromises);
1412
+ })
1413
+ );
1414
+ });
1415
+ await Promise.all(ipromises);
1416
+ })
1417
+ );
1418
+ await Promise.all(promises);
1419
+ }
1420
+
1421
+ function modifiers_select(e) {
1422
+ let atts = {}
1423
+ let attr = save['attributes'].save();
1424
+ $('> attributes > *',attr).each(function(_,s){
1425
+ atts[s.nodeName] = $(s).text();
1426
+ });
1427
+ $('#modifiers div[data-resource]').each(function(_,r){
1428
+ $('select option',r).each(function(_,s){
1429
+ let where = $(r).attr('data-resource') + '/' + encodeURIComponent($(s).text());
1430
+ let cond = save['modifiers'][where];
1431
+ let success = true;
1432
+ for (x in cond) {
1433
+ if (cond[x] != atts[x]) { success = false; }
1434
+ }
1435
+ if (success) {
1436
+ save['modifiers_active'][$(r).attr('data-resource')] = $(s).text();
1437
+ $('select',r).val($(s).text());
1438
+ }
1439
+ });
1440
+ });
1441
+ }
1442
+
1443
+ function modifiers_update_patch(url,now) {
1444
+ $.ajax({
1445
+ url: url + '/' + now + '/patch.xml',
1446
+ success: function(res) {
1447
+ set_testset(res,false);
1448
+ }
1449
+ });
1450
+ }
1451
+ function modifiers_update_unpatch(url,last,now) {
1452
+ $.ajax({
1453
+ url: url + '/' + last + '/unpatch.xml',
1454
+ success: function(res) {
1455
+ set_testset(res,false).then(function() {
1456
+ modifiers_update_patch(url,now);
1457
+ });
1458
+ },
1459
+ error: function() {
1460
+ modifiers_update_patch(url,now);
1461
+ }
1462
+ });
1463
+ }
1464
+
1465
+ function modifiers_update(e) {
1466
+ // when change path
1467
+ // unpach from what changed
1468
+ // show ui
1469
+ let rep = $('body').attr('current-resources');
1470
+ let top = $(e.target).parents('div[data-resource]').attr('data-resource');
1471
+ let last = save['modifiers_active'][top];
1472
+ let now = $(e.target).val();
1473
+
1474
+ if (last) {
1475
+ modifiers_update_unpatch(rep + 'modifiers/' + top,last,now);
1476
+ } else {
1477
+ modifiers_update_patch(rep + 'modifiers/' + top,now);
1478
+ }
1479
+ }
1480
+
1381
1481
  function report_failure(){}
1382
1482
 
1383
1483
  function ui_pos(e,bl) {
data/cockpit/model.html CHANGED
@@ -151,14 +151,6 @@
151
151
  <button title='a testset includes various settings, subscriptions and a model' name="savesvgfile">save SVG</button>
152
152
  </div>
153
153
  </div>
154
- <div class='section'>
155
- <div>
156
- Current model: <span id='currentmodel'></span>
157
- </div>
158
- <div>
159
- <button title='a testset includes various settings, subscriptions and a model' name="loadmodeltype">set model type</button>
160
- </div>
161
- </div>
162
154
  </ui-area> <!--}}}-->
163
155
  <ui-area data-belongs-to-tab="dataelements" id="areadataelements" class="inactive"> <!--{{{-->
164
156
  <button title='add entry'><span>New</span></button>
data/cpee.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "cpee"
3
- s.version = "2.1.5"
3
+ s.version = "2.1.6"
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.license = "LGPL-3.0"
6
6
  s.summary = "Preliminary release of cloud process execution engine (cpee.org). If you just need workflow execution, without a rest service exposing it, then use WEEL."
@@ -1 +1 @@
1
- 431893
1
+ 742413
@@ -1 +1 @@
1
- 431878
1
+ 742401
@@ -1 +1 @@
1
- 431885
1
+ 742405
@@ -1 +1 @@
1
- 431889
1
+ 742409
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cpee
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.5
4
+ version: 2.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juergen eTM Mangler
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: tools
12
12
  cert_chain: []
13
- date: 2021-06-14 00:00:00.000000000 Z
13
+ date: 2021-06-17 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: riddl