9318: remove :output method in favor of :outputs method and correct the logic for...
[arvados.git] / apps / workbench / app / views / work_unit / _component_detail.html.erb
1       <div class="container">
2         <div class="row">
3           <div class="col-md-5">
4             <% if current_obj.uuid.nil? %>
5               No <%= current_obj.title %> has been submitted yet.
6             <% else %>
7             <table>
8               <% keys = [:uuid, :modified_by_user_uuid, :created_at, :started_at, :finished_at, :priority] %>
9               <% keys << :outputs if @object.uuid == current_obj.uuid %>
10               <% keys.each do |k| %>
11                 <% val = current_obj.send(k) if current_obj.respond_to?(k) %>
12                 <% if val %>
13                 <tr>
14                   <td style="padding-right: 1em">
15                     <%= k.to_s %>:
16                   </td>
17                   <td>
18                     <% if k == :uuid %>
19                       <%= link_to_arvados_object_if_readable(val, val, link_text: val) %>
20                     <% elsif k.to_s.end_with? 'uuid' %>
21                       <%= link_to_arvados_object_if_readable(val, val, friendly_name: true) %>
22                     <% elsif k.to_s.end_with? '_at' %>
23                       <%= render_localized_date(val) %>
24                     <% elsif k == :outputs and val.any? %>
25                       <% if val.size == 1 %>
26                         <%= link_to_arvados_object_if_readable(val[0], 'Output data not available', friendly_name: true) %>
27                       <% else %>
28                         <%= render partial: 'work_unit/show_outputs', locals: {id: current_obj.uuid, outputs: val, align:""} %>
29                       <% end %>
30                     <% else %>
31                       <%= val %>
32                     <% end %>
33                   </td>
34                 </tr>
35                 <% end %>
36               <% end %>
37             </table>
38             <% end %>
39           </div>
40           <div class="col-md-6">
41             <table>
42               <% # link to repo tree/file only if the repo is readable
43                  # and the commit is a sha1...
44                  repo =
45                  (/^[0-9a-f]{40}$/ =~ current_obj.script_version and
46                  Repository.where(name: current_obj.repository).first)
47
48                  # ...and the api server provides an http:// or https:// url
49                  repo = nil unless repo.andand.http_fetch_url
50                  %>
51               <% [:script, :repository, :script_version, :supplied_script_version, :nondeterministic].each do |k| %>
52                 <% val = current_obj.send(k) if current_obj.respond_to?(k) %>
53                 <% if val %>
54                 <tr>
55                   <td style="padding-right: 1em">
56                     <%= k.to_s %>:
57                   </td>
58                   <td>
59                     <% if repo and k == :repository %>
60                       <%= link_to val, show_repository_tree_path(id: repo.uuid, commit: current_obj.script_version, path: '/') %>
61                     <% elsif repo and k == :script %>
62                       <%= link_to val, show_repository_blob_path(id: repo.uuid, commit: current_obj.script_version, path: 'crunch_scripts/'+current_obj.script) %>
63                     <% elsif repo and k == :script_version %>
64                       <%= link_to val, show_repository_commit_path(id: repo.uuid, commit: current_obj.script_version) %>
65                     <% else %>
66                       <%= val %>
67                     <% end %>
68                   </td>
69                 </tr>
70                 <% end %>
71               <% end %>
72               <% if current_obj.runtime_constraints.andand[:docker_image] and current_obj.docker_image %>
73                 <tr>
74                   <td style="padding-right: 1em">
75                     docker_image:
76                   </td>
77                   <td>
78                     <%= current_obj.runtime_constraints[:docker_image] %>
79                   </td>
80                 </tr>
81                 <tr>
82                   <td style="padding-right: 1em">
83                     docker_image_locator:
84                   </td>
85                   <td>
86                     <%= link_to_arvados_object_if_readable(current_obj.docker_image,
87                       current_obj.docker_image, friendly_name: true) %>
88                   </td>
89                 </tr>
90               <% end %>
91             </table>
92           </div>
93         </div>
94
95         <% if current_obj.parameters and !current_obj.parameters.empty? %>
96         <div class="row">
97           <div class="col-md-6">
98             <p>script_parameters:</p>
99             <pre><%= JSON.pretty_generate(current_obj.parameters) rescue nil %></pre>
100           </div>
101         </div>
102         <% end %>
103       </div>