rbbt-rest 1.6.8 → 1.6.9
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 +4 -4
- data/lib/rbbt/rest/common/cache.rb +15 -9
- data/lib/rbbt/rest/common/misc.rb +18 -0
- data/lib/rbbt/rest/entity/rest.rb +1 -1
- data/lib/rbbt/rest/workflow.rb +5 -0
- data/share/views/compass/app.sass +40 -4
- data/share/views/layout.haml +1 -34
- data/share/views/layout/coda.haml +37 -5
- data/share/views/layout/header.haml +19 -10
- data/share/views/layout/top_menu.haml +6 -8
- data/share/views/public/js/app.js +1 -5
- data/share/views/public/js/rbbt.aesthetics.js +12 -4
- data/share/views/public/js/rbbt.basic.js +51 -0
- data/share/views/public/js/rbbt.entity.js +0 -2
- data/share/views/public/js/rbbt.entity_list.js +1 -1
- data/share/views/public/js/rbbt.favourites.js +85 -96
- data/share/views/public/js/rbbt.job.js +127 -0
- data/share/views/public/js/rbbt.js +1 -13
- data/share/views/public/js/rbbt.knowledge_base.js +3 -2
- data/share/views/public/js/rbbt.modal.js +56 -0
- data/share/views/public/js/rbbt.views.js +47 -0
- data/share/views/public/plugins/color-js/LICENSE +22 -0
- data/share/views/public/plugins/color-js/README.markdown +189 -0
- data/share/views/public/plugins/color-js/color.d.ts +108 -0
- data/share/views/public/plugins/color-js/color.js +840 -0
- data/share/views/public/plugins/color-js/test/color-test.js +325 -0
- metadata +11 -2
@@ -39,9 +39,9 @@ fav_module.toggleFavourite_entity = function(){
|
|
39
39
|
var entity = rbbt.page.entity();
|
40
40
|
|
41
41
|
if (fav_module.isFavourite_entity(entity)){
|
42
|
-
rbbt.post({url: '/remove_favourite_entity/' + entity.type + '/' + entity.code}).then(fav_module.update)
|
42
|
+
rbbt.post({url: '/remove_favourite_entity/' + entity.type + '/' + clean_element(entity.code)}).then(fav_module.update)
|
43
43
|
}else{
|
44
|
-
rbbt.post({url: '/add_favourite_entity/' + entity.type + '/' + entity.code, data: entity.info}).then(fav_module.update)
|
44
|
+
rbbt.post({url: '/add_favourite_entity/' + entity.type + '/' + clean_element(entity.code), data: entity.info}).then(fav_module.update)
|
45
45
|
}
|
46
46
|
}
|
47
47
|
|
@@ -49,9 +49,9 @@ fav_module.toggleFavourite_list = function(){
|
|
49
49
|
var list = rbbt.page.list();
|
50
50
|
|
51
51
|
if (fav_module.isFavourite_list(list)){
|
52
|
-
rbbt.post({url: '/remove_favourite_entity_list/' + list.type + '/' + list.id}).then(fav_module.update)
|
52
|
+
rbbt.post({url: '/remove_favourite_entity_list/' + list.type + '/' + clean_element(list.id)}).then(fav_module.update)
|
53
53
|
}else{
|
54
|
-
rbbt.post({url: '/add_favourite_entity_list/' + list.type + '/' + list.id}).then(fav_module.update)
|
54
|
+
rbbt.post({url: '/add_favourite_entity_list/' + list.type + '/' + clean_element(list.id)}).then(fav_module.update)
|
55
55
|
}
|
56
56
|
}
|
57
57
|
|
@@ -59,9 +59,9 @@ fav_module.toggleFavourite_map = function(){
|
|
59
59
|
var map = rbbt.page.map();
|
60
60
|
|
61
61
|
if (fav_module.isFavourite_map(map)){
|
62
|
-
rbbt.post({url: '/remove_favourite_entity_map/' + map.type + '/' + map.column + '/' + map.id}).then(fav_module.update)
|
62
|
+
rbbt.post({url: '/remove_favourite_entity_map/' + map.type + '/' + map.column + '/' + clean_element(map.id)}).then(fav_module.update)
|
63
63
|
}else{
|
64
|
-
rbbt.post({url: '/add_favourite_entity_map/' + map.type + '/' + map.column + '/' + map.id}).then(fav_module.update)
|
64
|
+
rbbt.post({url: '/add_favourite_entity_map/' + map.type + '/' + map.column + '/' + clean_element(map.id)}).then(fav_module.update)
|
65
65
|
}
|
66
66
|
}
|
67
67
|
|
@@ -97,119 +97,106 @@ fav_module.draw_favourite_menu = function(){
|
|
97
97
|
var favourites = fav_module.entities.types()
|
98
98
|
var types = Object.keys(favourites)
|
99
99
|
|
100
|
-
return
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
type,
|
111
|
-
m('.menu', entities.map(function(entity, index){ url = _type[entity].url(); return m('a.item', {href: url}, _type[entity].name) }))
|
112
|
-
]);
|
100
|
+
return rbbt.mview.dropdown('Entities',
|
101
|
+
[m('a.item',{onclick: fav_module.highlight}, 'highlight')].concat(types.map(function(type, index){
|
102
|
+
var _type = favourites[type]
|
103
|
+
var entities = Object.keys(_type)
|
104
|
+
|
105
|
+
return m('.ui.dropdown.item', [
|
106
|
+
m('i.icon.dropdown'),
|
107
|
+
type,
|
108
|
+
m('.menu', entities.map(function(entity, index){ url = _type[entity].url(); return m('a.item', {href: url}, _type[entity].name) }))
|
109
|
+
]);
|
113
110
|
})))
|
114
|
-
])
|
115
|
-
)
|
116
111
|
}
|
117
112
|
|
118
113
|
fav_module.draw_favourite_list_menu = function(){
|
119
114
|
var favourites = fav_module.lists.types()
|
120
115
|
var types = Object.keys(favourites)
|
121
116
|
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
])
|
142
|
-
)
|
117
|
+
var new_list_types = known_types.map(function(type,index){
|
118
|
+
return m('.item', {'data-type': type, onclick: m.withAttr('data-type', fav_module.new_list)}, type)
|
119
|
+
})
|
120
|
+
|
121
|
+
var new_lists = rbbt.mview.dropdown("New list", new_list_types)
|
122
|
+
|
123
|
+
var type_items = types.map(function(type, index){
|
124
|
+
var _type = favourites[type]
|
125
|
+
var lists = Object.keys(_type)
|
126
|
+
|
127
|
+
return rbbt.mview.dropdown(type, lists.map(function(list, index){
|
128
|
+
url = _type[list].url()
|
129
|
+
var link = m('a.item', {href: url, style: 'display: inline-block'}, _type[list].name)
|
130
|
+
return [m('span.bullet.green', {onclick: function(){_type[list].highlight('green'); return false}},''),link,m('br')]
|
131
|
+
}))
|
132
|
+
})
|
133
|
+
|
134
|
+
type_items.unshift(new_lists)
|
135
|
+
return rbbt.mview.dropdown('Lists', type_items)
|
143
136
|
}
|
144
137
|
|
145
138
|
fav_module.draw_favourite_map_menu = function(){
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
return link
|
165
|
-
}))
|
166
|
-
]);
|
167
|
-
}))
|
168
|
-
])
|
169
|
-
)
|
139
|
+
var favourites = fav_module.maps.types()
|
140
|
+
var types = Object.keys(favourites)
|
141
|
+
|
142
|
+
return rbbt.mview.dropdown('Maps',types.map(function(type, index){
|
143
|
+
var _type = favourites[type]
|
144
|
+
var maps = Object.keys(_type)
|
145
|
+
|
146
|
+
return m('.ui.dropdown.item', [
|
147
|
+
m('i.icon.dropdown'),
|
148
|
+
type,
|
149
|
+
m('.menu', maps.map(function(map, index){
|
150
|
+
url = _type[map].url()
|
151
|
+
var link = m('a.item', {href: url, _style: 'display: inline-block;width:100%'}, _type[map].name)
|
152
|
+
//return [link, m('span.bullet.green', {onclick: function(){_type[map].highlight('green'); return false}},''),m('br')]
|
153
|
+
return link
|
154
|
+
}))
|
155
|
+
]);
|
156
|
+
}))
|
170
157
|
}
|
171
158
|
|
172
159
|
fav_module.view = function(){
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
160
|
+
m.render($('#top_menu > .favourite')[0], [
|
161
|
+
m('.item.pointer', {onclick: fav_module.toggleFavourite}, fav_module.star_view()),
|
162
|
+
m('.item', {style: 'padding: 0px'}, fav_module.draw_favourite_menu()),
|
163
|
+
m('.item', {style: 'padding: 0px'}, fav_module.draw_favourite_list_menu()),
|
164
|
+
m('.item', {style: 'padding: 0px'}, fav_module.draw_favourite_map_menu())
|
165
|
+
])
|
179
166
|
}
|
180
167
|
|
181
168
|
//{{{ HOOKS
|
182
169
|
|
183
170
|
fav_module._update_list_select= function(select, type, lists){
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
var selected = null;
|
171
|
+
if (select.attr('attr-allow-empty') == 'true'){
|
172
|
+
var option = $('<option value="none" class="loaded">none</option>')
|
173
|
+
select.append(option);
|
174
|
+
}
|
190
175
|
|
191
|
-
|
192
|
-
selected = select.attr('attr-selected');
|
193
|
-
}
|
176
|
+
var selected = null;
|
194
177
|
|
195
|
-
|
196
|
-
|
197
|
-
var name = elems
|
198
|
-
if (selected == null || name != selected){
|
199
|
-
option = $('<option attr-entity_type="' + type + '" class="automatic_load" value="' + name.id + '">' + name.id + '</option>');
|
200
|
-
}else{
|
201
|
-
option = $('<option attr-entity_type="' + type + '" class="automatic_load" selected=selected value="' + name.id + '">' + name.id + '</option>');
|
178
|
+
if (select.attr('attr-selected') != undefined ){
|
179
|
+
selected = select.attr('attr-selected');
|
202
180
|
}
|
203
|
-
|
204
|
-
|
205
|
-
|
181
|
+
|
182
|
+
$.each(lists, function(name, elems){
|
183
|
+
var option = null;
|
184
|
+
var name = elems
|
185
|
+
if (selected == null || name != selected){
|
186
|
+
option = $('<option attr-entity_type="' + type + '" class="automatic_load" value="' + name.id + '">' + name.id + '</option>');
|
187
|
+
}else{
|
188
|
+
option = $('<option attr-entity_type="' + type + '" class="automatic_load" selected=selected value="' + name.id + '">' + name.id + '</option>');
|
189
|
+
}
|
190
|
+
select.append(option);
|
191
|
+
return true
|
192
|
+
})
|
206
193
|
},
|
207
194
|
|
208
195
|
fav_module.update_list_selects= function(){
|
209
|
-
|
196
|
+
$('select.favourite_lists').find('option.automatic_load').remove()
|
210
197
|
|
211
|
-
|
212
|
-
|
198
|
+
$.each(fav_module.lists.types(), function(type, lists){
|
199
|
+
$('select.favourite_lists[type=' + type + ']').each(function(){
|
213
200
|
var select = $(this);
|
214
201
|
fav_module._update_list_select(select, type, lists);
|
215
202
|
})
|
@@ -273,6 +260,10 @@ fav_module.highlight = function(){
|
|
273
260
|
rbbt.aesthetics.apply_aesthetic({selector: targets, aes: 'color', value: 'gold'})
|
274
261
|
}
|
275
262
|
|
263
|
+
fav_module.new_list = function(type){
|
264
|
+
rbbt.modal.controller.show_url('/entity_list/' + type + '/new/?_layout=false')
|
265
|
+
}
|
266
|
+
|
276
267
|
fav_module.hooks = function(){
|
277
268
|
fav_module.update_list_selects()
|
278
269
|
fav_module.update_map_selects()
|
@@ -281,5 +272,3 @@ fav_module.hooks = function(){
|
|
281
272
|
fav_module.update = function(){
|
282
273
|
fav_module.update_favourites().then(fav_module.view).then(function(){ $('.dropdown:not([tabindex])').dropdown()}).then(fav_module.hooks)
|
283
274
|
}
|
284
|
-
|
285
|
-
if (user != 'none') fav_module.update()
|
@@ -0,0 +1,127 @@
|
|
1
|
+
|
2
|
+
rbbt.Job = function(workflow, task, inputs){
|
3
|
+
this.workflow = workflow
|
4
|
+
this.task = task
|
5
|
+
this.inputs = inputs
|
6
|
+
|
7
|
+
this.jobname = m.prop()
|
8
|
+
this.jobURL = function(){ return '/' + workflow + '/' + task + '/' + this.jobname() }
|
9
|
+
this.result = m.prop()
|
10
|
+
this.info = m.prop()
|
11
|
+
|
12
|
+
this.issue = function(){
|
13
|
+
var deferred = m.deferred()
|
14
|
+
|
15
|
+
if (this.jobname() !== undefined){
|
16
|
+
deferred.resolve(this.jobname())
|
17
|
+
return deferred.promise
|
18
|
+
}
|
19
|
+
|
20
|
+
var url = '/' + workflow + '/' + task
|
21
|
+
|
22
|
+
var data = new FormData()
|
23
|
+
data.append("_format", 'jobname')
|
24
|
+
for (i in inputs){
|
25
|
+
data.append(i, inputs[i])
|
26
|
+
}
|
27
|
+
|
28
|
+
var params = {
|
29
|
+
url: url,
|
30
|
+
method: 'POST',
|
31
|
+
serialize: function(data) {return data},
|
32
|
+
data: data,
|
33
|
+
deserialize: function(value) {return value},
|
34
|
+
}
|
35
|
+
|
36
|
+
return rbbt.insist_request(params, deferred).then(this.jobname)
|
37
|
+
}.bind(this)
|
38
|
+
|
39
|
+
this.load = function(){
|
40
|
+
var deferred = m.deferred()
|
41
|
+
|
42
|
+
if (this.result() !== undefined){
|
43
|
+
deferred.resolve(this.result())
|
44
|
+
return deferred.promise
|
45
|
+
}
|
46
|
+
|
47
|
+
var url = add_parameter(this.jobURL(), '_format','raw')
|
48
|
+
|
49
|
+
var data = new FormData()
|
50
|
+
data.append("_format", 'raw')
|
51
|
+
|
52
|
+
|
53
|
+
var params = {
|
54
|
+
url: url,
|
55
|
+
method: 'GET',
|
56
|
+
serialize: function(data) {return data},
|
57
|
+
deserialize: function(value) {return value},
|
58
|
+
}
|
59
|
+
|
60
|
+
return rbbt.insist_request(params, deferred).then(this.result)
|
61
|
+
}.bind(this)
|
62
|
+
|
63
|
+
this.get_info = function(){
|
64
|
+
var deferred = m.deferred()
|
65
|
+
|
66
|
+
if (this.info() !== undefined && (this.info().status == 'done' || this.info().status == 'error' || this.info().status == 'aborted')){
|
67
|
+
deferred.resolve(this.info())
|
68
|
+
return deferred.promise
|
69
|
+
}
|
70
|
+
|
71
|
+
var url = add_parameter(this.jobURL() + '/info', '_format','json')
|
72
|
+
|
73
|
+
var params = {
|
74
|
+
url: url,
|
75
|
+
method: 'GET',
|
76
|
+
serialize: function(data) {return data},
|
77
|
+
//deserialize: function(value) {return value},
|
78
|
+
}
|
79
|
+
|
80
|
+
return rbbt.insist_request(params, deferred).then(this.info)
|
81
|
+
}.bind(this)
|
82
|
+
|
83
|
+
this.join = function(deferred, timeout){
|
84
|
+
if (undefined === deferred) deferred = m.deferred()
|
85
|
+
if (undefined === timeout) timeout = 1000
|
86
|
+
if (timeout > 5000) timeout = 5000
|
87
|
+
|
88
|
+
this.get_info().then(function(info){
|
89
|
+
var status = info.status
|
90
|
+
switch(status){
|
91
|
+
case "done":
|
92
|
+
case "error":
|
93
|
+
case "aborted":
|
94
|
+
deferred.resolve(info)
|
95
|
+
break;
|
96
|
+
default:
|
97
|
+
setTimeout(function(){this.join(deferred, timeout*1.5)}.bind(this), timeout)
|
98
|
+
}
|
99
|
+
}.bind(this))
|
100
|
+
|
101
|
+
return deferred.promise
|
102
|
+
}.bind(this)
|
103
|
+
|
104
|
+
this.run = function(){
|
105
|
+
var deferred = m.deferred()
|
106
|
+
|
107
|
+
this.issue().then(function(){
|
108
|
+
this.join().then(function(){ this.load().then(deferred.resolve, deferred.reject) }.bind(this))
|
109
|
+
}.bind(this))
|
110
|
+
|
111
|
+
return deferred.promise
|
112
|
+
}.bind(this)
|
113
|
+
|
114
|
+
this.success = function(callback){
|
115
|
+
return this.run()
|
116
|
+
}.bind(this)
|
117
|
+
|
118
|
+
this.error = function(callback){
|
119
|
+
return this.run().then(null, callback)
|
120
|
+
}.bind(this)
|
121
|
+
|
122
|
+
}
|
123
|
+
|
124
|
+
rbbt.job = function(workflow, task, inputs){
|
125
|
+
var job = new rbbt.Job(workflow, task, inputs)
|
126
|
+
return job.run()
|
127
|
+
}
|
@@ -1,3 +1,4 @@
|
|
1
|
+
var rbbt = {}
|
1
2
|
|
2
3
|
rbbt.post = function(params){
|
3
4
|
var req_params = {config: rbbt.post.asFormUrlEncoded, serialize: rbbt.post.serialize_data, method: 'POST'}
|
@@ -25,16 +26,3 @@ rbbt.log = function(obj){
|
|
25
26
|
console.log(obj)
|
26
27
|
}
|
27
28
|
|
28
|
-
rbbt.LS = {}
|
29
|
-
|
30
|
-
rbbt.LS.load = function(key){
|
31
|
-
var content = localStorage[key]
|
32
|
-
if (content === undefined)
|
33
|
-
return undefined
|
34
|
-
else
|
35
|
-
return JSON.parse(content)
|
36
|
-
}
|
37
|
-
|
38
|
-
rbbt.LS.store = function(key, value){
|
39
|
-
localStorage[key] = JSON.stringify(value)
|
40
|
-
}
|
@@ -1,8 +1,9 @@
|
|
1
|
-
|
2
1
|
var KB = rbbt.knowledge_base = {}
|
3
2
|
|
4
3
|
KB.children = function(database, entity){
|
5
|
-
var
|
4
|
+
var id = undefined
|
5
|
+
if (typeof entity == 'string'){ id = entity}else{id = entity.id}
|
6
|
+
var url = '/kb/user/' + database + '/children/' + id
|
6
7
|
url = add_parameter(url, '_format', 'json')
|
7
8
|
return m.request({url: url, method: "GET", type: Entity})
|
8
9
|
}
|
@@ -0,0 +1,56 @@
|
|
1
|
+
rbbt.modal = {}
|
2
|
+
rbbt.modal.element = document.getElementById('modal')
|
3
|
+
|
4
|
+
rbbt.modal.vm = (function(){
|
5
|
+
var vm = {}
|
6
|
+
vm.init = function(){
|
7
|
+
vm.visible = m.prop(false)
|
8
|
+
vm.content = m.prop("")
|
9
|
+
vm.title = m.prop("")
|
10
|
+
}
|
11
|
+
|
12
|
+
return vm
|
13
|
+
}())
|
14
|
+
|
15
|
+
rbbt.modal.controller = function(){
|
16
|
+
var controller = rbbt.modal.controller
|
17
|
+
var vm = rbbt.modal.vm
|
18
|
+
vm.init()
|
19
|
+
|
20
|
+
controller.show = function(content, title){
|
21
|
+
vm.content(content)
|
22
|
+
if (undefined !== title)
|
23
|
+
vm.title(title)
|
24
|
+
vm.visible(true)
|
25
|
+
$(rbbt.modal.element).addClass('active')
|
26
|
+
m.redraw()
|
27
|
+
}
|
28
|
+
|
29
|
+
controller.show_url = function(url, title){
|
30
|
+
if (typeof url == 'string') params = {url: url, method: 'GET',deserialize: function(v){return v}}
|
31
|
+
else params = url
|
32
|
+
return rbbt.insist_request(params).then(function(content){
|
33
|
+
controller.show(content, title)
|
34
|
+
})
|
35
|
+
}
|
36
|
+
|
37
|
+
controller.close = function(){
|
38
|
+
vm.visible(false)
|
39
|
+
$(rbbt.modal.element).removeClass('active')
|
40
|
+
m.redraw()
|
41
|
+
}
|
42
|
+
|
43
|
+
return
|
44
|
+
}
|
45
|
+
|
46
|
+
rbbt.modal.view = function(controller){
|
47
|
+
if (rbbt.modal.vm.visible()){
|
48
|
+
var header = [m.trust(rbbt.modal.vm.title()), rbbt.mview.ibutton({}, m('i.icon.close',{onclick: rbbt.modal.controller.close}))]
|
49
|
+
var modal_content = [m('.header', header), m('.content', m.trust(rbbt.modal.vm.content()))]
|
50
|
+
return modal_content
|
51
|
+
}else{
|
52
|
+
return ""
|
53
|
+
}
|
54
|
+
}
|
55
|
+
|
56
|
+
if (rbbt.modal.element) m.module(rbbt.modal.element, rbbt.modal)
|