class Admin::Stats::BudgetBallotingComponent < ApplicationComponent attr_reader :budget use_helpers :include_stat_graphs_javascript def initialize(budget) @budget = budget end private def stats @stats ||= Budget::Stats.new(budget, cache: false) end def headings_stats @headings_stats ||= stats.headings end def vote_count stats.total_votes end def user_count stats.total_participants_vote_phase end def vote_count_by_heading budget.lines.group(:heading_id).count.map { |k, v| [Budget::Heading.find(k).name, v] }.sort end def user_count_by_heading budget.headings.map do |heading| [heading.name, headings_stats[heading.id][:total_participants_vote_phase]] end.select { |_, count| count > 0 }.sort end end