Merge branch 'master' into 3354-render-textile
[arvados.git] / apps / workbench / app / views / pipeline_instances / _show_components.html.erb
index 1148bffe47b4ccda0525b0e10507ee3e47d9d11f..c55a7253b8bca440b6f58d1059995aeb24406e18 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;
-}
+  <% pipeline_job_uuids = [] %>
 
-table.pipeline-components-table td {
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
+  <div class="pull-right">
+    Current state: <span class="badge badge-info" data-pipeline-state="<%= @object.state %>"><%= @object.state.sub('OnServer', '') %></span>&nbsp;
+  </div>
 
-td.required {
-  background: #ffdddd;
-}
+  <%= render_pipeline_components("running", :json, pipeline_job_uuids: pipeline_job_uuids) %>
 
-<% end %>
+  <% if @object.state.in? %w(RunningOnServer RunningOnClient Failed) %>
 
-<% 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>
-        <% label = if pj[:job].andand[:uuid] 
-                       if pj[:job][:running]
-                         'label-info'
-                       elsif pj[:job][:success]
-                         'label-success'
-                       else
-                         'label-danger'
-                       end 
-                     else
-                       'label-default'
-                     end %>
-        <% if pj[:job].andand[:uuid] %>
-        <%= link_to pj[:name], job_url(id: pj[:job][:uuid]), class: "label #{label}" %>
-        <% else %>
-          <span class="label <%= label %>"><%= pj[:name] %></span>
-        <% end %>
-        </span>
-      </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>
+      <h4>Log messages from jobs</h4>
+      <% log_history = pipeline_log_history((pipeline_job_uuids || []) + [@object.uuid]) %>
+      <div class="arv-log-event-listener arv-log-event-handler-append-logs arv-job-log-window" id="pipeline_event_log_div" data-object-uuids="<%= @object.uuid %> <%=(pipeline_job_uuids || []).join(" ")%>">
+        <% log_history.each do |entry| %>
+          <%=entry%><br/>
         <% 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 %>
-
-<% else %>
-
-  <%= form_tag @object, :method => :put do |f| %>
+      </div>
 
-  <%= 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
-      </th><th>
-        parameter
-      </th><th>
-        value
-      </th>
-    </tr>
-  </thead>
-  <tbody>
-    <% template = PipelineTemplate.find(@object.pipeline_template_uuid) %>
-    <% template.components.each do |k, template_value| %>
-
-    <tr>
-      <td><span class="label label-default"><%= k %></span></td>
-
-      <td><%= render_editable_subattribute @object, :components, [k, :script], template_value[:script] %></td>
-
-      <td>script version</td>
-
-      <td>
-        <%= render_editable_subattribute @object, :components, [k, :script_version], template_value[:script_version] %>
-      </td>
-    </tr>
+<% 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 template_value[:script_parameters].length > 0 %>
-      <% template_value[:script_parameters].each do |p, tv| %>
-        <tr>
-          <td style="border-top: none"></td>
-          <td style="border-top: none"></td>
-          
-          <td class="property-edit-row"><%= p %></td>
-          <td class="property-edit-row"><%= render_editable_subattribute @object, :components, [k, :script_parameters, p.to_sym], tv %></td>
-      <% end %>
-      </tr>
-    <% end %>
-  <% end %>
-  </tbody>
-  </table>
-  
+  <%= render_pipeline_components("editable", :json, editable: true) %>
 <% end %>