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>
|
||||||
|
|
||||||
<div class="float-right">
|
<div class="float-right">
|
||||||
<% if display_calculate_winners_button?(budget) %>
|
<%= render Admin::Budgets::CalculateWinnersButtonComponent.new(budget) %>
|
||||||
<%= link_to calculate_winner_button_text(budget),
|
|
||||||
calculate_winners_admin_budget_path(budget),
|
|
||||||
method: :put,
|
|
||||||
class: "button hollow" %>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<% if budget.has_winning_investments? %>
|
<% if budget.has_winning_investments? %>
|
||||||
<%= link_to t("budgets.show.see_results"),
|
<%= link_to t("budgets.show.see_results"),
|
||||||
|
|||||||
@@ -5,10 +5,6 @@ class Admin::Budgets::FormComponent < ApplicationComponent
|
|||||||
|
|
||||||
attr_reader :budget, :wizard
|
attr_reader :budget, :wizard
|
||||||
alias_method :wizard?, :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)
|
def initialize(budget, wizard: false)
|
||||||
@budget = budget
|
@budget = budget
|
||||||
|
|||||||
@@ -33,18 +33,6 @@ module BudgetsHelper
|
|||||||
budget.published? || current_user&.administrator?
|
budget.published? || current_user&.administrator?
|
||||||
end
|
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)
|
def budget_subnav_items_for(budget)
|
||||||
{
|
{
|
||||||
results: t("budgets.results.link"),
|
results: t("budgets.results.link"),
|
||||||
|
|||||||
@@ -3,19 +3,7 @@
|
|||||||
class: "float-right small clear" %>
|
class: "float-right small clear" %>
|
||||||
|
|
||||||
<% if params[:advanced_filters].include?("winners") %>
|
<% if params[:advanced_filters].include?("winners") %>
|
||||||
<% if display_calculate_winners_button?(@budget) %>
|
<%= render Admin::Budgets::CalculateWinnersButtonComponent.new(@budget, from_investments: true) %>
|
||||||
<%= 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 %>
|
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<% if @investments.any? %>
|
<% if @investments.any? %>
|
||||||
|
|||||||
Reference in New Issue
Block a user