Extract calculate winners button to a component
This way we remove some duplication.
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
<% if display_button? %>
|
||||
<%= link_to text,
|
||||
calculate_winners_admin_budget_path(budget),
|
||||
method: :put,
|
||||
class: html_class %>
|
||||
<% elsif from_investments %>
|
||||
<span class="button hollow disabled float-right clear">
|
||||
<%= t("admin.budgets.winners.calculate") %>
|
||||
</span>
|
||||
<div class="callout warning clear">
|
||||
<%= t("admin.budget_investments.index.cannot_calculate_winners") %>
|
||||
</div>
|
||||
<% end %>
|
||||
@@ -0,0 +1,30 @@
|
||||
class Admin::Budgets::CalculateWinnersButtonComponent < ApplicationComponent
|
||||
attr_reader :budget, :from_investments
|
||||
|
||||
def initialize(budget, from_investments: false)
|
||||
@budget = budget
|
||||
@from_investments = from_investments
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def display_button?
|
||||
budget.balloting_or_later?
|
||||
end
|
||||
|
||||
def text
|
||||
if budget.investments.winners.empty?
|
||||
t("admin.budgets.winners.calculate")
|
||||
else
|
||||
t("admin.budgets.winners.recalculate")
|
||||
end
|
||||
end
|
||||
|
||||
def html_class
|
||||
if from_investments
|
||||
"button hollow float-right clear"
|
||||
else
|
||||
"button hollow"
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -86,12 +86,7 @@
|
||||
</div>
|
||||
|
||||
<div class="float-right">
|
||||
<% if display_calculate_winners_button?(budget) %>
|
||||
<%= link_to calculate_winner_button_text(budget),
|
||||
calculate_winners_admin_budget_path(budget),
|
||||
method: :put,
|
||||
class: "button hollow" %>
|
||||
<% end %>
|
||||
<%= render Admin::Budgets::CalculateWinnersButtonComponent.new(budget) %>
|
||||
|
||||
<% if budget.has_winning_investments? %>
|
||||
<%= link_to t("budgets.show.see_results"),
|
||||
|
||||
@@ -5,10 +5,6 @@ class Admin::Budgets::FormComponent < ApplicationComponent
|
||||
|
||||
attr_reader :budget, :wizard
|
||||
alias_method :wizard?, :wizard
|
||||
delegate :display_calculate_winners_button?,
|
||||
:calculate_winner_button_text,
|
||||
:calculate_winners_admin_budget_path,
|
||||
to: :helpers
|
||||
|
||||
def initialize(budget, wizard: false)
|
||||
@budget = budget
|
||||
|
||||
@@ -33,18 +33,6 @@ module BudgetsHelper
|
||||
budget.published? || current_user&.administrator?
|
||||
end
|
||||
|
||||
def display_calculate_winners_button?(budget)
|
||||
budget.balloting_or_later?
|
||||
end
|
||||
|
||||
def calculate_winner_button_text(budget)
|
||||
if budget.investments.winners.empty?
|
||||
t("admin.budgets.winners.calculate")
|
||||
else
|
||||
t("admin.budgets.winners.recalculate")
|
||||
end
|
||||
end
|
||||
|
||||
def budget_subnav_items_for(budget)
|
||||
{
|
||||
results: t("budgets.results.link"),
|
||||
|
||||
@@ -3,19 +3,7 @@
|
||||
class: "float-right small clear" %>
|
||||
|
||||
<% if params[:advanced_filters].include?("winners") %>
|
||||
<% if display_calculate_winners_button?(@budget) %>
|
||||
<%= link_to calculate_winner_button_text(@budget),
|
||||
calculate_winners_admin_budget_path(@budget),
|
||||
method: :put,
|
||||
class: "button hollow float-right clear" %>
|
||||
<% else %>
|
||||
<span class="button hollow disabled float-right clear">
|
||||
<%= t("admin.budgets.winners.calculate") %>
|
||||
</span>
|
||||
<div class="callout warning clear">
|
||||
<%= t("admin.budget_investments.index.cannot_calculate_winners") %>
|
||||
</div>
|
||||
<% end %>
|
||||
<%= render Admin::Budgets::CalculateWinnersButtonComponent.new(@budget, from_investments: true) %>
|
||||
<% end %>
|
||||
|
||||
<% if @investments.any? %>
|
||||
|
||||
Reference in New Issue
Block a user