Add groups index page
When render the investment list component with the link "see all investments", now we redirect to groups index page when a budget has multiple headings.
This commit is contained in:
7
app/assets/stylesheets/budgets/groups/index.scss
Normal file
7
app/assets/stylesheets/budgets/groups/index.scss
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
.budget-groups-index {
|
||||||
|
|
||||||
|
> header {
|
||||||
|
@extend %budget-header;
|
||||||
|
@include full-width-background($adjust-padding: true);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -67,6 +67,7 @@ body {
|
|||||||
main {
|
main {
|
||||||
display: block;
|
display: block;
|
||||||
|
|
||||||
|
&.budget-groups-index,
|
||||||
&.budget-investment-new,
|
&.budget-investment-new,
|
||||||
&.debate-new,
|
&.debate-new,
|
||||||
&.proposal-new,
|
&.proposal-new,
|
||||||
|
|||||||
8
app/components/budgets/groups/index_component.html.erb
Normal file
8
app/components/budgets/groups/index_component.html.erb
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<% content_for :canonical do %>
|
||||||
|
<%= render "shared/canonical", href: budget_groups_url %>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<main class="budget-groups-index">
|
||||||
|
<%= header(before: back_link_to(budget_path(budget))) %>
|
||||||
|
<%= render Budgets::GroupsAndHeadingsComponent.new(budget) %>
|
||||||
|
</main>
|
||||||
12
app/components/budgets/groups/index_component.rb
Normal file
12
app/components/budgets/groups/index_component.rb
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
class Budgets::Groups::IndexComponent < ApplicationComponent
|
||||||
|
include Header
|
||||||
|
attr_reader :budget
|
||||||
|
|
||||||
|
def initialize(budget)
|
||||||
|
@budget = budget
|
||||||
|
end
|
||||||
|
|
||||||
|
def title
|
||||||
|
t("budgets.groups.show.title")
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
<div class="row margin-top">
|
<div class="row margin-top">
|
||||||
<div class="small-12 medium-6 large-4 small-centered column margin-top">
|
<div class="small-12 medium-6 large-4 small-centered column margin-top">
|
||||||
<%= link_to t("budgets.investments_list.see_all"),
|
<%= link_to t("budgets.investments_list.see_all"),
|
||||||
budget_investments_path(budget),
|
see_all_path,
|
||||||
class: "button expanded" %>
|
class: "button expanded" %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -17,4 +17,12 @@ class Budgets::InvestmentsListComponent < ApplicationComponent
|
|||||||
budget.investments.none
|
budget.investments.none
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def see_all_path
|
||||||
|
if budget.single_heading?
|
||||||
|
budget_investments_path(budget)
|
||||||
|
else
|
||||||
|
budget_groups_path(budget)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
module Header
|
module Header
|
||||||
extend ActiveSupport::Concern
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
def header(&block)
|
def header(before: nil, &block)
|
||||||
provide(:title) do
|
provide(:title) do
|
||||||
[
|
[
|
||||||
t("#{namespace}.header.title", default: ""),
|
t("#{namespace}.header.title", default: ""),
|
||||||
@@ -17,11 +17,7 @@ module Header
|
|||||||
end
|
end
|
||||||
|
|
||||||
tag.header do
|
tag.header do
|
||||||
if block_given?
|
safe_join([before, content_tag(heading_tag, title), (capture(&block) if block_given?)].compact)
|
||||||
content_tag(heading_tag, title) + capture(&block)
|
|
||||||
else
|
|
||||||
content_tag(heading_tag, title)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ module Budgets
|
|||||||
feature_flag :budgets
|
feature_flag :budgets
|
||||||
|
|
||||||
before_action :load_budget
|
before_action :load_budget
|
||||||
before_action :load_group
|
before_action :load_group, only: [:show]
|
||||||
authorize_resource :budget
|
authorize_resource :budget
|
||||||
authorize_resource :group, class: "Budget::Group"
|
authorize_resource :group, class: "Budget::Group"
|
||||||
|
|
||||||
@@ -15,6 +15,9 @@ module Budgets
|
|||||||
def show
|
def show
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def index
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def load_budget
|
def load_budget
|
||||||
|
|||||||
1
app/views/budgets/groups/index.html.erb
Normal file
1
app/views/budgets/groups/index.html.erb
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<%= render Budgets::Groups::IndexComponent.new(@budget) %>
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
resources :budgets, only: [:show, :index] do
|
resources :budgets, only: [:show, :index] do
|
||||||
resources :groups, controller: "budgets/groups", only: [:show]
|
resources :groups, controller: "budgets/groups", only: [:show, :index]
|
||||||
resources :investments, controller: "budgets/investments" do
|
resources :investments, controller: "budgets/investments" do
|
||||||
member do
|
member do
|
||||||
put :flag
|
put :flag
|
||||||
|
|||||||
@@ -170,7 +170,7 @@ describe Budgets::InvestmentsListComponent, type: :component do
|
|||||||
render_inline Budgets::InvestmentsListComponent.new(budget)
|
render_inline Budgets::InvestmentsListComponent.new(budget)
|
||||||
|
|
||||||
expect(page).to have_link "See all investments",
|
expect(page).to have_link "See all investments",
|
||||||
href: budget_investments_path(budget)
|
href: budget_groups_path(budget)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -53,4 +53,16 @@ describe "Budget Groups" do
|
|||||||
expect(page).to have_current_path budget_path(budget)
|
expect(page).to have_current_path budget_path(budget)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "Index" do
|
||||||
|
scenario "Render headings" do
|
||||||
|
create(:budget_heading, group: group, name: "New heading name")
|
||||||
|
|
||||||
|
visit budget_groups_path(budget)
|
||||||
|
|
||||||
|
expect(page).to have_content "Select a heading"
|
||||||
|
expect(page).to have_link "New heading name"
|
||||||
|
expect(page).to have_link "Go back", href: budget_path(budget)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user