openaustralia/publicwhip

View on GitHub
app/views/divisions/show_policies.html.haml

Summary

Maintainability
Test Coverage
= render "header", division: @division

%h2 Related Policies

- unless @division.policies.empty?
  %ul.division-policies-list.list-unstyled
    - @division.policies.order(:name).each do |policy|
      %li.division-policy
        = simple_form_for :policy_division, url: update_policy_division_path(@division.url_params.merge(policy_id: policy)), method: :patch, html: {class: 'division-policy-statement form-inline policyvote'} do |f|
          %label.division-policy-statement
            People who are
            = link_to policy.name_with_for, policy
            - if policy.provisional?
              %em (draft)
            would have voted
          = vote_select(f, policy.vote_for_division(@division))
          = f.submit 'Update', class: 'btn btn-primary btn-xs'
        = button_to 'remove', destroy_policy_division_path(@division.url_params.merge(policy_id: policy)), method: :delete, class: 'btn btn-sm btn-link'

%h3 Make a new connection

= simple_form_for @policy_division, url: create_policy_division_path(@division.url_params), html: {class: 'form-inline policyvote'} do |f|
  %legend.small
    %p Connect this division with relevant policies.
    %p Please read policy definitions and the division’s description before altering list.
  - if @policy_division.errors.any?
    .alert.alert-danger= @policy_division.errors.full_messages.to_sentence
  %fieldset
    %label People who are for
    = f.select :policy_id, nil, {prompt: "Select related policy"}, size: 1, class: "selectpicker", data: {width: "auto", "live-search" => true} do
      %optgroup(label="Draft policies")
        = options_from_collection_for_select(Policy.provisional.order(:name), "id", "name", disabled: @division.policies.map{|p| p.id})
      %optgroup(label="Published policies")
        = options_from_collection_for_select(Policy.published.order(:name), "id", "name", disabled: @division.policies.map{|p| p.id})
    would have
    %label voted
    = vote_select(f, nil, prompt: "Select vote")
  = f.submit 'Connect policy', class: 'btn btn-primary'