sanger/sequencescape

View on GitHub
app/views/submissions/_saved_order.html.erb

Summary

Maintainability
Test Coverage

<%= panel('success',title:"Order added to submission at: #{order.created_at.to_formatted_s(:day_full_with_time)}") do %>
  <%- form ||= nil %>
  <span class="completed badge">✔</span>
  <dl class="order-summary">

    <% if order.study.present? %>
      <dt>Study</dt>
      <dd><%= link_to(order.study.name, order.study, target: "_blank") %></dd>
    <% else %>
      <dt>Cross Studies</dt>
      <dd>
        <% order.source_asset_studies.each do |study| %>
          <%= link_to(study.name, study, target: "_blank") %>
        <% end %>
      </dd>
    <% end %>

    <% if order.project.present? %>
      <dt>Project</dt>
      <dd><%= link_to(order.project.name, order.project, target: "_blank") %></dd>
    <% else %>
      <dt>Cross Projects</dt>
      <dd>
        <% order.source_asset_projects.each do |project| %>
          <%= link_to(project.name, project, target: "_blank") %>
        <% end %>
      </dd>
    <% end %>

  <% if order.asset_group.present? -%>
    <dt>Asset Group</dt>
    <dd><%= link_to(h(order.asset_group.name), study_asset_group_path(order.study, order.asset_group), target: "_blank") %></dd>
  <% elsif order.assets.present? -%>
    <dt>Samples</dt>
    <dd><%= order.samples.pluck(:name).join(', ') %></dd>
  <% else -%>
    There are no assets in this order, it maybe damaged or very out of date
  <% end -%>

  <% unless order.request_types.blank? %>
    <dt>Request types</dt><dd><ul>
      <% RequestType.order(:order).find(order.request_types).each do |request_type| %>
        <li><%= request_description(presenter, request_type) %></li>
      <% end %>
    </ul></dd>
  <% end %>

  <% unless order.request_options['pre_capture_plex_level'].nil? %>
    <dt>Pre-capture plexing level</dt>
    <dd><%= order.request_options['pre_capture_plex_level'] %></dd>
    <dt>Pre-capture plex group</dt>
    <dd><%= order.pre_cap_group %></dd>
  <% end %>

  <% unless order.request_options['gigabases_expected'].nil? %>
    <dt>Gigabases expected</dt>
    <dd><%= order.request_options['gigabases_expected'] %></dd>
  <% end %>

  <dt>Comments</dt>
  <dl><%= order.comments.presence || 'No comments' %></dl>
  </dl>

  <div id="order-controls" class="buttons"></div>

    <%= form_tag(order_path(order.id), method: :put, class: "comments-box") do -%>
      <%= text_area_tag :comments, nil, placeholder: "Write a new comment here", class: "form-control", id: 'comments-input' %>
      <%= submit_tag raw("&#10010; Add new comment"),
      id: "add-comment",
      class: "btn btn-default add-comment" %>
    <% end %>

  <% if form.present? -%>
    <div class="save-buttons">
      <%= hidden_field_tag :order_id,
        order.id,
        class: 'order-id'
      %>

      <%= submit_tag '♻  Delete Order',
        class: 'delete-order btn btn-danger'
      %>

    </div>
  <% end -%>

  <%# We care about order of execution, so don't use type module here as that
  ensures this fires *before* the order callback that updates the form action.
  This is quite brittle, and more modern solutions should be considered, but
  this will require a near complete rewrite of the submission front end. %>
  <%= javascript_tag nonce: true do %>
    window.SCAPE.submission.id = <%= presenter.submission.id %>;
  <% end %>
<% end %>