cpee 2.0.20 → 2.0.25

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 (102) hide show
  1. checksums.yaml +4 -4
  2. data/cockpit/CPEE.xml +8 -0
  3. data/cockpit/Signavio.xml +8 -0
  4. data/cockpit/css/model.css +2 -0
  5. data/cockpit/css/replay.css +55 -0
  6. data/cockpit/css/ui.css +3 -1
  7. data/cockpit/edit.html +260 -0
  8. data/cockpit/index.html +2 -2
  9. data/cockpit/js/edit.js +32 -0
  10. data/cockpit/js/instance.js +34 -36
  11. data/cockpit/js/model.js +0 -25
  12. data/cockpit/js/parameters.js +3 -0
  13. data/cockpit/js/replay.js +40 -0
  14. data/cockpit/js/ui.js +7 -0
  15. data/cockpit/model.html +4 -1
  16. data/cockpit/replay.html +52 -0
  17. data/cockpit/templates/instantiate.local/Take_Sub.xml +1 -1
  18. data/cockpit/themes/compact/rngs/call.rng +93 -41
  19. data/cockpit/themes/compact/rngs/callmanipulate.rng +113 -40
  20. data/cockpit/themes/compact/theme.js +57 -25
  21. data/cockpit/themes/{diana → control}/rngs/alternative.rng +0 -0
  22. data/cockpit/themes/control/rngs/call.rng +174 -0
  23. data/cockpit/themes/control/rngs/callmanipulate.rng +218 -0
  24. data/cockpit/themes/{diana → control}/rngs/choose.rng +0 -0
  25. data/cockpit/themes/{diana → control}/rngs/closed_loop.rng +0 -0
  26. data/cockpit/themes/{diana → control}/rngs/closed_loop_cancel.rng +0 -0
  27. data/cockpit/themes/{diana → control}/rngs/closed_loop_control.rng +0 -0
  28. data/cockpit/themes/{diana → control}/rngs/closed_loop_measuring.rng +0 -0
  29. data/cockpit/themes/{diana → control}/rngs/critical.rng +0 -0
  30. data/cockpit/themes/{diana → control}/rngs/escape.rng +0 -0
  31. data/cockpit/themes/{diana → control}/rngs/group.rng +0 -0
  32. data/cockpit/themes/{diana → control}/rngs/loop.rng +0 -0
  33. data/cockpit/themes/{diana → control}/rngs/manipulate.rng +0 -0
  34. data/cockpit/themes/{diana → control}/rngs/otherwise.rng +0 -0
  35. data/cockpit/themes/{diana → control}/rngs/parallel.rng +0 -0
  36. data/cockpit/themes/{diana → control}/rngs/parallel_branch.rng +0 -0
  37. data/cockpit/themes/{diana → control}/rngs/scripts.rng +0 -0
  38. data/cockpit/themes/{diana → control}/rngs/stop.rng +0 -0
  39. data/cockpit/themes/{diana → control}/rngs/terminate.rng +0 -0
  40. data/cockpit/themes/{diana → control}/symbols/alternative.svg +0 -0
  41. data/cockpit/themes/{diana → control}/symbols/arrow.svg +0 -0
  42. data/cockpit/themes/{diana → control}/symbols/call.svg +0 -0
  43. data/cockpit/themes/{diana → control}/symbols/callmanipulate.svg +0 -0
  44. data/cockpit/themes/{diana → control}/symbols/choose.svg +0 -0
  45. data/cockpit/themes/{diana → control}/symbols/choose_exclusive.svg +0 -0
  46. data/cockpit/themes/{diana → control}/symbols/choose_inclusive.svg +0 -0
  47. data/cockpit/themes/{diana → control}/symbols/closed_loop.svg +0 -0
  48. data/cockpit/themes/{diana → control}/symbols/closed_loop_cancel.svg +0 -0
  49. data/cockpit/themes/{diana → control}/symbols/closed_loop_control.svg +0 -0
  50. data/cockpit/themes/{diana → control}/symbols/closed_loop_measuring.svg +0 -0
  51. data/cockpit/themes/{diana → control}/symbols/complex.svg +0 -0
  52. data/cockpit/themes/{diana → control}/symbols/critical.svg +0 -0
  53. data/cockpit/themes/{diana → control}/symbols/end.svg +0 -0
  54. data/cockpit/themes/{diana → control}/symbols/escape.svg +0 -0
  55. data/cockpit/themes/{diana → control}/symbols/event_end.svg +0 -0
  56. data/cockpit/themes/{diana → control}/symbols/loop.svg +0 -0
  57. data/cockpit/themes/{diana → control}/symbols/manipulate.svg +0 -0
  58. data/cockpit/themes/{diana → control}/symbols/otherwise.svg +0 -0
  59. data/cockpit/themes/{diana → control}/symbols/parallel.svg +0 -0
  60. data/cockpit/themes/{diana → control}/symbols/parallel_branch.svg +0 -0
  61. data/cockpit/themes/{diana → control}/symbols/parallel_branch_compact.svg +0 -0
  62. data/cockpit/themes/{diana → control}/symbols/parallel_branch_event.svg +0 -0
  63. data/cockpit/themes/{diana → control}/symbols/parallel_branch_normal.svg +0 -0
  64. data/cockpit/themes/{diana → control}/symbols/scripts.svg +0 -0
  65. data/cockpit/themes/{diana → control}/symbols/start.svg +0 -0
  66. data/cockpit/themes/{diana → control}/symbols/stop.svg +0 -0
  67. data/cockpit/themes/{diana → control}/symbols/terminate.svg +0 -0
  68. data/cockpit/themes/{diana → control}/theme.js +74 -28
  69. data/cockpit/themes/default/rngs/call.rng +93 -41
  70. data/cockpit/themes/default/rngs/callmanipulate.rng +113 -40
  71. data/cockpit/themes/default/theme.js +1318 -0
  72. data/cockpit/themes/extended/rngs/call.rng +93 -41
  73. data/cockpit/themes/extended/rngs/callmanipulate.rng +113 -40
  74. data/cockpit/themes/extended/theme.js +50 -19
  75. data/cockpit/themes/model/rngs/call.rng +21 -20
  76. data/cockpit/themes/model/rngs/callmanipulate.rng +23 -22
  77. data/cockpit/themes/model/theme.js +51 -20
  78. data/cockpit/themes/packed/rngs/call.rng +93 -41
  79. data/cockpit/themes/packed/rngs/callmanipulate.rng +113 -40
  80. data/cockpit/themes/packed/theme.js +50 -19
  81. data/cockpit/themes/preset/rngs/call.rng +93 -41
  82. data/cockpit/themes/preset/rngs/callmanipulate.rng +113 -40
  83. data/cockpit/themes/preset/theme.js +49 -18
  84. data/cockpit/track.html +0 -7
  85. data/cockpit/transformations.xml +4 -0
  86. data/cpee.gemspec +2 -2
  87. data/lib/callbacks.xml +5 -0
  88. data/lib/cpee/controller.rb +29 -27
  89. data/lib/cpee/implementation_callbacks.rb +53 -0
  90. data/server/handlerwrappers/default.rb +17 -5
  91. data/server/resources/notifications/logging/subscription.xml +6 -0
  92. data/server/resources/transformation_dslx.xsl +1 -1
  93. data/server/routing/end.pid +1 -0
  94. data/server/routing/forward-events.pid +1 -0
  95. data/server/routing/forward-votes.pid +1 -0
  96. data/server/routing/persist.pid +1 -0
  97. data/server/routing/persist.rb +3 -3
  98. data/server/server.pid +1 -0
  99. metadata +63 -50
  100. data/cockpit/edit.html +0 -1
  101. data/cockpit/themes/diana/rngs/call.rng +0 -122
  102. data/cockpit/themes/diana/rngs/callmanipulate.rng +0 -145
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4c2b0fc3e70d0f49877aea179e123e807cadfa5af37040267519e5a0ff1ec1e4
4
- data.tar.gz: 82f1906f306514d813d0a0f91945dd641152aaec603035eaeecec6955e46f343
3
+ metadata.gz: a3830f81020d6eb6b83ac9eba995f7175607f8aee0279b1537e0f5415f3dab21
4
+ data.tar.gz: a3e1ce78c221dae79d973435cc6997c3dc5e8d00ce8e5cd89634b2648b75012d
5
5
  SHA512:
6
- metadata.gz: fcffe281651210b16ef430eecdad77f92e0ac4406672bd555c8fb08e206e218eb496473cb1e1046eb0c643bceaf7cc6172b82a3fa65413f95eaab7ef5218f69e
7
- data.tar.gz: 7b0aa6519e115d11727427446bcacdb2a6dab4400a62eb323527ce89f4310cdde342ef23f30ec95601c92bfccd22284cb20b34ee3916d07e96fdf85c5908f387
6
+ metadata.gz: 56cb04c53af5f2f7eee0c0dcbb83d339a75985e32d7584294f33f5ec755b0d4db9bd4100e0e9c692d921f7bdfe5f60be0a167f7416484ddb6f67d250bb67a013
7
+ data.tar.gz: de22ffe114afc38010c7650c75e28b067ecec6fec52df16f96f08928a1038634e175636e0cc177d4ecd88ab4de1cc1a99e53a670578041a7f6515ca718c46c7e
data/cockpit/CPEE.xml ADDED
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0"?>
2
+ <testset xmlns="http://cpee.org/ns/properties/2.0">
3
+ <transformation>
4
+ <description type='copy'/>
5
+ <dataelements type='none'/>
6
+ <endpoints type='none'/>
7
+ </transformation>
8
+ </testset>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0"?>
2
+ <testset xmlns="http://cpee.org/ns/properties/2.0">
3
+ <transformation>
4
+ <description type='rest'>http://localhost:9295/bpmn2/</description>
5
+ <dataelements type='rest'>http://localhost:9295/bpmn2/</dataelements>
6
+ <endpoints type='rest'>http://localhost:9295/bpmn2/</endpoints>
7
+ </transformation>
8
+ </testset>
@@ -22,3 +22,5 @@
22
22
 
23
23
  #areamodel div.section:nth-child(4) div { white-space: normal; vertical-align: middle; margin: 0; padding: 0; }
24
24
  #areamodel div.section:nth-child(4) button[name=loadmodeltype] { white-space: normal; width: 10em; height: 2em; }
25
+
26
+ #model ui-content { height: 5em; }
@@ -0,0 +1,55 @@
1
+ body {
2
+ -webkit-user-select: none;
3
+ -moz-user-select: -moz-none;
4
+ -ms-user-select: none;
5
+ user-select: none;
6
+ font-family: sans-serif;
7
+ font-size: 1em;
8
+ padding: 0;
9
+ margin: 0;
10
+ }
11
+
12
+ #replayer {
13
+ display: flex;
14
+ flex-direction: column;
15
+ flex-wrap: nowrap;
16
+ align-items: stretch;
17
+ height: 100vh;
18
+ }
19
+
20
+ #replay {
21
+ width: 100%;
22
+ display: flex;
23
+ flex-direction: row;
24
+ flex-wrap: nowrap;
25
+ align-items: stretch;
26
+ padding: 1em 0;
27
+ flex: 0 0 auto;
28
+ }
29
+
30
+ #replay span {
31
+ flex: 0 0 auto;
32
+ margin-left: 1em;
33
+ align-self: center;
34
+ }
35
+ #replay input {
36
+ margin: 0em 1em;
37
+ flex: 1 1 auto;
38
+ }
39
+ #replay button {
40
+ margin-right: 1em;
41
+ flex: 0 0 auto;
42
+ }
43
+
44
+ #content {
45
+ width: 100%;
46
+ align-self: center;
47
+ flex: 1 1 auto;
48
+ }
49
+
50
+ iframe {
51
+ border: 0 none;
52
+ padding: 0;
53
+ margin: 0;
54
+ overflow: scroll;
55
+ }
data/cockpit/css/ui.css CHANGED
@@ -121,10 +121,12 @@ ui-tabbed ui-tabbar ui-behind button {
121
121
  #areainstance div.section:nth-child(2) { border-left: 1px solid var(--x-ui-border-color); padding: 0 0.5em; white-space: nowrap; }
122
122
  #areainstance div.section:nth-child(3) { border-left: 1px solid var(--x-ui-border-color); padding: 0 0 0 0.5em; white-space: nowrap; }
123
123
 
124
+ #areainstance div.section:nth-child(1) > div:nth-child(2) { white-space: normal; text-align: right; }
125
+
124
126
  #areainstance div.section:nth-child(1) div { white-space: normal; vertical-align: middle; margin: 0; padding: 0; }
125
127
  #areainstance div.section:nth-child(1) button { white-space: normal; vertical-align: middle; margin: 0; padding: 0; }
126
- #areainstance div.section:nth-child(1) div:nth-child(2) { white-space: normal; text-align: right; }
127
128
  #areainstance div.section:nth-child(1) button[name=loadtestset] { white-space: normal; width: 10em; height: 3.5em; }
129
+ #areainstance div.section:nth-child(1) button[name=save] { white-space: normal; width: 10em; height: 3.5em; margin-left: 0.2em; }
128
130
  #areainstance div.section:nth-child(1) button[name=loadtestsetfile] { white-space: normal; width: 10em; height: 3.5em; margin-left: 0.2em; }
129
131
  #areainstance div.section:nth-child(1) button[name=loadmodelfile] { white-space: normal; width: 10em; height: 2em; margin-top: 0.2em; }
130
132
 
data/cockpit/edit.html ADDED
@@ -0,0 +1,260 @@
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 http-equiv="Content-Type" content="text/html; charset=utf-8"/>
21
+ <title>CPEE Cockpit</title>
22
+
23
+ <!-- libs, do not modify. When local than load local libs. -->
24
+ <script type="text/javascript" src="/js_libs/jquery.min.js"></script>
25
+ <script type="text/javascript" src="/js_libs/jquery.browser.js"></script>
26
+ <script type="text/javascript" src="/js_libs/jquery.svg.min.js"></script>
27
+ <script type="text/javascript" src="/js_libs/jquery.svgdom.min.js"></script>
28
+ <script type="text/javascript" src="/js_libs/vkbeautify.js"></script>
29
+ <script type="text/javascript" src="/js_libs/util.js"></script>
30
+ <script type="text/javascript" src="/js_libs/printf.js"></script>
31
+ <script type="text/javascript" src="/js_libs/strftime.min.js"></script>
32
+ <script type="text/javascript" src="/js_libs/parsequery.js"></script>
33
+ <script type="text/javascript" src="/js_libs/underscore.min.js"></script>
34
+ <script type="text/javascript" src="/js_libs/jquery.caret.min.js"></script>
35
+ <script type="text/javascript" src="/js_libs/jquery.cookie.js"></script>
36
+
37
+ <script type="text/javascript" src="/js_libs/relaxngui.js"></script>
38
+
39
+ <script type="text/javascript" src="/js_libs/ui.js"></script>
40
+ <script type="text/javascript" src="/js_libs/custommenu.js"></script>
41
+
42
+ <link rel="stylesheet" href="/js_libs/custommenu.css" type="text/css"/>
43
+ <link rel="stylesheet" href="/js_libs/ui.css" type="text/css"/>
44
+
45
+ <link rel="stylesheet" href="/js_libs/relaxngui.css" type="text/css"/>
46
+
47
+ <!-- modelling ui -->
48
+ <script type="text/javascript" src="js/wfadaptor.js"></script>
49
+ <link rel="stylesheet" href="css/wfadaptor.css" type="text/css"/>
50
+
51
+ <!-- custom stuff, play arround -->
52
+ <script type="text/javascript" src="js/ui.js"></script>
53
+ <script type="text/javascript" src="js/instance.js"></script>
54
+ <script type="text/javascript" src="js/details.js"></script>
55
+ <script type="text/javascript" src="js/parameters.js"></script>
56
+ <script type="text/javascript" src="js/edit.js"></script>
57
+ <link rel="stylesheet" href="css/ui.css" type="text/css"/>
58
+ <link rel="stylesheet" href="/global_ui/uicpee.css" type="text/css"/>
59
+ <style>
60
+ /* has to be fucking inline, because firefox and chrome disagree how to handle filter urls */
61
+ /* shit balls, no elegance is left in this world */
62
+ </style>
63
+ </head>
64
+ <body data-base-port="8298" data-res-port="9303" data-theme-base="themes" is="x-ui">
65
+ <div id='disclaimer' class='hidden'> <!--{{{-->
66
+ <h1>Disclaimer</h1>
67
+
68
+ <p>
69
+ We use reasonable care in creating and presenting the functionality
70
+ found in this demonstrator. It is provided purely for demonstration purposes
71
+ and you should seek further guidance and make independent enquiries
72
+ before relying upon it.
73
+ </p>
74
+
75
+ <p>
76
+ All functionality included in this demonstrator is subject to change
77
+ without notice. We make no representation or warranty whatsoever
78
+ regarding the completeness, accuracy, adequacy, suitability or
79
+ operation of this demonstrator, or of the results it produces.
80
+ </p>
81
+
82
+ <p>
83
+ We assume no responsibility for process instances created with this
84
+ demonstrator and disclaim all liability arising from negligence or
85
+ otherwise in respect of such process instances. We will not be liable
86
+ for any damages (including, without limitation, damages for any
87
+ consequential loss or loss of business opportunities or projects, or
88
+ loss of profits) howsoever arising from use of or inability to use
89
+ this demonstrator, or from any action or omission taken as a result of
90
+ using this demonstrator.
91
+ </p>
92
+
93
+ <p>
94
+ This demonstrator was created in Austria. All liability is excluded to the extent
95
+ permitted by law including any implied terms. Any interpretation of its
96
+ content, claims or disputes (of whatever nature and not limited to contractual
97
+ issues) shall be subject to the exclusive jurisdiction of the Austrian Courts
98
+ under Austrian law.
99
+ </p>
100
+
101
+
102
+ <p>
103
+ All actions performed while using this demonstrator will be logged, including
104
+ the IP address of the user.
105
+ </p>
106
+
107
+ <p>
108
+ <input id='iagree' type='checkbox'/><label for='iagree'><strong>OK, I Agree with this terms. I will be a happy person, and do no evil.</strong></label>
109
+ </p>
110
+ <p>
111
+ <button id='icontinue' disabled='disabled'>Continue</button>
112
+ </p>
113
+ </div> <!--}}}-->
114
+
115
+ <div class='hidden' id='relaxngworker'></div>
116
+
117
+ <div class='menu' id='templates'></div>
118
+ <div class='menu' id='modeltypes'></div>
119
+
120
+ <ui-tabbed id="instance">
121
+ <ui-tabbar>
122
+ <ui-tab class="switch" ></ui-tab>
123
+ <ui-tab class="" data-tab="new" id="tabnew" >New</ui-tab>
124
+ <ui-tab class="inactive hidden" data-tab="instance" id="tabinstance" >Instance</ui-tab>
125
+ <ui-tab class="inactive hidden" data-tab="execution" id="tabexecution">Execution</ui-tab>
126
+ <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>
127
+ <ui-last ><a class="logo" href=".."></a></ui-last>
128
+ </ui-tabbar>
129
+ <ui-content>
130
+ <ui-area data-belongs-to-tab="new" id="areanew"> <!--{{{-->
131
+ <table class='x-ui-layout'>
132
+ <tr>
133
+ <td>Resources:</td>
134
+ <td><input name="res-url" type="text" value=""/></td>
135
+ <td></td>
136
+ </tr>
137
+ <tr>
138
+ <td>Engine:</td>
139
+ <td><input name="base-url" type="text" value=""/></td>
140
+ <td><button name="base">create new instance</button></td>
141
+ </tr>
142
+ <tr>
143
+ <td>Instance:</td>
144
+ <td><input name="instance-url" type="text" value=""/></td>
145
+ <td><button name="instance">monitor instance</button></td>
146
+ </tr>
147
+ </table>
148
+ </ui-area> <!--}}}-->
149
+ <ui-area data-belongs-to-tab="instance" id="areainstance" class="inactive"> <!--{{{-->
150
+ <div class='section'>
151
+ <div>
152
+ <form id='fuckchrome'>
153
+ <input type='file' name='testsetfile' id='testsetfile'/>
154
+ </form>
155
+ <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>
156
+ <button title='a testset includes various settings, subscriptions or a model' name="loadtestsetfile">load testset</button>
157
+ </div>
158
+ <div>
159
+ <input type='file' name='modelfile' id='modelfile'/>
160
+ <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>
161
+ </div>
162
+ </div><div class='section'>
163
+ <a id="savetestsetfile" href="" download=""></a>
164
+ <a id="savesvgfile" href="" download=""></a>
165
+ <button title='a testset includes various settings, subscriptions and a model' name="savetestsetfile">save testset</button>
166
+ <button title='a testset includes various settings, subscriptions and a model' name="savesvgfile">save svg graph</button>
167
+ </div><div class='section'>
168
+ <div>
169
+ Current model: <span id='currentmodel'></span>
170
+ </div>
171
+ <div>
172
+ <button title='a testset includes various settings, subscriptions and a model' name="loadmodeltype">set model type</button>
173
+ </div>
174
+ </div>
175
+ </ui-area> <!--}}}-->
176
+ <ui-area data-belongs-to-tab="execution" id="areaexecution" class='inactive'> <!--{{{-->
177
+ <table class='x-ui-compact'>
178
+ <tbody class='debug'>
179
+ <tr>
180
+ <td>Debugging:</td>
181
+ <td><input type="checkbox" name="votecontinue"/></td>
182
+ </tr>
183
+ </tbody>
184
+ <tbody class='exe'>
185
+ <tr>
186
+ <td>State:</td>
187
+ <td id='state'>
188
+ <span id="state_text"></span>
189
+ <span id="state_any" style='display:none'>
190
+ <span> ⇒ </span>
191
+ <button name="state_start" title='start' style='display:none'>Start</button>
192
+ <button name="state_stop" title='stop' style='display:none'>Stop</button>
193
+ <span id="state_extended" style='display:none'>
194
+ <span> / </span>
195
+ <button name="state_abandon" title='abandon' style='display:none'>Abandon</button>
196
+ </span>
197
+ </span>
198
+ </td>
199
+ </tr>
200
+ <tr>
201
+ <td>Continue:</td>
202
+ <td id='votes'></td>
203
+ </tr>
204
+ </tbody>
205
+ </table>
206
+ </ui-area> <!--}}}-->
207
+ </ui-content>
208
+ </ui-tabbed>
209
+
210
+ <ui-tabbed class="hidden" id='parameters'>
211
+ <ui-tabbar>
212
+ <ui-tab class="switch" ></ui-tab>
213
+ <ui-tab class="" data-tab="dataelements" id="tabdataelements">Data Elements</ui-tab>
214
+ <ui-tab class="inactive" data-tab="endpoints" id="tabendpoints" >Endpoints</ui-tab>
215
+ <ui-tab class="inactive" data-tab="attributes" id="tabattributes" >Attributes</ui-tab>
216
+ <ui-behind ><button title='add entry'>New</button></ui-behind>
217
+ </ui-tabbar>
218
+ <ui-content>
219
+ <ui-area data-belongs-to-tab="dataelements" id="areadataelements"> <!--{{{-->
220
+ <div id="dat_dataelements"></div>
221
+ </ui-area> <!--}}}-->
222
+ <ui-area data-belongs-to-tab="endpoints" id="areaendpoints" class="inactive"> <!--{{{-->
223
+ <table id="dat_endpoints"></table>
224
+ </ui-area> <!--}}}-->
225
+ <ui-area data-belongs-to-tab="attributes" id="areaattributes" class="inactive"> <!--{{{-->
226
+ <table id="dat_attributes"></table>
227
+ </ui-area> <!--}}}-->
228
+ </ui-content>
229
+ </ui-tabbed>
230
+
231
+ <ui-resizehandle class="hidden">drag to resize</ui-resizehandle>
232
+
233
+ <ui-rest id="main" class="hidden">
234
+ <ui-tabbar>
235
+ <ui-before ></ui-before>
236
+ <ui-tab class="" data-tab="details" id="tabdetails">Graph</ui-tab>
237
+ <ui-tab class="inactive" data-tab="dsl" id="tabdsl" >Description</ui-tab>
238
+ <ui-tab class="inactive" data-tab="log" id="tablog" >Log</ui-tab>
239
+ <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>
240
+ </ui-tabbar>
241
+ <ui-content>
242
+ <ui-area data-belongs-to-tab="details" id='graphcolumn'>
243
+ <div id='graphgrid'>
244
+ <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>
245
+ </div>
246
+ </ui-area>
247
+ <ui-resizehandle data-belongs-to-tab="details" data-label="drag to resize"></ui-resizehandle>
248
+ <ui-area data-belongs-to-tab="details" id="detailcolumn">
249
+ <div id="dat_details" class='x-ui-layout'></div>
250
+ </ui-area>
251
+ <ui-area data-belongs-to-tab="dsl" id="areadsl" class="inactive"></ui-area>
252
+ <ui-area data-belongs-to-tab="log" id="arealog" class="inactive"> <!--{{{-->
253
+ <div>Persistent Log: <a style='display:none' target='_blank' id='current-log'></a></div>
254
+ <table id="dat_log" class="x-ui-layout"></table>
255
+ </ui-area> <!--}}}-->
256
+ </ui-content>
257
+ </ui-rest>
258
+
259
+ </body>
260
+ </html>
data/cockpit/index.html CHANGED
@@ -54,6 +54,7 @@
54
54
  <script type="text/javascript" src="js/details.js"></script>
55
55
  <script type="text/javascript" src="js/parameters.js"></script>
56
56
  <link rel="stylesheet" href="css/ui.css" type="text/css"/>
57
+ <link rel="stylesheet" href="/global_ui/uicpee.css" type="text/css"/>
57
58
  <style>
58
59
  /* has to be fucking inline, because firefox and chrome disagree how to handle filter urls */
59
60
  /* shit balls, no elegance is left in this world */
@@ -122,6 +123,7 @@
122
123
  <ui-tab class="inactive hidden" data-tab="instance" id="tabinstance" >Instance</ui-tab>
123
124
  <ui-tab class="inactive hidden" data-tab="execution" id="tabexecution">Execution</ui-tab>
124
125
  <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>
126
+ <ui-last ><a class="logo" href=".."></a></ui-last>
125
127
  </ui-tabbar>
126
128
  <ui-content>
127
129
  <ui-area data-belongs-to-tab="new" id="areanew"> <!--{{{-->
@@ -187,8 +189,6 @@
187
189
  <button name="state_start" title='start' style='display:none'>Start</button>
188
190
  <button name="state_stop" title='stop' style='display:none'>Stop</button>
189
191
  <span id="state_extended" style='display:none'>
190
- <span> / </span>
191
- <button name="state_replay" title='replay' style='display:none'>Replay</button>
192
192
  <span> / </span>
193
193
  <button name="state_abandon" title='abandon' style='display:none'>Abandon</button>
194
194
  </span>
@@ -0,0 +1,32 @@
1
+ document.addEventListener('graph:changed', function (e) {
2
+ $("button[name=save]").prop("disabled",false);
3
+ }, false);
4
+ document.addEventListener('parameters:changed', function (e) {
5
+ $("button[name=save]").prop("disabled",false);
6
+ }, false);
7
+
8
+ $(document).ready(function() {
9
+ $("button[name=save]").click(function(){
10
+ var def = new $.Deferred();
11
+ def.done(function(name,testset) {
12
+ $.ajax({
13
+ url: $('body').attr('current-save') + ($('body').attr('current-save-dir') ? ($('body').attr('current-save-dir') + '/').replace(/\/+/,'/') : '') + name + '.xml',
14
+ type: 'PUT',
15
+ contentType: 'application/xml',
16
+ data: testset.serializePrettyXML(),
17
+ headers: { 'Content-ID': 'content' },
18
+ success: function() {
19
+ $("button[name=save]").prop("disabled",true);
20
+ $("#lastsavedline").removeClass('hidden');
21
+ var dt = new Date();
22
+ var time = dt.getHours() + ":" + dt.getMinutes() + ":" + dt.getSeconds();
23
+ $("#lastsaved").text(time);
24
+ },
25
+ error: function() {
26
+ alert('File was moved or deleted. Save testset to disk.');
27
+ }
28
+ });
29
+ });
30
+ get_testset(def);
31
+ });
32
+ });
@@ -91,19 +91,19 @@ function cockpit() { //{{{
91
91
  $("button[name=savesvgfile]").click(function(){ save_svgfile(); });
92
92
  $("button[name=state_start]").click(function(){ $(this).parent().find('button').attr("disabled","disabled");start_instance(); });
93
93
  $("button[name=state_stop]").click(function(){ $(this).parent().find('button').attr("disabled","disabled");stop_instance(); });
94
- $("button[name=state_replay]").click(function(){ $(this).parent().find('button').attr("disabled","disabled");replay_instance(); });
95
94
  $("button[name=state_abandon]").click(function(){ aba_instance(); });
96
95
  $("input[name=votecontinue]").click(check_subscription);
97
96
  $("input[name=testsetfile]").change(load_testsetfile_after);
98
97
  $("input[name=modelfile]").change(load_modelfile_after);
99
98
 
100
99
  $.ajax({
101
- url: $('body').attr('current-templates') + ".templates.xml",
102
- dataType: 'xml',
100
+ url: $('body').attr('current-templates'),
101
+ dataType: 'json',
103
102
  success: function(res){
104
- $('testset',res).each(function(){
105
- var ts = $(this).text();
106
- $('#templates').append($("<div class='menuitem'></div>").text(ts));
103
+ $(res).each(function(){
104
+ if (this.type == 'file') {
105
+ $('#templates').append($("<div class='menuitem'></div>").text(this.name.replace(/\.xml/,'')));
106
+ }
107
107
  });
108
108
  var q = $.parseQuerySimple();
109
109
  if (q.min || q.min == "") {
@@ -157,7 +157,7 @@ function cockpit() { //{{{
157
157
  }
158
158
  });
159
159
  $.ajax({
160
- url: $('body').attr('current-templates') + ".transformations.xml",
160
+ url: "transformations.xml",
161
161
  dataType: 'xml',
162
162
  success: function(res){
163
163
  $('transformation',res).each(function(){
@@ -631,7 +631,7 @@ function monitor_instance_transformation() {// {{{
631
631
  var url = $('body').attr('current-instance');
632
632
  $.ajax({
633
633
  type: "GET",
634
- url: url + "/properties/attributes/modeltype",
634
+ url: url + "/properties/attributes/modeltype/",
635
635
  success: function(res){
636
636
  $("#currentmodel").text(res);
637
637
  },
@@ -657,17 +657,21 @@ function monitor_instance_pos() {// {{{
657
657
  function monitor_instance_running(content,event) {// {{{
658
658
  if (save['state'] == "stopping") return;
659
659
  if (event == "calling") {
660
- save['activity_states'][content.activity_uuid] = true
661
- format_visual_add(content.activity,"active")
662
- }
663
- if (event == "manipulating") {
664
- if (!save['activity_states'][content.activity_uuid]) {
660
+ if (!save['activity_states'][content['activity-uuid']]) {
661
+ save['activity_states'][content['activity-uuid']] = true
665
662
  format_visual_add(content.activity,"active")
666
663
  }
667
- }
668
- if (event == "done") {
669
- delete save['activity_states'][content.activity_uuid];
670
- format_visual_remove(content.activity,"active")
664
+ } else if (event == "manipulating") {
665
+ if (!save['activity_states'][content['activity-uuid']]) {
666
+ save['activity_states'][content['activity-uuid']] = true
667
+ format_visual_add(content.activity,"active")
668
+ }
669
+ } else if (event == "done") {
670
+ if (save['activity_states'][content['activity-uuid']]) {
671
+ save['activity_states'][content['activity-uuid']] = true
672
+ format_visual_remove(content.activity,"active")
673
+ setTimeout(() => {delete save['activity_states'][content['activity-uuid']]},5000);
674
+ }
671
675
  }
672
676
  } // }}}
673
677
  function monitor_instance_state_change(notification) { //{{{
@@ -699,19 +703,16 @@ function monitor_instance_state_change(notification) { //{{{
699
703
  $('#state_extended').show();
700
704
  $("button[name=state_start]").show();
701
705
  $("button[name=state_stop]").hide();
702
- $("button[name=state_replay]").show();
703
706
  $("button[name=state_abandon]").show();
704
707
  } else if (notification == "running") {
705
708
  $('#state_extended').hide();
706
709
  $("button[name=state_start]").hide();
707
710
  $("button[name=state_stop]").show();
708
- $("button[name=state_replay]").hide();
709
711
  $("button[name=state_abandon]").hide();
710
712
  } else {
711
713
  $('#state_extended').hide();
712
714
  $("button[name=state_start]").hide();
713
715
  $("button[name=state_stop]").hide();
714
- $("button[name=state_replay]").hide();
715
716
  $("button[name=state_abandon]").hide();
716
717
  }
717
718
 
@@ -720,6 +721,8 @@ function monitor_instance_state_change(notification) { //{{{
720
721
  // remove all markings with state change
721
722
  if (save['graph_adaptor'] && save['graph_adaptor'].illustrator) {
722
723
  save['graph_adaptor'].illustrator.get_elements().removeClass('marked');
724
+ localStorage.removeItem('marked');
725
+ localStorage.removeItem('marked_from');
723
726
  }
724
727
 
725
728
  if (notification != "ready" && notification != "stopped" && notification != "running") {
@@ -774,26 +777,17 @@ function start_instance() {// {{{
774
777
  var url = $('body').attr('current-instance');
775
778
  $.ajax({
776
779
  type: "PUT",
777
- url: url + "/properties/state",
780
+ url: url + "/properties/state/",
778
781
  data: ({value: "running"}),
779
782
  error: report_failure
780
783
  });
781
784
  }// }}}
782
- function replay_instance() {// {{{
783
- var url = $('body').attr('current-instance');
784
- $.ajax({
785
- type: "PUT",
786
- url: url + "/properties/state",
787
- data: ({value: "replaying"}),
788
- error: report_failure
789
- });
790
- }// }}}
791
785
  function aba_instance() {// {{{
792
786
  monitor_instance_state_change('abandoned');
793
787
  var url = $('body').attr('current-instance');
794
788
  $.ajax({
795
789
  type: "PUT",
796
- url: url + "/properties/state",
790
+ url: url + "/properties/state/",
797
791
  data: ({value: "abandoned"}),
798
792
  error: report_failure
799
793
  });
@@ -802,7 +796,7 @@ function stop_instance() {// {{{
802
796
  var url = $('body').attr('current-instance');
803
797
  $.ajax({
804
798
  type: "PUT",
805
- url: url + "/properties/state",
799
+ url: url + "/properties/state/",
806
800
  data: ({value: "stopping"}),
807
801
  error: report_failure
808
802
  });
@@ -951,7 +945,7 @@ async function set_testset(testset,exec) {// {{{
951
945
  success: function(res){
952
946
  $.ajax({
953
947
  type: "PUT",
954
- url: url + "/properties/state",
948
+ url: url + "/properties/state/",
955
949
  data: ({value: res}),
956
950
  error: report_failure,
957
951
  success: function(res){
@@ -1015,7 +1009,11 @@ function load_testset(exec) {// {{{
1015
1009
  var name = $("#templates div.menuitem[data-selected=selected]").text();
1016
1010
  var url;
1017
1011
  if (name) {
1018
- url = $('body').attr('current-templates') + name + ".xml";
1012
+ if ($('body').attr('current-templates').match(/\?/)) {
1013
+ url = $('body').attr('current-templates').replace(/\?/,name + '.xml?');
1014
+ } else {
1015
+ url = $('body').attr('current-templates') + name + ".xml";
1016
+ }
1019
1017
  } else {
1020
1018
  if ($('body').attr('load-testset').length > 0) {
1021
1019
  url = $('body').attr('load-testset');
@@ -1049,11 +1047,11 @@ function load_modeltype() {// {{{
1049
1047
  $.ajax({
1050
1048
  cache: false,
1051
1049
  dataType: 'xml',
1052
- url: $('body').attr('current-templates') + "." + name + ".xml",
1050
+ url: name + ".xml",
1053
1051
  success: function(res){
1054
1052
  $.ajax({
1055
1053
  type: "PUT",
1056
- url: url + "/properties/attributes/modeltype",
1054
+ url: url + "/properties/attributes/modeltype/",
1057
1055
  data: ({value: name}),
1058
1056
  success: function(){
1059
1057
  set_testset(res,false);