cpee 2.0.20 → 2.0.25

Sign up to get free protection for your applications and to get access to all the features.
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);