From 1edf0d937d68c7295099663d73b25537964b919d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Wed, 24 Apr 2024 01:45:48 +0200 Subject: [PATCH] Move stats graph partial to a component Note we're naming it "chart" in order to avoid possible conflicts with the "graph" view when we move it to a component. --- .../budget_supporting_component.html.erb | 2 +- .../admin/stats/chart_component.html.erb} | 0 app/components/admin/stats/chart_component.rb | 27 +++++++++++++++++++ app/helpers/stats_helper.rb | 16 ----------- app/views/admin/stats/graph.html.erb | 2 +- 5 files changed, 29 insertions(+), 18 deletions(-) rename app/{views/admin/stats/_graph.html.erb => components/admin/stats/chart_component.html.erb} (100%) create mode 100644 app/components/admin/stats/chart_component.rb diff --git a/app/components/admin/stats/budget_supporting_component.html.erb b/app/components/admin/stats/budget_supporting_component.html.erb index 2d74625d9..c946d73bf 100644 --- a/app/components/admin/stats/budget_supporting_component.html.erb +++ b/app/components/admin/stats/budget_supporting_component.html.erb @@ -30,7 +30,7 @@ -<%= render "admin/stats/graph", name: "user_supported_budgets", event: "", count: user_count %> +<%= render Admin::Stats::ChartComponent.new(name: "user_supported_budgets", event: "", count: user_count) %> diff --git a/app/views/admin/stats/_graph.html.erb b/app/components/admin/stats/chart_component.html.erb similarity index 100% rename from app/views/admin/stats/_graph.html.erb rename to app/components/admin/stats/chart_component.html.erb diff --git a/app/components/admin/stats/chart_component.rb b/app/components/admin/stats/chart_component.rb new file mode 100644 index 000000000..ac94fa4cf --- /dev/null +++ b/app/components/admin/stats/chart_component.rb @@ -0,0 +1,27 @@ +class Admin::Stats::ChartComponent < ApplicationComponent + attr_reader :name, :event, :count + + def initialize(name:, event:, count:) + @name = name + @event = event + @count = count + end + + private + + def chart_tag(opt = {}) + opt[:data] ||= {} + opt[:data][:graph] = admin_api_stats_path(chart_data(opt)) + tag.div(**opt) + end + + def chart_data(opt = {}) + data = nil + if opt[:id].present? + data = { opt[:id] => true } + elsif opt[:event].present? + data = { event: opt[:event] } + end + data + end +end diff --git a/app/helpers/stats_helper.rb b/app/helpers/stats_helper.rb index 711804d5f..30facd211 100644 --- a/app/helpers/stats_helper.rb +++ b/app/helpers/stats_helper.rb @@ -1,20 +1,4 @@ module StatsHelper - def chart_tag(opt = {}) - opt[:data] ||= {} - opt[:data][:graph] = admin_api_stats_path(chart_data(opt)) - tag.div(**opt) - end - - def chart_data(opt = {}) - data = nil - if opt[:id].present? - data = { opt[:id] => true } - elsif opt[:event].present? - data = { event: opt[:event] } - end - data - end - def budget_investments_chart_tag(opt = {}) opt[:data] ||= {} opt[:data][:graph] = admin_api_stats_path(budget_investments: true) diff --git a/app/views/admin/stats/graph.html.erb b/app/views/admin/stats/graph.html.erb index 04435660c..85c8395de 100644 --- a/app/views/admin/stats/graph.html.erb +++ b/app/views/admin/stats/graph.html.erb @@ -4,4 +4,4 @@ <%= back_link_to admin_stats_path %> -<%= render "graph", name: @name, event: @event, count: @count %> +<%= render Admin::Stats::ChartComponent.new(name: @name, event: @event, count: @count) %>