-<% content_for :content_top do %>
- <% if @object and not @object.is_a?(Group) and @object.class.goes_in_projects? and @object.owner_uuid == current_user.uuid and not @name_link %>
- <div class="pull-right" style="width: 40%">
- <div class="alert alert-warning alert-dismissable">
- <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
- <strong>Hey.</strong> This <%= @object.class_for_display.downcase %> belongs to your account, but it's not in any of your projects. If you want it to be easy to find in the future, you should move it to a project.<br />
- <%= button_to(choose_projects_path(
- title: 'Move to...',
- editable: true,
- action_name: 'Move',
- action_href: url_for(action: :update),
- action_method: 'patch',
- action_data: {selection_param: @object.resource_param_name+'[owner_uuid]', success: 'page-refresh'}.to_json),
- { class: "btn btn-primary btn-sm", remote: true, method: 'get' }) do %>
- <i class="fa fa-fw fa-folder"></i> Choose a project...
- <% end %>
- </div>
- </div>
- <% end %>
-<% end %>
+<%# Copyright (C) The Arvados Authors. All rights reserved.
-<% content_for :js do %>
- tab_pane_valid_state = {};
+SPDX-License-Identifier: AGPL-3.0 %>
- function ajaxRefreshTabPane(pane) {
- if (!tab_pane_valid_state[pane]) {
- tab_pane_valid_state[pane] = true;
- $.ajax('<%=j url_for() %>?<%= raw(controller.request.query_string) %>&tab_pane='+pane, {dataType: 'html', type: 'GET'}).
- done(function(data, status, jqxhr) {
- $('#' + pane + ' > div > div').html(data);
- ajaxRefreshTabPane(pane);
- });
- }
- }
+<% content_for :tab_panes do %>
- $(window).on('load', smart_scroll_fixup);
- $(document).on('shown.bs.tab', 'ul.nav-tabs > li > a', smart_scroll_fixup);
+ <% comparable = controller.respond_to? :compare %>
- $(document).on('shown.bs.tab', function(e) {
- ajaxRefreshTabPane(e.target.id.slice(0, -4));
- });
+ <ul class="nav nav-tabs" data-tab-counts-url="<%= url_for(action: :tab_counts) rescue '' %>">
+ <% pane_list.each_with_index do |pane, i| %>
+ <% pane_name = (pane.is_a?(Hash) ? pane[:name] : pane) %>
- $(document).on('arv-log-event', function() {
- <% pane_list.each do |pane| %>
- tab_pane_valid_state['<%=j pane %>'] = false;
- <% end %>
- ajaxRefreshTabPane($('.tab-pane.active')[0].id);
- });
-<% end %>
-
-<% content_for :tab_panes do %>
+ <% data_toggle = "tab" %>
+ <% tab_tooltip = "" %>
+ <% link_disabled = "" %>
-<% comparable = controller.respond_to? :compare %>
+ <% if (pane_name == "Log") and !(ArvadosBase.find(@object.owner_uuid).writable_by.include?(current_user.andand.uuid) rescue nil)
+ if controller.model_class.to_s == 'Job'
+ if @object.log and !@object.log.empty?
+ logCollection = Collection.find? @object.log
+ if !logCollection
+ data_toggle = "disabled"
+ tab_tooltip = "Log data is not available"
+ link_disabled = "disabled"
+ end
+ end
+ elsif (controller.model_class.to_s == 'PipelineInstance' and
+ !@object.has_readable_logs?)
+ data_toggle = "disabled"
+ tab_tooltip = "Log data is not available"
+ link_disabled = "disabled"
+ end
+ end
+ %>
-<ul class="nav nav-tabs">
- <% pane_list.each_with_index do |pane, i| %>
- <li class="<%= 'active' if i==0 %>"><a href="#<%= pane %>" data-toggle="tab" id="<%= pane %>-tab"> <%= pane.gsub('_', ' ') %></a></li>
- <% end %>
-</ul>
-<div class="tab-content">
-<% pane_list.each_with_index do |pane, i| %>
- <div id="<%= pane %>"
- class="tab-pane fade <%= 'in active' if i==0 %> arv-log-event-listener"
-<% if controller.action_name == "index" %>
- data-object-kind="arvados#<%= ArvadosApiClient.class_kind controller.model_class %>"
-<% else %>
- data-object-uuid="<%= @object.uuid %>"
-<% end %>
- >
-
-<% content_for :js do %>
- <% if i == 0 %>
- tab_pane_valid_state['<%=j pane %>'] = true;
- <% else %>
- tab_pane_valid_state['<%=j pane %>'] = false;
- $(document).on('ready', function() {
- ajaxRefreshTabPane('<%=j pane %>');
- });
- <% end %>
-<% end %>
+ <li class="<%= 'active' if i==0 %> <%= link_disabled %> tab-pane-<%=pane_name%>" data-toggle="tooltip" data-placement="top" title="<%=tab_tooltip%>">
+ <a href="#<%= pane_name %>"
+ id="<%= pane_name %>-tab"
+ data-toggle="<%= data_toggle %>"
+ data-tab-history=true
+ data-tab-history-update-url=true
+ >
+ <%= pane_name.gsub('_', ' ') %> <span id="<%= pane_name %>-count"></span>
+ </a>
+ </li>
+ <% end %>
+ </ul>
- <div id="<%= pane %>-scroll" style="margin-top:0.5em;">
- <div class="pane-content">
- <% if i == 0 %>
- <%= render(partial: 'show_' + pane.downcase,
- locals: { comparable: comparable, objects: @objects }) %>
+ <div class="tab-content">
+ <% pane_list.each_with_index do |pane, i| %>
+ <% pane_name = (pane.is_a?(Hash) ? pane[:name] : pane) %>
+ <div id="<%= pane_name %>"
+ class="tab-pane fade <%= 'in active pane-loaded' if i==0 %> arv-log-event-listener arv-refresh-on-log-event arv-log-event-subscribe-to-pipeline-job-uuids"
+ <% if controller.action_name == "index" %>
+ data-object-kind="arvados#<%= ArvadosApiClient.class_kind controller.model_class %>"
+ <% else %>
+ data-object-uuid="<%= @object.uuid %>"
+ <% end %>
+ data-pane-content-url="<%= url_for(params.permit!.merge(tab_pane: pane_name)) %>"
+ style="margin-top:0.5em;"
+ >
+ <div class="pane-content">
+ <% if i == 0 %>
+ <%= render_pane pane_name, to_string: true %>
<% else %>
<div class="spinner spinner-32px spinner-h-center"></div>
- <% end %>
+ <% end %>
+ </div>
</div>
- </div>
+ <% end %>
</div>
-<% end %>
-</div>
<% end %>