rbbt-views 1.0.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (177) hide show
  1. data/lib/rbbt/workflow/rest.rb +365 -95
  2. data/lib/rbbt/workflow/rest/client.rb +2 -0
  3. data/lib/rbbt/workflow/rest/entity.rb +82 -76
  4. data/lib/rbbt/workflow/rest/finder.rb +78 -0
  5. data/lib/rbbt/workflow/rest/helpers.rb +288 -47
  6. data/lib/rbbt/workflow/rest/notes.rb +125 -0
  7. data/lib/rbbt/workflow/rest/render.rb +280 -240
  8. data/lib/rbbt/workflow/rest/util.rb +47 -31
  9. data/share/views/compass/_base.sass +0 -8
  10. data/share/views/compass/colors.sass +10 -0
  11. data/share/views/compass/colors/ventana_azul.sass +5 -0
  12. data/share/views/compass/compass.config +2 -1
  13. data/share/views/compass/details.sass +50 -0
  14. data/share/views/compass/dom.sass +64 -0
  15. data/share/views/compass/embedded.sass +111 -0
  16. data/share/views/compass/entities.sass +8 -0
  17. data/share/views/compass/error.sass +13 -0
  18. data/share/views/compass/finder.sass +42 -0
  19. data/share/views/compass/fonts.sass +8 -0
  20. data/share/views/compass/form.sass +49 -1
  21. data/share/views/compass/header.sass +68 -0
  22. data/share/views/compass/{main.sass → helpers.sass} +53 -21
  23. data/share/views/compass/layout.sass +31 -199
  24. data/share/views/compass/lists.sass +128 -0
  25. data/share/views/compass/menu.sass +35 -0
  26. data/share/views/compass/notes.sass +52 -0
  27. data/share/views/compass/sizes.sass +8 -0
  28. data/share/views/compass/tables.sass +22 -0
  29. data/share/views/compass/wait.sass +9 -0
  30. data/share/views/edit_list.haml +41 -30
  31. data/share/views/entity/GOTerm.haml +4 -3
  32. data/share/views/entity/Gene.haml +8 -1
  33. data/share/views/entity/GenomicMutation.haml +4 -1
  34. data/share/views/entity/KeggPathway.haml +1 -1
  35. data/share/views/entity/MutatedIsoform.haml +68 -11
  36. data/share/views/entity/NCIBioCartaPathway.haml +2 -3
  37. data/share/views/entity/NCINaturePathway.haml +3 -3
  38. data/share/views/entity/NCIReactomePathway.haml +2 -3
  39. data/share/views/entity/PfamDomain.haml +2 -0
  40. data/share/views/entity/Transcript.haml +10 -0
  41. data/share/views/entity_list/Default.haml +4 -0
  42. data/share/views/entity_list/Default/compare_to_other_lists.haml +41 -0
  43. data/share/views/entity_list/Default/entity_links.haml +6 -0
  44. data/share/views/entity_list/Default/find_in_other_lists.haml +36 -0
  45. data/share/views/error.haml +6 -1
  46. data/share/views/find.haml +10 -0
  47. data/share/views/form.haml +1 -1
  48. data/share/views/info.haml +1 -1
  49. data/share/views/js/_action_setup.js +250 -0
  50. data/share/views/js/_basic.js +269 -0
  51. data/share/views/js/_cytoscape.js +44 -0
  52. data/share/views/js/_details.js +239 -0
  53. data/share/views/js/_dom_updates.js +384 -0
  54. data/share/views/js/_embedded.js +95 -0
  55. data/share/views/js/_images.js +20 -0
  56. data/share/views/js/_layout.js +21 -0
  57. data/share/views/js/_lists.js +224 -0
  58. data/share/views/js/_table.js +36 -0
  59. data/share/views/js/_workflow.js +42 -0
  60. data/share/views/js/app.js +0 -570
  61. data/share/views/js/fix_tablesorter_scientific.js +25 -0
  62. data/share/views/js/json2.js +487 -0
  63. data/share/views/layout.haml +8 -98
  64. data/share/views/notes.haml +15 -0
  65. data/share/views/partials/_form.haml +22 -7
  66. data/share/views/partials/_job_control.haml +8 -8
  67. data/share/views/partials/_list_control.haml +32 -0
  68. data/share/views/partials/_list_header.haml +6 -0
  69. data/share/views/partials/_note_list.haml +64 -0
  70. data/share/views/partials/_result_table.haml +12 -7
  71. data/share/views/partials/_result_table_controls.haml +11 -5
  72. data/share/views/partials/_table.haml +24 -6
  73. data/share/views/partials/layout/_coda.haml +10 -0
  74. data/share/views/partials/layout/_details.haml +25 -0
  75. data/share/views/partials/layout/_head.haml +22 -0
  76. data/share/views/partials/layout/_header.haml +29 -0
  77. data/share/views/partials/layout/_menu.haml +20 -0
  78. data/share/views/partials/layout/_resources.haml +41 -0
  79. data/share/views/public/background.png +0 -0
  80. data/share/views/public/plugins/cytoscape-web/LICENSE.txt +504 -0
  81. data/share/views/public/plugins/cytoscape-web/README.txt +213 -0
  82. data/share/views/public/plugins/cytoscape-web/js/AC_OETags.js +1 -0
  83. data/share/views/public/plugins/cytoscape-web/js/cytoscapeweb.js +1 -0
  84. data/share/views/public/plugins/cytoscape-web/js/json2.js +1 -0
  85. data/share/views/public/plugins/cytoscape-web/swf/CytoscapeWeb.swf +0 -0
  86. data/share/views/public/plugins/cytoscape-web/swf/playerProductInstall.swf +0 -0
  87. data/share/views/public/plugins/fancybox/CHANGELOG.md +68 -0
  88. data/share/views/public/plugins/fancybox/README.md +220 -0
  89. data/share/views/public/plugins/fancybox/css/blank.gif +0 -0
  90. data/share/views/public/plugins/fancybox/css/fancybox_loading.gif +0 -0
  91. data/share/views/public/plugins/fancybox/css/fancybox_sprite.png +0 -0
  92. data/share/views/public/plugins/fancybox/css/jquery.fancybox.css +234 -0
  93. data/share/views/public/plugins/fancybox/helpers/fancybox_buttons.png +0 -0
  94. data/share/views/public/plugins/fancybox/helpers/jquery.fancybox-buttons.css +85 -0
  95. data/share/views/public/plugins/fancybox/helpers/jquery.fancybox-buttons.js +115 -0
  96. data/share/views/public/plugins/fancybox/helpers/jquery.fancybox-media.js +85 -0
  97. data/share/views/public/plugins/fancybox/helpers/jquery.fancybox-thumbs.css +54 -0
  98. data/share/views/public/plugins/fancybox/helpers/jquery.fancybox-thumbs.js +157 -0
  99. data/share/views/public/plugins/fancybox/js/jquery.fancybox.js +1463 -0
  100. data/share/views/public/plugins/fancybox/js/jquery.mousewheel-3.0.6.pack.js +13 -0
  101. data/share/views/public/plugins/fancybox/lib/jquery-1.7.2.min.js +4 -0
  102. data/share/views/public/plugins/featuredimagezoomer/css/featuredimagezoomer.css +8 -0
  103. data/share/views/public/plugins/featuredimagezoomer/images/spinningred.gif +0 -0
  104. data/share/views/public/plugins/featuredimagezoomer/js/featuredimagezoomer.js +245 -0
  105. data/share/views/public/plugins/jquery-ui.hitarea.js +173 -0
  106. data/share/views/public/plugins/jquery/js/jquery-1.8.0.min.js +2 -0
  107. data/share/views/public/plugins/tablesorter/addons/pager/jquery.tablesorter.pager.css +25 -0
  108. data/share/views/public/plugins/tablesorter/addons/pager/jquery.tablesorter.pager.js +184 -0
  109. data/share/views/public/plugins/tablesorter/build.xml +26 -0
  110. data/share/views/public/plugins/tablesorter/build/ParseMaster.js +106 -0
  111. data/share/views/public/plugins/tablesorter/build/js.jar +0 -0
  112. data/share/views/public/plugins/tablesorter/build/jsmin.js +316 -0
  113. data/share/views/public/plugins/tablesorter/build/min.js +5 -0
  114. data/share/views/public/plugins/tablesorter/build/pack.js +5 -0
  115. data/share/views/public/plugins/tablesorter/build/packer.js +316 -0
  116. data/share/views/public/plugins/tablesorter/build/writeFile.js +19 -0
  117. data/share/views/public/plugins/tablesorter/changelog +41 -0
  118. data/share/views/public/plugins/tablesorter/docs/assets/ajax-content.html +43 -0
  119. data/share/views/public/plugins/tablesorter/docs/css/jq.css +29 -0
  120. data/share/views/public/plugins/tablesorter/docs/example-ajax.html +119 -0
  121. data/share/views/public/plugins/tablesorter/docs/example-empty-table.html +75 -0
  122. data/share/views/public/plugins/tablesorter/docs/example-extending-defaults.html +109 -0
  123. data/share/views/public/plugins/tablesorter/docs/example-meta-headers.html +108 -0
  124. data/share/views/public/plugins/tablesorter/docs/example-meta-parsers.html +105 -0
  125. data/share/views/public/plugins/tablesorter/docs/example-meta-sort-list.html +107 -0
  126. data/share/views/public/plugins/tablesorter/docs/example-option-debug.html +116 -0
  127. data/share/views/public/plugins/tablesorter/docs/example-option-digits.html +106 -0
  128. data/share/views/public/plugins/tablesorter/docs/example-option-sort-force.html +107 -0
  129. data/share/views/public/plugins/tablesorter/docs/example-option-sort-key.html +108 -0
  130. data/share/views/public/plugins/tablesorter/docs/example-option-sort-list.html +108 -0
  131. data/share/views/public/plugins/tablesorter/docs/example-option-sort-order.html +108 -0
  132. data/share/views/public/plugins/tablesorter/docs/example-option-text-extraction.html +85 -0
  133. data/share/views/public/plugins/tablesorter/docs/example-options-headers.html +118 -0
  134. data/share/views/public/plugins/tablesorter/docs/example-pager.html +329 -0
  135. data/share/views/public/plugins/tablesorter/docs/example-parsers.html +112 -0
  136. data/share/views/public/plugins/tablesorter/docs/example-trigger-sort.html +113 -0
  137. data/share/views/public/plugins/tablesorter/docs/example-triggers.html +336 -0
  138. data/share/views/public/plugins/tablesorter/docs/example-update-cell.html +118 -0
  139. data/share/views/public/plugins/tablesorter/docs/example-widgets.html +383 -0
  140. data/share/views/public/plugins/tablesorter/docs/img/external.png +0 -0
  141. data/share/views/public/plugins/tablesorter/docs/index.html +576 -0
  142. data/share/views/public/plugins/tablesorter/docs/js/docs.js +23 -0
  143. data/share/views/public/plugins/tablesorter/docs/js/examples.js +29 -0
  144. data/share/views/public/plugins/tablesorter/jquery-latest.js +154 -0
  145. data/share/views/public/plugins/tablesorter/jquery.metadata.js +122 -0
  146. data/share/views/public/plugins/tablesorter/jquery.tablesorter.js +1031 -0
  147. data/share/views/public/plugins/tablesorter/jquery.tablesorter.min.js +4 -0
  148. data/share/views/public/plugins/tablesorter/tests/assets/ajax-content.html +28 -0
  149. data/share/views/public/plugins/tablesorter/tests/cell.metadata.html +112 -0
  150. data/share/views/public/plugins/tablesorter/tests/checkbox.html +117 -0
  151. data/share/views/public/plugins/tablesorter/tests/colspan.html +149 -0
  152. data/share/views/public/plugins/tablesorter/tests/demo.html +353 -0
  153. data/share/views/public/plugins/tablesorter/tests/index.html +22 -0
  154. data/share/views/public/plugins/tablesorter/tests/large.html +30 -0
  155. data/share/views/public/plugins/tablesorter/tests/lockedOrder.html +355 -0
  156. data/share/views/public/plugins/tablesorter/tests/metadata.html +320 -0
  157. data/share/views/public/plugins/tablesorter/tests/multiple-headers.html +67 -0
  158. data/share/views/public/plugins/tablesorter/tests/pager.html +553 -0
  159. data/share/views/public/plugins/tablesorter/themes/blue/asc.gif +0 -0
  160. data/share/views/public/plugins/tablesorter/themes/blue/bg.gif +0 -0
  161. data/share/views/public/plugins/tablesorter/themes/blue/blue.zip +0 -0
  162. data/share/views/public/plugins/tablesorter/themes/blue/desc.gif +0 -0
  163. data/share/views/public/plugins/tablesorter/themes/blue/style.css +39 -0
  164. data/share/views/public/plugins/tablesorter/themes/green/asc.png +0 -0
  165. data/share/views/public/plugins/tablesorter/themes/green/bg.png +0 -0
  166. data/share/views/public/plugins/tablesorter/themes/green/desc.png +0 -0
  167. data/share/views/public/plugins/tablesorter/themes/green/green.zip +0 -0
  168. data/share/views/public/plugins/tablesorter/themes/green/style.css +39 -0
  169. data/share/views/public/plugins/wz_jsgraphics.js +1108 -0
  170. data/share/views/public/tmp/foo +0 -0
  171. data/share/views/result.haml +6 -1
  172. data/share/views/step_error.haml +5 -0
  173. data/share/views/user_lists.haml +8 -7
  174. data/share/views/wait.haml +40 -2
  175. metadata +302 -106
  176. data/share/views/compass/screen.sass +0 -8
  177. data/share/views/public/plugins/jquery/js/jquery-1.6.2.min.js +0 -18
@@ -0,0 +1,44 @@
1
+
2
+ function setup_cytoscape_visualization(dom_id){
3
+ var options = {
4
+ // where you have the Cytoscape Web SWF
5
+ swfPath: "/plugins/cytoscape-web/swf/CytoscapeWeb",
6
+ // where you have the Flash installer SWF
7
+ flashInstallerPath: "/plugins/cytoscape-web/swf/playerProductInstall"
8
+ };
9
+
10
+ // init and draw
11
+ var cytoscape_visualization = new org.cytoscapeweb.Visualization(dom_id, options);
12
+
13
+ cytoscape_visualization.addListener("click", "nodes", function(event){
14
+ var href = event.target.data['url'];
15
+ if (undefined === href){ return }
16
+
17
+ if ($('#details').hasClass("expanded")){
18
+ size = "normal";
19
+ }else{
20
+ size = "small";
21
+ }
22
+
23
+ $('#details_controls a#link_details').attr('href', remove_parameter(href, '_update'))
24
+ update_detail_controls(href)
25
+ show_details();
26
+
27
+
28
+ var old_url = $('#details').attr('url');
29
+ _update_details(href, size, function(data){
30
+ if (old_url != null && old_url != undefined ){
31
+ details_history.push(old_url);
32
+ }
33
+ $('#details').html(data).removeClass("loading").removeClass("error");
34
+ rbbt_action_setup();
35
+ });
36
+
37
+ return false;
38
+ })
39
+
40
+ var network_json = cytoscape_visualizations[dom_id]["network_json"]
41
+ var visual_style = cytoscape_visualizations[dom_id]["visual_style"]
42
+ cytoscape_visualization.draw({ network: network_json, visualStyle: visual_style });
43
+ }
44
+
@@ -0,0 +1,239 @@
1
+ //{{{ DETAILS
2
+
3
+ function _update_details(url, size, success){
4
+ var old_url = $('#details').attr('url');
5
+ $('#details').attr('url', remove_parameter(url, '_update'))
6
+ $.ajax(add_parameters(url, '_size=' + size + '&_cache_type=async'), {
7
+ cache: false,
8
+ success: function( data, stat, req ) {
9
+ if (req.status == 202){
10
+ var ajax_obj = this;
11
+ url = remove_parameter(url, '_update');
12
+
13
+ if ($('#details').attr('url') == undefined || $('#details').attr('url') == url){
14
+ $('#details').html("<span class='details_loading'>Loading " + unescape(url).replace(/\+/g, " ") + "</span>").addClass("loading").removeClass("error");
15
+ }
16
+ setTimeout(function(){ if ($('#details').attr('url') == undefined || $('#details').attr('url') == url){ _update_details(url, size, success) } }, 3000);
17
+
18
+ }else{
19
+ url = remove_parameter(url, '_update');
20
+ if ($('#details').attr('url') == undefined || $('#details').attr('url') == url){
21
+ success(data);
22
+ }
23
+ }
24
+ },
25
+ timeout: 20000,
26
+ error: function(x, t, m) {
27
+ if (t == 'timeout'){
28
+ $('#details').html("<span class='details_wait'>Timeout loading: " + unescape(url).replace(/\+/g, " ") + ". Some processes can take long, click <a class='waiting_details' href=#>retry</a> after a while.");
29
+ var ajax_obj = this;
30
+ $('#details').find('a.waiting_details').click(function(){
31
+ $('#details').html("<span class='details_retrying'>Retrying: " + unescape(url).replace(/\+/g, " ") + "</span>");
32
+ $.ajax(ajax_obj);
33
+ })
34
+ }else{
35
+ $('#details').html("<span class='details_error'>Error loading " + unescape(url).replace(/\+/g, " ") + "</span>");
36
+ }
37
+ }
38
+ })
39
+ }
40
+
41
+ function load_in_details(href){
42
+ if ($('#details').hasClass("expanded")){
43
+ size = "normal";
44
+ }else{
45
+ size = "small";
46
+ }
47
+
48
+ $('#details_controls a#link_details').attr('href', remove_parameter(href, '_update'))
49
+ update_detail_controls(href)
50
+ show_details();
51
+
52
+ var old_url = $('#details').attr('url');
53
+ $('#details').html("<span class='details_loading'>Loading " + unescape(href).replace(/\+/g, " ") + "</span>").addClass("loading").removeClass("error");
54
+
55
+ _update_details(href, size, function(data){
56
+ if (old_url != null && old_url != undefined ){
57
+ details_history.push(old_url);
58
+ }
59
+ $('#details').html(data).removeClass("loading").removeClass("error");
60
+ rbbt_action_setup();
61
+ })
62
+ return false;
63
+ }
64
+
65
+ function back_details(){
66
+ var url = details_history.pop();
67
+ if (url != null && url != undefined ){
68
+
69
+ if ($('#details').hasClass("expanded")){
70
+ size = "normal";
71
+ }else{
72
+ size = "small";
73
+ }
74
+
75
+ update_detail_controls(url);
76
+ _update_details(url, size, function(data){
77
+ $('#details').html(data).removeClass("loading").removeClass("error");
78
+ rbbt_action_setup();
79
+ });
80
+ }
81
+ return false;
82
+ }
83
+
84
+ function reload_details(){
85
+ var url = $('#details').attr('url')
86
+ if (url != null && url != undefined ){
87
+
88
+ if ($('#details').hasClass("expanded")){
89
+ size = "normal";
90
+ }else{
91
+ size = "small";
92
+ }
93
+
94
+ update_detail_controls(url);
95
+
96
+ _update_details(add_parameters(url, "_update=reload"), size, function(data){
97
+ $('#details').html(data).removeClass("loading").removeClass("error");
98
+ rbbt_action_setup();
99
+ });
100
+ }
101
+ return false;
102
+ }
103
+
104
+ function expand_details(){
105
+ var url = $('#details').attr('url');
106
+ if (url == null) return false;
107
+
108
+ $('#main').hide()
109
+ $('#details').addClass("expanded")
110
+ $('#details').html("<span class='details_loading'>Loading " + unescape(url).replace(/\+/g, " ") + "</span>").addClass("loading").removeClass("error");
111
+
112
+ update_detail_controls(url);
113
+ _update_details(url, "normal", function(data){
114
+ $('#details').html(data).removeClass("loading").removeClass("error");
115
+ rbbt_action_setup();
116
+ });
117
+
118
+ return false
119
+ }
120
+
121
+ function contract_details(){
122
+ var url = $('#details').attr('url');
123
+ if (url == null) return false;
124
+
125
+ $('#main').show()
126
+ $('#details').removeClass("expanded")
127
+ $('#details').html("<span class='details_loading'>Loading " + unescape(url).replace(/\+/g, " ") + "</span>").addClass("loading").removeClass("error");
128
+
129
+ update_detail_controls(url);
130
+ _update_details(url, "small", function(data){
131
+ $('#details').html(data).removeClass("loading").removeClass("error");
132
+ rbbt_action_setup();
133
+ });
134
+
135
+ return false
136
+ }
137
+
138
+ function update_detail_controls(href){
139
+ var type = href.replace(/^\/entity(?:_list)?\//, '').replace(/\/.*/,'').replace(/:.*/,'')
140
+
141
+ if (href.match(/entity_list/)){
142
+ var id = href.replace(/^\/entity_list\/[^\/]*\//, '').replace(/\?.*/,'')
143
+ $('div#details_controls > ul > li.save').hide();
144
+ $('div#details_controls > ul > li.select').show();
145
+ $('#details_controls').find('span.entity_type').html(type + ' list')
146
+ $('#details_controls').find('li.select > a.select_list').attr('attr-list-type', type).attr('attr-list', id).removeClass('rbbt_action_setup')
147
+ }else{
148
+ $('div#details_controls').find('select.loaded_lists').attr('type', type).find('option[class*=automatic_load]').remove()
149
+ $('div#details_controls > ul > li.select').hide();
150
+ $('div#details_controls > ul > li.save').show();
151
+ $('#details_controls').find('span.entity_type').html(type)
152
+ }
153
+
154
+ }
155
+
156
+ function show_details(){
157
+ var main_size = $(window).height() - $('#details').outerHeight(true) - $('#details_controls').outerHeight(true) - $('#header').outerHeight(true) - 80;
158
+ var scroll_top = $(window).scrollTop();
159
+ scroll(0,0);
160
+ $('#details').show();
161
+ $('#details_controls').show();
162
+
163
+ var main = $('#main');
164
+ if (! main.hasClass('contracted')){
165
+ $('#main').css('height', main_size).addClass('contracted');
166
+ $('#main').scrollTop(scroll_top);
167
+ }
168
+ $('#menu').css('height', main_size + $('#details').outerHeight() + $('#details_controls').outerHeight()).addClass('contracted');
169
+ return false;
170
+ }
171
+
172
+ function hide_details(){
173
+ details_history = [];
174
+ var scroll_top = $('#main').scrollTop();
175
+ $('#main').show();
176
+ $('#details').hide().removeClass('expanded');
177
+ $('#details').attr('href', null);
178
+ $('#details_controls').hide();
179
+ $('#main').scrollTop(0);//.css('height', '100%');
180
+ $('#main').removeClass('contracted');//.css('height', '100%');
181
+ $(window).scrollTop(scroll_top);
182
+ return false;
183
+ }
184
+
185
+ function toggle_expand_details(){
186
+ if ($('#details').hasClass('expanded')){
187
+ contract_details();
188
+ }else{
189
+ expand_details();
190
+ }
191
+ return false
192
+ }
193
+
194
+ function save_details(){
195
+ var details = $('#details');
196
+ var type = details.attr('type');
197
+ var list = $('#details_controls').find('select.loaded_lists').val();
198
+ var url = details.attr('url')
199
+ url = url.replace('/entity/', '/entity_list/')
200
+
201
+ if (url.search(/\?/) > 0){
202
+ url = url.replace('?', '/' + list + '?')
203
+ }else{
204
+ url = url + '/' + list
205
+ }
206
+
207
+ $.ajax(url, {
208
+ cache: false,
209
+ type: 'POST',
210
+ success: function(data){
211
+ update_saved_lists()
212
+ },
213
+ timeout: 20000,
214
+ error: function(x, t, m) {
215
+ if (t == 'timeout'){
216
+ $('#details').html("<span class='details_wait'>Timeout loading: " + href + ". Some processes can take long, click <a class='waiting_details' href=#>retry</a> after a while.");
217
+ var ajax_obj = this
218
+ $('#details').find('a.waiting_details').click(function(){
219
+ $('#details').html("<span class='details_retrying'>Retrying: " + href + "</span>");
220
+ $.ajax(ajax_obj)
221
+ });
222
+ }else{
223
+ $('#details').html("<span class='details_error'>Error loading " + href + "</span>");
224
+ }
225
+ }
226
+ })
227
+ }
228
+
229
+ function link_details(){
230
+ var details = $('#details');
231
+ var type = details.attr('type');
232
+ var list = $('#details_controls').find('select.loaded_lists').val();
233
+ var url = details.attr('url')
234
+
235
+ window.open(url)
236
+ return false;
237
+ }
238
+
239
+
@@ -0,0 +1,384 @@
1
+ //{{{ DOM UPDATE
2
+
3
+ var rbbt_updater = []
4
+
5
+ function register_dom_update(selector, func){
6
+ if (rbbt_updater[selector] === undefined){
7
+ rbbt_updater[selector] = [func];
8
+ }else{
9
+ rbbt_updater[selector].push(func);
10
+ }
11
+ }
12
+
13
+ function update_dom(){
14
+ for (selector in rbbt_updater){
15
+ var elements = $(selector).not('[class*=rbbt_action_setup]')
16
+ if (elements.length > 0){
17
+ elements.addClass('rbbt_action_setup')
18
+ $.each(rbbt_updater[selector], function(){
19
+ this(elements);
20
+ })
21
+ }
22
+ }
23
+ }
24
+
25
+ // Updates
26
+
27
+ register_dom_update('a.entity, a.entity_list', function(links){
28
+ links.each(function(){
29
+ var link = $(this);
30
+ link.click(function(){load_in_details($(this).attr('href')); return false;}).addClass('rbbt_action_setup');
31
+ })
32
+ })
33
+
34
+ register_dom_update('table', function(table){
35
+ table.tablesorter().addClass('sortable');
36
+ fix_long_table_cells(table);
37
+ })
38
+
39
+ register_dom_update('.embedded > header', function(headers){
40
+ headers.each(function(){
41
+ var header = $(this);
42
+ var embedded = header.parent('.embedded');
43
+ var href = embedded.attr('target');
44
+
45
+ if (header.find('ul.embedded_control').length == 0){
46
+ var html = header.html();
47
+ if (embedded.hasClass('check_replace')){
48
+ html = html + '<ul class="embedded_control"><li><a class="toggle_embedded">toggle</a></li><li><a class="delete_embedded">delete</a></li><li><a class="reload_embedded">reload</a></li><li><a class="link_embedded" href="'+ href + '">link</a></li></ul>';
49
+ }else{
50
+ html = html + '<ul class="embedded_control"><li><a class="toggle_embedded">toggle</a></li><li><a class="reload_embedded">reload</a></li><li><a class="link_embedded" href="'+ href + '">link</a></li></ul>';
51
+ }
52
+ header.html(html);
53
+ }
54
+
55
+ rbbt_action_setup();
56
+ })
57
+ });
58
+
59
+ register_dom_update('.embedded > header', function(header){
60
+ header.click(function(){
61
+ $(this).parent('.embedded').toggleClass('active_controls');
62
+ })
63
+ })
64
+
65
+ register_dom_update('.DELETE, .POST', function(link){
66
+ link.click(function() {
67
+ if(true) {
68
+ var link = $(this);
69
+ var target_id = link.attr('rel')
70
+ var href = link.attr('href');
71
+
72
+ $.ajax({
73
+ cache: false, url:href, data:{ _method: $(this).getClassInList(['POST', 'DELETE'])}, type:"post", asyn:false,
74
+ success: function(){if (target_id != null){ link.remove(); $("#" + target_id).remove();}}
75
+ })
76
+ }
77
+ return false;
78
+ })
79
+ })
80
+
81
+
82
+ register_dom_update('a.open_ellipsis', function(link){
83
+ link.click(function(){
84
+ var link = $(this);
85
+ var span = link.parent('span');
86
+ var cell = span.parent();
87
+ restore_ellipsis(cell);
88
+
89
+ return(false);
90
+ })
91
+ })
92
+
93
+ register_dom_update('.exec_job', function(link){
94
+ link.click(function(){
95
+ var link = $(this);
96
+ var workflow = link.attr('attr-workflow');
97
+ var task = link.attr('attr-task');
98
+ var params = JSON.parse(link.attr('attr-params'));
99
+
100
+ exec_job(workflow, task, params);
101
+ })
102
+ })
103
+
104
+ register_dom_update('a.share_note', function(link){
105
+ link.click(function(){
106
+ var link = $(this);
107
+ var ul = link.parent('li').parent('ul')
108
+
109
+ var target_id = link.attr('rel')
110
+ var href = link.attr('href');
111
+ $.ajax({cache: false, url:href, data:{ _method: $(this).getClassInList(['POST', 'DELETE'])}, type:"post", asyn:false, success: function(){if (target_id != null){ link.remove(); $("#" + target_id).remove();}}})
112
+
113
+ ul.attr('shared', 'true')
114
+ return false
115
+ })
116
+ })
117
+
118
+ register_dom_update('a.unshare_note', function(link){
119
+ link.click(function(){
120
+ var link = $(this);
121
+ var ul = link.parent('li').parent('ul');
122
+
123
+ var target_id = link.attr('rel')
124
+ var href = link.attr('href');
125
+ $.ajax({cache: false, url:href, data:{ _method: $(this).getClassInList(['POST', 'DELETE'])}, type:"post", asyn:false, success: function(){if (target_id != null){ link.remove(); $("#" + target_id).remove();}}})
126
+
127
+ ul.attr('shared', 'false')
128
+ return false
129
+ })
130
+ })
131
+
132
+ register_dom_update('a.compare_list', function(link){
133
+ link.click(function(){
134
+ var link = $(this);
135
+ var list = link.attr('attr-list');
136
+ var type = link.attr('attr-list-type');
137
+
138
+ var loaded_lists = entity_lists[type];
139
+
140
+ $('div.compare_list').remove();
141
+
142
+ var div = $('<div class="compare_list"></div>');
143
+ var close = $('<a class="close_compare_list">close</a>');
144
+ var header = $('<header></header>');
145
+ header.html('Compare ' + list + ' with:');
146
+ div.append(close);
147
+ div.append(header);
148
+
149
+ var ul = $('<ul></ul>');
150
+
151
+ for (list_name in loaded_lists){
152
+ if ( list_name != list ) {
153
+ var li = $('<li></li>');
154
+ var span = $('<span class="list_name"></span>').html(list_name);
155
+ var add = $('<a class="add_list">add</a>').attr('attr-source-list', list).attr('attr-target-list', list_name).attr('attr-list-type', type);
156
+ var del = $('<a class="delete_list">delete</a>').attr('attr-source-list', list).attr('attr-target-list', list_name).attr('attr-list-type', type);
157
+ var intersect = $('<a class="intersect_list">intersect</a>').attr('attr-source-list', list).attr('attr-target-list', list_name).attr('attr-list-type', type);
158
+ li.append(span).append(add).append(del).append(intersect)
159
+ ul.append(li);
160
+ }
161
+ }
162
+
163
+ if (ul.find('li').length > 0){
164
+ div.append(ul);
165
+ }else{
166
+ div.append('No lists loaded for this entity type');
167
+ }
168
+
169
+ div.css('top', $('#main').scrollTop() + 20);
170
+
171
+
172
+ $('#content').append(div);
173
+
174
+ rbbt_action_setup();
175
+
176
+ return false;
177
+ })
178
+ })
179
+
180
+ register_dom_update('a.close_compare_list', function(link){
181
+ link.click(function(){
182
+ var link = $(this);
183
+ link.parent().remove();
184
+ })
185
+ })
186
+
187
+ register_dom_update('a.add_list', function(link){
188
+ link.click(function(){
189
+ var link = $(this);
190
+ var type = link.attr('attr-list-type');
191
+ var source = link.attr('attr-source-list');
192
+ var target = link.attr('attr-target-list');
193
+
194
+ var new_id = escape('(' + source + ' PLUS ' + target + ')');
195
+
196
+ var copy_url = "/entity_list/" + type + "/copy/" + source + "?new_id=" + new_id;
197
+
198
+ $('div.compare_list').remove();
199
+ $.ajax({cache: false, url:copy_url, data:{ _method: $(this).getClassInList(['POST', 'DELETE'])}, type:"post", async:false,
200
+ success: function(){
201
+ var add_url = "/entity_list/" + type + "/add/" + new_id + "?other_list=" + target;
202
+ $.ajax({cache: false, url:add_url, data:{ _method: $(this).getClassInList(['POST', 'DELETE'])}, type:"post", async:false,
203
+ success: function(){
204
+ var new_list_url = "/entity_list/" + type + '/' + new_id;
205
+ load_in_details(new_list_url);
206
+ }})
207
+ }})
208
+ })
209
+ })
210
+
211
+ register_dom_update('a.delete_list', function(link){
212
+ link.click(function(){
213
+ var link = $(this);
214
+ var type = link.attr('attr-list-type');
215
+ var source = link.attr('attr-source-list');
216
+ var target = link.attr('attr-target-list');
217
+
218
+ var new_id = escape('(' + source + ' - ' + target + ')');
219
+
220
+ var copy_url = "/entity_list/" + type + "/copy/" + source + "?new_id=" + new_id;
221
+
222
+ $('div.compare_list').remove();
223
+ $.ajax({cache: false, url:copy_url, data:{ _method: $(this).getClassInList(['POST', 'DELETE'])}, type:"post", async:false,
224
+ success: function(){
225
+ var del_url = "/entity_list/" + type + "/remove/" + new_id + "?other_list=" + target;
226
+ $.ajax({cache: false, url:del_url, data:{ _method: $(this).getClassInList(['POST', 'DELETE'])}, type:"post", async:false,
227
+ success: function(){
228
+ var new_list_url = "/entity_list/" + type + '/' + new_id;
229
+ load_in_details(new_list_url);
230
+ }})
231
+ }})
232
+ })
233
+ })
234
+
235
+ register_dom_update('a.rename_list', function(link){
236
+ link.click(function(){
237
+ var link = $(this);
238
+ var id = link.attr('attr-list');
239
+ var type = link.attr('attr-list-type');
240
+ var rename_input = link.siblings('input.rename_list[attr-list="' + id + '"]').first();
241
+ var new_id = rename_input.val();
242
+
243
+ var copy_url = "/entity_list/" + type + "/copy/" + id + "?new_id=" + new_id;
244
+
245
+ $.ajax({cache: false, url:copy_url, data:{ _method: $(this).getClassInList(['POST', 'DELETE'])}, type:"post", async:false,
246
+ success: function(){
247
+ var new_list_url = "/entity_list/" + type + '/' + new_id;
248
+ load_in_details(new_list_url);
249
+ var delete_list_url = "/entity_list/" + type + '/' + id;
250
+ $.ajax({cache: false, url:delete_list_url, data:{ _method: 'DELETE'}, type:"post", async:true})
251
+ }})
252
+ })
253
+ })
254
+
255
+ register_dom_update('a.intersect_list', function(link){
256
+ link.click(function(){
257
+ var link = $(this);
258
+ var type = link.attr('attr-list-type');
259
+ var source = link.attr('attr-source-list');
260
+ var target = link.attr('attr-target-list');
261
+
262
+ var new_id = escape('(' + source + ' AND ' + target + ')');
263
+
264
+ var copy_url = "/entity_list/" + type + "/copy/" + source + "?new_id=" + new_id;
265
+
266
+ $('div.compare_list').remove();
267
+ $.ajax({cache: false, url:copy_url, data:{ _method: $(this).getClassInList(['POST', 'DELETE'])}, type:"post", async:false,
268
+ success: function(){
269
+ var del_url = "/entity_list/" + type + "/subset/" + new_id + "?other_list=" + target;
270
+ $.ajax({cache: false, url:del_url, data:{ _method: $(this).getClassInList(['POST', 'DELETE'])}, type:"post", async:false,
271
+ success: function(){
272
+ var new_list_url = "/entity_list/" + type + '/' + new_id;
273
+ load_in_details(new_list_url);
274
+ }})
275
+ }})
276
+ })
277
+ })
278
+
279
+ register_dom_update('h3.workflow_title', function(link){
280
+ link.click(function(){
281
+ var target = $(this).attr('target');
282
+ $('div#' + target).toggle();
283
+ });
284
+ })
285
+
286
+
287
+ register_dom_update('span.notes a', function(link){
288
+ link.click(function(){
289
+ var url = window.location.toString();
290
+
291
+
292
+ url = remove_parameter(url, '_update');
293
+ url = remove_parameter(url, '_');
294
+
295
+ url = url.replace(/http:\/\/[^\/]+\//, '/notes/')
296
+
297
+ window.location = url
298
+ return false
299
+ })
300
+ })
301
+
302
+ register_dom_update('span.reload_page a', function(link){
303
+ link.click(function(){
304
+ var url = window.location.toString();
305
+
306
+
307
+ url = remove_parameter(url, '_update');
308
+ url = add_parameters(url, '_update=reload');
309
+
310
+ url = remove_parameter(url, '_');
311
+ url = add_parameters(url, '_=' + Math.random().toString());
312
+
313
+ window.location = url
314
+ return false
315
+ })
316
+ })
317
+
318
+ register_dom_update('span.list_dropdown > a', function(link){
319
+ link.click(function(){ $('#lists').toggle(); return false})
320
+ })
321
+
322
+ register_dom_update("input#find", function(elem){
323
+ elem.autocomplete({
324
+ source: "/find",
325
+ minLength: 2,
326
+ appendTo: '#find_wrapper'
327
+ }).data( "autocomplete" )._renderItem = function( ul, item ) {
328
+ var litem = $( "<li></li>" ).data( "item.autocomplete", item )
329
+ var link = $("<a class='select_autocomplete'></a>");
330
+
331
+ link.append("<span class='match'>" + item.best + "</span>" )
332
+ link.append( "<span class='code'>" + item.value + "</span>")
333
+ link.appendTo(litem);
334
+ litem.appendTo( ul );
335
+ };
336
+ })
337
+
338
+ register_dom_update('div.cytoscape_visualization', function(elem){
339
+ var dom_id = elem.attr('id');
340
+ setup_cytoscape_visualization(dom_id);
341
+ })
342
+
343
+ // SCREEN WIDE AND CENTER
344
+ var screen_size = $('#main').css('width');
345
+
346
+ function widen_screen(){
347
+ $('#main').css('width', 'auto')
348
+ $('#details').css('width', 'auto')
349
+ $('#details_controls').css('width', 'auto')
350
+ $.cookie('wide', 'true', {path: '/', expires: 30});
351
+ $('#header span.wide a').addClass('hide');
352
+ $('#header span.centered a').removeClass('hide');
353
+ }
354
+
355
+ function center_screen(){
356
+ $('#main').css('width', screen_size);
357
+ $('#details').css('width', screen_size);
358
+ $('#details_controls').css('width', screen_size);
359
+ $.cookie('wide',null, {path: '/', expires: 30});
360
+ $('#header span.centered a').addClass('hide');
361
+ $('#header span.wide a').removeClass('hide');
362
+ }
363
+
364
+ register_dom_update('#header span.wide a', function(link){
365
+ link.click(function(){
366
+ widen_screen();
367
+ rbbt_action_setup();
368
+ return false;
369
+ })
370
+ })
371
+
372
+ register_dom_update('#header span.centered a', function(link){
373
+ link.click(function(){
374
+ center_screen();
375
+ rbbt_action_setup();
376
+ return false;
377
+ })
378
+ })
379
+
380
+ if ($.cookie('wide') != null){
381
+ widen_screen();
382
+ }
383
+
384
+