Merge branch 'main' into 18842-arv-mount-disk-config
[arvados.git] / apps / workbench / app / views / users / _tables.html.erb
index 10592f5009c9cd80c25b87482cf2c30acb50d582..6e3d9e3437ad34abde3be6ef3166d8dc6bf20f02 100644 (file)
@@ -1,7 +1,11 @@
+<%# Copyright (C) The Arvados Authors. All rights reserved.
+
+SPDX-License-Identifier: AGPL-3.0 %>
+
 <% if current_user.andand.is_active %>
   <div>
     <strong>Recent jobs</strong>
-    <%= link_to '(refresh)', request.fullpath, class: 'refresh', remote: true, method: 'get' %>
+    <%= link_to '(refresh)', {format: :js}, {class: 'refresh', remote: true} %>
     <%= link_to raw("Show all jobs &rarr;"), jobs_path, class: 'pull-right' %>
     <% if not current_user.andand.is_active or @my_jobs.empty? %>
       <p>(None)</p>
           <th>Script</th>
           <th>Output</th>
           <th>Log</th>
-          <th>Age</th>
+          <th>Created at</th>
           <th>Status</th>
-          <th>Progress</th>
         </tr>
 
+        <%# Preload collections, logs, and pipeline instance objects %>
+        <%
+          collection_uuids = []
+          log_uuids = []
+          @my_jobs[0..6].each do |j|
+            collection_uuids << j.output
+            log_uuids << j.log
+          end
+
+          @my_collections[0..6].each do |c|
+            collection_uuids << c.uuid
+          end
+
+          preload_collections_for_objects collection_uuids
+          preload_log_collections_for_objects log_uuids
+
+          pi_uuids = []
+          @my_pipelines[0..6].each do |p|
+            pi_uuids << p.uuid
+          end
+          resource_class = resource_class_for_uuid(pi_uuids.first, friendly_name: true)
+          preload_objects_for_dataclass resource_class, pi_uuids
+        %>
+
         <% @my_jobs[0..6].each do |j| %>
           <tr data-object-uuid="<%= j.uuid %>">
             <td>
 
             <td>
               <small>
-                <% if j.success and j.output %>
-
+                <% if j.state == "Complete" and j.output %>
                   <a href="<%= collection_path(j.output) %>">
-                    <% Collection.limit(1).where(uuid: j.output).each do |c| %>
-                         <% c.files.each do |file| %>
-                      <%= file[0] == '.' ? file[1] : "#{file[0]}/#{file[1]}" %>
-                    <% end %>
-                <% end %>
-                </a>
-
-        <% end %>
-        </small>
-</td>
+                    <% collections = collections_for_object(j.output) %>
+                      <% if collections && !collections.empty? %>
+                      <% c = collections.first %>
+                      <% c.files.each do |file| %>
+                        <%= file[0] == '.' ? file[1] : "#{file[0]}/#{file[1]}" %>
+                      <% end %>
+                     <% end %>
+                  </a>
+              <% end %>
+            </small>
+          </td>
 
 <td>
   <small>
     <% if j.log %>
-      <% fixup = /([a-f0-9]{32}\+\d+)(\+?.*)/.match(j.log)%>
-      <% Collection.limit(1).where(uuid: fixup[1]).each do |c| %>
+      <% log_collections = log_collections_for_object(j.log) %>
+      <% if log_collections && !log_collections.empty? %>
+        <% c = log_collections.first %>
         <% c.files.each do |file| %>
           <a href="<%= collection_path(j.log) %>/<%= file[1] %>?disposition=inline&size=<%= file[2] %>">Log</a>
         <% end %>
       <% end %>
-    <% elsif j.respond_to? :log_buffer and j.log_buffer %>
+    <% elsif j.respond_to? :log_buffer and j.log_buffer.is_a? String %>
       <% buf = j.log_buffer.strip.split("\n").last %>
       <span title="<%= buf %>"><%= buf %></span>
     <% end %>
 
 <td>
   <small>
-    <%= raw(distance_of_time_in_words(j.created_at, Time.now).sub('about ','~').sub(' ','&nbsp;')) if j.created_at %>
+    <%= j.created_at.to_s if j.created_at %>
   </small>
 </td>
 
-<td>
-  <%= render partial: 'job_status_label', locals: {:j => j} %>
-</td>
 <td>
   <div class="inline-progress-container">
   <%= render partial: 'job_progress', locals: {:j => j} %>
 
 <div>
   <strong>Recent pipeline instances</strong>
-  <%= link_to '(refresh)', request.fullpath, class: 'refresh', remote: true, method: 'get' %>
+  <%= link_to '(refresh)', {format: :js}, {class: 'refresh', remote: true} %>
   <%= link_to raw("Show all pipeline instances &rarr;"), pipeline_instances_path, class: 'pull-right' %>
   <% if not current_user.andand.is_active or @my_pipelines.empty? %>
     <p>(None)</p>
       <tr>
         <th>Instance</th>
         <th>Template</th>
-        <th>Age</th>
+        <th>Created at</th>
         <th>Status</th>
         <th>Progress</th>
       </tr>
 
           <td>
             <small>
-              <%= raw(distance_of_time_in_words(p.created_at, Time.now).sub('about ','~').sub(' ','&nbsp;')) if p.created_at %>
+              <%= (p.created_at.to_s) if p.created_at %>
             </small>
           </td>
 
 
 <div>
   <strong>Recent collections</strong>
-  <%= link_to '(refresh)', request.fullpath, class: 'refresh', remote: true, method: 'get' %>
+  <%= link_to '(refresh)', {format: :js}, {class: 'refresh', remote: true} %>
   <%= link_to raw("Show all collections &rarr;"), collections_path, class: 'pull-right' %>
   <div class="pull-right" style="padding-right: 1em; width: 30%;">
     <%= form_tag collections_path,
           </td>
           <td>
             <small>
-              <%= raw(distance_of_time_in_words(c.created_at, Time.now).sub('about ','~').sub(' ','&nbsp;')) if c.created_at %>
+              <%= c.created_at.to_s if c.created_at %>
             </small>
           </td>
           <td>
           Your account must be activated by an Arvados administrator.  If this
           is your first time accessing Arvados and would like to request
           access, or you believe you are seeing the page in error, please
-          <%= link_to "contact us", Rails.configuration.activation_contact_link %>.
+          <%= link_to "contact us", Rails.configuration.Workbench.ActivationContactLink %>.
           You should receive an email at the address you used to log in when
           your account is activated.  In the mean time, you can
-          <%= link_to "learn more about Arvados", "https://arvados.org/projects/arvados/wiki/Introduction_to_Arvados" %>,
+          <%= link_to "learn more about Arvados", "https://arvados.org/" %>,
           and <%= link_to "read the Arvados user guide", "http://doc.arvados.org/user" %>.
         </p>
         <p style="padding-bottom: 1em">
           <%= link_to raw('Contact us &#x2709;'),
-              Rails.configuration.activation_contact_link, class: "pull-right btn btn-primary" %></p>
+              Rails.configuration.Workbench.ActivationContactLink, class: "pull-right btn btn-primary" %></p>
       </div>
     </div>
   </div>