rbbt-rest 1.8.76 → 1.8.77
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/workflow.rb +1 -1
- data/lib/rbbt/rest/workflow/render.rb +1 -0
- data/share/views/compass/app.sass +5 -0
- data/share/views/error.haml +3 -0
- data/share/views/job_files.haml +24 -0
- data/share/views/job_result/job_control.haml +7 -7
- data/share/views/partials/dependencies.haml +13 -1
- data/share/views/public/js/rbbt.plots/rbbt.plots.aes.js +2 -2
- data/share/views/public/js/rbbt.plots/rbbt.plots.graph.adapters.js +8 -0
- data/share/views/wait.haml +16 -0
- metadata +4 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f1de6fcf8b994e77b6a88ce299f4e017e04df807
|
|
4
|
+
data.tar.gz: ed627370f0aa5a4470b241537e6a484e068787cd
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 19d7a35ede5f54282b6032c882c52ee082118d918b7ef5b9413a5695056a7925aedc46e8be285b76690c75cd9e58012d5541d6f9dfa3c34e65671720c95b4718
|
|
7
|
+
data.tar.gz: ec57136fc071436a09ee66becf750eafbc2768d2782b3cf76cdefb88aaed32079801528055686d4260b06ed1a881c5310df8568b4ddc02cdda3797adc81e93ec
|
data/lib/rbbt/rest/workflow.rb
CHANGED
|
@@ -237,7 +237,7 @@ module Sinatra
|
|
|
237
237
|
|
|
238
238
|
case format
|
|
239
239
|
when :html
|
|
240
|
-
workflow_render('job_files', workflow, task, :info => job.info)
|
|
240
|
+
workflow_render('job_files', workflow, task, :info => job.info, :job => job)
|
|
241
241
|
when :json
|
|
242
242
|
content_type "application/json"
|
|
243
243
|
job.files.to_json
|
|
@@ -31,6 +31,7 @@ module WorkflowRESTHelpers
|
|
|
31
31
|
other_params = params.dup
|
|
32
32
|
other_params.delete_if{|k,v| k[0] == "_"}
|
|
33
33
|
other_params.delete :result
|
|
34
|
+
other_params[:template_file] = template_file
|
|
34
35
|
cache_file = html_dir[server_key + "_" << Misc.obj2digest(other_params)]
|
|
35
36
|
cache_type = false if params[:cache] == FalseClass
|
|
36
37
|
render(template_file, locals, layout_file, [task,workflow,job.name] * "-", :cache_type => cache_type, :cache_file => cache_file)
|
|
@@ -129,6 +129,9 @@ dl > dd
|
|
|
129
129
|
margin-left: 1em
|
|
130
130
|
|
|
131
131
|
|
|
132
|
+
ul.dependencies
|
|
133
|
+
padding-left: 1em
|
|
134
|
+
|
|
132
135
|
.dependencies, .job_info
|
|
133
136
|
.status
|
|
134
137
|
color: gold
|
|
@@ -153,3 +156,5 @@ dl > dd
|
|
|
153
156
|
max-height: 800px
|
|
154
157
|
overflow: auto
|
|
155
158
|
|
|
159
|
+
.job_control
|
|
160
|
+
margin-bottom: 2em
|
data/share/views/error.haml
CHANGED
|
@@ -14,6 +14,9 @@
|
|
|
14
14
|
|
|
15
15
|
- info_url = request.env["REQUEST_URI"].sub(/\?.*/,'') + '/info'
|
|
16
16
|
%a.ui.blue.button.reload(href=info_url) Info
|
|
17
|
+
- if job.files.any?
|
|
18
|
+
- files_url = request.env["REQUEST_URI"].sub(/\?.*/,'') + '/files'
|
|
19
|
+
%a.ui.blue.button.reload(href=files_url) Info
|
|
17
20
|
|
|
18
21
|
- backtrace = job.info[:backtrace]
|
|
19
22
|
- if backtrace and backtrace.any?
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
|
|
2
|
+
- files = job.files
|
|
3
|
+
- task = job.task_name
|
|
4
|
+
- workflow = job.workflow
|
|
5
|
+
- jobname = job.name
|
|
6
|
+
- files.reject!{|f| File.basename(File.dirname(f)) == ".html"}
|
|
7
|
+
|
|
8
|
+
- if files.any?
|
|
9
|
+
- files_by_dir = {}
|
|
10
|
+
- files.each do |file|
|
|
11
|
+
- dir = File.dirname(file)
|
|
12
|
+
- files_by_dir[dir] ||= []
|
|
13
|
+
- files_by_dir[dir] << file
|
|
14
|
+
|
|
15
|
+
- (files_by_dir["."] || []).sort.each do |file|
|
|
16
|
+
%a.small.ui.button(href="/#{[workflow.to_s, task, jobname, "file", file] * "/"}")= file
|
|
17
|
+
- (files_by_dir.keys - ["."]).each do |dir|
|
|
18
|
+
%dl
|
|
19
|
+
%dt.ui.header #{dir}/
|
|
20
|
+
%dd
|
|
21
|
+
.ui.buttons
|
|
22
|
+
- files_by_dir[dir].each do |file|
|
|
23
|
+
%a.small.ui.button(href="/#{[workflow.to_s, task, jobname, "file", file] * "/"}")= File.basename(file)
|
|
24
|
+
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
%
|
|
3
|
-
%
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
%a.ui.small.button(href="/#{[workflow.to_s, task, jobname] * "/"}?_format=raw") get raw result file
|
|
1
|
+
.ui.buttons.job_control
|
|
2
|
+
%a.ui.small.basic.red.button(href="/#{[workflow.to_s, task, jobname] * "/"}?_update=clean") clean job
|
|
3
|
+
%a.ui.small.basic.blue.button(href="/#{[workflow.to_s, task, jobname, "info"] * "/"}") job info
|
|
4
|
+
- if job.files.any?
|
|
5
|
+
%a.ui.small.basic.blue.button(href="/#{[workflow.to_s, task, jobname, "files"] * "/"}") job files
|
|
6
|
+
%a.ui.small.basic.blue.button(href="/#{[workflow.to_s, task, jobname] * "/"}?_format=raw") get raw result file
|
|
8
7
|
|
|
8
|
+
-#
|
|
9
9
|
- files = job.files
|
|
10
10
|
- files.reject!{|f| File.basename(File.dirname(f)) == ".html"}
|
|
11
11
|
|
|
@@ -12,7 +12,19 @@
|
|
|
12
12
|
- if dep.file(:progress).exists?
|
|
13
13
|
- pgr = dep.file(:progress).yaml
|
|
14
14
|
- if pgr[:last_percent]
|
|
15
|
-
-
|
|
15
|
+
- start = pgr[:start]
|
|
16
|
+
- last_time = pgr[:last_time]
|
|
17
|
+
|
|
18
|
+
- ellapsed = last_time - start
|
|
19
|
+
- if pgr[:mean]
|
|
20
|
+
- missing = pgr[:max].to_f - pgr[:ticks].to_f
|
|
21
|
+
- eta = missing / pgr[:mean].to_f
|
|
22
|
+
- else
|
|
23
|
+
- ratio = pgr[:ticks].to_f/pgr[:max].to_f
|
|
24
|
+
- eta = ellapsed * (1 - ratio)
|
|
25
|
+
- eta = Misc.format_seconds(eta)
|
|
26
|
+
- ellapsed = Misc.format_seconds(ellapsed)
|
|
27
|
+
- pgr_str = " - " + pgr[:last_percent].to_s + "%" + " " + eta
|
|
16
28
|
- else
|
|
17
29
|
- pgr_str = " - " + pgr[:ticks].to_s
|
|
18
30
|
- status = dep_status.to_s + pgr_str
|
|
@@ -16,7 +16,7 @@ rbbt.plots.aes.map_aesthetic = function(aes, mapper, map_obj){
|
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
aes.push(0)
|
|
19
|
-
return get_gradient(aes, '#
|
|
19
|
+
return get_gradient(aes, '#40324F', '#EABD5D')
|
|
20
20
|
case 'sign-gradient':
|
|
21
21
|
if (map_obj){
|
|
22
22
|
if (typeof aes == 'object')
|
|
@@ -24,7 +24,7 @@ rbbt.plots.aes.map_aesthetic = function(aes, mapper, map_obj){
|
|
|
24
24
|
else
|
|
25
25
|
aes = map_obj[aes]
|
|
26
26
|
}
|
|
27
|
-
return get_sign_gradient(aes, '#
|
|
27
|
+
return get_sign_gradient(aes, '#40324F', '#DDD', '#EABD5D')
|
|
28
28
|
case 'map':
|
|
29
29
|
if (typeof aes == 'object')
|
|
30
30
|
return aes.map(function(value){ if (value !== undefined && value != null ) value = value.toString(); return map_obj[value] })
|
|
@@ -105,6 +105,14 @@ rbbt.plots.graph.view_cytoscapejs = function(graph_model, elem, style, layout, e
|
|
|
105
105
|
style: { 'line-color': 'data(color)',
|
|
106
106
|
'target-arrow-color': 'data(color)'}
|
|
107
107
|
},
|
|
108
|
+
{
|
|
109
|
+
selector: 'edge[opacity]',
|
|
110
|
+
style: { 'opacity': 'data(opacity)'}
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
selector: 'edge[width]',
|
|
114
|
+
style: { 'width': 'data(width)'}
|
|
115
|
+
},
|
|
108
116
|
{
|
|
109
117
|
selector: 'edge[target-arrow-shape]',
|
|
110
118
|
style: { 'target-arrow-shape': 'data(target-arrow-shape)'}
|
data/share/views/wait.haml
CHANGED
|
@@ -52,6 +52,22 @@
|
|
|
52
52
|
:deferjs
|
|
53
53
|
$('.step.progress').progress({label: 'ratio',text:{ratio: '{value}'}})
|
|
54
54
|
|
|
55
|
+
%hr
|
|
56
|
+
- if defined? job.info_file and File.exists? job.info_file and request.env["REQUEST_URI"].include? job.name
|
|
57
|
+
- clean_url = add_GET_param(remove_GET_param(request.env["REQUEST_URI"], "_layout"), "_update", "clean")
|
|
58
|
+
%a.ui.button.blue.clean(href=clean_url) Clean
|
|
59
|
+
- else
|
|
60
|
+
- clean_url = add_GET_param(remove_GET_param(request.env["REQUEST_URI"], "_layout"), "_update", "reload")
|
|
61
|
+
%a.ui.blue.button.reload(href=clean_url) Reload
|
|
62
|
+
|
|
63
|
+
- info_url = request.env["REQUEST_URI"].sub(/\?.*/,'') + '/info'
|
|
64
|
+
%a.ui.blue.button.reload(href=info_url) Info
|
|
65
|
+
|
|
66
|
+
- if job.files.any?
|
|
67
|
+
- files_url = request.env["REQUEST_URI"].sub(/\?.*/,'') + '/files'
|
|
68
|
+
%a.ui.blue.button.reload(href=files_url) Files
|
|
69
|
+
|
|
70
|
+
|
|
55
71
|
.ui.segment
|
|
56
72
|
%h3.ui.header Log
|
|
57
73
|
%ul.step_messages.clean_list
|
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.
|
|
4
|
+
version: 1.8.77
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Miguel Vazquez
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2017-11-
|
|
11
|
+
date: 2017-11-16 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rake
|
|
@@ -226,6 +226,7 @@ files:
|
|
|
226
226
|
- share/views/help/UI.haml
|
|
227
227
|
- share/views/help/entity.haml
|
|
228
228
|
- share/views/help/workflow.haml
|
|
229
|
+
- share/views/job_files.haml
|
|
229
230
|
- share/views/job_info.haml
|
|
230
231
|
- share/views/job_result.haml
|
|
231
232
|
- share/views/job_result/annotations.haml
|
|
@@ -1865,7 +1866,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
1865
1866
|
version: '0'
|
|
1866
1867
|
requirements: []
|
|
1867
1868
|
rubyforge_project:
|
|
1868
|
-
rubygems_version: 2.6.
|
|
1869
|
+
rubygems_version: 2.6.8
|
|
1869
1870
|
signing_key:
|
|
1870
1871
|
specification_version: 4
|
|
1871
1872
|
summary: Rbbt Web and REST interfaces
|