closes #10645
[arvados.git] / apps / workbench / app / views / pipeline_instances / _show_components.html.erb
index 395ef77369cd2d48809392da023f80014504b90a..560b3a512b3d327b50c564ff55b947fcae854c75 100644 (file)
-<% content_for :css do %>
-  .pipeline_color_legend {
-    padding-left: 1em;
-    padding-right: 1em;
-  }
-table.pipeline-components-table {
-  width: 100%;
-  table-layout: fixed;
-  overflow: hidden;
-}
+<% if !@object.state.in? ['New', 'Ready'] %>
 
-table.pipeline-components-table thead th {
-  text-align: bottom;
-}
-table.pipeline-components-table div.progress {
-  margin-bottom: 0;
-}
+  <%
+     job_uuids = @object.components.map { |k,j| j.is_a? Hash and j[:job].andand[:uuid] }.compact
+     throttle = 86486400000 # 1001 nights
+     %>
+  <div class="arv-log-refresh-control"
+       data-load-throttle="<%= throttle %>"
+       data-object-uuids="<%= @object.uuid %> <%= job_uuids.join(' ') %>"
+       ></div>
 
-table.pipeline-components-table td {
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-
-<% end %>
-
-<% content_for :js do %>
-  function select_Collection_source() {
-    var ret = [];
-    var lst = get_selection_list();
-    for (var i = 0; i < lst.length; i++) {
-      if (lst[i].type == 'Collection') {
-        ret.push({text: lst[i].name, value: lst[i].uuid})
-      }
-    }
-    return ret;
-  };
-<% end %>
-
-<% if @object.active != nil %>
-<table class="table pipeline-components-table">
-  <colgroup>
-    <col style="width: 15%" />
-    <col style="width: 20%" />
-    <col style="width: 20%" />
-    <col style="width: 45%" />
-  </colgroup>
-  <thead>
-    <tr>
-      <th>
-        component
-      </th><th>
-        script, version
-      </th><th>
-        progress
-        <%= link_to '(refresh)', request.fullpath, class: 'refresh', remote: true, method: 'get' %>
-      </th><th>
-        output
-      </th>
-    </tr>
-  </thead>
-  <tbody>
-    <% render_pipeline_jobs.each do |pj| %>
-    <tr>
-      <td>
-        <% if pj[:job].andand[:uuid] %>
-        <%= link_to pj[:name], job_url(id: pj[:job][:uuid]) %>
-        <% else %>
-        <%= pj[:name] %>
-        <% end %>
-      </td><td>
-        <%= pj[:script] %>
-        <br /><span class="deemphasize"><%= pj[:script_version] %></span>
-      </td><td>
-        <%= pj[:progress_bar] %>
-        <% if pj[:job].andand[:cancelled_at] %>
-        <span class="pull-right label label-warning">cancelled</span>
-        <% elsif pj[:failed] %>
-        <span class="pull-right label label-warning">failed</span>
-        <% elsif pj[:result] == 'queued' %>
-        <span class="pull-right label">queued</span>
-        <% end %>
-      </td><td>
-        <%= link_to_if_arvados_object pj[:output] %>
-      </td>
-    </tr>
-    <% end %>
-  </tbody>
-  <tfoot>
-    <tr><td colspan="4"></td></tr>
-  </tfoot>
-</table>
-
-<% if @object.active %>
-<% content_for :js do %>
-setInterval(function(){$('a.refresh').click()}, 30000);
-<% end %>
-<% end %>
+  <%= render partial: 'work_units/show_component', locals: {wu: @object.work_unit(@object.name)} %>
 
 <% else %>
+  <%# state is either New or Ready %>
+  <%= render_unreadable_inputs_present %>
 
-  <%= form_tag @object, :method => :put do |f| %>
-
-  <%= hidden_field @object.class.to_s.underscore.singularize.to_sym, :active, :value => true %>
-  <%= button_tag "Run pipeline", {class: 'btn btn-primary pull-right'} %>
-  <% end %>
-
-<table class="table pipeline-components-table" style="margin-top: -.1em">
-  <colgroup>
-    <col style="width: 15%" />
-    <col style="width: 20%" />
-    <col style="width: 20%" />
-    <col style="width: 45%" />
-  </colgroup>
-
-  <thead>
-    <tr>
-      <th>
-        component
-      </th><th>
-        script, version
-      </th><th>
-        parameter
-      </th><th>
-        input
-      </th>
-    </tr>
-  </thead>
-  <tbody>
-    <% template = PipelineTemplate.find(@object.pipeline_template_uuid) %>
-    <% template.components.each do |k, v| %>
-
-    <% sp = v[:script_parameters].collect do |k, v| [k, v] end %>
-
-    <tr>
-      <td><%= k %></td>
-
-      <td><%= v[:script] %>
-        <br /><span class="deemphasize"> <%= v[:script_version] %></span>
-      </td>
-
-      <td>
-        <%= sp[0][0] %>
-      </td>
-
-      <td>
-        <%= render_editable_subattribute @object, :components, [k, :script_parameters, sp[0][0].to_sym], sp[0][1] %>
-      </td>
-      </tr>
-
-    <% if sp.length > 1 %>
-    <tr>
-      <td style="border-top: none"></td>
-      <td style="border-top: none"></td>
+  <p><i>Here are all of the pipeline's components (jobs that will need to run in order to complete the pipeline). If you know what you're doing (or you're experimenting) you can modify these parameters before starting the pipeline. Usually, you only need to edit the settings presented on the "Inputs" tab above.</i></p>
 
-      <% sp[1..-1].each do |p| %>
-        <td><%= p[0] %></td>
-        <td><%= p[1] %></td>
-      <% end %>
-    </tr>
-  <% end %>
-  <% end %>
-  </tbody>
-  </table>
-  
+  <%= render_pipeline_components("editable", :json, editable: true) %>
 <% end %>