Extract admin budgets index to a component

We're going to change it a bit, and using a component allows us to use
the `header` method and easily add a title to this page, which lacked
the `<title>` tag.
This commit is contained in:
Javi Martín
2021-02-23 00:37:59 +01:00
parent 6ae4a1cf09
commit fe05bfe9ea
3 changed files with 59 additions and 47 deletions

View File

@@ -0,0 +1,46 @@
<%= header do %>
<%= link_to t("admin.budgets.index.new_link"), new_admin_budget_path %>
<% end %>
<%= render Admin::Budgets::HelpComponent.new("budgets") %>
<%= render "shared/filter_subnav", i18n_namespace: "admin.budgets.index" %>
<% if budgets.any? %>
<h3><%= page_entries_info budgets %></h3>
<table class="budgets-table">
<thead>
<tr>
<th><%= t("admin.budgets.index.table_name") %></th>
<th><%= t("admin.budgets.index.table_phase") %></th>
<th><%= t("admin.actions.actions") %></th>
</tr>
</thead>
<tbody>
<% budgets.each do |budget| %>
<tr id="<%= dom_id(budget) %>" class="budget">
<td class="<%= "budget-completed" if budget.finished? %>">
<% if budget.finished? %>
<span>
<%= t("admin.budgets.index.table_completed") %>
</span>
<% end %>
<strong><%= budget.name %></strong>
</td>
<td class="small">
<%= budget.current_phase.name %>
</td>
<td>
<%= render Admin::Budgets::TableActionsComponent.new(budget) %>
</td>
</tr>
<% end %>
</tbody>
</table>
<%= paginate budgets %>
<% else %>
<div class="callout primary">
<%= t("admin.budgets.index.no_budgets") %>
</div>
<% end %>

View File

@@ -0,0 +1,12 @@
class Admin::Budgets::IndexComponent < ApplicationComponent
include Header
attr_reader :budgets
def initialize(budgets)
@budgets = budgets
end
def title
t("admin.budgets.index.title")
end
end

View File

@@ -1,47 +1 @@
<header>
<h2><%= t("admin.budgets.index.title") %></h2>
<%= link_to t("admin.budgets.index.new_link"), new_admin_budget_path %>
</header>
<%= render Admin::Budgets::HelpComponent.new("budgets") %>
<%= render "shared/filter_subnav", i18n_namespace: "admin.budgets.index" %>
<% if @budgets.any? %>
<h3><%= page_entries_info @budgets %></h3>
<table class="budgets-table">
<thead>
<tr>
<th><%= t("admin.budgets.index.table_name") %></th>
<th><%= t("admin.budgets.index.table_phase") %></th>
<th><%= t("admin.actions.actions") %></th>
</tr>
</thead>
<tbody>
<% @budgets.each do |budget| %>
<tr id="<%= dom_id(budget) %>" class="budget">
<td class="<%= "budget-completed" if budget.finished? %>">
<% if budget.finished? %>
<span>
<%= t("admin.budgets.index.table_completed") %>
</span>
<% end %>
<strong><%= budget.name %></strong>
</td>
<td class="small">
<%= budget.current_phase.name %>
</td>
<td>
<%= render Admin::Budgets::TableActionsComponent.new(budget) %>
</td>
</tr>
<% end %>
</tbody>
</table>
<%= paginate @budgets %>
<% else %>
<div class="callout primary">
<%= t("admin.budgets.index.no_budgets") %>
</div>
<% end %>
<%= render Admin::Budgets::IndexComponent.new(@budgets) %>