Merge branch 'master' of git.curoverse.com:arvados into 3408-production-datamanager
[arvados.git] / apps / workbench / app / views / pipeline_instances / _show_components.html.erb
index c3a4edd51c4c75e77d38c6061d003ef7de8101f8..94cbf984897c66753ff6728a7d2f2196d9f540dd 100644 (file)
-<% content_for :css do %>
-
-<% 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 %>
-
-<% pipeline_jobs = [] %>
-<% pipeline_job_uuids = [] %>
-
-<% if !@object.state.in? ['New', 'Ready', 'Paused'] %>
-<table class="table pipeline-components-table">
-  <colgroup>
-    <col style="width: 15%" />
-    <col style="width: 20%" />
-    <col style="width: 12%" />
-    <col style="width: 12%" />
-    <col style="width: 45%" />
-  </colgroup>
-  <thead>
-    <tr>
-      <th>
-        component
-      </th><th>
-        script, version
-      </th><th>
-        progress
-        <%# 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>
-    </tr>
-  </thead>
-  <tbody>
-    <% 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(job_status, job_url(id: pj[:job][:uuid])) %>
-          <% pipeline_jobs << pj[:job] %>
-          <% pipeline_job_uuids << pj[:job][:uuid] %>
-        <% else %>
-          <%= job_status %>
-        <% end %>
-      </td><td>
-        <%= pj[:script] %>
-        <br /><span class="deemphasize"><%= pj[:script_version] %></span>
-      </td><td>
-        <%= pj[:progress_bar] %>
-      </td><td>
-        <%= 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="5"></td></tr>
-  </tfoot>
-</table>
-
-<% if @object.state == 'RunningOnServer' || @object.state == 'RunningOnClient' %>
-<% content_for :js do %>
-setInterval(function(){$('a.refresh').click()}, 15000);
-<% end %>
-
-<% content_for :tab_line_buttons do %>
-  <%= form_tag @object, :method => :put do |f| %>
-
-    <%= hidden_field @object.class.to_s.underscore.singularize.to_sym, :state, :value => 'Paused' %>
-
-    <%= button_tag "Stop pipeline", {class: 'btn btn-primary pull-right', id: "run-pipeline-button"} %>
-  <% end %>
-<% end %>
-
-    <% if !pipeline_job_uuids.empty? %>
-      <h4>Log for pipeline</h4>
-      <% log_history = pipieline_log_history(pipeline_job_uuids) %>
-      <div id="pipeline_event_log_history_div">
-        <% log_history.each do |entry| %>
-          <%=entry.summary%><br/>
-        <% end %>
-      </div>
-      <div class="arv-log-event-listener arv-log-event-handler-append-logs" id="pipeline_event_log_div" data-object-uuids="<%=pipeline_job_uuids.join(" ")%>"/>
-    <% end %>
-  <% else %>      <%# Not running. Must be done. %>
-    <h4>Log for pipeline</h4>
-    <div id="pipeline_event_log_history_div">
-    <% pipeline_jobs.each do |j| %>
-      <% if j[:log] %>
-        <% fixup = /([a-f0-9]{32}\+\d+)(\+?.*)/.match(j[:log])%>
-        <% Collection.limit(1).where(uuid: fixup[1]).each do |c| %>
-          <% c.files.each do |file| %>
-            <a href="<%= collection_path(j[:log]) %>/<%= file[1] %>?disposition=inline&size=<%= file[2] %>"><%=j[:uuid]%> Log</a>
-          <% end %>
-        <% end %>
+<% if !@object.state.in? ['New', 'Ready'] %>
+
+  <div class="pull-right" style="padding-left: 1em">
+    Current state: <span class="badge badge-info" data-pipeline-state="<%= @object.state %>">
+      <% if @object.state == "RunningOnServer" %>
+        Active
+      <% else %>
+        <%= @object.state %>
       <% end %>
-    <% end %>
-    </div>
-  <% end %>
-
-<% else %>    <%# State new or ready or paused %>
-  <% 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 %>
-
-  <% content_for :tab_line_buttons do %>
-    <%= form_tag @object, :method => :put do |f| %>
+    </span>&nbsp;
+  </div>
 
-      <%= hidden_field @object.class.to_s.underscore.singularize.to_sym, :state, :value => 'RunningOnServer' %>
+  <%= render_pipeline_components("running", :json) %>
 
-      <%= button_tag "Run pipeline", {class: 'btn btn-primary pull-right', id: "run-pipeline-button"} %>
-    <% end %>
-  <% end %>
+<% else %>
+  <%# state is either New or Ready %>
+  <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>
 
-  <% if @object.state.in? ['New', 'Ready'] %>
-    <%= render partial: 'show_components_editable', locals: {editable: true} %>
-  <% else %>
-    <%= render partial: 'show_components_editable', locals: {editable: false} %>
-  <% end %>
+  <%= render_pipeline_components("editable", :json, editable: true) %>
 <% end %>