sanger/sequencescape

View on GitHub
app/views/studies/information/_asset_progress.html.erb

Summary

Maintainability
Test Coverage

<%= form_tag show_summary_study_information_path(@study),
             method: :get,
             class: 'remote-form observed',
             data: { update: "#everything", throbber: '#loading', remote: true } do %>
  <%= label_tag(:labware_type, 'Filter by') %>
  <%= select_tag(:labware_type, options_for_select(labware_types_for_select, @labware_type), class: 'form-control observed') %>
<% end %>

<span class="filter_options">Currently showing <strong><%= @labware_type_name %></strong></span>

<%= pagination @page_elements %>
<% submissions = @submissions %>
<table id="summary" class="sortable table table-striped">
  <thead>
    <tr>
      <th>Name</th>
      <th>Type</th>
      <th>Sample</th>
      <th>Closed?</th>
      <% @request_types.each do |request_type| %>
        <th><center><%= request_type.name %></center></th>
      <% end %>
      <th>Latest update</th>
      <th>Update date</th>
      <th>Updates</th>
    </tr>
  </thead>
  <tbody>
    <% @study.asset_progress(@page_elements) do |statistics| %>
      <% @page_elements.each do |asset| %>
        <% asset_statistics = statistics[asset.id] %>
        <tr class="<%= label_asset_state(asset) %>">
          <td><%= link_to(h(asset.display_name), receptacle_path(asset), title: asset.label.capitalize) %></td>
          <td><%= asset.label %></td>
          <td><% if asset.is_a?(Receptacle) %>
            <% asset.aliquots.each do |a| %>
              <%= link_to(a.sample.name, a.sample) %>;
            <% end %>
          <% end %>
          <td><%= asset.closed? ? 'Yes' : 'No' %></td>

          <% @request_types.each do |request_type| %>
            <% request_type_statistics = asset_statistics[request_type.id] %>
            <% if request_type_statistics.total > 1 and request_type_statistics.progress > 0 %>
              <td><%= progress_bar(request_type_statistics.progress) %></td>
            <% else %>
              <td>
                <% if request_type_statistics.passed > 0 %>
                  <center><span style="display:none">passed</span><%= icon('far', 'check-circle', title: 'Passed') %></center>
                <% elsif request_type_statistics.started > 0 %>
                  <center><span style="display:none">started</span><%= icon('fas', 'cog', title: 'Started') %></center>
                <% elsif request_type_statistics.pending > 0 %>
                  <center><span style="display:none">pending</span><%= icon('fas', 'hourglass-start ', title: 'Pending') %></center>
                <% elsif request_type_statistics.failed > 0 %>
                  <center><span style="display:none">failed</span><%= icon('fas', 'times-circle', title: 'Failed') %></center>
                <% end %>
              </td>
            <% end %>
          <% end %>

          <% summary = UiHelper::Summary.new(); summary.load_asset(asset); summary_asset = summary.summaries.first %>

          <% if summary_asset %>
            <td><%= link_to(summary_asset.message, summary_asset.external_link.to_s) %></td>
            <td><%= summary_asset.timestamp.to_formatted_s(:sortable)%></td>
          <% else %>
            <td></td>
            <td></td>
          <% end %>
          <td><%= link_to 'Show all', summary_receptacle_path(asset) %></td>
        </tr>
      <% end %>
    <% end %>
  </tbody>
</table>
<%= pagination @page_elements %>