rbbt-rest 1.1.4 → 1.1.5
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 +8 -8
- data/config.ru +3 -0
- data/lib/rbbt/rest/client.rb +9 -10
- data/lib/rbbt/rest/common/cache.rb +32 -7
- data/lib/rbbt/rest/common/forms.rb +33 -0
- data/lib/rbbt/rest/common/locate.rb +4 -0
- data/lib/rbbt/rest/common/misc.rb +24 -0
- data/lib/rbbt/rest/common/render.rb +26 -9
- data/lib/rbbt/rest/common/resources.rb +1 -1
- data/lib/rbbt/rest/common/table.rb +87 -26
- data/lib/rbbt/rest/common/users.rb +5 -1
- data/lib/rbbt/rest/entity.rb +300 -95
- data/lib/rbbt/rest/entity/action_controller.rb +6 -1
- data/lib/rbbt/rest/entity/entity_list_card.rb +1 -1
- data/lib/rbbt/rest/entity/entity_map_card.rb +15 -0
- data/lib/rbbt/rest/entity/favourites.rb +57 -1
- data/lib/rbbt/rest/entity/finder.rb +1 -1
- data/lib/rbbt/rest/entity/helpers.rb +40 -7
- data/lib/rbbt/rest/entity/list.rb +8 -0
- data/lib/rbbt/rest/entity/locate.rb +114 -0
- data/lib/rbbt/rest/entity/map.rb +99 -0
- data/lib/rbbt/rest/entity/render.rb +25 -0
- data/lib/rbbt/rest/entity/rest.rb +33 -4
- data/lib/rbbt/rest/main.rb +27 -4
- data/lib/rbbt/rest/workflow.rb +7 -1
- data/lib/rbbt/rest/workflow/jobs.rb +21 -1
- data/share/views/compass/app.sass +17 -9
- data/share/views/compass/entity_card.sass +16 -3
- data/share/views/compass/favourites.sass +44 -2
- data/share/views/compass/form.sass +11 -0
- data/share/views/compass/list_container.sass +1 -1
- data/share/views/compass/reveal.sass +31 -0
- data/share/views/compass/style.sass +29 -1
- data/share/views/compass/style_mixins.sass +18 -6
- data/share/views/compass/table.sass +19 -3
- data/share/views/compass/topbar.sass +8 -2
- data/share/views/entity_map/Default.haml +5 -0
- data/share/views/entity_partials/action_card.haml +2 -0
- data/share/views/entity_partials/action_controller.haml +8 -1
- data/share/views/entity_partials/entity_list_card.haml +8 -6
- data/share/views/entity_partials/entity_map_card.haml +63 -0
- data/share/views/entity_partials/list_container.haml +3 -2
- data/share/views/error.haml +14 -10
- data/share/views/help.haml +34 -0
- data/share/views/help/entity.haml +193 -0
- data/share/views/help/workflow.haml +77 -0
- data/share/views/job_result/tsv.haml +3 -2
- data/share/views/layout.haml +33 -3
- data/share/views/layout/favourites.haml +14 -4
- data/share/views/layout/header.haml +4 -0
- data/share/views/partials/form.haml +3 -1
- data/share/views/partials/table.haml +16 -52
- data/share/views/partials/table/column.haml +10 -0
- data/share/views/partials/table/files.haml +4 -0
- data/share/views/partials/table/filters.haml +11 -0
- data/share/views/partials/table/page.haml +37 -0
- data/share/views/public/favicon.gif +0 -0
- data/share/views/public/js/_ajax_replace.js +76 -4
- data/share/views/public/js/_fix_tablesorter_science.js +13 -0
- data/share/views/public/js/actions.js +8 -2
- data/share/views/public/js/base.js +12 -1
- data/share/views/public/js/entities.js +39 -7
- data/share/views/public/js/favourites.js +308 -77
- data/share/views/public/js/helpers.js +9 -5
- data/share/views/public/js/lists.js +12 -12
- data/share/views/public/js/maps.js +17 -0
- data/share/views/public/js/reveal.js +48 -0
- data/share/views/public/js/tables.js +110 -51
- data/share/views/public/js/workflow.js +4 -16
- data/share/views/public/plugins/underscore/js/underscore.js +1227 -0
- data/share/views/tasks.haml +12 -1
- data/share/views/wait.haml +7 -0
- metadata +17 -2
@@ -3,7 +3,6 @@
|
|
3
3
|
@import url(http://fonts.googleapis.com/css?family=Open+Sans)
|
4
4
|
|
5
5
|
body, p, h1, h2, h3, h4, h5, h6
|
6
|
-
//font-family: Arial, Liberation Sans,DejaVu Sans,sans-serif
|
7
6
|
font-family: "Open Sans", "Trebuchet MS", "Noticia Text", Verdana, Arial, "Helvetica Neue", Helvetica, sans-serif
|
8
7
|
line-height: 1.4em
|
9
8
|
|
@@ -86,3 +85,32 @@ footer
|
|
86
85
|
|
87
86
|
ul.clean_list
|
88
87
|
list-style: none
|
88
|
+
|
89
|
+
span.error_message
|
90
|
+
font-size: 1.2em
|
91
|
+
display: block
|
92
|
+
margin: 1em 0px
|
93
|
+
|
94
|
+
ul.error_backtrace, ul.step_messages
|
95
|
+
color: gray
|
96
|
+
|
97
|
+
select.favourite_entities
|
98
|
+
option:disabled
|
99
|
+
font-weight: bold
|
100
|
+
|
101
|
+
a.entity.highlighted
|
102
|
+
font-weight: bold
|
103
|
+
|
104
|
+
.help
|
105
|
+
margin: auto
|
106
|
+
ul
|
107
|
+
margin-left: 2em
|
108
|
+
|
109
|
+
p
|
110
|
+
max-width: 60em
|
111
|
+
|
112
|
+
|
113
|
+
a.help
|
114
|
+
display: block
|
115
|
+
font-size: 2em
|
116
|
+
line-height: 2em
|
@@ -10,7 +10,14 @@
|
|
10
10
|
//border: solid 1px darken($white, 10%)
|
11
11
|
@extend .panel
|
12
12
|
|
13
|
-
|
13
|
+
=normal_button()
|
14
|
+
@include button-base
|
15
|
+
@include button-size
|
16
|
+
@include button-style
|
17
|
+
@include radius
|
18
|
+
@include single-transition
|
19
|
+
|
20
|
+
=button-group-list()
|
14
21
|
@include inline-list()
|
15
22
|
@include button-group-container()
|
16
23
|
margin: 0
|
@@ -20,11 +27,16 @@
|
|
20
27
|
margin: 0 2px 0 0
|
21
28
|
|
22
29
|
a
|
23
|
-
|
24
|
-
@include button-size
|
25
|
-
@include button-style
|
26
|
-
@include radius
|
27
|
-
@include single-transition
|
30
|
+
+normal_button()
|
28
31
|
margin-bottom: 2px
|
29
32
|
font-size: 0.8em
|
30
33
|
|
34
|
+
.button-group-list
|
35
|
+
+button-group-list()
|
36
|
+
|
37
|
+
=ellipsis_text()
|
38
|
+
width: 100%
|
39
|
+
overflow: hidden
|
40
|
+
white-space: nowrap
|
41
|
+
text-overflow: ellipsis
|
42
|
+
|
@@ -1,5 +1,8 @@
|
|
1
1
|
$triglecolor: rgba(0,0,0,0.15)
|
2
2
|
table
|
3
|
+
//caption
|
4
|
+
width: 100%
|
5
|
+
|
3
6
|
&.wide
|
4
7
|
td
|
5
8
|
max-width: 200px
|
@@ -18,12 +21,13 @@ table
|
|
18
21
|
@include inline-list()
|
19
22
|
@include button-group-container()
|
20
23
|
margin-bottom: 0
|
21
|
-
float:
|
24
|
+
float: left
|
22
25
|
li.filter
|
23
|
-
|
26
|
+
@media print
|
27
|
+
&
|
24
28
|
display: none
|
25
29
|
|
26
|
-
|
30
|
+
|
27
31
|
&.sorted
|
28
32
|
thead
|
29
33
|
tr
|
@@ -45,3 +49,15 @@ table
|
|
45
49
|
&.headerSortUp:after
|
46
50
|
margin-bottom: 5px
|
47
51
|
@include css-triangle(5px, $triglecolor, bottom)
|
52
|
+
|
53
|
+
.table_column_selector
|
54
|
+
li
|
55
|
+
@include grid-row()
|
56
|
+
|
57
|
+
span
|
58
|
+
@include ellipsis_text()
|
59
|
+
@include grid-column(8)
|
60
|
+
a
|
61
|
+
@include grid-column(2, $last-column:false)
|
62
|
+
|
63
|
+
|
@@ -1,11 +1,17 @@
|
|
1
1
|
#header
|
2
|
+
margin-bottom: 1em
|
2
3
|
nav.top-bar
|
3
4
|
margin-bottom: 0 !important
|
4
5
|
|
6
|
+
section.top-bar-section
|
7
|
+
ul
|
8
|
+
a#reload_page, a#toggle_favourite
|
9
|
+
line-height: 43px
|
10
|
+
|
5
11
|
li#top-add-favourite
|
6
12
|
cursor: pointer
|
7
13
|
li.search
|
8
|
-
width:
|
14
|
+
width: 300px
|
9
15
|
//@include grid-row(nest-collapse)
|
10
16
|
input, button
|
11
17
|
display: inline-block
|
@@ -16,4 +22,4 @@
|
|
16
22
|
left: -5px
|
17
23
|
@media #{$not_small}
|
18
24
|
top: 9
|
19
|
-
|
25
|
+
|
@@ -20,10 +20,17 @@
|
|
20
20
|
- last_resource = nil
|
21
21
|
- controller.actions.each do |action, text, resource, params|
|
22
22
|
%li(class="#{last_resource and last_resource != resource ? "new_resource" : ""}" attr-resource="#{resource}")
|
23
|
-
-
|
23
|
+
- case
|
24
|
+
- when AnnotatedArray === entity
|
24
25
|
- id = params.delete :id if Hash === params
|
25
26
|
- id = controller.id if id.nil?
|
26
27
|
= entity.list_action_link action, text, id, params.merge(:reuse => true)
|
28
|
+
- when TSV === entity
|
29
|
+
- id = params.delete :id if Hash === params
|
30
|
+
- id = controller.id if id.nil?
|
31
|
+
- type = page_entity_type
|
32
|
+
- column = page_entity_map_column
|
33
|
+
%a.entity_map_action(href="#{Entity::REST.entity_map_action_url id, type, column, action}")= text
|
27
34
|
- else
|
28
35
|
= entity.action_link action, text, params
|
29
36
|
- last_resource = resource
|
@@ -24,7 +24,7 @@
|
|
24
24
|
- if list.respond_to? :ensembl
|
25
25
|
%a.ensembl_list(href="#{request.path_info + "?_format=ensembl"}") Ensembl
|
26
26
|
%a.download_list(href="#{request.path_info + "?_format=raw"}") Raw
|
27
|
-
%a.edit_list(href="#"
|
27
|
+
%a.edit_list(href="#") Edit
|
28
28
|
|
29
29
|
.entity_info
|
30
30
|
- info = list.info.dup
|
@@ -39,6 +39,7 @@
|
|
39
39
|
= capture_haml &card.meta
|
40
40
|
|
41
41
|
.entities
|
42
|
+
%p #{list.length} entities
|
42
43
|
- if (defined? force and force) or list.length < 500
|
43
44
|
%ul.entity_list
|
44
45
|
- list = list.sort_by{|g| g.name || "Z" << g} if list.respond_to? :name
|
@@ -46,11 +47,12 @@
|
|
46
47
|
%li= link
|
47
48
|
- else
|
48
49
|
%p
|
49
|
-
=
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
50
|
+
= reveal "Too many entities to list (#{list.length})" do
|
51
|
+
= fragment do
|
52
|
+
- list = list.sort_by{|g| g.name || "Z" << g} if list.respond_to? :name
|
53
|
+
%ul.entity_list
|
54
|
+
- list.link.each do |link|
|
55
|
+
%li= link
|
54
56
|
|
55
57
|
- if card.list_container
|
56
58
|
.entity_lists
|
@@ -0,0 +1,63 @@
|
|
1
|
+
- map = card.map
|
2
|
+
- map_id = card.map_id
|
3
|
+
.entity_map_card(id="#{ map_id.gsub(/\s/,'_') }_card")
|
4
|
+
|
5
|
+
.title
|
6
|
+
.name
|
7
|
+
= map.key_field
|
8
|
+
Map
|
9
|
+
.long_name
|
10
|
+
= Misc.humanize map_id
|
11
|
+
|
12
|
+
.card
|
13
|
+
.sidebar.offcanvas
|
14
|
+
.meta
|
15
|
+
.map_management
|
16
|
+
%ul
|
17
|
+
%li
|
18
|
+
= reveal "Rename" do
|
19
|
+
%form.rename
|
20
|
+
%label New name
|
21
|
+
%input(name='rename' value=map_id)
|
22
|
+
%input(type='submit')
|
23
|
+
|
24
|
+
- if %w(pvalue p.value p-value pvalues p.values p-values).include? map.fields.first.downcase.gsub(/\s/,'')
|
25
|
+
%li
|
26
|
+
- url = add_GET_param(@fullpath, '_format', 'pvalue_score')
|
27
|
+
%a.ensembl(href=url) Pvalue score
|
28
|
+
|
29
|
+
- if Gene == Entity.formats[map.key_field]
|
30
|
+
- if map.key_field != "Ensembl Gene ID"
|
31
|
+
%li
|
32
|
+
- url = add_GET_param(@fullpath, '_format', 'ensembl')
|
33
|
+
%a.ensembl(href=url) Ensembl
|
34
|
+
- if map.key_field != "Associated Gene Name"
|
35
|
+
%li
|
36
|
+
- url = add_GET_param(@fullpath, '_format', 'name')
|
37
|
+
%a.name(href=url) Name
|
38
|
+
- if "Rank" == map.fields.first
|
39
|
+
%li
|
40
|
+
- url = add_GET_param(@fullpath, '_format', 'invert_ranks')
|
41
|
+
%a.invert_ranks(href=url) Invert ranks
|
42
|
+
- else
|
43
|
+
%li
|
44
|
+
- url = add_GET_param(@fullpath, '_format', 'ranks')
|
45
|
+
%a.ranks(href=url) Ranks
|
46
|
+
- if NumericValue == Entity.formats[map.fields.first] or (map.entity_templates[map.fields.first] and map.entity_templates[map.fields.first].annotation_types.include? NumericValue)
|
47
|
+
%li
|
48
|
+
- $page_entity_base_type = page_entity_base_type
|
49
|
+
- $page_entity_map_column = page_entity_map_column
|
50
|
+
= reveal :rank_products do
|
51
|
+
= action_parameters nil, :class => 'rank_products' do
|
52
|
+
- input :map, :select, "Select map to use", nil, :html_options => {:class => 'favourite_maps', :type => $page_entity_base_type, :column => $page_entity_map_column}
|
53
|
+
|
54
|
+
|
55
|
+
|
56
|
+
.content
|
57
|
+
.description
|
58
|
+
= table do
|
59
|
+
- map
|
60
|
+
- if card.action_controller
|
61
|
+
.actions
|
62
|
+
= action_controller_render(card.action_controller)
|
63
|
+
|
data/share/views/error.haml
CHANGED
@@ -1,12 +1,16 @@
|
|
1
1
|
.row
|
2
2
|
.column.small-12
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
3
|
+
%h5 Error processing #{File.basename(job.name)}
|
4
|
+
- if job.messages and job.messages.any?
|
5
|
+
%span.error_message
|
6
|
+
%pre= job.messages[-2]
|
7
|
+
- backtrace = job.info[:backtrace]
|
8
|
+
|
9
|
+
%hr
|
10
|
+
|
11
|
+
- if backtrace and backtrace.any?
|
12
|
+
.row
|
13
|
+
.column.twelve
|
14
|
+
%ul.error_backtrace.clean_list
|
15
|
+
- backtrace.each do |line|
|
16
|
+
%li= line
|
@@ -0,0 +1,34 @@
|
|
1
|
+
.row.help
|
2
|
+
.column.small-12
|
3
|
+
:markdown
|
4
|
+
|
5
|
+
Overview
|
6
|
+
========
|
7
|
+
|
8
|
+
The objective of this page is to offer a collection of functionalities in
|
9
|
+
a uniform interface. It has two operation modes: Centered on the
|
10
|
+
functionalities or centered on the data. The first operation mode is
|
11
|
+
based on *Workflows*, the second on *Entities*. The Entity subsystem is
|
12
|
+
probably the most interesting one, so let us begin there.
|
13
|
+
|
14
|
+
We will devote this document to describe the most general aspects of the
|
15
|
+
application. The information presented and the analysis available depend
|
16
|
+
on the configuration of the application and will be covered elsewhere.
|
17
|
+
|
18
|
+
|
19
|
+
#### A word on performance
|
20
|
+
|
21
|
+
This application is intended to allow interactive investigation. But be
|
22
|
+
aware, some analysis are slow and will not feel that much interactive.
|
23
|
+
Some process may require plenty of infrastructure: downloading of
|
24
|
+
datasets, building databases, computing preliminary results, etc. A lot
|
25
|
+
of this processing is reused system-wide. This means that the application
|
26
|
+
starts slow but get quicker. Unlike other applications with a more limited scope
|
27
|
+
this system cannot foresee what the user will be interested in, so not all
|
28
|
+
this infrastructure can be built before hand and must be built on demand.
|
29
|
+
We pay a price for flexibility by sacrificing responsiveness. But the system
|
30
|
+
has plenty of tricks to be as efficient as possible and to reuse as much
|
31
|
+
as possible.
|
32
|
+
|
33
|
+
%a(href='/help/entity' class="help") Entity subsystem
|
34
|
+
%a(href='/help/workflow' class="help") Workflow subsystem
|
@@ -0,0 +1,193 @@
|
|
1
|
+
.row.help
|
2
|
+
.column.small-12
|
3
|
+
:markdown
|
4
|
+
|
5
|
+
The Entity subsystem
|
6
|
+
=================
|
7
|
+
|
8
|
+
### Introduction: Entities and Entity Lists
|
9
|
+
|
10
|
+
This is the operation mode that regular users most like use. Its
|
11
|
+
organized quite different than other applications you might know. The
|
12
|
+
objective is to provide a simple abstraction to organize and interconnect
|
13
|
+
functionalities and background information. Everything is built around
|
14
|
+
the idea of Entities. An Entity is anything that can be the subject of
|
15
|
+
investigation:
|
16
|
+
|
17
|
+
* genes
|
18
|
+
* proteins
|
19
|
+
* transcripts
|
20
|
+
* drugs
|
21
|
+
* SNPs
|
22
|
+
* samples
|
23
|
+
* studies
|
24
|
+
* pathways
|
25
|
+
* chromosomal ranges
|
26
|
+
* ...
|
27
|
+
|
28
|
+
Each type of entity has associated a number of reports. There is an
|
29
|
+
*Entity Report*, which displays information about an entity. If the
|
30
|
+
entity is a gene, then the report will contain the description of the
|
31
|
+
gene, its isoforms, functional information, and many other things. There
|
32
|
+
is also an *Entity List Report*, which covers not a single entity, but a
|
33
|
+
list of entities. For instance, the report for a list of genomic
|
34
|
+
mutations includes the types of mutations (transversions, transitions,
|
35
|
+
etc), the genes affected, damage predictions, etc.
|
36
|
+
|
37
|
+
Each report links to other reports. For instance, a gene report will
|
38
|
+
include links to reports for its isoforms, the pathways it is associated
|
39
|
+
with, etc. This offers a way to navigate the information and pursue
|
40
|
+
interesting leads.
|
41
|
+
|
42
|
+
In addition to reports, there are also *Actions* associated to Entities
|
43
|
+
and Entity Lists. These Actions are accessible from each report page.
|
44
|
+
The Actions allow the user to issue analysis jobs centered on the current
|
45
|
+
Entity or Entity List. For instance, when viewing the report for a gene
|
46
|
+
lists, which may contain for example all genes mutated recurrently in a
|
47
|
+
cohort, the Actions available include performing enrichment analysis,
|
48
|
+
examining the mutation frequencies of the genes in COSMIC or examining
|
49
|
+
the mutational status of these genes on other genotyping studies that you
|
50
|
+
may have access to.
|
51
|
+
|
52
|
+
Both Entities and Entity Lists can be marked as *Favourites*, this will
|
53
|
+
include a link in the menu on the top of the page. Favourite Lists have
|
54
|
+
some special features, they can be *flagged* any link that points to an
|
55
|
+
entity in the list will be highlighted. This provides a fast an easy way
|
56
|
+
to track a list of interest throughout your explorations. Additionally
|
57
|
+
some Actions may take Entity Lists as inputs, and will allow the user to
|
58
|
+
choose among her Favourite Lists.
|
59
|
+
|
60
|
+
There is a third type of report, the *Entity Map Report*. Its meant as
|
61
|
+
additional way to connect functionalities and is less important right
|
62
|
+
now. They will cover this on the section on *Tables* and ignore them until
|
63
|
+
then.
|
64
|
+
|
65
|
+
All reports are unambiguously identified from its URL, including Actions,
|
66
|
+
which allows to bookmark or share anything with your collaborators.
|
67
|
+
|
68
|
+
#### A simple example
|
69
|
+
|
70
|
+
A common place to start using the application is from a *Study Report*.
|
71
|
+
The Study entity represents a collection of datasets, for instance a
|
72
|
+
cohort of exome sequenced samples for the ICGC CLL study. The report
|
73
|
+
includes a link to all the genes that have mutations altering their
|
74
|
+
protein isoforms in at least two samples; clicking on that link takes as
|
75
|
+
to the *Gene List Report* for the list with name "Recurrently mutated
|
76
|
+
genes in CLL". From the Gene List Report we can access the Action
|
77
|
+
"Enrichment", where we are presented with the option of performing an
|
78
|
+
hypergeometric-based enrichment analysis for functional annotations that
|
79
|
+
include Kegg, The Gene Ontology, Pfam domains, Reactome, and several
|
80
|
+
other functional information databases.
|
81
|
+
|
82
|
+
#### A very important note
|
83
|
+
|
84
|
+
The system must be able to unambiguously and precisely identify the
|
85
|
+
entities. For instance the string "TP53" may seem to clearly identify a
|
86
|
+
gene, yet this is not entirely true. First we need to know the organism
|
87
|
+
it refers to, in this case Human. Consider now that we ask for the
|
88
|
+
genomic coordinates of the gene, this question cannot be answered until
|
89
|
+
we known the version of the build we need to use. By default the system
|
90
|
+
will try the most recent version of the genome in Ensembl, but other
|
91
|
+
builds can be specified. The complete way to specify the organism will be
|
92
|
+
"Hsa/may2009" for the hg18 build or "Hsa/jan2013" for the latest hg19
|
93
|
+
build. This system downloads all data consistently from Ensembl using the
|
94
|
+
builds. Using an explicit version of the build (Hsa/jan2013) instead of
|
95
|
+
just the organism (Hsa) will prevent problems with inconsistencies that
|
96
|
+
could result from downloading different files at different times, where
|
97
|
+
there may have being some updates. The organism codes follow the convention of Kegg, one
|
98
|
+
letter from the *genus*, two from the *species*; Examples: Homo sapiens
|
99
|
+
-- Hsa; Mus musculus -- Mmu. The dates that specify the builds represent
|
100
|
+
the different archives of Ensembl, which is the corner stone of all our
|
101
|
+
genomic data.
|
102
|
+
|
103
|
+
Additionally, there are several ways to refer to the same gene; for
|
104
|
+
instance "TP53" can also be expressed as "ENSG00000141510". So, when
|
105
|
+
asking the system for a gene, the information on the format of the
|
106
|
+
identifier must also be provided. Fortunately, the system will take care
|
107
|
+
of transparently translating identifiers between different formats to
|
108
|
+
match the formats in different resources. It will also propagate the
|
109
|
+
information about the organism across different reports.
|
110
|
+
|
111
|
+
Last but by all means not least: This system is *CASE-SENSITIVE* almost
|
112
|
+
all over the place. TP53 is a Human gene, Tp53 is a Mouse gene, no wiggle
|
113
|
+
room allowed! It might take a little getting used to, but
|
114
|
+
case-insensitive behaviour has been avoided almost all over the system
|
115
|
+
for performance issues. Again, the user should not have to worry about
|
116
|
+
this most of the time, as the system will take care of most details, but
|
117
|
+
its very important to know.
|
118
|
+
|
119
|
+
### User Interface: Basics
|
120
|
+
|
121
|
+
Before we continue let us see how the user interface is organized. The
|
122
|
+
top bar contains the application title, which links to he main page,
|
123
|
+
the *Reload* button, the *Start* button, the *Favourite* menus, and
|
124
|
+
the *Search* box.
|
125
|
+
|
126
|
+
When a report is first requested the result is saved for further use,
|
127
|
+
even if there was an error producing it. This is true for entities,
|
128
|
+
lists, actions, and almost everything else. Clicking the reload button
|
129
|
+
on the browser will just render the saved result. To force regenerating
|
130
|
+
the report you need to use the Reload button on the top of the page.
|
131
|
+
An exception to this are Actions. These can be opened in separate windows,
|
132
|
+
in which case it works as usual, but are more often opened from the
|
133
|
+
*Action Section* of the report, which will be covered bellow. The Action
|
134
|
+
Section has its own Reload button.
|
135
|
+
|
136
|
+
To Star button toggles the favourite status of the current Entity or
|
137
|
+
Entity List. It only works for Entities, Entity Lists, and Entity. It
|
138
|
+
has no effect on Actions, for the time being. The Favourite Menus are
|
139
|
+
updated when the Star button is clicked. If a Favourite is made on a
|
140
|
+
different browser tab or window, the current Favourite Menus can be
|
141
|
+
updated by reloading the page using the browser button (the page should
|
142
|
+
already be saved), or by clicking on the Star button, which also updates
|
143
|
+
the current menus. Input forms and actions that have Entity Lists as
|
144
|
+
inputs will also be updated this way.
|
145
|
+
|
146
|
+
Some parts of the page will be loaded in the background. These include
|
147
|
+
portions of the report that are more costly to compute, or particular
|
148
|
+
processes that are issues by the user interacting with the page. To make
|
149
|
+
the user aware of these, the little number on the far right of the top
|
150
|
+
bar displays the number of processes communicating with the server on
|
151
|
+
background.
|
152
|
+
|
153
|
+
On small devices (tablets and phones), the top-bar will be collapsed and
|
154
|
+
some elements hidden. To display these elements, click on the "Menu"
|
155
|
+
button on the top right.
|
156
|
+
|
157
|
+
|
158
|
+
### User Interface: Report template
|
159
|
+
|
160
|
+
Reports may have any type of content, however, they are usually based on
|
161
|
+
a common template. It has a title on the top row, a side bar on the left,
|
162
|
+
a description on the right, at the top, and the Actions Section bellow
|
163
|
+
it. Note that, depending on the particular report, the description may
|
164
|
+
be empty or there might not be any actions associated to it.
|
165
|
+
|
166
|
+
In general, the sidebar is used to display technical information about
|
167
|
+
the Entity at hand. For a Gene Report, for instance, the sidebar is used
|
168
|
+
to display the format used to specify the gene (such as Ensembl Gene ID),
|
169
|
+
and the organism it refers to. In the case of gene reports, the basic
|
170
|
+
identification information is followed with additional information about
|
171
|
+
isoforms, functional annotations, PubMed articles, etc. On small devices
|
172
|
+
(tablets and phones), the sidebar will hide on the right of the screen,
|
173
|
+
and will be displayed on clicking the blue button on the title section.
|
174
|
+
|
175
|
+
|
176
|
+
### User Interface: Actions
|
177
|
+
|
178
|
+
Entities and Entity Lists may have associated Actions, depending on the
|
179
|
+
type of Entity. When Actions are available for a Report, they are displayed
|
180
|
+
in the Actions Section. This section is composed on an horizontal bar
|
181
|
+
with a button for each each action. When a button is clicked the action
|
182
|
+
is displayed bellow the bar. If the action takes some time, a 'Loading...'
|
183
|
+
message will appear. The bar includes a button to reload an action that
|
184
|
+
has already been computed. If the action accepts parameters, the user
|
185
|
+
will be required to set them. To set the parameters click on the button
|
186
|
+
with a gear; this will display the parameter section. Of course, if the
|
187
|
+
parameters of an action are changed, a new report will be generated;
|
188
|
+
Actions are saved separately for each combination of parameters.
|
189
|
+
|
190
|
+
For actions with large reports, it may be better to open them in a separate
|
191
|
+
window. You can do this using the mouse-right-click, just like any regular
|
192
|
+
link.
|
193
|
+
|