<%# Work unit status %>
<%# Need additional handling for main object display %> <% if @object.uuid == wu.uuid %>
<%# column offset 0 %> <% if wu.state_label.in? ["Queued", "Running"] and wu.can_cancel? and @object.editable? %>
<%= form_tag "#{wu.uri}/cancel", remote: true, style: "display:inline; padding-left: 1em" do |f| %> <%= hidden_field_tag :return_to, url_for(@object) %> <%= button_tag "Cancel", {class: 'btn btn-xs btn-danger', id: "cancel-obj-button"} %> <% end %>
<% end %> <%# column offset 1 %>
<%= render partial: 'work_unit/progress', locals: {wu: wu} %>
<% end %>
<% if wu.state_label == 'Paused' %>

This <%= wu.title %> is paused. Children that are already running will continue to run, but no new work will be submitted.

<% end %> <% runningtime = determine_wallclock_runtime(wu.children) %>

<% if wu.started_at %> This <%= wu.title %> started at <%= render_localized_date(wu.started_at) %>. It <% if wu.state_label == 'Complete' %> completed in <% elsif wu.state_label == 'Failed' %> failed after <% else %> has been active for <% end %> <% walltime = if wu.finished_at then wu.finished_at - wu.started_at else Time.now - wu.started_at end %> <%= if walltime > runningtime render_runtime(walltime, false) else render_runtime(runningtime, false) end %><% if wu.finished_at %> at <%= render_localized_date(wu.finished_at) %><% end %>. <% else %> <% if wu.state_label %> This <%= wu.title %> is <%= if wu.state_label == 'Running' then 'active' else wu.state_label.downcase end %>. <% end %> <% walltime = 0 %> <% end %> <% if wu.state_label == 'Failed' %> Check the Log tab for more detail about why it failed. <% end %>

<% if wu.state_label %>

It <% if wu.state_label == 'Running' %> has run <% else %> ran <% end %> for <% cputime = wu.children.map { |c| if c.started_at (c.runtime_constraints.andand[:min_nodes] || 1) * ((c.finished_at || Time.now()) - c.started_at) else 0 end }.reduce(:+) || 0 %> <%= render_runtime(runningtime, false) %><% if (walltime - runningtime) > 0 %> (<%= render_runtime(walltime - runningtime, false) %> queued)<% end %><% if cputime == 0 %>.<% else %> and used <%= render_runtime(cputime, false) %> of node allocation time (<%= (cputime/runningtime).round(1) %>⨯ scaling). <% end %>

<% end %>

<%= render(partial: 'work_unit/component_detail', locals: {current_obj: wu}) %>

<%# Work unit children %> <% uuids = wu.children.collect {|c| c.uuid}.compact if uuids.any? resource_class = resource_class_for_uuid(uuids.first, friendly_name: true) preload_objects_for_dataclass resource_class, uuids end collections = wu.children.collect {|j| j.output}.compact collections.concat wu.children.collect {|j| j.docker_image}.uniq.compact collections_pdhs = collections.select {|x| !(m = CollectionsHelper.match(x)).nil?}.uniq.compact collections_uuids = collections - collections_pdhs preload_collections_for_objects collections_uuids if collections_uuids.any? preload_for_pdhs collections_pdhs if collections_pdhs.any? %> <% if wu.has_unreadable_children %> <%= render(partial: "pipeline_instances/show_components_json", locals: {error_name: "Unreadable components", backtrace: nil, wu: wu}) %> <% else %> <% @descendent_count = 0 if !@descendent_count %> <% wu.children.each do |c| %> <% @descendent_count += 1 %> <%= render(partial: 'work_unit/show_child', locals: {current_obj: c, i: @descendent_count, expanded: false}) %> <% end %> <% end %>