cpee-model-management 1.0.15 → 1.0.16

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: ce614812f4658c4e62170443af46efcd32843661fefc6f65d22be139e16cb5e4
4
- data.tar.gz: 2e15d839338f8be623e9b536b067778d452e68a7b3e50359672099d7db382ef7
3
+ metadata.gz: eb4c3a55fe08f20e52d1908aa0285f9783d8413a470bd0b034829569d7d39620
4
+ data.tar.gz: f0eeae82d2bc796f2976375113f0bd8616cb59e9b4e95541f3175f9cbd6565d1
5
5
  SHA512:
6
- metadata.gz: 45fae847a02d31b3332ddb8394192eae4e107ec6cdbd4287f3b2408bdb46ab38e55ee27c558f7bbd04ada97db1cc74b82d3294343bb40f0b2a166a43aba47774
7
- data.tar.gz: 67b92d5bfe550a32aab89999ef5709b4928d277d7b4ef6ca75d6cf3f032a19b266aae72004580897c85088d2e4ad4017cf2bb931b8450424b797a20d115ee4af
6
+ metadata.gz: dce3271b164de9f31aa0aef4dde102501c448a93067f0259d787446facbc72a119e617f35c09a02778e20114a07acdb08a9b76493a297ac05130c7ad0b542786
7
+ data.tar.gz: 1eac23abe60a8d110ff7e2b154502b4756629576b7d6c2a225360160ab31288fcb4d9e4ba58eed489261fcd21334fac96d9b18aab355e8b60d5b2374cfea5d60
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "cpee-model-management"
3
- s.version = "1.0.15"
3
+ s.version = "1.0.16"
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.license = "LGPL-3.0"
6
6
  s.summary = "(Lifecycle) manage your process models in a directory or git repo."
@@ -191,7 +191,7 @@ module CPEE
191
191
  end.compact.uniq.sort_by{ |e| e[:name] } + Dir.glob(File.join(models,where,'*.xml')).map do |f|
192
192
  attrs = JSON::load File.open(f + '.attrs')
193
193
  fstage = attrs['design_stage'] rescue 'draft'
194
- { :type => :file, :name => File.basename(f), :creator => attrs['creator'], :author => attrs['author'], :guarded => attrs['resource_restriction'], :guarded_what => attrs['resource_id'], :stage => fstage, :date => File.mtime(f).xmlschema } if stage.include?(fstage)
194
+ { :type => :file, :name => File.basename(f), :creator => attrs['creator'], :author => attrs['author'], :guarded => attrs['guarded'], :guarded_id => attrs['guarded_id'], :stage => fstage, :date => File.mtime(f).xmlschema } if stage.include?(fstage)
195
195
  end.compact.uniq.sort_by{ |e| e[:name] }
196
196
 
197
197
  Riddl::Parameter::Complex.new('list','application/json',JSON::pretty_generate(names))
@@ -210,7 +210,7 @@ module CPEE
210
210
  end.compact.uniq.sort_by{ |e| e[:name] } + Dir.glob(File.join(models,'*.xml')).map do |f|
211
211
  attrs = JSON::load File.open(f + '.attrs')
212
212
  fstage = attrs['design_stage'] rescue 'draft'
213
- { :type => :file, :name => File.basename(f), :creator => attrs['creator'], :author => attrs['author'], :guarded => attrs['resource_restriction'], :guarded_what => attrs['resource_id'], :stage => fstage, :date => File.mtime(f).xmlschema } if stage.include?(fstage)
213
+ { :type => :file, :name => File.basename(f), :creator => attrs['creator'], :author => attrs['author'], :guarded => attrs['guarded'], :guarded_id => attrs['guarded_id'], :stage => fstage, :date => File.mtime(f).xmlschema } if stage.include?(fstage)
214
214
  end.compact.uniq.sort_by{ |e| e[:name] }
215
215
 
216
216
  Riddl::Parameter::Complex.new('list','application/json',JSON::pretty_generate(names))
@@ -372,7 +372,7 @@ module CPEE
372
372
  source = @p[1] ? File.join(models,where,@p[1].value) : (templates[stage] ? templates[stage] : 'testset.xml')
373
373
  fname = File.join(models,where,name + '.xml')
374
374
 
375
- attrs = JSON::load File.open(fname + '.attrs')
375
+ attrs = JSON::load File.open(fname + '.attrs') rescue {}
376
376
  stage = attrs['design_stage'] if stage.nil? && attrs['design_stage']
377
377
  stage = views[stage] if views && views[stage]
378
378
 
data/server/model.xml CHANGED
@@ -25,8 +25,8 @@
25
25
  <info>none</info>
26
26
  <creator>Juergen Mangler</creator>
27
27
  <author>Juergen Mangler</author>
28
- <resource_restriction>none</resource_restriction>
29
- <resource_id></resource_id>
28
+ <guarded>none</guarded>
29
+ <guarded_id></guarded_id>
30
30
  <model_uuid></model_uuid>
31
31
  <model_version></model_version>
32
32
  <modeltype>CPEE</modeltype>
data/server/testset.xml CHANGED
@@ -18,8 +18,8 @@
18
18
  <creator>Juergen Mangler</creator>
19
19
  <author>Juergen Mangler</author>
20
20
  <modeltype>CPEE</modeltype>
21
- <resource_restriction>none</resource_restriction>
22
- <resource_id></resource_id>
21
+ <guarded>none</guarded>
22
+ <guarded_id></guarded_id>
23
23
  <model_uuid></model_uuid>
24
24
  <model_version></model_version>
25
25
  <theme>extended</theme>
data/ui/design.js ADDED
@@ -0,0 +1,239 @@
1
+ var gstage;
2
+ var gdir;
3
+
4
+ function move_it(name,todir) {
5
+ $.ajax({
6
+ type: "PUT",
7
+ url: "server/" + gdir + name,
8
+ data: { dir: todir }
9
+ });
10
+ }
11
+ function shift_it(name,to) {
12
+ $.ajax({
13
+ type: "PUT",
14
+ url: "server/" + gdir + name,
15
+ data: { stage: to }
16
+ });
17
+ }
18
+ function rename_it(name) {
19
+ var newname;
20
+ if (newname = prompt('New name please!',name.replace(/\.xml$/,'').replace(/\.dir$/,''))) {
21
+ $.ajax({
22
+ type: "PUT",
23
+ url: "server/" + gdir + name,
24
+ data: { new: newname }
25
+ });
26
+ }
27
+ }
28
+ function duplicate_it(name) {
29
+ var newname;
30
+ if (newname = prompt('New name please!',name.replace(/\.xml$/,'').replace(/\.dir$/,''))) {
31
+ $.ajax({
32
+ type: "POST",
33
+ url: "server/" + gdir,
34
+ data: { new: newname, old: name }
35
+ });
36
+ }
37
+ }
38
+ function delete_it(name) {
39
+ if (confirm('Are you really, really, REALLY sure!')) {
40
+ $.ajax({
41
+ type: "DELETE",
42
+ url: "server/" + gdir + name
43
+ });
44
+ }
45
+ }
46
+
47
+ function es_init(gdir,gstage) {
48
+ var es = new EventSource('server/');
49
+ es.onopen = function() {
50
+ console.log('es open');
51
+ };
52
+ es.onmessage = function(e) {
53
+ paint(gdir,gstage);
54
+ };
55
+ es.onerror = function() {
56
+ console.log('es error');
57
+ // es_init();
58
+ };
59
+ }
60
+
61
+ function paint(gdir,gstage) {
62
+ $('#models tbody').empty();
63
+ if (gdir && gdir != '') {
64
+ var clone = document.importNode(document.querySelector('#up').content,true);
65
+ $('[data-class=name] a',clone).text('..');
66
+ $('[data-class=name] a',clone).attr('href',window.location.pathname + '?stage=' + gstage + '&dir=');
67
+ $('#models tbody').append(clone);
68
+ }
69
+ $.ajax({
70
+ type: "GET",
71
+ url: "server/" + gdir,
72
+ data: { stage: gstage },
73
+ success: function(res) {
74
+ $(res).each(function(k,data) {
75
+ if (data.type == 'dir') {
76
+ var clone = document.importNode(document.querySelector('#folder').content,true);
77
+ $('[data-class=name] a',clone).text(data['name'].replace(/\.dir$/,''));
78
+ $('[data-class=name]',clone).attr('data-full-name',data['name']);
79
+ $('[data-class=name] a',clone).attr('href',window.location.pathname + '?stage=' + gstage + '&dir=' + data['name']);
80
+ } else {
81
+ var clone = document.importNode(document.querySelector('#model').content,true);
82
+ $('[data-class=name] a',clone).text(data['name']);
83
+ $('[data-class=name]',clone).attr('data-full-name',data['name']);
84
+ $('[data-class=name] a',clone).attr('href','server/' + gdir + data['name'] + '/open?stage=' + gstage);
85
+ $('[data-class=force] a',clone).attr('href','server/' + gdir + data['name'] + '/open-new?stage=' + gstage);
86
+ $('[data-class=raw] a',clone).attr('href','server/' + gdir + data['name']);
87
+
88
+ $('[data-class=guarded] abbr',clone).attr('title',data['guarded'] || '');
89
+ $('[data-class=guarded] abbr',clone).text((data['guarded'] || '').match(/none/i) ? '' : (data['guarded'] || '').charAt(0).toUpperCase());
90
+ $('[data-class=resource]',clone).text(data['guarded_id'] || '');
91
+ }
92
+ $('[data-class=author]',clone).text(data['author']);
93
+ $('[data-class=date]',clone).text(new Date(data['date']).strftime('%Y-%m-%d, %H:%M:%S'));
94
+ $('#models tbody').append(clone);
95
+ });
96
+ }
97
+ });
98
+ }
99
+
100
+ function change_it(gdir,gstage) {
101
+ window.location.href = window.location.pathname + '?stage=' + gstage + '&dir=' + gdir;
102
+ }
103
+
104
+ $(document).ready(function() {
105
+ const queryString = window.location.search;
106
+ const urlParams = new URLSearchParams(queryString);
107
+
108
+ gstage = urlParams.get('stage') || 'draft';
109
+ gdir = urlParams.get('dir') ? (urlParams.get('dir') + '/').replace(/\/+/,'/') : '';
110
+
111
+ es_init(gdir,gstage);
112
+
113
+ var shifts = []
114
+ $.ajax({
115
+ type: "GET",
116
+ url: "server/",
117
+ data: { stages: 'stages' },
118
+ success: (r) => {
119
+ shifts = shifts.concat(r);
120
+ shifts = shifts.filter(item => item !== gstage);
121
+ }
122
+ });
123
+
124
+ $('input[name=stage]').val(gstage);
125
+ $('input[name=dir]').val(gdir);
126
+ $('ui-behind span').text(gstage);
127
+ $('ui-behind span').click((e) => {
128
+ if (shifts.length > 0) {
129
+ var menu = {};
130
+ menu['Change to'] = [];
131
+ shifts.forEach(ele => {
132
+ menu['Change to'].push(
133
+ {
134
+ 'label': ele,
135
+ 'function_call': change_it,
136
+ 'text_icon': '➔',
137
+ 'type': undefined,
138
+ 'class': 'capitalized',
139
+ 'params': [gdir,ele]
140
+ }
141
+ );
142
+ });
143
+ new CustomMenu(e).contextmenu(menu);
144
+ }
145
+ });
146
+
147
+ var dragged;
148
+ $('#models').on('drag','td[data-class=model]',false);
149
+ $('#models').on('dragstart','td[data-class=model]',(e) => {
150
+ dragged = $(e.currentTarget).parents('tr').find('td[data-class=name]').text();
151
+ });
152
+ $('#models').on('dragover','td[data-class=folder]',false);
153
+ $('#models').on('drop','td[data-class=folder]',(e) => {
154
+ e.preventDefault();
155
+ e.stopPropagation();
156
+ if (dragged) {
157
+ var todir = $(e.currentTarget).parents('tr').find('td[data-class=name]').text();
158
+ todir = todir.replace(/\./g,'');
159
+ if (todir != '') {
160
+ todir += '.dir';
161
+ }
162
+ move_it(dragged,todir);
163
+ dragged = undefined;
164
+ }
165
+ });
166
+ $('#models').on('click','td[data-class=ops]',(e) => {
167
+ var menu = {};
168
+ var name = $(e.currentTarget).parents('tr').find('td[data-class=name]').attr('data-full-name');
169
+ menu['Operations'] = [
170
+ {
171
+ 'label': 'Delete',
172
+ 'function_call': delete_it,
173
+ 'text_icon': '❌',
174
+ 'type': undefined,
175
+ 'params': [name]
176
+ },
177
+ {
178
+ 'label': 'Rename',
179
+ 'function_call': rename_it,
180
+ 'type': undefined,
181
+ 'text_icon': '📛',
182
+ 'params': [name]
183
+ }
184
+ ];
185
+ if (name.match(/\.xml$/)) {
186
+ menu['Operations'].unshift(
187
+ {
188
+ 'label': 'Duplicate',
189
+ 'function_call': duplicate_it,
190
+ 'text_icon': '➕',
191
+ 'type': undefined,
192
+ 'params': [name]
193
+ }
194
+ );
195
+ }
196
+ if (shifts.length > 0) {
197
+ menu['Shifting'] = [];
198
+ shifts.forEach(ele => {
199
+ menu['Shifting'].push(
200
+ {
201
+ 'label': 'Shift to ' + ele,
202
+ 'function_call': shift_it,
203
+ 'text_icon': '➔',
204
+ 'type': undefined,
205
+ 'params': [name,ele]
206
+ }
207
+ );
208
+ });
209
+ }
210
+ new CustomMenu(e).contextmenu(menu);
211
+ });
212
+
213
+ history.pushState({}, document.title, window.location.pathname + '?stage=' + gstage + '&dir=' + gdir);
214
+ paint(gdir,gstage);
215
+
216
+ $('#newmod').on('submit',(e) => {
217
+ $.ajax({
218
+ type: "POST",
219
+ url: "server/" + gdir,
220
+ data: { stage: gstage, new: $("#newmod input[name=new]").val() },
221
+ success: (r) => {
222
+ uidash_activate_tab($('ui-tab').first());
223
+ }
224
+ });
225
+ return false;
226
+ });
227
+
228
+ $('#newdir').on('submit',(e) => {
229
+ $.ajax({
230
+ type: "POST",
231
+ url: "server/",
232
+ data: { dir: $("#newdir input[name=newdir]").val() },
233
+ success: (r) => {
234
+ uidash_activate_tab($('ui-tab').first());
235
+ }
236
+ });
237
+ return false;
238
+ });
239
+ });
data/ui/js/design.js CHANGED
@@ -85,10 +85,9 @@ function paint(gdir,gstage) {
85
85
  $('[data-class=force] a',clone).attr('href','server/' + gdir + data['name'] + '/open-new?stage=' + gstage);
86
86
  $('[data-class=raw] a',clone).attr('href','server/' + gdir + data['name']);
87
87
 
88
- console.log(data);
89
- $('[data-class=guarded] abbr',clone).attr('title',data['guarded']);
90
- $('[data-class=guarded] abbr',clone).text(data['guarded'].match(/none/i) ? '' : data['guarded'].charAt(0).toUpperCase());
91
- $('[data-class=resource]',clone).text(data['guarded_what']);
88
+ $('[data-class=guarded] abbr',clone).attr('title',data['guarded'] || '');
89
+ $('[data-class=guarded] abbr',clone).text((data['guarded'] || '').match(/none/i) ? '' : (data['guarded'] || '').charAt(0).toUpperCase());
90
+ $('[data-class=resource]',clone).text(data['guarded_id'] || '');
92
91
  }
93
92
  $('[data-class=author]',clone).text(data['author']);
94
93
  $('[data-class=date]',clone).text(new Date(data['date']).strftime('%Y-%m-%d, %H:%M:%S'));
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cpee-model-management
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.15
4
+ version: 1.0.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juergen eTM Mangler
8
8
  autorequire:
9
9
  bindir: tools
10
10
  cert_chain: []
11
- date: 2021-06-22 00:00:00.000000000 Z
11
+ date: 2021-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: riddl
@@ -81,6 +81,7 @@ files:
81
81
  - server/testset.xml
82
82
  - tools/cpee-moma
83
83
  - ui/css/design.css
84
+ - ui/design.js
84
85
  - ui/index.html
85
86
  - ui/js/design.js
86
87
  homepage: http://cpee.org/