Use methods instead of variables in votes view

Now the view is more readable and it's possible to customize these
methods writing a custom class, without changing or copying the view.
This commit is contained in:
Javi Martín
2021-06-12 02:49:00 +02:00
parent ad6dd54da2
commit cd8fa606c7
2 changed files with 18 additions and 10 deletions

View File

@@ -1,15 +1,11 @@
<% reason = investment.reason_for_not_being_selectable_by(current_user) %>
<% voting_allowed = true unless reason.presence == :not_voting_allowed %>
<% user_voted_for = voted_for?(investment_votes, investment) %>
<div class="supports js-participation"> <div class="supports js-participation">
<span class="total-supports <%= "no-button" unless voting_allowed || user_voted_for %>"> <span class="total-supports <%= "no-button" unless voting_allowed? || user_voted_for? %>">
<%= t("budgets.investments.investment.supports", count: investment.total_votes) %> <%= t("budgets.investments.investment.supports", count: investment.total_votes) %>
</span> </span>
<div class="in-favor"> <div class="in-favor">
<% if user_voted_for %> <% if user_voted_for? %>
<div class="supported callout success"> <div class="supported callout success">
<%= t("budgets.investments.investment.already_supported") %> <%= t("budgets.investments.investment.already_supported") %>
</div> </div>
@@ -21,13 +17,13 @@
remote: !display_support_alert?, remote: !display_support_alert?,
data: (display_support_alert? ? { data: (display_support_alert? ? {
confirm: t("budgets.investments.investment.confirm_group", count: investment.group.max_votable_headings) } : nil), confirm: t("budgets.investments.investment.confirm_group", count: investment.group.max_votable_headings) } : nil),
"aria-hidden" => css_for_aria_hidden(reason) do %> "aria-hidden" => css_for_aria_hidden do %>
<%= t("budgets.investments.investment.give_support") %> <%= t("budgets.investments.investment.give_support") %>
<% end %> <% end %>
<% end %> <% end %>
</div> </div>
<% if reason.present? && !user_voted_for %> <% if reason.present? && !user_voted_for? %>
<div class="js-participation-not-allowed participation-not-allowed" style="display:none" aria-hidden="false"> <div class="js-participation-not-allowed participation-not-allowed" style="display:none" aria-hidden="false">
<p> <p>
<small> <small>
@@ -43,7 +39,7 @@
</div> </div>
<% end %> <% end %>
<% if user_voted_for && setting["twitter_handle"] %> <% if user_voted_for? && setting["twitter_handle"] %>
<div class="share-supported"> <div class="share-supported">
<%= render "shared/social_share", <%= render "shared/social_share",
title: investment.title, title: investment.title,

View File

@@ -11,13 +11,25 @@ class Budgets::Investments::VotesComponent < ApplicationComponent
private private
def reason
@reason ||= investment.reason_for_not_being_selectable_by(current_user)
end
def voting_allowed?
reason != :not_voting_allowed
end
def user_voted_for?
@user_voted_for ||= voted_for?(investment_votes, investment)
end
def display_support_alert? def display_support_alert?
current_user && current_user &&
!current_user.voted_in_group?(investment.group) && !current_user.voted_in_group?(investment.group) &&
investment.group.headings.count > 1 investment.group.headings.count > 1
end end
def css_for_aria_hidden(reason) def css_for_aria_hidden
reason.present? ? "true" : "" reason.present? ? "true" : ""
end end
end end