rbbt-views 1.0.0 → 1.0.1

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.
@@ -0,0 +1,39 @@
1
+ %a(href="/entity_list/#{ type }/#{ id }") View
2
+
3
+ %form(action="#{File.join('/entity_list', type, 'copy', id)}" method='post')
4
+ %label Copy as:
5
+ %input(name='new_id')
6
+ %input(type='submit')
7
+
8
+ %form(action="#{File.join('/entity_list', type, 'add', id)}" method='post')
9
+ %label Add other list:
10
+ %select.loaded_lists(name="other_list" type=type)
11
+ %input(type='submit')
12
+
13
+ %form(action="#{File.join('/entity_list', type, 'subset', id)}" method='post')
14
+ %label Subset other list:
15
+ %select.loaded_lists(name="other_list" type=type)
16
+ %input(type='submit')
17
+
18
+ %form(action="#{File.join('/entity_list', type, 'remove', id)}" method='post')
19
+ %label Remove other list:
20
+ %select.loaded_lists(name="other_list" type=type)
21
+ %input(type='submit')
22
+
23
+
24
+ %ul.entity_list
25
+ - list.each do |entity|
26
+ - values = {}
27
+ - types = {}
28
+ - entity.info.each{|k,v| values[k] = String === v ? v : v.to_json; types[k] = :string }
29
+
30
+ %li(id="#{entity.id}")
31
+ = entity.respond_to?(:link) ? entity.link : entity
32
+ \.
33
+ %a.DELETE.remove_entity_from_list(rel="#{entity.id}" href="/entity_list/#{ type }/#{ entity }/#{ id }") remove
34
+ -#- form_id = "edit_entity_#{id}_#{entity.to_s}".gsub(/\s/, '_')
35
+ -#%a.open_edit_controls(href="#edit_controls" ref=form_id) edit
36
+ -#.edit_controls
37
+ -# - action = File.join("/entity_list", type, entity, id)
38
+ -# = workflow_partial('partials/_form', workflow, :values => values, :inputs => values.keys, :input_types => types, :action => action, :method => "post", :id => form_id)
39
+
@@ -3,8 +3,18 @@
3
3
  %p== reference base: #{entity.reference}
4
4
  %p== Genes: #{entity.genes.nil? ? "none" : entity.genes.link * ", "}
5
5
 
6
+ - if entity.in_exon_junction?
7
+ %p In Exon Junction
8
+
6
9
  %a(href="#{entity.ensembl_browser}") Ensembl Browser
7
10
 
8
11
  %ul
9
12
  - (entity.mutated_isoforms || []).select{|mi| mi.consequence != "SYNONYMOUS"}.each do |mi|
10
- %li= mi.link
13
+ %li
14
+ = mi.link
15
+ %span.note
16
+ - pdbs = mi.pdbs
17
+ - if pdbs.nil? or pdbs.empty?
18
+ [No PDBs]
19
+ - else
20
+ == [#{pdbs.length} PDBs]
@@ -1,12 +1,14 @@
1
1
  %h3= entity.name
2
2
 
3
- - genes_in_pathway = Gene.setup(KEGG.index2genes[entity], "KEGG Gene ID", "Hsa").from_kegg
3
+ - genes_in_pathway = Gene.setup(KEGG.index2genes[entity], "KEGG Gene ID", entity.organism).from_kegg
4
4
 
5
5
  %dl
6
6
  %dt Description
7
7
  %dd= entity.description
8
8
 
9
- %dt All Genes in pathway
9
+ %dt
10
+ All Genes in pathway
11
+ == (#{ genes_in_pathway.ensembl.list_link :length, "Genes in pathway #{entity.name}"})
10
12
  %dd= genes_in_pathway.from_kegg.link * ", "
11
13
 
12
14
  %img(src='http://www.genome.jp/kegg/pathway/hsa/#{entity}.png' style='width:100%;float:left;margin-right:10px;margin-botton:10px;' title='Click to see KEGG entry')
@@ -1,8 +1,5 @@
1
1
  %h1= entity
2
- = entity.transcript.gene.link
3
-
4
- .svg(style="width:100%")
5
- = entity.marked_svg
2
+ = entity.action_link 'marked_svg', "Protein overview", :link_options => {:extra_classes => "replace"}
6
3
 
7
4
  %dl
8
5
  %dt MutationAssesor prediction
@@ -12,32 +9,7 @@
12
9
  %dd= entity.damage_scores([:sift])
13
10
 
14
11
 
15
-
16
- - pdbs = entity.pdbs
17
- - if pdbs and pdbs.any?
18
- #jmol
19
- %hr
20
- %select.pdb
21
- %option(selected="selected") Select a pdb
22
- - pdbs.each do |pdb, info|
23
- - pdb_chain = info[:chains].split("/").first
24
- - pdb_position = entity.position - info[:region].begin + 1
25
- %option(attr-chain=pdb_chain attr-position=pdb_position attr-pdb=pdb)= "#{ pdb} (#{[pdb_position, pdb_chain] * "/"})"
26
-
27
- #jmol_image
28
-
29
- :javascript
30
-
31
- jmolSetXHTML('jmol_image')
32
-
33
- jmolApplet(500, "", "PIZARRA");
34
- $('select.pdb').change(function(){
35
- var option = $(this).find('option:selected');
36
- var pdb = option.attr('attr-pdb');
37
- if (pdb == "Select a pdb") return false
38
- var pdb_position = option.attr('attr-position');
39
- var pdb_chain = option.attr('attr-chain');
40
- jmolScript("load =" + pdb + "; wireframe off; restrict water; select protein; backbone off; color pink;cartoons on;color structure; select protein and *.CA and " + pdb_position + ":" + pdb_chain + "; spacefill; color blue;", "PIZARRA");
41
- })
42
-
43
-
12
+ - if entity.pdbs and entity.pdbs.any?
13
+ = entity.action_link 'pdbs', "Mutation over pdbs", :link_options => {:extra_classes => "replace"}
14
+ - else
15
+ No pdbs found
@@ -0,0 +1,3 @@
1
+ .svg(style="width:100%")
2
+ = entity.marked_svg || "Could not download protein SVG"
3
+
@@ -0,0 +1,33 @@
1
+ - pdbs = entity.pdbs_and_positions
2
+ - if pdbs and pdbs.any?
3
+ #jmol
4
+ %select.pdb
5
+ %option(selected="selected") Select a pdb
6
+ - found = 0
7
+ - pdbs.each do |pdb, chains|
8
+ - chains.each do |pdb_chain, pdb_position|
9
+ - next if pdb_position.nil?
10
+ - pdb_position -= 1
11
+ %option(attr-chain=pdb_chain attr-position=pdb_position attr-pdb=pdb)= "#{ pdb} (#{[pdb_position, pdb_chain] * "/"})"
12
+ - found += 1
13
+
14
+ - if found == 0
15
+ No pdbs cover that position
16
+ - else
17
+ #jmol_image
18
+
19
+ :javascript
20
+
21
+ jmolSetXHTML('jmol_image')
22
+
23
+ jmolApplet(500, "", "PIZARRA");
24
+ $('select.pdb').change(function(){
25
+ var option = $(this).find('option:selected');
26
+ var pdb = option.attr('attr-pdb');
27
+ if (pdb == "Select a pdb") return false
28
+ var pdb_position = option.attr('attr-position');
29
+ var pdb_chain = option.attr('attr-chain');
30
+ jmolScript("load =" + pdb + "; wireframe off; restrict water; select protein; backbone off; color pink;cartoons on;color structure; select protein and *.CA and " + pdb_position + ":" + pdb_chain + "; spacefill; color blue;", "PIZARRA");
31
+ })
32
+
33
+
@@ -0,0 +1,11 @@
1
+ %h3= entity.name
2
+
3
+ - genes_in_pathway = entity.genes.ensembl
4
+
5
+ %dl
6
+
7
+ %dt
8
+ All Genes in pathway
9
+ == (#{ genes_in_pathway.ensembl.list_link :length, "Genes in pathway #{entity.name}"})
10
+ %dd= genes_in_pathway.link * ", "
11
+
@@ -0,0 +1,11 @@
1
+ %h3= entity.name
2
+
3
+ - genes_in_pathway = entity.genes.ensembl
4
+
5
+ %dl
6
+
7
+ %dt
8
+ All Genes in pathway
9
+ == (#{ genes_in_pathway.ensembl.list_link :length, "Genes in pathway #{entity.name}"})
10
+ %dd= genes_in_pathway.link * ", "
11
+
@@ -0,0 +1,11 @@
1
+ %h3= entity.name
2
+
3
+ - genes_in_pathway = entity.genes.ensembl
4
+
5
+ %dl
6
+
7
+ %dt
8
+ All Genes in pathway
9
+ == (#{ genes_in_pathway.ensembl.list_link :length, "Genes in pathway #{entity.name}"})
10
+ %dd= genes_in_pathway.link * ", "
11
+
@@ -0,0 +1,5 @@
1
+ %header== Protein: #{entity}
2
+
3
+ %dl
4
+ %dt Gene
5
+ %dd= entity.gene.link
@@ -1,10 +1 @@
1
- %ul.entity_list
2
- - list.each do |elem|
3
- %li
4
- - case
5
- - when elem.respond_to?(:link)
6
- = elem.link
7
- - when elem.respond_to?(:name)
8
- = elem.name
9
- - else
10
- = elem
1
+ = (list.respond_to?(:link)? list.link : list) * ", "
@@ -60,7 +60,8 @@ function expand_details(){
60
60
  var url = $('#details').attr('url');
61
61
  if (url == null) return false;
62
62
 
63
- $.ajax(add_parameters(url, '_size=normal'), {
63
+ $.ajax(add_parameters(url, '_size=normal&_cache_type=memory'), {
64
+ cache: false,
64
65
  success: function(data){
65
66
  $('#details').html(data).attr('url', url);
66
67
  $('#main').hide()
@@ -80,7 +81,8 @@ function contract_details(){
80
81
  var url = $('#details').attr('url');
81
82
  if (url == null) return false;
82
83
 
83
- $.ajax(add_parameters(url, '_size=small'), {
84
+ $.ajax(add_parameters(url, '_size=small&_cache_type=memory'), {
85
+ cache: false,
84
86
  success: function(data){
85
87
  $('#details').html(data).attr('url', url);
86
88
  $('#main').show()
@@ -106,7 +108,8 @@ function back_details(){
106
108
  size = "small";
107
109
  }
108
110
 
109
- $.ajax(add_parameters(url, '_size=' + size), {
111
+ $.ajax(add_parameters(url, '_size=' + size + "&_cache_type=memory"), {
112
+ cache: false,
110
113
  success: function(data){
111
114
  $('#details').html(data).attr('url', url);
112
115
  rbbt_action_setup();
@@ -121,31 +124,216 @@ function back_details(){
121
124
 
122
125
  // REPLACE OBJECTS
123
126
 
124
- function replace_object(obj){
127
+ function replace_object(obj, update){
125
128
  var href = obj.attr('href');
126
129
 
130
+
127
131
  if (href == null || href == undefined || href == ""){href = obj.attr('target');}
128
132
  if (href == null || href == undefined || href == ""){href = obj.attr('url');}
129
133
 
134
+ if (update == 'reload'){
135
+ href = add_parameters(href, "_update=reload")
136
+ }
137
+
138
+ if (update == 'check'){
139
+ href = add_parameters(href, "_update=check")
140
+ }
141
+
130
142
  $.ajax(href,{
143
+ cache: false,
131
144
  beforeSend: function(){obj.addClass("reloading")},
132
145
  complete: function(){obj.removeClass("reloading")},
146
+ error: function( req, text, error ) {
147
+ obj.removeClass("reloading");
148
+ obj.addClass("error");
149
+ if (obj.find('span[class*=cache_status]').length == 0){
150
+ obj.html(obj.html() + "<span class='cache_status'>error</status>").after($("<a class='retry_error'>retry</a>"))
151
+ }else{
152
+ obj.after($("<a class='retry_error'>retry</a>")).find('span[class*=cache_status]').first().html("error")
153
+ }
154
+ rbbt_action_setup();
155
+ },
133
156
  success: function( data, stat, req ) {
134
- var html = '<div class="embedded" target="' + req.getResponseHeader("AJAX-URL") + '">' + data + '</div>';
135
- var embedded = $(html);
136
- embedded.addClass(obj.attr('class'));
137
- embedded.removeClass('replace');
138
- embedded.removeClass('rbbt_action_setup');
139
- obj.replaceWith(embedded);
140
157
  if (req.status == 202){
141
- embedded.addClass("reloading");
142
- window.setTimeout(function(){replace_object(embedded)}, 5000)
158
+ obj.addClass("reloading");
159
+
160
+ if (obj.find('span[class*=cache_status]').length == 0){
161
+ obj.html(obj.html() + data)
162
+ }else{
163
+ obj.find('span[class*=cache_status]').first().replaceWith($(data))
164
+ }
165
+
166
+ if (update == 'check'){
167
+ obj.removeClass("reloading");
168
+ obj.addClass("check");
169
+ if (obj.find('span[class*=cache_status]').length == 0){
170
+ obj.after($("<a class='start_checked'>start</a>"));
171
+ }else{
172
+ obj.after($("<a class='start_checked'>start</a>"));
173
+ }
174
+ rbbt_action_setup();
175
+ }else{
176
+ window.setTimeout(function(){replace_object(obj)}, 7000)
177
+ }
143
178
  }else{
179
+ var html = '<div class="embedded" target="' + req.getResponseHeader("AJAX-URL") + '">' + data + '</div>';
180
+ var embedded = $(html);
181
+ embedded.addClass(obj.attr('class'));
182
+ embedded.removeClass('replace');
183
+ embedded.removeClass('rbbt_action_setup');
144
184
  embedded.removeClass("reloading");
185
+ obj.replaceWith(embedded);
145
186
  rbbt_action_setup();
146
187
  }
188
+
189
+ },
190
+ });
191
+ }
192
+
193
+ function expand_embedded(embedded){
194
+ var header = embedded.find('header').first();
195
+ embedded.html(embedded.attr('attr-save'));
196
+ embedded.attr('attr-save',null);
197
+ embedded.removeClass('contracted_embedded');
198
+ embedded.removeClass('rbbt_action_setup').find('.rbbt_action_setup').removeClass('rbbt_action_setup');
199
+ rbbt_action_setup();
200
+ }
201
+
202
+ function contract_embedded(embedded){
203
+ var header = embedded.find('header').first();
204
+ embedded.attr('attr-save', embedded.html());
205
+ embedded.html(header.html());
206
+ embedded.addClass('contracted_embedded');
207
+ embedded.removeClass('rbbt_action_setup').find('.rbbt_action_setup').removeClass('rbbt_action_setup');
208
+ rbbt_action_setup();
209
+ }
210
+
211
+ //-- LIST MANAGEMENT
212
+
213
+ var entity_lists = {}
214
+
215
+ function saved_lists(){
216
+ return JSON.parse($.cookie('saved_lists'))
217
+ }
218
+
219
+ function remove_list(type, list){
220
+ var lists = saved_lists();
221
+ if (lists == null) { lists = {}; };
222
+ if (lists[type] == null) { lists[type] = [] };
223
+
224
+ var elems = lists[type]
225
+ if (elems != null){
226
+ var index = elems.indexOf(list);
227
+
228
+ if (index != -1){ elems.splice(index, 1);}
229
+
230
+ if (elems.length > 0){
231
+ lists[type] = elems;
232
+ }else{
233
+ delete lists[type]
234
+ }
235
+
236
+ delete entity_lists[type][list]
237
+ if (entity_lists[type].length == 0){
238
+ delete entity_lists[type]
147
239
  }
148
- });
240
+ }
241
+
242
+ $.cookie('saved_lists', JSON.stringify(lists), {path: "/"})
243
+
244
+ update_list_viewer()
245
+ }
246
+
247
+ function load_list(type, list){
248
+ var lists = saved_lists();
249
+ if (lists == null) { lists = {}; };
250
+ if (lists[type] == null) { lists[type] = [] };
251
+ lists[type].push(list);
252
+ $.cookie('saved_lists', JSON.stringify(lists), {path: "/"})
253
+ add_entity_list(type, list);
254
+ }
255
+
256
+ function record_list(type, list_id, list){
257
+ if (entity_lists[type] == null){
258
+ entity_lists[type] = {}
259
+ }
260
+ entity_lists[type][list_id] = list;
261
+ }
262
+
263
+ function update_list_viewer(){
264
+ var list_html = ""
265
+ list_html += "<a href='/entity_list/user'>your lists</a>\n"
266
+ list_html += "<a href='/entity_list/public'>public lists</a>\n"
267
+ list_html += "<a class='clear_selected' href='#clear_selected'>clear selected</a>\n"
268
+ list_html += "<h5 class='loaded_lists'>Loaded lists</h5>\n"
269
+ list_html += "<dl class='entity_list_types'>\n"
270
+ $.each(entity_lists, function(type, lists){
271
+ list_html += "<dt>" + type + "</dt>\n"
272
+ list_html += "<dd>\n"
273
+ list_html += "<ul class='entity_list'>"
274
+ $.each(lists, function(name, elems){
275
+ list_html += "<li>"
276
+
277
+ list_html += "<a href='#select_list' class='select_list' attr-list-type='" + type + "' attr-list='" + name + "'>"
278
+ list_html += 'select'
279
+ list_html += "</a>" + "\n"
280
+
281
+ list_html += "<a href='#remove_list' class='remove_list' attr-list-type='" + type + "' attr-list='" + name + "'>"
282
+ list_html += "remove"
283
+ list_html += "</a>" + "\n"
284
+
285
+ list_html += "<a href='/entity_list/" + type + "/" + name + "' class='view_list' attr-list-type='" + type + "'>"
286
+ list_html += name
287
+ list_html += "</a>" + "\n"
288
+
289
+ list_html += "</li>"
290
+ })
291
+ list_html += "</ul>"
292
+ list_html += "</dd>\n"
293
+ })
294
+ $('#lists').html(list_html);
295
+ rbbt_action_setup();
296
+ }
297
+
298
+ function update_list_selectors(){
299
+ $.each(entity_lists, function(type, lists){
300
+ $('select.loaded_lists[type=' + type + ']').each(function(){
301
+ var select = $(this);
302
+ select.find('option').remove();
303
+ $.each(lists, function(name, elems){
304
+ var option = $('<option value="' + name + '">' + name + '</option>')
305
+ select.append(option);
306
+ return true
307
+ })
308
+ })
309
+ });
310
+ }
311
+
312
+ function add_entity_list(type, list_id){
313
+ $.getJSON(
314
+ "/entity_list/" + type + "/" + list_id + '?_format=json',
315
+ function(data){
316
+ record_list(type, list_id, data);
317
+ update_list_viewer();
318
+ update_list_selectors();
319
+ })
320
+ }
321
+
322
+ function id_for_entity(entity_format, entity){
323
+ return((entity_format.toLowerCase().replace(/[^\w]/g, "_") + "=" + entity));
324
+ }
325
+
326
+ function select_list(type, list_id){
327
+ var list = entity_lists[type][list_id];
328
+ var entity;
329
+
330
+ $.each(list, function(id, data){
331
+ var id = data[0];
332
+ var info = data[1];
333
+ var format = info["format"];
334
+ var entity_id = id_for_entity(format, id);
335
+ $('.entity[' + entity_id + ']').addClass("selected_entity");
336
+ })
149
337
  }
150
338
 
151
339
  //-- SETUP FUNCTIOS
@@ -163,6 +351,7 @@ function rbbt_table_setup(){
163
351
  var psize = form.find(".psize").first().val();
164
352
  var change = $(this).val();
165
353
  $.ajax({
354
+ cache: false,
166
355
  url: add_parameters(href, "_pfield=" + pfield + "&_pnum=" + pnum + "&_psize=" + psize + "&_paginate=" + change),
167
356
  success: function(data){
168
357
  embedded_div.html(data);
@@ -197,6 +386,11 @@ function rbbt_action_setup(){
197
386
  replace_object($(this));
198
387
  }).addClass('rbbt_action_setup');
199
388
 
389
+ $('a.check_replace').not('[class*=rbbt_action_setup]').each(function(){
390
+ replace_object($(this), 'check');
391
+ }).addClass('rbbt_action_setup');
392
+
393
+
200
394
  $('a.entity').not('[class*=rbbt_action_setup]').click(function(){
201
395
  var link = $(this);
202
396
  var href = link.attr('href')
@@ -210,7 +404,8 @@ function rbbt_action_setup(){
210
404
  show_details();
211
405
  $('#details').html("<span class='details_loading'>Loading " + href + "</span>").addClass("loading").removeClass("error");
212
406
 
213
- $.ajax(add_parameters(href, '_size=' + size), {
407
+ $.ajax(add_parameters(href, '_size=' + size + '&_cache_type=memory'), {
408
+ cache: false,
214
409
  success: function(data){
215
410
  var old_url = $('#details').attr('url');
216
411
  if (old_url != null && old_url != undefined ){
@@ -230,46 +425,148 @@ function rbbt_action_setup(){
230
425
  }).addClass('rbbt_action_setup');
231
426
 
232
427
  $('.DELETE,.POST').not('[class*=rbbt_action_setup]').click(function() {
233
- if(confirm('Are you sure?')) {
428
+ //if(confirm('Are you sure?')) {
429
+ if(true) {
234
430
  var link = $(this);
235
- var href = link.attr('href')
431
+ var target_id = link.attr('rel')
432
+ var href = link.attr('href');
236
433
 
237
- $.ajax({url:href, data:{ _method: $(this).getClassInList(['POST', 'DELETE'])}, type:"post", asyn:false})
434
+ $.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();}}})
238
435
  }
239
436
  return false;
240
437
  }).addClass('rbbt_action_setup');
241
438
 
242
- //$('form.replace').not('[class*=rbbt_action_setup]').each(function(){
243
- // var link = $(this);
244
- // var href = link.attr('href')
245
- // $.ajax(href,{
246
- // success: function( data, stat, req ) {
247
- // link.replaceWith('<div class="embedded" target="' + req.getResponseHeader("AJAX-URL") + '">' + data + '</div>');
248
- // rbbt_action_setup();
249
- // }
250
- // });
251
- //}).addClass('rbbt_action_setup');
252
-
253
439
  $('div.embedded form').not('[class*=rbbt_action_setup]').submit(function(){
254
440
  var form = $(this);
255
441
  var embedded = form.parents('div.embedded').first();
256
442
 
257
- form.ajaxSubmit({
258
- success: function( data, stat, req){
259
- embedded.html(data);
260
- rbbt_action_setup();
261
- },
262
- beforeSend: function(){
263
- embedded.addClass("reloading");
264
- },
265
- complete: function(){
266
- embedded.removeClass("reloading");
443
+ var params = "";
444
+
445
+ form.find('input').not('[type=submit]').each(function(){
446
+ var input = $(this)
447
+ if (params.length > 0){ params += '&'}
448
+ params += input.attr('name') + "=" + input.val();
449
+ })
450
+
451
+ form.find('select').not('[type=submit]').each(function(){
452
+ var select = $(this)
453
+ var option = select.find('option:selected');
454
+ if (params.length > 0){ params += '&'}
455
+ params += select.attr('name') + "=" + option.val();
456
+ })
457
+
458
+
459
+ params = params
460
+
461
+ var url = embedded.attr('target');
462
+ url = url.replace(/\?.*/, '?' + params)
463
+
464
+ embedded.attr('target', url)
465
+
466
+ replace_object(embedded);
467
+
468
+ return false;
469
+ }).addClass('rbbt_action_setup');
470
+
471
+ $('.embedded > header').not('[class*=rbbt_action_setup]').each(function(){
472
+ var header = $(this);
473
+ var embedded = header.parent('.embedded');
474
+ var href = embedded.attr('target');
475
+
476
+ if (header.find('ul.embedded_control').length == 0){
477
+ var html = header.html();
478
+ 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>'
479
+ header.html(html);
480
+ }
481
+
482
+ header.addClass('rbbt_action_setup')
483
+
484
+ rbbt_action_setup();
485
+ }).addClass('rbbt_action_setup');
486
+
487
+ $('a.reload_embedded').not('[class*=rbbt_action_setup]').click(function(){
488
+ var link = $(this);
489
+ var embedded = link.parents('.embedded').first();
490
+ if (embedded.hasClass('contracted_embedded')){
491
+ expand_embedded(embedded)
492
+ }
493
+ replace_object(embedded, 'reload');
494
+ return false;
495
+ }).addClass('rbbt_action_setup');
496
+
497
+ $('a.toggle_embedded').not('[class*=rbbt_action_setup]').click(function(){
498
+ var link = $(this);
499
+ var embedded = link.parents('.embedded').first();
500
+ var header = embedded.find('header').first();
501
+
502
+ if (embedded.attr('attr-save') == null){
503
+ contract_embedded(embedded)
504
+ }else{
505
+ expand_embedded(embedded)
267
506
  }
268
- });
507
+ return false;
508
+ }).addClass('rbbt_action_setup');
509
+
510
+ $('a.retry_error').not('[class*=rbbt_action_setup]').click(function(e){
511
+ var retry_link = $(this);
512
+ var link = retry_link.prev('a');
513
+ if (link.length == 0){ link = retry_link.prev('.embedded')};
514
+ replace_object(link, 'reload');
515
+ retry_link.remove();
516
+ return false;
517
+ }).addClass('rbbt_action_setup');
518
+
519
+
520
+ $('a.start_checked').not('[class*=rbbt_action_setup]').click(function(e){
521
+ var retry_link = $(this);
522
+ var link = retry_link.prev('a');
523
+ replace_object(link);
524
+ retry_link.remove();
525
+ return false;
526
+ }).addClass('rbbt_action_setup');
527
+
528
+ $('a.select_list').not('[class*=rbbt_action_setup]').click(function(){
529
+ var link = $(this);
530
+ var list_id = link.attr('attr-list')
531
+ var type = link.attr('attr-list-type')
532
+
533
+ select_list(type, list_id)
534
+ return false;
535
+ }).addClass('rbbt_action_setup');
269
536
 
537
+ $('a.remove_list').not('[class*=rbbt_action_setup]').click(function(){
538
+ var link = $(this);
539
+ var list_id = link.attr('attr-list');
540
+ var type = link.attr('attr-list-type')
541
+
542
+ remove_list(type, list_id);
543
+
544
+ return false;
545
+ }).addClass('rbbt_action_setup');
546
+
547
+
548
+ $('a.load_entity_list').not('[class*=rbbt_action_setup]').click(function(){
549
+ var link = $(this);
550
+ var list_id = link.attr('attr-list');
551
+ var type = link.attr('attr-list-type');
552
+
553
+ load_list(type, list_id);
270
554
  return false;
271
555
  }).addClass('rbbt_action_setup');
272
556
 
557
+ $('a.open_edit_controls').not('[class*=rbbt_action_setup]').click(function(){
558
+ var link = $(this);
559
+
560
+ var edit_controls = link.next('.edit_controls')
561
+ edit_controls.toggle();
562
+
563
+ return false;
564
+ }).addClass('rbbt_action_setup');
565
+
566
+ $('a.clear_selected').not('[class*=rbbt_action_setup]').click(function(){
567
+ $('a.selected_entity').removeClass('selected_entity')
568
+ }).addClass('rbbt_action_setup');
273
569
 
570
+ update_list_selectors();
274
571
  }
275
572