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.
@@ -1,5 +1,3 @@
1
- rbbt.entity = {}
2
-
3
1
  var Entity = function(data){
4
2
  this.id = data.id
5
3
  this.code = data.code
@@ -9,7 +9,7 @@ var EntityList = function(data){
9
9
  }
10
10
 
11
11
  this.url = function(){
12
- var url = "/entity_list/" + this.full_type() + "/" + this.id
12
+ var url = "/entity_list/" + this.full_type() + "/" + clean_element(this.id)
13
13
  return url
14
14
  }
15
15
 
@@ -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 m('.ui.menu',
101
- m('.ui.dropdown.item', [
102
- m('i.icon.dropdown'),
103
- 'Entities',
104
- m('.menu', [m('a.item',{onclick: fav_module.highlight}, 'highlight')].concat(types.map(function(type, index){
105
- var _type = favourites[type]
106
- var entities = Object.keys(_type)
107
-
108
- return m('.ui.dropdown.item', [
109
- m('i.icon.dropdown'),
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
- return m('.ui.menu',
123
- m('.ui.dropdown.item', [
124
- m('i.icon.dropdown'),
125
- 'Lists',
126
- m('.menu', types.map(function(type, index){
127
- var _type = favourites[type]
128
- var lists = Object.keys(_type)
129
-
130
- return m('.ui.dropdown.item', [
131
- m('i.icon.dropdown'),
132
- type,
133
- m('.menu', lists.map(function(list, index){
134
- url = _type[list].url()
135
- var link = m('a.item', {href: url, style: 'display: inline-block; width: 100%'}, _type[list].name)
136
- //return [link, m('span.bullet.green', {onclick: function(){_type[list].highlight('green'); return false}},''),m('br')]
137
- return [link, m('span.bullet.green', {onclick: function(){_type[list].highlight('green'); return false}},''),m('br')]
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
- var favourites = fav_module.maps.types()
147
- var types = Object.keys(favourites)
148
-
149
- return m('.ui.menu',
150
- m('.ui.dropdown.item', [
151
- m('i.icon.dropdown'),
152
- 'Maps',
153
- m('.menu', types.map(function(type, index){
154
- var _type = favourites[type]
155
- var maps = Object.keys(_type)
156
-
157
- return m('.ui.dropdown.item', [
158
- m('i.icon.dropdown'),
159
- type,
160
- m('.menu', maps.map(function(map, index){
161
- url = _type[map].url()
162
- var link = m('a.item', {href: url, _style: 'display: inline-block;width:100%'}, _type[map].name)
163
- //return [link, m('span.bullet.green', {onclick: function(){_type[map].highlight('green'); return false}},''),m('br')]
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
- m.render($('#top_menu > .favourite')[0], [
174
- m('.item.pointer', {onclick: fav_module.toggleFavourite}, fav_module.star_view()),
175
- m('.item', {style: 'padding: 0px'}, fav_module.draw_favourite_menu()),
176
- m('.item', {style: 'padding: 0px'}, fav_module.draw_favourite_list_menu()),
177
- m('.item', {style: 'padding: 0px'}, fav_module.draw_favourite_map_menu())
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
- if (select.attr('attr-allow-empty') == 'true'){
185
- var option = $('<option value="none" class="loaded">none</option>')
186
- select.append(option);
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
- if (select.attr('attr-selected') != undefined ){
192
- selected = select.attr('attr-selected');
193
- }
176
+ var selected = null;
194
177
 
195
- $.each(lists, function(name, elems){
196
- var option = null;
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
- select.append(option);
204
- return true
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
- $('select.favourite_lists').find('option.automatic_load').remove()
196
+ $('select.favourite_lists').find('option.automatic_load').remove()
210
197
 
211
- $.each(fav_module.lists.types(), function(type, lists){
212
- $('select.favourite_lists[type=' + type + ']').each(function(){
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 url = '/kb/user/' + database + '/children/' + entity.id
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)