Merge branch 'master' into 11453-federated-tokens
[arvados.git] / apps / workbench / app / views / projects / _show_dashboard.html.erb
index 478b3971f64ea982b3cdb43b05c22a8ab6113a36..713582654fee93b3c9bd11432701e002b6fc5d0c 100644 (file)
@@ -1,10 +1,23 @@
+<%# Copyright (C) The Arvados Authors. All rights reserved.
+
+SPDX-License-Identifier: AGPL-3.0 %>
+
 <%
   recent_procs = recent_processes(12)
 
+  # preload container_uuids of any container requests
+  recent_crs = recent_procs.map {|p| p if p.is_a?(ContainerRequest)}.compact.uniq
+  recent_cr_containers = recent_crs.map {|cr| cr.container_uuid}.compact.uniq
+  preload_objects_for_dataclass(Container, recent_cr_containers) if recent_cr_containers.andand.any?
+
+  # fetch children of all the active crs in one call, if there are any
+  active_crs = recent_crs.each {|cr| cr if (cr.priority.andand > 0 and cr.state != 'Final' and cr.container_uuid)}
+
   wus = {}
   outputs = []
   recent_procs.each do |p|
     wu = p.work_unit
+
     wus[p] = wu
     outputs << wu.outputs
   end
 %>
 
 <%
-  no_jobs_api = !PipelineInstance.api_exists?(:index)
-  recent_procs_title = 'Recent pipelines and processes'
-  recent_procs_title = 'Recent processes' if no_jobs_api
-
-  run_proc_title = 'Choose a pipeline or workflow to run:'
-  run_proc_title = 'Choose a workflow to run:' if no_jobs_api
+  recent_procs_panel_width = 6
+  if !PipelineInstance.api_exists?(:index)
+    recent_procs_title = 'Recent processes'
+    run_proc_title = 'Choose a workflow to run:'
+    show_node_status = false
+    # Recent processes panel should take the entire width when is the only one
+    # being rendered.
+    if !Rails.configuration.show_recent_collections_on_dashboard
+      recent_procs_panel_width = 12
+    end
+  else
+    recent_procs_title = 'Recent pipelines and processes'
+    run_proc_title = 'Choose a pipeline or workflow to run:'
+    show_node_status = true
+  end
 %>
 
   <div class="row">
-    <div class="col-md-6">
+    <div class="col-md-<%= recent_procs_panel_width %>">
       <div class="panel panel-default" style="min-height: 10.5em">
         <div class="panel-heading">
           <span class="panel-title"><%=recent_procs_title%></span>
             <% else %>
             <div class="dashboard-panel-info-row row-<%=wu.uuid%>">
               <div class="row">
-                <div class="col-md-6">
+                <div class="col-md-6 text-overflow-ellipsis">
                   <%= link_to_if_arvados_object p, {friendly_name: true} %>
                 </div>
-                <% if wu.is_running? %>
-                <div class="col-md-6">
-                  <div class="progress" style="margin-bottom: 0px">
-                    <% wu.progress %>
-                  </div>
-                </div>
-                <% else %>
                 <div class="col-md-2">
                   <span class="label label-<%=wu.state_bootstrap_class%>"><%=wu.state_label%></span>
                 </div>
-                <% end %>
               </div>
 
-              <%
-                children = wu.children
-                running = children.select { |c| c.state_label == "Running" }
-                queued = children.select { |c| c.state_label == "Queued" }
-              %>
-
               <div class="clearfix">
                 Started at <%= render_localized_date(wu.started_at || wu.created_at, "noseconds") %>.
                 <% wu_time = Time.now - (wu.started_at || wu.created_at) %>
                 Active for <%= render_runtime(wu_time, false) %>.
 
                 <div class="pull-right">
-                  <% running.each do |r| %>
-                    <span class="label label-<%= r.state_bootstrap_class %>"> <%= r.label || r.state_label || 'Not ready' %> </span>
-                  <% end %>
-                  <% queued.each do |q| %>
-                    <span class="label label-<%= q.state_bootstrap_class %>"> <%= q.label || r.state_label || 'Not ready' %> </span>
-                  <% end %>
                 </div>
               </div>
             </div>
     </div>
 
     <div class="col-md-6">
+      <% if show_node_status %>
       <% nodes = Node.filter([["last_ping_at", ">", Time.now - 3600]]).results %>
       <div class="panel panel-default" style="min-height: 10.5em">
         <div class="panel-heading"><span class="panel-title">Compute node status</span>
           </div>
         </div>
       </div>
+      <% end %>
       <% if Rails.configuration.show_recent_collections_on_dashboard %>
       <div class="panel panel-default">
         <div class="panel-heading"><span class="panel-title">Recent collections</span>