diff --git a/app/assets/stylesheets/admin/stats/sdg/goal.scss b/app/assets/stylesheets/admin/stats/sdg/goal.scss
new file mode 100644
index 000000000..890cdc9fc
--- /dev/null
+++ b/app/assets/stylesheets/admin/stats/sdg/goal.scss
@@ -0,0 +1,5 @@
+.sdg-goal-stats {
+ h4 {
+ @include grid-column-gutter;
+ }
+}
diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss
index ffb1517de..5b3d0c41d 100644
--- a/app/assets/stylesheets/application.scss
+++ b/app/assets/stylesheets/application.scss
@@ -30,7 +30,7 @@
@import "leaflet";
@import "sticky_overrides";
@import "tags";
-@import "admin/*";
+@import "admin/**/*";
@import "sdg/**/*";
@import "sdg_management/*";
@import "sdg_management/**/*";
diff --git a/app/components/admin/stats/sdg/goal_component.html.erb b/app/components/admin/stats/sdg/goal_component.html.erb
index 055d94744..8a78c36c3 100644
--- a/app/components/admin/stats/sdg/goal_component.html.erb
+++ b/app/components/admin/stats/sdg/goal_component.html.erb
@@ -6,5 +6,14 @@
<% stats.each do |text, amount, options = {}| %>
<%= render Admin::Stats::StatComponent.new(text: text, amount: amount, options: options) %>
<% end %>
+
+ <% bugdets_stats.each do |budget_name, *budget_stats| %>
+
+
<%= budget_name %>
+ <% budget_stats.each do |text, amount, options = {}| %>
+ <%= render Admin::Stats::StatComponent.new(text: text, amount: amount, options: options) %>
+ <% end %>
+
+ <% end %>
diff --git a/app/components/admin/stats/sdg/goal_component.rb b/app/components/admin/stats/sdg/goal_component.rb
index ea2a4e2a7..22351acf6 100644
--- a/app/components/admin/stats/sdg/goal_component.rb
+++ b/app/components/admin/stats/sdg/goal_component.rb
@@ -13,15 +13,35 @@ class Admin::Stats::SDG::GoalComponent < ApplicationComponent
[
[t("admin.stats.sdg.polls"), goal.polls.count],
[t("admin.stats.sdg.proposals"), goal.proposals.count],
- [t("admin.stats.sdg.debates"), goal.debates.count],
- [t("admin.stats.sdg.budget_investments.sent"), goal.budget_investments.count],
- [t("admin.stats.sdg.budget_investments.winners"), goal.budget_investments.winners.count, featured],
- [t("admin.stats.sdg.budget_investments.amount"), amount, featured]
+ [t("admin.stats.sdg.debates"), goal.debates.count]
]
end
- def amount
- number_to_currency(goal.budget_investments.winners.sum(:price), precision: 0)
+ def bugdets_stats
+ Budget.order(created_at: :desc).map do |budget|
+ [
+ budget.name,
+ [t("admin.stats.sdg.budget_investments.sent"), sent(budget)],
+ [t("admin.stats.sdg.budget_investments.winners"), winners(budget), featured],
+ [t("admin.stats.sdg.budget_investments.amount"), amount(budget), featured]
+ ]
+ end
+ end
+
+ def sent(budget)
+ investments(budget).count
+ end
+
+ def winners(budget)
+ investments(budget).winners.count
+ end
+
+ def amount(budget)
+ number_to_currency(investments(budget).winners.sum(:price), precision: 0)
+ end
+
+ def investments(budget)
+ goal.budget_investments.by_budget(budget)
end
def featured
diff --git a/spec/components/admin/stats/sdg/goal_component_spec.rb b/spec/components/admin/stats/sdg/goal_component_spec.rb
index 0061c5bec..bd02b7f8d 100644
--- a/spec/components/admin/stats/sdg/goal_component_spec.rb
+++ b/spec/components/admin/stats/sdg/goal_component_spec.rb
@@ -8,16 +8,22 @@ describe Admin::Stats::SDG::GoalComponent, type: :component do
create_list(:poll, 2, sdg_goals: [goal])
create_list(:proposal, 3, sdg_goals: [goal])
create_list(:debate, 1, sdg_goals: [goal])
- create_list(:budget_investment, 2, :winner, sdg_goals: [goal], price: 1000)
- create_list(:budget_investment, 2, sdg_goals: [goal], price: 1000)
+ past = create(:budget, name: "Past year budget")
+ create_list(:budget_investment, 1, :winner, sdg_goals: [goal], price: 1000, budget: past)
+ current = create(:budget, name: "Current budget")
+ create_list(:budget_investment, 2, sdg_goals: [goal], price: 1000, budget: current)
render_inline component
expect(page).to have_text "Proposals 3"
expect(page).to have_text "Polls 2"
expect(page).to have_text "Debates 1"
- expect(page).to have_text "Investment projects sent 4"
- expect(page).to have_text "Winner investment projects 2"
- expect(page).to have_text "Approved amount $2,000"
+ expect("Current budget").to appear_before("Past year budget")
+ expect(page).to have_text "Investment projects sent 2"
+ expect(page).to have_text "Winner investment projects 0"
+ expect(page).to have_text "Approved amount $0"
+ expect(page).to have_text "Investment projects sent 1"
+ expect(page).to have_text "Winner investment projects 1"
+ expect(page).to have_text "Approved amount $1,000"
end
end