Merge branch '11501-job-stats-discrepancy'
[arvados.git] / apps / workbench / app / views / work_units / _component_detail.html.erb
index 1204e9807db2231e79d673fef32d64b548230c9c..55abc75ea622fb22d11ebbba8dd1e3edf18ed6b5 100644 (file)
@@ -3,19 +3,38 @@
   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">
         <div class="row">
-          <div class="col-md-5">
+          <div class="col-md-6" style="overflow-x: auto">
             <% if current_obj.uuid.nil? %>
               No <%= current_obj.title %> has been submitted yet.
             <% else %>
             <table class="table table-condensed">
-              <% keys = [:uuid, :modified_by_user_uuid, :created_at, :started_at, :finished_at, :container_uuid, :priority] %>
+              <% keys = [:uuid, :modified_by_user_uuid, :created_at, :started_at, :finished_at, :container_uuid] %>
               <% keys << :log_collection if @object.uuid != current_obj.uuid %>
               <% keys << :outputs %>
               <% keys.each do |k| %>
@@ -68,7 +87,7 @@
                  repo = nil unless repo.andand.http_fetch_url
                  %>
               <% [:script, :repository, :script_version, :supplied_script_version, :nondeterministic,
-                  :runtime_constraints, :requesting_container_uuid].each do |k| %>
+                  :priority, :runtime_constraints, :requesting_container_uuid].each do |k| %>
                 <% val = current_obj.send(k) if current_obj.respond_to?(k) %>
                 <% if val %>
                 <tr valign="top">
             </table>
           </div>
 
-          <div class="col-md-11">
+          <div class="col-md-12">
             <table class="table table-condensed" style="table-layout:fixed;">
               <col width="15%" />
               <col width="85%" />
                   </td>
                   <td style="word-wrap: break-all;">
                     <% if k == :command %>
-                      <div style="max-height:200px; overflow-y:auto;">
-                        <%=val%>
-                      </div>
+                        <% val = JSON.pretty_generate(val) %>
+                        <%= 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 = l.match /(.*)(\"keep:.*?\")/ %>
-                          <% if match and match.size == 3 %>
-                            <% text_part = match[1] + '"keep:' %>
-                            <% idx = match[2].rindex('"'); loc_part = match[2][6..idx-1] %>
-                          <% end %>
-                          <span style="white-space: pre-wrap; margin: none;"><%= text_part %><%= if loc_part then link_to_arvados_object_if_readable(loc_part, loc_part, friendly_name: true) end %><% if loc_part then %><%= match[2][idx] %><br/><% end %></span>
-                      <% end %>
-                    </div>
+                    <%= render partial: 'show_text_with_locators', locals: {data_height: 400, text_data: mnt_inputs} %>
                   </td>
                 </tr>
               <% end %>