Merge branch 'master' into 2767-doc-updates
[arvados.git] / apps / workbench / app / views / pipeline_instances / _show_components.html.erb
index 88bed699e18cb803ae13c4c37ffbe75173acbf48..61a4ca177d370ae7036b0395c74e445774fbbe44 100644 (file)
@@ -1,29 +1,29 @@
 <% content_for :css do %>
-  .pipeline_color_legend {
-    padding-left: 1em;
-    padding-right: 1em;
-  }
-table.pipeline-components-table {
-  width: 100%;
-  table-layout: fixed;
-}
 
-table.pipeline-components-table thead th {
-  text-align: bottom;
-}
-table.pipeline-components-table div.progress {
-  margin-bottom: 0;
-}
+<% end %>
 
+<% template = PipelineTemplate.find(@object.pipeline_template_uuid) rescue nil %>
+
+<%= content_for :content_top do %>
+  <h2>
+    <%= render_editable_attribute @object, 'name', nil, { 'data-emptytext' => 'Unnamed pipeline' } %>
+  </h2>
+  <% if template %>
+  <h4>
+    From template:
+    <%= link_to_if_arvados_object template, friendly_name: true %>
+  </h4>
+  <% end %>
 <% end %>
 
-<% if @object.active != nil %>
+<% if !@object.state.in? ['New', 'Ready', 'Paused'] %>
 <table class="table pipeline-components-table">
   <colgroup>
     <col style="width: 15%" />
-    <col style="width: 35%" />
-    <col style="width: 15%" />
-    <col style="width: 35%" />
+    <col style="width: 20%" />
+    <col style="width: 12%" />
+    <col style="width: 12%" />
+    <col style="width: 45%" />
   </colgroup>
   <thead>
     <tr>
@@ -33,7 +33,11 @@ table.pipeline-components-table div.progress {
         script, version
       </th><th>
         progress
-        <%= link_to '(refresh)', request.fullpath, class: 'refresh', remote: true, method: 'get' %>
+        <%# format:'js' here helps browsers avoid using the cached js
+        content in html context (e.g., duplicate tab -> see
+        javascript) %>
+        <%= link_to '(refresh)', {format:'js'}, class: 'refresh hide', remote: true, method: 'get' %>
+      </th><th>
       </th><th>
         output
       </th>
@@ -43,103 +47,65 @@ table.pipeline-components-table div.progress {
     <% render_pipeline_jobs.each do |pj| %>
     <tr>
       <td>
+        <% job_status = render(partial: 'job_status_label',
+                               locals: { :j => pj[:job], :title => pj[:name] }) %>
         <% if pj[:job].andand[:uuid] %>
-        <%= link_to pj[:name], job_url(id: pj[:job][:uuid]) %>
+          <%= link_to(job_status, job_url(id: pj[:job][:uuid])) %>
         <% else %>
-        <%= pj[:name] %>
+          <%= job_status %>
         <% 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] %>
+        <%= render(partial: 'job_status_label',
+                               locals: { :j => pj[:job] }) %>
+      </td><td>
+        <%= link_to_if_arvados_object pj[:output], {:thumbnail => true} %>
       </td>
     </tr>
     <% end %>
   </tbody>
   <tfoot>
-    <tr><td colspan="4"></td></tr>
+    <tr><td colspan="5"></td></tr>
   </tfoot>
 </table>
 
-<% if @object.active %>
+<% if @object.state == 'RunningOnServer' || @object.state == 'RunningOnClient' %>
 <% content_for :js do %>
-setInterval(function(){$('a.refresh').click()}, 30000);
+setInterval(function(){$('a.refresh').click()}, 15000);
 <% end %>
-<% end %>
-
-<% else %>
 
+<% content_for :tab_line_buttons do %>
   <%= 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 %>
+    <%= hidden_field @object.class.to_s.underscore.singularize.to_sym, :state, :value => 'Paused' %>
 
-<table class="table pipeline-components-table" style="margin-top: -.1em">
-  <colgroup>
-    <col style="width: 15%" />
-    <col style="width: 35%" />
-    <col style="width: 15%" />
-    <col style="width: 35%" />
-  </colgroup>
-
-  <thead>
-    <tr>
-      <th>
-        component
-      </th><th>
-        script, version
-      </th><th>
-        parameter
-      </th><th>
-        input
-      </th>
-    </tr>
-  </thead>
-  <tbody>
-  <% @object.components.each do |k, v| %>
-
-    <% sp = v[:script_parameters].collect do |k, v| [k, v] end %>
-
-    <tr>
-      <td><%= k %></td>
+    <%= button_tag "Stop pipeline", {class: 'btn btn-primary pull-right', id: "run-pipeline-button"} %>
+  <% end %>
+<% end %>
 
-      <td><%= v[:script] %>
-        <br /><span class="deemphasize"> <%= v[:script_version] %></span>
-      </td>
+<% end %>
 
-      <td>
-        <%= sp[0][0] %>
-      </td>
+<% else %>
+  <% if @object.state == 'New' %>
+    <p>Please set the desired input parameters for the components of this pipeline.  Parameters highlighted in red are required.</p>
+  <% end %>
 
-      <td>
-        <%= sp[0][1] %>
-      </td>
-      </tr>
+  <% content_for :tab_line_buttons do %>
+    <%= form_tag @object, :method => :put do |f| %>
 
-    <% if sp.length > 1 %>
-    <tr>
-      <td></td>
-      <td></td>
+      <%= hidden_field @object.class.to_s.underscore.singularize.to_sym, :state, :value => 'RunningOnServer' %>
 
-      <% sp[1..-1].each do |p| %>
-        <%= p[0] %>
-        <%= p[1] %>
-      <% end %>
-    </tr>
+      <%= button_tag "Run pipeline", {class: 'btn btn-primary pull-right', id: "run-pipeline-button"} %>
+    <% end %>
   <% end %>
+
+  <% if @object.state.in? ['New', 'Ready'] %>
+    <%= render partial: 'show_components_editable', locals: {editable: true} %>
+  <% else %>
+    <%= render partial: 'show_components_editable', locals: {editable: false} %>
   <% end %>
-  </tbody>
-  </table>
-  
 <% end %>