rbbt-views 0.1.2 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/rbbt/workflow/rest.rb +142 -57
- data/lib/rbbt/workflow/rest/auth.rb +3 -2
- data/lib/rbbt/workflow/rest/client.rb +4 -1
- data/lib/rbbt/workflow/rest/email.rb +23 -0
- data/lib/rbbt/workflow/rest/entity.rb +87 -62
- data/lib/rbbt/workflow/rest/helpers.rb +38 -0
- data/lib/rbbt/workflow/rest/render.rb +532 -153
- data/lib/rbbt/workflow/rest/util.rb +81 -104
- data/share/views/compass/_base.sass +0 -3
- data/share/views/compass/app.sass +0 -103
- data/share/views/compass/compass.config +5 -5
- data/share/views/compass/layout.sass +133 -0
- data/share/views/compass/main.sass +28 -5
- data/share/views/entity/GOTerm.haml +15 -0
- data/share/views/entity/Gene.haml +7 -0
- data/share/views/entity/GenomicMutation.haml +10 -0
- data/share/views/entity/KeggPathway.haml +13 -0
- data/share/views/entity/MutatedIsoform.haml +43 -0
- data/share/views/entity/NCIBioCartaPathways.haml +9 -0
- data/share/views/entity/NCINaturePathways.haml +9 -0
- data/share/views/entity/NCIReactomePathways.haml +9 -0
- data/share/views/entity/PfamDomain.haml +1 -0
- data/share/views/entity_list/Default.haml +10 -0
- data/share/views/form.haml +2 -54
- data/share/views/front.haml +1 -0
- data/share/views/job_list.haml +1 -1
- data/share/views/js/app.js +122 -68
- data/share/views/layout.haml +28 -22
- data/share/views/partials/_form.haml +36 -0
- data/share/views/partials/_job_control.haml +8 -8
- data/share/views/partials/_result_table.haml +12 -40
- data/share/views/partials/_result_table_controls.haml +36 -28
- data/share/views/partials/_table.haml +39 -0
- data/share/views/public/favicon.gif +0 -0
- data/share/views/public/plugins/jmol/CHANGES.txt +11124 -0
- data/share/views/public/plugins/jmol/COPYRIGHT.txt +73 -0
- data/share/views/public/plugins/jmol/ChimeToJmol.jar +0 -0
- data/share/views/public/plugins/jmol/Jmol.jar +0 -0
- data/share/views/public/plugins/jmol/Jmol.js +1711 -0
- data/share/views/public/plugins/jmol/JmolApplet.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_Console.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_Minimize.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_Popup.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_ReadersCifPdb.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_ReadersMolXyz.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_ReadersMore.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_ReadersQuantum.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_ReadersSimple.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_ReadersXml.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_ReadersXtal.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_ShapeBio.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_ShapeSpecial.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_ShapeSurface.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_Smiles.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_Symmetry.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_ar.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_bs.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_ca.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_cs.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_da.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_de.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_el.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_en_GB.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_es.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_et.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_fi.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_fr.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_fy.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_hu.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_hy.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_id.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_it.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_jv.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_ko.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_ms.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_nb.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_nl.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_oc.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_pl.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_pt.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_pt_BR.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_ru.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_sl.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_sv.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_ta.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_te.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_tr.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_uk.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_zh_CN.jar +0 -0
- data/share/views/public/plugins/jmol/JmolApplet0_i18n_zh_TW.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_Console.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_Minimize.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_MultiTouch.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_Popup.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_ReadersCifPdb.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_ReadersMolXyz.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_ReadersMore.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_ReadersQuantum.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_ReadersSimple.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_ReadersXml.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_ReadersXtal.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_ShapeBio.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_ShapeSpecial.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_ShapeSurface.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_Smiles.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_Symmetry.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_ar.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_bs.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_ca.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_cs.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_da.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_de.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_el.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_en_GB.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_es.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_et.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_fi.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_fr.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_fy.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_hu.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_hy.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_id.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_it.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_jv.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_ko.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_ms.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_nb.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_nl.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_oc.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_pl.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_pt.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_pt_BR.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_ru.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_sl.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_sv.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_ta.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_te.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_tr.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_uk.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_zh_CN.jar +0 -0
- data/share/views/public/plugins/jmol/JmolAppletSigned0_i18n_zh_TW.jar +0 -0
- data/share/views/public/plugins/jmol/JmolData.jar +0 -0
- data/share/views/public/plugins/jmol/LEAME.txt +217 -0
- data/share/views/public/plugins/jmol/LICENSE.txt +504 -0
- data/share/views/public/plugins/jmol/README.txt +203 -0
- data/share/views/public/plugins/jmol/jmol +22 -0
- data/share/views/public/plugins/jmol/jmol.bat +5 -0
- data/share/views/public/plugins/jmol/jmol.mac +0 -0
- data/share/views/public/plugins/jmol/jmol.sh +39 -0
- data/share/views/public/plugins/jquery/js/jquery.form.js +980 -0
- data/share/views/result.haml +2 -2
- metadata +139 -6
- data/share/views/workflow_list.haml +0 -5
@@ -4,6 +4,27 @@ require 'rbbt/tsv/manipulate'
|
|
4
4
|
module Sinatra
|
5
5
|
module SinatraRbbt
|
6
6
|
|
7
|
+
def production?
|
8
|
+
ENV.include? "RACK_ENV" and not ENV["RACK_ENV"].nil? and ENV['RACK_ENV'].downcase == "production"
|
9
|
+
end
|
10
|
+
|
11
|
+
def cache(type, options)
|
12
|
+
name = type + ":" + Misc.hash2md5(options)
|
13
|
+
if production?
|
14
|
+
@@cache ||= Persist.open_tokyocabinet 'sinatra.cache', true
|
15
|
+
return @@cache[name] if @@cache.include? name
|
16
|
+
res = yield
|
17
|
+
Misc.lock @@cache.persistence_path do
|
18
|
+
@@cache.write
|
19
|
+
@@cache[name] = res
|
20
|
+
@@cache.read
|
21
|
+
end
|
22
|
+
res
|
23
|
+
else
|
24
|
+
yield
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
7
28
|
def job_cache(workflow, task, jobname)
|
8
29
|
jobname = File.basename(jobname)
|
9
30
|
@job_cache ||= {}
|
@@ -53,58 +74,6 @@ module Sinatra
|
|
53
74
|
session["context"] = context
|
54
75
|
end
|
55
76
|
|
56
|
-
|
57
|
-
def self.locate_file(workflow, task, file)
|
58
|
-
file = case
|
59
|
-
when file =~ /\.[a-z]{2,4}$/
|
60
|
-
file
|
61
|
-
when file =~ /(.*)\/$/
|
62
|
-
$1
|
63
|
-
else
|
64
|
-
file + '.haml'
|
65
|
-
end
|
66
|
-
|
67
|
-
webapp_dir_views = WorkflowREST.www.views.find(:lib, Sinatra::Application.root)
|
68
|
-
workflow_dir_views = (workflow.nil? or workflow.libdir.nil?) ? nil : workflow.libdir.www.views
|
69
|
-
global_views = WorkflowREST.share.views
|
70
|
-
|
71
|
-
# workflow = workflow.to_s unless workflow.nil? or String === workflow
|
72
|
-
|
73
|
-
path = case
|
74
|
-
when webapp_dir_views[workflow][task][file].exists?
|
75
|
-
webapp_dir_views[workflow][task][file]
|
76
|
-
when webapp_dir_views[task][file].exists?
|
77
|
-
webapp_dir_views[task][file]
|
78
|
-
when webapp_dir_views[workflow][file].exists?
|
79
|
-
webapp_dir_views[workflow][file]
|
80
|
-
when webapp_dir_views[file].exists?
|
81
|
-
webapp_dir_views[file]
|
82
|
-
|
83
|
-
when (not workflow_dir_views.nil? and workflow_dir_views[workflow][task][file].exists?)
|
84
|
-
workflow_dir_views[workflow][task][file]
|
85
|
-
when (not workflow_dir_views.nil? and workflow_dir_views[task][file].exists?)
|
86
|
-
workflow_dir_views[task][file]
|
87
|
-
when (not workflow_dir_views.nil? and workflow_dir_views[workflow][file].exists?)
|
88
|
-
workflow_dir_views[workflow][file]
|
89
|
-
when (not workflow_dir_views.nil? and workflow_dir_views[file].exists?)
|
90
|
-
workflow_dir_views[file]
|
91
|
-
|
92
|
-
when global_views[workflow][task][file].exists?
|
93
|
-
global_views[workflow][task][file]
|
94
|
-
when global_views[task][file].exists?
|
95
|
-
global_views[task][file]
|
96
|
-
when global_views[workflow][file].exists?
|
97
|
-
global_views[workflow][file]
|
98
|
-
when global_views[file].exists?
|
99
|
-
global_views[file]
|
100
|
-
else
|
101
|
-
raise "File not found: #{[workflow, task, file].compact * ", "}"
|
102
|
-
end
|
103
|
-
|
104
|
-
Log.debug "File #{[workflow, task, file].collect{|v| "'#{ v }'"} * ", "} located at #{ path }"
|
105
|
-
path
|
106
|
-
end
|
107
|
-
|
108
77
|
def add_param(url, key, value)
|
109
78
|
if url =~ /\?/
|
110
79
|
url += "&#{ key }=#{ value }"
|
@@ -119,13 +88,13 @@ module Sinatra
|
|
119
88
|
end
|
120
89
|
url
|
121
90
|
end
|
122
|
-
|
123
|
-
def locate_file(workflow, task, file)
|
124
|
-
SinatraRbbt.locate_file(workflow, task, file)
|
125
|
-
end
|
126
|
-
|
127
91
|
#{{{ Params
|
128
|
-
|
92
|
+
#
|
93
|
+
def get_email(params)
|
94
|
+
IndiferentHash.setup(params)
|
95
|
+
params.delete :email
|
96
|
+
end
|
97
|
+
|
129
98
|
def get_jobname(params)
|
130
99
|
IndiferentHash.setup(params)
|
131
100
|
jobname = params.delete :jobname
|
@@ -187,7 +156,7 @@ module Sinatra
|
|
187
156
|
|
188
157
|
filter = params.delete :_filter
|
189
158
|
|
190
|
-
size = params.delete
|
159
|
+
size = params.delete(:_size) || params.delete("_size")
|
191
160
|
|
192
161
|
layout = params.delete :_layout
|
193
162
|
|
@@ -198,7 +167,10 @@ module Sinatra
|
|
198
167
|
{ :_format => format,
|
199
168
|
:_page => page,
|
200
169
|
:_filter => filter,
|
201
|
-
:_layout => layout
|
170
|
+
:_layout => layout,
|
171
|
+
:_size => size,
|
172
|
+
:_xhr => request.xhr?,
|
173
|
+
}
|
202
174
|
end
|
203
175
|
|
204
176
|
def has_all_inputs(workflow, name, params)
|
@@ -207,6 +179,54 @@ module Sinatra
|
|
207
179
|
workflow.rec_inputs(name).reject{|input| params.include? input}.empty?
|
208
180
|
end
|
209
181
|
|
182
|
+
def fix_input(type, value, param_file = nil)
|
183
|
+
case type
|
184
|
+
when nil, :string
|
185
|
+
value
|
186
|
+
when :integer
|
187
|
+
value.to_i
|
188
|
+
when :float
|
189
|
+
value.to_f
|
190
|
+
when :boolean
|
191
|
+
Persist::TRUE_STRINGS.include? value.chomp.strip
|
192
|
+
|
193
|
+
when :text
|
194
|
+
case
|
195
|
+
when (param_file.nil? and not (value.nil? or value.empty?))
|
196
|
+
value
|
197
|
+
when (not param_file.nil?)
|
198
|
+
value[:tempfile].read
|
199
|
+
end
|
200
|
+
|
201
|
+
when :array
|
202
|
+
case
|
203
|
+
when (param_file.nil? and not (value.nil? or value.empty?))
|
204
|
+
case
|
205
|
+
when String === value
|
206
|
+
value.split(/\n|,/).collect{|l| l.strip}
|
207
|
+
when Array === value
|
208
|
+
value
|
209
|
+
else
|
210
|
+
raise "Input #{ input } must be Array or String: #{value.class}"
|
211
|
+
end
|
212
|
+
when (not param_file.nil?)
|
213
|
+
text = value[:tempfile].read
|
214
|
+
text.split(/\n|,/).collect{|l| l.strip}
|
215
|
+
end
|
216
|
+
|
217
|
+
when :tsv
|
218
|
+
case
|
219
|
+
when (param_file.nil? and not (value.nil? or value.empty?))
|
220
|
+
TSV.open(StringIO.new(value))
|
221
|
+
when (not param_file.nil?)
|
222
|
+
text = value[:tempfile].read
|
223
|
+
TSV.open(StringIO.new(text))
|
224
|
+
end
|
225
|
+
end
|
226
|
+
|
227
|
+
|
228
|
+
end
|
229
|
+
|
210
230
|
def get_inputs(workflow, name, params)
|
211
231
|
inputs = {}
|
212
232
|
|
@@ -228,50 +248,7 @@ module Sinatra
|
|
228
248
|
value.sub!(/local:(.*):(.*)/, 'local:\1:' + user + '/\2')
|
229
249
|
end
|
230
250
|
|
231
|
-
new_value =
|
232
|
-
when nil, :string
|
233
|
-
value
|
234
|
-
when :integer
|
235
|
-
value.to_i
|
236
|
-
when :float
|
237
|
-
value.to_f
|
238
|
-
when :boolean
|
239
|
-
Persist::TRUE_STRINGS.include? value.chomp.strip
|
240
|
-
|
241
|
-
when :text
|
242
|
-
case
|
243
|
-
when (param_file.nil? and not (value.nil? or value.empty?))
|
244
|
-
value
|
245
|
-
when (not param_file.nil?)
|
246
|
-
value[:tempfile].read
|
247
|
-
end
|
248
|
-
|
249
|
-
when :array
|
250
|
-
case
|
251
|
-
when (param_file.nil? and not (value.nil? or value.empty?))
|
252
|
-
case
|
253
|
-
when String === value
|
254
|
-
value.split(/\n|,/).collect{|l| l.strip}
|
255
|
-
when Array === value
|
256
|
-
value
|
257
|
-
else
|
258
|
-
raise "Input #{ input } must be Array or String: #{value.class}"
|
259
|
-
end
|
260
|
-
when (not param_file.nil?)
|
261
|
-
text = value[:tempfile].read
|
262
|
-
text.split(/\n|,/).collect{|l| l.strip}
|
263
|
-
end
|
264
|
-
|
265
|
-
when :tsv
|
266
|
-
case
|
267
|
-
when (param_file.nil? and not (value.nil? or value.empty?))
|
268
|
-
TSV.open(StringIO.new(value))
|
269
|
-
when (not param_file.nil?)
|
270
|
-
text = value[:tempfile].read
|
271
|
-
TSV.open(StringIO.new(text))
|
272
|
-
end
|
273
|
-
end
|
274
|
-
|
251
|
+
new_value = fix_input(input_types[param], value, param_file)
|
275
252
|
inputs[param] = new_value unless new_value.nil?
|
276
253
|
end
|
277
254
|
|
@@ -1,103 +0,0 @@
|
|
1
|
-
@import "main"
|
2
|
-
@import "form"
|
3
|
-
|
4
|
-
body
|
5
|
-
margin: 10px
|
6
|
-
font-size: 12px
|
7
|
-
width: auto
|
8
|
-
|
9
|
-
span.short_task_description
|
10
|
-
display: block
|
11
|
-
color: gray
|
12
|
-
|
13
|
-
.embedded
|
14
|
-
margin: 0
|
15
|
-
padding: 0
|
16
|
-
&.reloading
|
17
|
-
span.status
|
18
|
-
font-size: 2em
|
19
|
-
color: gray
|
20
|
-
|
21
|
-
#header
|
22
|
-
background-color: #F2F2F2
|
23
|
-
h1
|
24
|
-
font-size: 15px
|
25
|
-
a
|
26
|
-
text-decoration: none
|
27
|
-
color: blue
|
28
|
-
span.login
|
29
|
-
float: right
|
30
|
-
|
31
|
-
#menu
|
32
|
-
font-size: 0.9em
|
33
|
-
overflow: auto
|
34
|
-
overflow-x: hidden
|
35
|
-
+column(5)
|
36
|
-
ul
|
37
|
-
+clean_list
|
38
|
-
li
|
39
|
-
display: block
|
40
|
-
|
41
|
-
.workflow_menu
|
42
|
-
margin-bottom: 20px
|
43
|
-
|
44
|
-
ul.context_control
|
45
|
-
+clean_list(true)
|
46
|
-
height: 2em
|
47
|
-
li
|
48
|
-
float: left
|
49
|
-
padding: 3px
|
50
|
-
margin-left: 5px
|
51
|
-
|
52
|
-
|
53
|
-
ul.job_control
|
54
|
-
+clean_list(true)
|
55
|
-
height: 2em
|
56
|
-
li
|
57
|
-
float: right
|
58
|
-
padding: 3px
|
59
|
-
margin-right: 15px
|
60
|
-
|
61
|
-
#content
|
62
|
-
+column(19)
|
63
|
-
#main
|
64
|
-
width: auto
|
65
|
-
padding: 10px
|
66
|
-
&.contracted
|
67
|
-
+border_radius(4px, 4px)
|
68
|
-
overflow: auto
|
69
|
-
border: solid 1px gray
|
70
|
-
#details_controls
|
71
|
-
ul
|
72
|
-
+clean_list
|
73
|
-
li
|
74
|
-
margin: 0px
|
75
|
-
padding: 0px
|
76
|
-
a
|
77
|
-
+subtle_link(gray)
|
78
|
-
#details
|
79
|
-
+border_radius(4px, 4px)
|
80
|
-
padding: 10px
|
81
|
-
height: 200px
|
82
|
-
border: solid 1px gray
|
83
|
-
background-color: #F2F2F2
|
84
|
-
overflow: auto
|
85
|
-
&.expanded
|
86
|
-
height: auto
|
87
|
-
overflow: none
|
88
|
-
|
89
|
-
#other_task_jobs
|
90
|
-
+column(5)
|
91
|
-
float: right
|
92
|
-
|
93
|
-
#footer
|
94
|
-
margin-top: 20px
|
95
|
-
color: orange
|
96
|
-
|
97
|
-
span.input_name
|
98
|
-
font-weight: bold
|
99
|
-
|
100
|
-
table tfoot
|
101
|
-
input
|
102
|
-
&.pnum, &.psize
|
103
|
-
width: 3em
|
@@ -12,19 +12,19 @@ else
|
|
12
12
|
end
|
13
13
|
|
14
14
|
Sass::Engine::DEFAULT_OPTIONS[:load_paths].tap do |load_paths|
|
15
|
-
load_paths <<
|
15
|
+
load_paths << Rbbt.views.compass.find(:lib, Sinatra::Application.root).to_s
|
16
16
|
Workflow.workflows.each do |workflow|
|
17
|
-
load_paths <<
|
17
|
+
load_paths << Rbbt.www.views.compass.find(:lib, workflow.libdir).to_s
|
18
18
|
end
|
19
|
-
load_paths <<
|
19
|
+
load_paths << Rbbt.share.views.compass.find(:lib).to_s
|
20
20
|
|
21
21
|
load_paths << "#{Gem.loaded_specs['compass'].full_gem_path}/frameworks/compass/stylesheets"
|
22
22
|
load_paths << "#{Gem.loaded_specs['compass'].full_gem_path}/frameworks/blueprint/stylesheets"
|
23
23
|
end
|
24
24
|
|
25
25
|
# This is common configuration
|
26
|
-
sass_dir =
|
27
|
-
cache_dir =
|
26
|
+
sass_dir = Rbbt.share.views.compass.find(:lib, Sinatra::Application.root).to_s
|
27
|
+
cache_dir = Rbbt.var.cache.sass.find
|
28
28
|
images_dir = File.join 'public', 'images'
|
29
29
|
http_path = "/"
|
30
30
|
http_images_path = "/images"
|
@@ -0,0 +1,133 @@
|
|
1
|
+
@import "main"
|
2
|
+
@import "form"
|
3
|
+
|
4
|
+
body
|
5
|
+
margin: 10px
|
6
|
+
font-size: 14px
|
7
|
+
width: auto
|
8
|
+
background-color: #F0F0F0
|
9
|
+
|
10
|
+
span.short_task_description
|
11
|
+
display: block
|
12
|
+
color: gray
|
13
|
+
#header
|
14
|
+
h1
|
15
|
+
font-size: 15px
|
16
|
+
a
|
17
|
+
text-decoration: none
|
18
|
+
color: blue
|
19
|
+
span.login
|
20
|
+
float: right
|
21
|
+
|
22
|
+
#menu
|
23
|
+
padding: 5px
|
24
|
+
font-size: 0.9em
|
25
|
+
overflow: auto
|
26
|
+
overflow-x: hidden
|
27
|
+
+column(5)
|
28
|
+
ul
|
29
|
+
+clean_list
|
30
|
+
li
|
31
|
+
display: block
|
32
|
+
|
33
|
+
.workflow_menu
|
34
|
+
margin-bottom: 20px
|
35
|
+
|
36
|
+
ul.context_control
|
37
|
+
+clean_list(true)
|
38
|
+
height: 2em
|
39
|
+
li
|
40
|
+
float: left
|
41
|
+
padding: 3px
|
42
|
+
margin-left: 5px
|
43
|
+
|
44
|
+
|
45
|
+
ul.job_control
|
46
|
+
+clean_list(true)
|
47
|
+
height: 2em
|
48
|
+
li
|
49
|
+
float: right
|
50
|
+
padding: 3px
|
51
|
+
margin-right: 15px
|
52
|
+
|
53
|
+
#content
|
54
|
+
+column(19)
|
55
|
+
#main
|
56
|
+
width: auto
|
57
|
+
padding: 10px
|
58
|
+
&.contracted
|
59
|
+
+border_radius(4px, 4px)
|
60
|
+
overflow: auto
|
61
|
+
border: solid 1px gray
|
62
|
+
#details_controls
|
63
|
+
ul
|
64
|
+
+clean_list
|
65
|
+
li
|
66
|
+
margin: 0px
|
67
|
+
padding: 0px
|
68
|
+
#details
|
69
|
+
+border_radius(4px, 4px)
|
70
|
+
padding: 10px
|
71
|
+
height: 200px
|
72
|
+
border: solid 1px gray
|
73
|
+
background-color: #F2F2F2
|
74
|
+
overflow: auto
|
75
|
+
&.expanded
|
76
|
+
height: auto
|
77
|
+
overflow: none
|
78
|
+
|
79
|
+
#other_task_jobs
|
80
|
+
+column(5)
|
81
|
+
float: right
|
82
|
+
|
83
|
+
#footer
|
84
|
+
margin-top: 20px
|
85
|
+
color: orange
|
86
|
+
|
87
|
+
span.input_name
|
88
|
+
font-weight: bold
|
89
|
+
|
90
|
+
table tfoot
|
91
|
+
text-align: left
|
92
|
+
h3
|
93
|
+
display: inline
|
94
|
+
margin-right: 15px
|
95
|
+
input
|
96
|
+
&.pnum, &.psize
|
97
|
+
width: 3em
|
98
|
+
|
99
|
+
table td
|
100
|
+
word-spacing: 5px
|
101
|
+
|
102
|
+
thead th
|
103
|
+
color: white
|
104
|
+
background: black
|
105
|
+
|
106
|
+
a.entity, a.entity_list, a.entity_action, a.entity_list_action
|
107
|
+
text-decoration: none
|
108
|
+
white-space: nowrap
|
109
|
+
word-spacing: 0px
|
110
|
+
|
111
|
+
a.replace
|
112
|
+
+border_radius(4px, 4px)
|
113
|
+
+shadowed_box()
|
114
|
+
display: inline-block
|
115
|
+
padding: 5px
|
116
|
+
|
117
|
+
.embedded
|
118
|
+
+border_radius(4px, 4px)
|
119
|
+
+shadowed_box()
|
120
|
+
padding: 10px 25px
|
121
|
+
&.reloading
|
122
|
+
span.status
|
123
|
+
font-size: 2em
|
124
|
+
color: gray
|
125
|
+
|
126
|
+
div.form_input label
|
127
|
+
margin-top: 10px
|
128
|
+
|
129
|
+
span.user
|
130
|
+
color: gray
|
131
|
+
|
132
|
+
a.button
|
133
|
+
+button_link()
|