rbbt-rest 1.8.20 → 1.8.21

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a7bac229be773bd504edf30ebe5bf36b1efd8eb6
4
- data.tar.gz: 9935e8de06b0853d2561876e82e1420a4f5a624f
3
+ metadata.gz: 185572829398c880b3d6cb1e2a6d4dea0ae6ca9f
4
+ data.tar.gz: bb37ea54b1cefc0c4802b3d8c45d0ad350ad8cde
5
5
  SHA512:
6
- metadata.gz: 149647ea41453e9d8c2fac83fb6ca1588a173e27fc3364c76c1cfbe39c57f703817a6ef223ac6124c5ebfa2f85c1f8e0c2b686ae306aed0c4e32549c4e85d4c1
7
- data.tar.gz: 0623b16dcf724e4cdbf0d5c101523b8094b5034ea46a2dc5bd5af524dfacb358c2b755f9e66ee1f5fb544810d667a92fe402faac4c71b1bd5c3b2a646c7b9cbc
6
+ metadata.gz: fafe374d7bbc2f9100c39d7a9981ae89bd855c29262696c25fc325eadc157a17e443aa2cab0f448f8211d6cefca7ae0115f24607ed4fc32fe4b14325f05c7a92
7
+ data.tar.gz: 3ded826d68949dbb5e61b9690825ffec277ccbbd488f3dbbbad35a5166c454ecb24ae6198e445d8257ee4235e86937de2f045d3f154ba48f0d781745a90c022c
@@ -187,7 +187,6 @@ module Sinatra
187
187
  template_render(template, params, name, :cache_type => :asynchronous)
188
188
  end
189
189
 
190
-
191
190
  get '/help/?:section?' do
192
191
  if params[:section]
193
192
  section = params[:section]
@@ -109,6 +109,8 @@ module Sinatra
109
109
 
110
110
  raise Workflow::TaskNotFoundException.new workflow, task unless workflow.tasks.include? task.to_sym
111
111
 
112
+ execution_type = execution_type(workflow, task)
113
+
112
114
  task_parameters = consume_task_parameters(workflow, task, params)
113
115
 
114
116
  task_parameters[:jobname] = jobname
@@ -126,6 +128,8 @@ module Sinatra
126
128
 
127
129
  raise Workflow::TaskNotFoundException.new workflow, task unless workflow.tasks.include? task.to_sym
128
130
 
131
+ execution_type = execution_type(workflow, task)
132
+
129
133
  task_parameters = consume_task_parameters(workflow, task, params)
130
134
 
131
135
  issue_job(workflow, task, jobname, task_parameters)
@@ -137,6 +141,8 @@ module Sinatra
137
141
 
138
142
  raise Workflow::TaskNotFoundException.new workflow, task unless workflow.tasks.include? task.to_sym
139
143
 
144
+ execution_type = execution_type(workflow, task)
145
+
140
146
  job = workflow.load_id(File.join(task, job))
141
147
 
142
148
  clean_job(workflow, job) and halt 200 if update.to_s == "clean"
@@ -176,6 +182,8 @@ module Sinatra
176
182
 
177
183
  raise Workflow::TaskNotFoundException.new workflow, task unless workflow.tasks.include? task.to_sym
178
184
 
185
+ execution_type = execution_type(workflow, task)
186
+
179
187
  job = workflow.load_id(File.join(task, job))
180
188
 
181
189
  begin
@@ -211,6 +219,8 @@ module Sinatra
211
219
 
212
220
  raise Workflow::TaskNotFoundException.new workflow, task unless workflow.tasks.include? task.to_sym
213
221
 
222
+ execution_type = execution_type(workflow, task)
223
+
214
224
  job = workflow.load_id(File.join(task, job))
215
225
 
216
226
  case format
@@ -231,6 +241,8 @@ module Sinatra
231
241
 
232
242
  raise Workflow::TaskNotFoundException.new workflow, task unless workflow.tasks.include? task.to_sym
233
243
 
244
+ execution_type = execution_type(workflow, task)
245
+
234
246
  job = workflow.load_id(File.join(task, job))
235
247
 
236
248
  require 'mimemagic'
@@ -37,7 +37,7 @@ module WorkflowRESTHelpers
37
37
  when workflow.asynchronous_exports.include?(task)
38
38
  :asynchronous
39
39
  else
40
- raise "No known export type for #{ workflow } #{ task }. Accesses denied"
40
+ raise "Access denied: no known export type for #{ workflow }##{ task }."
41
41
  end
42
42
  end
43
43
 
@@ -171,6 +171,8 @@ module WorkflowRESTHelpers
171
171
  end
172
172
 
173
173
  def issue_job(workflow, task, jobname = nil, params = {})
174
+ execution_type = execution_type(workflow, task)
175
+
174
176
  inputs = prepare_job_inputs(workflow, task, params)
175
177
  job = workflow.job(task, jobname, inputs)
176
178
 
@@ -179,8 +181,6 @@ module WorkflowRESTHelpers
179
181
  clean_job(workflow, job) and clean = true if update.to_s == "clean"
180
182
  recursive_clean_job(workflow, job) and clean = true if update.to_s == "recursive_clean"
181
183
 
182
- execution_type = execution_type(workflow, task)
183
-
184
184
  case execution_type.to_sym
185
185
  when :exec
186
186
  show_exec_result job.exec(:stream), workflow, task
@@ -6,10 +6,10 @@
6
6
 
7
7
 
8
8
  - if defined? job.info_file and File.exists? job.info_file and request.env["REQUEST_URI"].include? job.name
9
- - clean_url = add_GET_param(request.env["REQUEST_URI"], "_update", "clean")
9
+ - clean_url = add_GET_param(remove_GET_param(request.env["REQUEST_URI"], "_layout"), "_update", "clean")
10
10
  %a.ui.button.blue.clean(href=clean_url) Clean
11
11
  - else
12
- - clean_url = add_GET_param(request.env["REQUEST_URI"], "_update", "reload")
12
+ - clean_url = add_GET_param(remove_GET_param(request.env["REQUEST_URI"], "_layout"), "_update", "reload")
13
13
  %a.ui.blue.button.reload(href=clean_url) Reload
14
14
 
15
15
  - backtrace = job.info[:backtrace]
@@ -9,9 +9,12 @@
9
9
  - task_exports = workflow.synchronous_exports + workflow.asynchronous_exports
10
10
  - task_exports = task_exports.collect{|t| t.to_s}
11
11
  - info[:dependencies].each do |task,name,path|
12
- - url = "/" + [workflow.to_s, task.to_s, name.to_s] * "/"
12
+ - if Open.remote? path
13
+ - url = path.split("?").first
14
+ - else
15
+ - url = "/" + [workflow.to_s, task.to_s, name.to_s] * "/"
13
16
  %li
14
- (#{workflow} #{task})
17
+ (#{workflow}##{task})
15
18
  - if task_exports.include? task.to_s
16
19
  %a(href=url) #{ name }
17
20
  - else
@@ -29,7 +29,7 @@ rbbt.entity_array.property = function(codes, type, info, name, args){
29
29
  }
30
30
 
31
31
  rbbt.entity_array.property = function(codes, type, info, name, args){
32
- if (info.format && ! type.indexOf(":") < 0){
32
+ if (undefined !== info && info.format && ! type.indexOf(":") < 0){
33
33
  type = type + ':' + info.format
34
34
  }
35
35
  var url = "/entity_list_property/" + name + "/" + type
@@ -41,9 +41,26 @@ rbbt.plots.aes.map_aesthetic = function(aes, mapper, map_obj){
41
41
  }
42
42
  }
43
43
 
44
- rbbt.plots.aes.get_properties = function(list, rules){
44
+ rbbt.plots.aes.get_properties = function(list, rules, type, namespace){
45
+ if (undefined !== list.type) type = list.type
45
46
  if (undefined === rules) rules == []
46
47
  if (undefined === list.properties) list.properties = {}
48
+
49
+ if (undefined !== list.info){
50
+ info = list.info
51
+ }else{
52
+ info = {}
53
+ }
54
+
55
+ if (list.namespace && undefined === namespace){
56
+ namespace = list.namespace
57
+ }
58
+
59
+ if (undefined !== namespace && undefined === list.organism){
60
+ info.organism = namespace
61
+ info.namespace = namespace
62
+ }
63
+
47
64
  var promises = []
48
65
  forArray(rules, function(rule){
49
66
  var name = rule.name
@@ -52,7 +69,7 @@ rbbt.plots.aes.get_properties = function(list, rules){
52
69
  eval('extract='+extract)
53
70
  }
54
71
 
55
- if (rule.entity_type && rule.entity_type != list.type && rule.entity_type != list.format) return
72
+ if (rule.entity_type && rule.entity_type != type && rule.entity_type != list.format) return
56
73
 
57
74
  if (rule.info){
58
75
  var property = rule.property
@@ -60,8 +77,8 @@ rbbt.plots.aes.get_properties = function(list, rules){
60
77
  var entry = rule.info
61
78
  if (undefined === name) name = entry
62
79
 
63
- var value = list.info[entry]
64
- if (undefined === value && entry == 'type') value = list.type
80
+ var value = info[entry]
81
+ if (undefined === value && entry == 'type') value = type
65
82
  if (undefined === value && entry == 'code') value = list.codes
66
83
 
67
84
  deferred.resolve(value)
@@ -89,7 +106,7 @@ rbbt.plots.aes.get_properties = function(list, rules){
89
106
  if (undefined === name) name = property
90
107
 
91
108
  var deferred = m.deferred()
92
- var tmp_promise = rbbt.entity_array.property(list.codes, list.type, list.info, property, args)
109
+ var tmp_promise = rbbt.entity_array.property(list.codes, type, info, property, args)
93
110
 
94
111
  if (extract){ tmp_promise = tmp_promise.then(function(res){ return res.map(extract)}) }
95
112
 
@@ -115,13 +132,13 @@ rbbt.plots.aes.get_properties = function(list, rules){
115
132
  var database = rule.parents
116
133
  if (undefined === name) name = database
117
134
 
118
- promise = rbbt.entity_array.parents(list.codes, list.type, database)
135
+ promise = rbbt.entity_array.parents(list.codes, type, database)
119
136
  }else{
120
137
  kb_type = 'children'
121
138
  var database = rule.children
122
139
  if (undefined === name) name = database
123
140
 
124
- promise = rbbt.entity_array.children(list.codes, list.type, database)
141
+ promise = rbbt.entity_array.children(list.codes, type, database)
125
142
  }
126
143
 
127
144
  if (rule.field){
@@ -184,11 +201,12 @@ rbbt.plots.aes.get_properties = function(list, rules){
184
201
  return m.sync(promises)
185
202
  }
186
203
 
187
- rbbt.plots.aes.set_aes = function(list, aes_rules){
204
+ rbbt.plots.aes.set_aes = function(list, aes_rules, type){
205
+ if (undefined !== list.type) type = list.type
188
206
  if (undefined === list.aes) list.aes = {}
189
207
  forArray(aes_rules, function(rule){
190
208
 
191
- if (rule.entity_type && rule.entity_type != list.type) return
209
+ if (rule.entity_type && rule.entity_type != type) return
192
210
 
193
211
 
194
212
  var name = rule.name
@@ -202,9 +220,9 @@ rbbt.plots.aes.set_aes = function(list, aes_rules){
202
220
  return
203
221
  }
204
222
 
205
- if (undefined === property && list.info[name]) property = list.info[name]
206
- if (undefined === property && name == 'type') property = list.type
207
- if (undefined === property && name == 'code') property = list.codes
223
+ if (undefined === property && undefined !== info && info[name]) property = info[name]
224
+ if (undefined === property && name == 'type') property = type
225
+ if (undefined === property && name == 'code') property = list.codes.slice()
208
226
  if (undefined === property) return
209
227
 
210
228
  var aes_values = rbbt.plots.aes.map_aesthetic(property, mapper, mapper_obj)
@@ -36,14 +36,32 @@ rbbt.plots.graph.get_entities = function(graph_model){
36
36
  return graph_model
37
37
  }
38
38
 
39
+ rbbt.plots.aes.complete_source_target = function(list){
40
+ if (undefined === list.aes.source && undefined === list.aes.source){
41
+ if (undefined === list.properties.source && undefined === list.properties.source){
42
+ var source = [];
43
+ var target = [];
44
+ forArray(list.codes, function(elem){
45
+ var parts = elem.split("~")
46
+ source.push(parts[0])
47
+ target.push(parts[1])
48
+ })
49
+ list.properties.source = source
50
+ list.properties.target = target
51
+ }
52
+ list.aes.source = list.properties.source
53
+ list.aes.target = list.properties.target
54
+ }
55
+ }
56
+
39
57
  rbbt.plots.graph.update_aes = function(graph_model){
40
58
  var data_promises = []
41
59
  forHash(graph_model.entities, function(type, list){
42
60
  data_promises.push(
43
61
 
44
- rbbt.plots.aes.get_properties(list, graph_model.rules).
62
+ rbbt.plots.aes.get_properties(list, graph_model.rules, type, graph_model.namespace).
45
63
  then(function(){
46
- rbbt.plots.aes.set_aes(list, graph_model.aes_rules)
64
+ rbbt.plots.aes.set_aes(list, graph_model.aes_rules, type)
47
65
  })
48
66
 
49
67
  )
@@ -55,6 +73,8 @@ rbbt.plots.graph.update_aes = function(graph_model){
55
73
  rbbt.plots.aes.get_properties(list, graph_model.edge_rules).
56
74
  then(function(){
57
75
  rbbt.plots.aes.set_aes(list, graph_model.edge_aes_rules)
76
+ }).then(function(){
77
+ rbbt.plots.aes.complete_source_target(list)
58
78
  })
59
79
 
60
80
  )
@@ -4,8 +4,14 @@
4
4
  - resolution ||= 250
5
5
  - title ||= "Piechart"
6
6
 
7
- - data.to_single if data.respond_to? :to_single and data.type != :single
8
- - values = data.collect{|k,v| {:key => k, :y => v} }
7
+ -# data.to_single if data.respond_to? :to_single and data.type != :single
8
+ -# values = data.collect{|k,v| {:key => k, :y => v} }
9
+
10
+ - data.to_single if data.respond_to? :to_single and data.type != :single and data.fields.length == 1
11
+ - if not data.respond_to? :type or data.type == :single
12
+ - values = data.collect{|k,v| {:key => k, :y => v} }
13
+ - else
14
+ - values = data.collect{|k,vs| i = {:key => k}; vs.zip(data.fields).each{|v,f| i[f] = v}; i }
9
15
 
10
16
  - plot_data = values
11
17
 
@@ -15,10 +21,20 @@
15
21
  var graph = nv.models.pieChart()
16
22
  .x(function(d) { return d.key })
17
23
  .y(function(d) { return d.y })
18
- .color(d3.scale.category10().range())
24
+
25
+ #{if data.respond_to? :fields and data.fields.include? 'color'
26
+ "graph.color(function(d){ return d.color } )"
27
+ else
28
+ "graph.color(d3.scale.category10().range())"
29
+ end
30
+ }
31
+
32
+ #{if data.respond_to? :fields and data.fields.include? 'url'
33
+ "graph.pie.dispatch.on('elementClick', function(d){ window.location = d.data.url})"
34
+ end
35
+ }
19
36
 
20
37
  graph.tooltip.enabled(true)
21
38
  EOF
22
39
 
23
40
  = partial_render('tools/nvd3/chart', locals.merge(:plot_data => plot_data, :id => id, :resolution => resolution, :setup => setup))
24
-
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbbt-rest
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.20
4
+ version: 1.8.21
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-01 00:00:00.000000000 Z
11
+ date: 2016-07-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake