<div class="pull-right"> <% if @object.running %> <%= form_tag "/jobs/#{@object.uuid}/cancel", style: "display:inline; padding-left: 1em" do |f| %> <%= button_tag "Cancel running job", {class: 'btn btn-danger', id: "cancel-job-button"} %> <% end %> <% else %> Re-run job using script version: <%= form_tag '/jobs', style: "display:inline; padding-left: 1em" do |f| %> <% [:script, :script_version, :repository, :output_is_persistent, :supplied_script_version, :nondeterministic].each do |d| %> <%= hidden_field :job, d, :value => @object[d] %> <% end %> <% [:script_parameters, :runtime_constraints].each do |d| %> <%= hidden_field :job, d, :value => JSON.dump(@object[d]) %> <% end %> <%= button_tag "Same as this run", {class: 'btn btn-primary', id: "re-run-same-job-button"} %> <% end %> <% if @object.respond_to? :supplied_script_version and !@object.supplied_script_version.nil? and !@object.supplied_script_version.empty? and @object.script_version != @object.supplied_script_version%> <%= form_tag '/jobs', style: "display:inline" do |f| %> <% [:script, :repository, :output_is_persistent, :supplied_script_version, :nondeterministic].each do |d| %> <%= hidden_field :job, d, :value => @object[d] %> <% end %> <%= hidden_field :job, :script_version, :value => @object[:supplied_script_version] %> <% [:script_parameters, :runtime_constraints].each do |d| %> <%= hidden_field :job, d, :value => JSON.dump(@object[d]) %> <% end %> <%= button_tag "Latest (#{@object.repository}/#{@object.supplied_script_version})", {class: 'btn btn-primary', id: "re-run-latest-job-button"} %> <% end %> <% end %> <% end %> </div> <table class="table pipeline-components-table"> <colgroup> <col style="width: 20%" /> <col style="width: 24%" /> <col style="width: 12%" /> <col style="width: 45%" /> </colgroup> <thead> <tr><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> <tr> <td> <%= @object[:script] %><br> <span class="deemphasize"><%= @object[:script_version] %></span> </td> <td> <%= render partial: 'job_progress', locals: {:j => @object} %> <% if @object.running == false %> <% if @object[:job].andand[:uuid] %> <span class="deemphasize"> <%= link_to("..."+@object[:job][:uuid].last(15), job_url(id: @object[:job][:uuid])) %> </span> <% current_job = @object %> <% if current_job.andand[:log] %> <% fixup = /([a-f0-9]{32}\+\d+)(\+?.*)/.match(current_job[:log])%> <% Collection.limit(1).where(uuid: fixup[1]).each do |c| %> <% c.files.each do |file| %> <br/><span class="deemphasize"> <a href="<%= collection_path(current_job[:log]) %>/<%= file[1] %>?disposition=inline&size=<%= file[2] %>">log</a> </span> <% end %> <% end %> <% end %> <% end %> <% end %> </td><td> <%= render(partial: 'job_status_label', locals: { :j => @object }) %> </td><td> <%= link_to_if_arvados_object @object[:output], {:thumbnail => true} %> </td> </tr> <tfoot> <tr><td colspan="5"></td></tr> </tfoot> </table>