diff --git a/app/controllers/admin/stats_controller.rb b/app/controllers/admin/stats_controller.rb index 352232d55..e865b530d 100644 --- a/app/controllers/admin/stats_controller.rb +++ b/app/controllers/admin/stats_controller.rb @@ -1,7 +1,7 @@ class Admin::StatsController < Admin::BaseController def show - @event_types = Ahoy::Event.group(:name).count + @event_types = Ahoy::Event.pluck(:name).uniq.sort @visits = Visit.count @debates = Debate.with_hidden.count @@ -31,6 +31,17 @@ class Admin::StatsController < Admin::BaseController @investments = Budget::Investment.where(budget_id: budgets_ids).count end + def graph + @name = params[:id] + @event = params[:event] + + if params[:event] + @count = Ahoy::Event.where(name: params[:event]).count + else + @count = params[:count] + end + end + def proposal_notifications @proposal_notifications = ProposalNotification.all @proposals_with_notifications = @proposal_notifications.select(:proposal_id).distinct.count diff --git a/app/helpers/stats_helper.rb b/app/helpers/stats_helper.rb index b36977b3e..57db7166a 100644 --- a/app/helpers/stats_helper.rb +++ b/app/helpers/stats_helper.rb @@ -1,24 +1,27 @@ module StatsHelper - def events_chart_tag(events, opt = {}) - events = events.join(",") if events.is_a? Array + def chart_tag(opt = {}) opt[:data] ||= {} - opt[:data][:graph] = admin_api_stats_path(events: events) + opt[:data][:graph] = admin_api_stats_path(chart_data(opt)) content_tag :div, "", opt end - def visits_chart_tag(opt = {}) - events = events.join(",") if events.is_a? Array - opt[:data] ||= {} - opt[:data][:graph] = admin_api_stats_path(visits: true) - content_tag :div, "", opt + 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 spending_proposals_chart_tag(opt = {}) - events = events.join(",") if events.is_a? Array - opt[:data] ||= {} - opt[:data][:graph] = admin_api_stats_path(spending_proposals: true) - content_tag :div, "", opt + def graph_link_text(event) + text = t("admin.stats.graph.#{event}") + if text.to_s.match(/translation missing/) + text = event + end + text end def budget_investments_chart_tag(opt = {}) diff --git a/app/views/admin/stats/_graph.html.erb b/app/views/admin/stats/_graph.html.erb new file mode 100644 index 000000000..529574a28 --- /dev/null +++ b/app/views/admin/stats/_graph.html.erb @@ -0,0 +1,4 @@ +
- <%= t "admin.stats.show.summary.visits" %>
+ <%= link_to t("admin.stats.show.summary.visits"),
+ graph_admin_stats_path(id: "visits", count: @visits) %>
<%= number_with_delimiter(@visits) %>