Fix 2.4.2 upgrade notes formatting refs #19330
[arvados.git] / apps / workbench / app / views / work_units / _component_detail.html.erb
index e87e5b52e078ed5538079a04372a630d5b0230cf..e48a91ec1b767a24e98c789bbe9907d79026514b 100644 (file)
@@ -1,11 +1,34 @@
+<%# Copyright (C) The Arvados Authors. All rights reserved.
+
+SPDX-License-Identifier: AGPL-3.0 %>
+
 <%
   collections = [current_obj.outputs, current_obj.docker_image].flatten.compact.uniq
   collections_pdhs = collections.select {|x| !CollectionsHelper.match(x).nil?}.uniq.compact
   collections_uuids = collections - collections_pdhs
   preload_collections_for_objects collections_uuids if collections_uuids.any?
-  preload_for_pdhs collections_pdhs if collections_pdhs.any?
+  preload_links_for_objects collections_uuids if collections_uuids.any?
 
   preload_objects_for_dataclass(Repository, [current_obj.repository], :name) if current_obj.repository
+
+  # if container_X, preload mounted collections
+  if @object.is_a? Container or @object.is_a? ContainerRequest
+    # get any collections in mounts
+    mounts = current_obj.send(:mounts) if current_obj.respond_to?(:mounts)
+    input_obj = mounts.andand[:"/var/lib/cwl/cwl.input.json"].andand[:content]
+    if input_obj
+      input_obj.to_s.scan(/([0-9a-f]{32}\+\d+)/).each {|cs| collections_pdhs += cs}
+    end
+
+    command = current_obj.send(:command) if current_obj.respond_to?(:command)
+    if command
+      command.to_s.scan(/([0-9a-f]{32}\+\d+)/).each {|cs| collections_pdhs += cs}
+    end
+  end
+
+  collections_pdhs.compact.uniq
+  preload_for_pdhs collections_pdhs if collections_pdhs.any?
+  preload_links_for_objects collections_pdhs if collections_pdhs.any?
 %>
 
       <div class="container">
@@ -43,7 +66,7 @@
                       <%= render_localized_date(val) %>
                     <% elsif k == :outputs and val.any? %>
                       <% if val.size == 1 %>
-                        <%= link_to_arvados_object_if_readable(val[0], 'Output data not available', friendly_name: true) %>
+                        <%= link_to_arvados_object_if_readable(val[0], "#{val[0]} (Unavailable)", friendly_name: true) %>
                       <% else %>
                         <%= render partial: 'work_units/show_outputs', locals: {id: current_obj.uuid, outputs: val, align:""} %>
                       <% end %>
                   </td>
                   <td style="word-wrap: break-all;">
                     <% if k == :command %>
-                      <div style="max-height:200px; overflow-y:auto;">
                         <% val = JSON.pretty_generate(val) %>
-                        <% val.each_line do |l| %>
-                          <% l.split(' ').each do |w| %>
-                            <% match = keep_locator_in_json w %>
-                            <% if match %>
-                              <% rindex = match[2].rindex('"'); match2 = match[2][0..rindex-1] %>
-                              <% pdh_readable = object_readable(match2) %>
-                              <% quote_char = '"' %>
-                              <%= match[1] %><% if pdh_readable then %><%= link_to_arvados_object_if_readable(match[3], match[3], friendly_name: true) %><%= link_to_arvados_object_if_readable(match2, match2, link_text: match[4]) %><% else %><%= match2%><% end %><%=quote_char+match[5]%>
-                            <% else %>
-                              <%= w %>
-                            <% end %>
-                          <% end %>
-                        <% end %>
-                      </div>
+                        <%= render partial: 'show_text_with_locators', locals: {data_height: 200, text_data: val} %>
                     <% else %>
                       <%= val %>
                     <% end %>
                     cwl.input.json:
                   </td>
                   <td style="word-wrap: break-all;">
-                    <div style="max-height:400px; overflow:auto;">
-                      <% mnt_inputs.each_line do |l| %>
-                        <% text_part = l %>
-                          <% match = keep_locator_in_json l %>
-                          <% if match %>
-                            <% text_part = match[1] %>
-                            <% rindex = match[2].rindex('"'); match2 = match[2][0..rindex-1] %>
-                            <% pdh_readable = object_readable(match2) %>
-                            <% quote_char = '"' %>
-                          <% end %>
-                          <span style="white-space: pre-wrap; margin: none;"><%= text_part %><% if match %><% if pdh_readable then %><%= link_to_arvados_object_if_readable(match[3], match[3], friendly_name: true) %><%= link_to_arvados_object_if_readable(match2, match2, link_text: match[4]) %><% else %><%= match2%><% end %><%=quote_char+match[5]%><br/><% end %></span>
-                      <% end %>
-                    </div>
+                    <%= render partial: 'show_text_with_locators', locals: {data_height: 400, text_data: mnt_inputs} %>
                   </td>
                 </tr>
               <% end %>
 
         <% if current_obj.parameters and !current_obj.parameters.empty? %>
         <div class="row">
-          <div class="col-md-6">
+          <div class="col-md-12">
             <p>script_parameters:</p>
             <pre><%= JSON.pretty_generate(current_obj.parameters) rescue nil %></pre>
           </div>