bio-miga/miga-web

View on GitHub
app/views/shared/results/_project_stats.html.erb

Summary

Maintainability
Test Coverage
<%

$id_k = 0

def print_tax_datasets(v, p)
  return if v["datasets"].empty?
  %>
  <div class="datasets list-group-item">
    <%= v["datasets"].map do |d| %>
      <% link_to d.unmiga_name, reference_dataset_url(p.id, d) %>
    <% end.to_sentence.html_safe %>
  </div>
  <br/>
  <%
end

def print_tax_children(v, p, str_id)
  return if v["children"].empty?
  ch = v["children"].select{ |i| i["str"] !~ /:\?$/ } +
       v["children"].select{ |i| i["str"] =~ /:\?$/ }
  ds = ch.select{ |i| i["str"] =~ /^ds:/ }
  tx = ch.select{ |i| i["str"] !~ /^ds:/ }
  print_tax_datasets({"datasets"=>ds.map{ |i| i["datasets"] }.flatten}, p)
  if str_id.nil?
    tx.each { |i| print_tax_rank(i, p) }
  else
    %>
    <div id="<%= str_id %>" class="collapse taxonomy-tree-element">
      <% tx.each { |i| print_tax_rank(i, p) } %>
    </div>
    <%
  end
end

def print_tax_rank(v, p)
  return if v.nil?
  if v["datasets"].empty? and (v["str"] =~ /:\?$/ or v["str"]=="root:biota")
    print_tax_children(v, p, nil)
    print_tax_datasets(v, p)
  else
    str_id = "tax-#{$id_k += 1}"
    str = v["str"].split(":")
    str_rk = MiGA::Taxonomy.LONG_RANKS[str[0].to_sym]
    str_rk = str[0] if str_rk.nil?
    str_vl = str[1].unmiga_name
    %>
    <div class="taxonomy-tree">
      <b><%= link_to "##{str_id}", "data-toggle"=>"collapse",
                "aria-expanded"=>"false", "aria-controls"=>str_id do %>
          <span class=badge><%= str_rk %></span> <i><%= str_vl %></i>
      <% end %></b>
      <% print_tax_datasets(v, p) %>
      <% print_tax_children(v, p, str_id) %>
    </div>
    <%
  end
end
%>

<% unless res.file_path(:taxonomy_index).nil? %>
  <h4>Search in project</h4>
  <%= render partial: "projects/search_bar" %>
  <% unless project.miga.is_multi? %>
    <br/>
    <div class="help-block">
      &nbsp;Or filter by quality:
      <% q_tag = {excellent:"success", high:"info",
        intermediate:"warning", low:"danger"} %>
      <% q_tag.keys.each do |i| %>
        <%= link_to i,
          project_search_path(project.id, q:"quality:#{i}"),
          class: "btn btn-q-#{i} btn-xs" %>
      <% end %>
    </div>
  <% end %>
  <h4>Taxonomy tree</h4>
  <% tax = JSON.parse File.read res.file_path :taxonomy_index %>
  <% print_tax_rank(tax["root"], project) %>
  <br/>
<% end %>