We were very inconsistent regarding these rules. Personally I prefer no empty lines around blocks, clases, etc... as recommended by the Ruby style guide [1], and they're the default values in rubocop, so those are the settings I'm applying. The exception is the `private` access modifier, since we were leaving empty lines around it most of the time. That's the default rubocop rule as well. Personally I don't have a strong preference about this one. [1] https://rubystyle.guide/#empty-lines-around-bodies
113 lines
2.9 KiB
Ruby
113 lines
2.9 KiB
Ruby
module ProposalsHelper
|
|
def progress_bar_percentage(proposal)
|
|
case proposal.cached_votes_up
|
|
when 0 then 0
|
|
when 1..Proposal.votes_needed_for_success then (proposal.total_votes.to_f * 100 / Proposal.votes_needed_for_success).floor
|
|
else 100
|
|
end
|
|
end
|
|
|
|
def supports_percentage(proposal)
|
|
percentage = (proposal.total_votes.to_f * 100 / Proposal.votes_needed_for_success)
|
|
case percentage
|
|
when 0 then "0%"
|
|
when 0..0.1 then "0.1%"
|
|
when 0.1..100 then number_to_percentage(percentage, strip_insignificant_zeros: true, precision: 1)
|
|
else "100%"
|
|
end
|
|
end
|
|
|
|
def namespaced_proposal_path(proposal, options = {})
|
|
@namespace_proposal_path ||= namespace
|
|
case @namespace_proposal_path
|
|
when "management"
|
|
management_proposal_path(proposal, options)
|
|
else
|
|
proposal_path(proposal, options)
|
|
end
|
|
end
|
|
|
|
def retire_proposals_options
|
|
Proposal::RETIRE_OPTIONS.collect { |option| [t("proposals.retire_options.#{option}"), option] }
|
|
end
|
|
|
|
def empty_recommended_proposals_message_text(user)
|
|
if user.interests.any?
|
|
t("proposals.index.recommendations.without_results")
|
|
else
|
|
t("proposals.index.recommendations.without_interests")
|
|
end
|
|
end
|
|
|
|
def author_of_proposal?(proposal)
|
|
author_of?(proposal, current_user)
|
|
end
|
|
|
|
def current_editable?(proposal)
|
|
current_user && proposal.editable_by?(current_user)
|
|
end
|
|
|
|
def proposals_minimal_view_path
|
|
proposals_path(view: proposals_secondary_view)
|
|
end
|
|
|
|
def proposals_default_view?
|
|
@view == "default"
|
|
end
|
|
|
|
def proposals_current_view
|
|
@view
|
|
end
|
|
|
|
def proposals_secondary_view
|
|
proposals_current_view == "default" ? "minimal" : "default"
|
|
end
|
|
|
|
def link_to_toggle_proposal_selection(proposal)
|
|
if proposal.selected?
|
|
button_text = t("admin.proposals.index.selected")
|
|
html_class = "button expanded"
|
|
else
|
|
button_text = t("admin.proposals.index.select")
|
|
html_class = "button hollow expanded"
|
|
end
|
|
|
|
case proposal.class.to_s
|
|
when "Proposal"
|
|
path = toggle_selection_admin_proposal_path(proposal)
|
|
when "Legislation::Proposal"
|
|
path = toggle_selection_admin_legislation_process_proposal_path(proposal.process, proposal)
|
|
end
|
|
|
|
link_to button_text, path, remote: true, method: :patch, class: html_class
|
|
end
|
|
|
|
def css_for_proposal_info_row(proposal)
|
|
if proposal.image.present?
|
|
if params[:selected].present?
|
|
"small-12 medium-9 column"
|
|
else
|
|
"small-12 medium-6 large-7 column"
|
|
end
|
|
else
|
|
if params[:selected].present?
|
|
"small-12 column"
|
|
else
|
|
"small-12 medium-9 column"
|
|
end
|
|
end
|
|
end
|
|
|
|
def show_proposal_votes?
|
|
params[:selected].blank?
|
|
end
|
|
|
|
def show_featured_proposals?
|
|
params[:selected].blank? && @featured_proposals.present?
|
|
end
|
|
|
|
def show_recommended_proposals?
|
|
params[:selected].blank? && feature?("user.recommendations") && @recommended_proposals.present?
|
|
end
|
|
end
|