holderdeord/hdo-site

View on GitHub
app/views/votes/show.html.erb

Summary

Maintainability
Test Coverage
<div class="page-header">
  <h1><%= @vote.subject %></h1>
</div>

<small class="row-fluid muted">
  <div class="span6">
    <strong><%= @vote.enacted? ? 'Vedtatt' : 'Ikke vedtatt' %>.</strong>
    <%= @vote.for_count %> for, <%= @vote.against_count %> mot, <%= @vote.absent_count %> ikke til stede
  </div>

  <div class="span6">
    <div class="pull-right"><%= l @vote.time.localtime, format: :text_time %></div>
  </div>
</small>

<% if @vote.inferred? %>
  <div class="alert alert-info"><%= I18n.t('app.votes.non_personal.inferred') %></div>
  Les mer om <%= link_to 'enstemmige vedtak', home_faq_path(anchor: 'hvordan-vet-dere-hvem-som-var-tilstede-nr-vedtaket-er-enstemmig') %>.
<% elsif @vote.non_personal? %>
  <div class="alert alert-info"><%= I18n.t('app.votes.non_personal.unknown') %></div>
<% end %>


<% if @vote.vote_results.size > 0 %>
  <div class="hidden-phone">
    <div class="row-fluid">
      <h5 class="span4">For</h5>
      <h5 class="span4">Mot</h5>
      <h5 class="span4">Ikke til stede</h5>
    </div>

    <% @results_by_party.each do |party, results_by_status| %>
      <div class="vote-result-row row-fluid" data-toggle="collapse" data-target='#vote-results-<%= party.slug %>'>
        <% results_by_status.each_with_index do |(status, results), idx| %>
          <div class="span4">
            <% if idx == 0 %>
              <span class="expandable"></span>
            <% end  %>

            <% if results.any? %>
              <%= image_tag party.logo, alt: party.name, width: '24', height: '24' %>
              <span><%= party.name %> (<%= results.size %>)</span>
            <% end %>
          </div>
        <% end %>
      </div>

      <div class="row-fluid collapse" id="vote-results-<%= party.slug %>">
        <% results_by_status.each do |_, results| %>
          <div class="span4">
            <% results.each do |result| %>
              <p>
                <%= link_to result.representative.name, result.representative %>
                <%= '(utbryter)' if result.rebel? %>
              </p>
            <% end %>
          </div>
        <% end %>
      </div>
    <% end %>

    <div class="row-fluid" style="margin-top: 1rem;">
      <% if @vote.comment && @vote.comment.size > 0 %>
        <p class="muted"><strong>Merknad: </strong><%= @vote.comment %></p>
      <% end %>
    </div>
</div>

<!-- flat list on mobile  -->
<div class="row-fluid visible-phone">
  <div class="row-fluid">
    <% @results_by_party.each do |party, results_by_status| %>
      <h4>
        <%= party.name %>
        <%= image_tag party.logo, alt: party.name, width: '24', height: '24' %>
      </h4>

      <p class="muted">
        <%= results_by_status[:for].size %> for, <%= results_by_status[:against].size %> mot, <%= results_by_status[:absent].size %> ikke til stede
        <small class="pull-right"><a class="show-representatives" data-party="<%= party.slug %>" href="#">Vis representanter</a></small>
      </p>

      <div id="<%= party.slug %>-results" class="hidden">
        <% results_by_status.each do |status, results| %>
          <% results.each do |result| %>
            <div class="row-fluid">
              <strong style="padding-right: 0.5em"><%= result.human %></strong>
              <%= link_to result.representative.name, result.representative %>
              <%= '(utbryter)' if result.rebel? %>
            </div>
          <% end %>
        <% end %>
      </div>

      <hr class="small">
    <% end %>
  </div>
</div>

<% content_for :document_ready do %>
  <script>
    function toggleExpandable(e) {
      $(this)
        .prev('.vote-result-row')
        .find('.expandable')
        .toggleClass('expanded');
    }

    $(function() {
      $(".collapse")
        .on("show", toggleExpandable)
        .on("hide", toggleExpandable);
      });

      $(".show-representatives").click(function(e) {
        e.preventDefault();

        var slug = $(this).data('party');
        var toggled = $('#' + slug + "-results").toggleClass('hidden');

        var newText = $(this).text().indexOf('Skjul') === -1 ? 'Skjul representanter' : 'Vis representanter';
        $(this).text(newText);
      });
  </script>
<% end %>

<% end %>

<hr class="soften">

<div class="row-fluid">
  <% if @issues.any? %>
    <div class="span6">
      <h4>Avstemningen brukes i</h4>
      <ul>
        <% @issues.each do |issue| %>
          <li><%= link_to issue.title, issue %></li>
        <% end %>
      </ul>
    </div>
  <% end %>

  <div class="span6">
    <h4><%= ParliamentIssue.model_name.human(count: 2).capitalize %></h4>
    <ul>
      <% @parliament_issues.each do |parliament_issue| %>
        <li>
          <%= link_to parliament_issue.summary, parliament_issue %>
          <%= link_to parliament_issue.url do %>
            <%= image_tag 'link.png', width: 12, height: 12, class: 'permalink' %>
          <% end %>
        </li>
      <% end %>
    </ul>
  </div>
</div>

<hr class="soften">

<div class="row-fluid">
  <h3><%= Proposition.model_name.human(count: @vote.propositions.size).capitalize %></h3>
  <% if @vote.propositions.any? %>
    <% @vote.propositions.each do |prop| %>
      <div class="row-fluid">
        <h4><%= link_to prop.simple_description || prop.auto_title, proposition_path(prop)  %></h4>

        <blockquote>
          <%= (prop.simple_body ? markdown(prop.simple_body) : prop.body).html_safe %>

          <% if prop.proposers.any? %>
            <small><%= prop.proposers.map(&:name).to_sentence %></small>
          <% elsif prop.on_behalf_of.present? %>
            <small><%= prop.on_behalf_of %></small>
          <% end %>
        </blockquote>
      </div>
    <% end %>
  <% else %>
    <p>Hmm, denne avstemningen har ingen forslag koblet til seg.</p>
  <% end %>
</div>