Merge branch 'master' into 2871-preload-objects
[arvados.git] / apps / workbench / app / views / application / _content.html.erb
1 <% content_for :js do %>
2   tab_pane_valid_state = {};
3
4   function ajaxRefreshTabPane(pane) {
5     if (!tab_pane_valid_state[pane]) {
6       tab_pane_valid_state[pane] = true;
7       $(document).trigger('ajax:send');
8       $.ajax('<%=j url_for @object %>?tab_pane='+pane, {dataType: 'html', type: 'GET'}).
9         done(function(data, status, jqxhr) {
10           $('#' + pane + ' > div > div').html(data);
11           $(document).trigger('ajax:complete');
12           ajaxRefreshTabPane(pane);
13         });
14     }
15   }
16
17   $(window).on('load', smart_scroll_fixup);
18   $(document).on('shown.bs.tab', 'ul.nav-tabs > li > a', smart_scroll_fixup);
19
20   $(document).on('shown.bs.tab', function(e) {
21     ajaxRefreshTabPane(e.target.id.slice(0, -4));
22   });
23
24   $(document).on('arv-log-event', function() {
25     <% pane_list.each do |pane| %>
26     tab_pane_valid_state['<%=j pane %>'] = false;
27     <% end %>
28     ajaxRefreshTabPane($('.tab-pane.active')[0].id);
29   });
30 <% end %>
31
32 <% content_for :tab_panes do %>
33
34 <% comparable = controller.respond_to? :compare %>
35
36 <ul class="nav nav-tabs">
37   <% pane_list.each_with_index do |pane, i| %>
38     <li class="<%= 'active' if i==0 %>"><a href="#<%= pane %>" data-toggle="tab" id="<%= pane %>-tab"> <%= pane.gsub('_', ' ') %></a></li>
39   <% end %>
40 </ul>
41 <div class="tab-content">
42 <% pane_list.each_with_index do |pane, i| %>
43   <div id="<%= pane %>"
44        class="tab-pane fade <%= 'in active' if i==0 %> arv-log-event-listener"
45 <% if controller.action_name == "index" %>
46        data-object-kind="arvados#<%= ArvadosApiClient.class_kind controller.model_class %>"
47 <% else %>
48        data-object-uuid="<%= @object.uuid %>"
49 <% end %>
50 >
51
52 <% content_for :js do %>
53   <% if i == 0 %>
54     tab_pane_valid_state['<%=j pane %>'] = true;
55   <% else %>
56     tab_pane_valid_state['<%=j pane %>'] = false;
57     $(document).on('ready', function() {
58       ajaxRefreshTabPane('<%=j pane %>');
59     });
60   <% end %>
61 <% end %>
62
63     <div class="smart-scroll" style="margin-top:0.5em;">
64       <div class="pane-content">
65         <% if i == 0 %>
66           <%= render(partial: 'show_' + pane.downcase,
67                      locals: { comparable: comparable, objects: @objects }) %>
68           <% else %>
69             <%= image_tag 'ajax-loader.gif' %>
70         <% end %>
71       </div>
72     </div>
73   </div>
74 <% end %>
75 </div>
76
77 <% end %>