module ActiveReporter::Report::Metrics
Public Instance Methods
aggregators()
click to toggle source
# File lib/active_reporter/report/metrics.rb, line 10 def aggregators @aggregators ||= build_axes(self.class.aggregators.slice(*Array(params.fetch(:aggregators, self.class.aggregators.keys)).collect(&:to_sym))) end
all_aggregators()
click to toggle source
# File lib/active_reporter/report/metrics.rb, line 60 def all_aggregators aggregators.merge(calculators).merge(trackers).merge(evaluators) end
base_relation()
click to toggle source
# File lib/active_reporter/report/metrics.rb, line 32 def base_relation params.fetch(:relation, report_model.all) end
calculators()
click to toggle source
# File lib/active_reporter/report/metrics.rb, line 48 def calculators @calculators ||= build_axes(self.class.calculators.slice(*(Array(params[:calculators])+Array(params[:aggregators])).collect(&:to_sym).uniq)) end
dimensions()
click to toggle source
# File lib/active_reporter/report/metrics.rb, line 6 def dimensions @dimensions ||= build_axes(self.class.dimensions) end
evaluators()
click to toggle source
# File lib/active_reporter/report/metrics.rb, line 56 def evaluators @evaluators ||= build_axes(self.class.evaluators.slice(*(Array(params[:evaluators])+Array(params[:aggregators])).collect(&:to_sym).uniq)) end
fields()
click to toggle source
# File lib/active_reporter/report/metrics.rb, line 64 def fields [groupers, calculators.keys, trackers.keys, evaluators.keys].inject(&:merge) end
filters()
click to toggle source
# File lib/active_reporter/report/metrics.rb, line 24 def filters @filters ||= dimensions.values.select(&:filtering?) end
grouper_names()
click to toggle source
# File lib/active_reporter/report/metrics.rb, line 14 def grouper_names names = params.fetch(:groupers, [dimensions.except(:totals).keys.first]) names = names.is_a?(Hash) ? names.values : Array.wrap(names).compact names.map(&:to_sym) end
groupers()
click to toggle source
# File lib/active_reporter/report/metrics.rb, line 20 def groupers @groupers ||= dimensions.values_at(*grouper_names) end
groups()
click to toggle source
# File lib/active_reporter/report/metrics.rb, line 44 def groups @groups ||= groupers.reduce(records) { |relation, dimension| dimension.group(relation) } end
records()
click to toggle source
# File lib/active_reporter/report/metrics.rb, line 40 def records @records ||= filters.reduce(relation) { |relation, dimension| dimension.filter(relation) } end
relation()
click to toggle source
# File lib/active_reporter/report/metrics.rb, line 36 def relation @relation ||= relators.reduce(base_relation) { |relation, dimension| dimension.relate(relation) } end
relators()
click to toggle source
# File lib/active_reporter/report/metrics.rb, line 28 def relators filters | groupers end
total_report()
click to toggle source
# File lib/active_reporter/report/metrics.rb, line 68 def total_report @total_report ||= self.class.new(@params.except(:calculators).merge({ groupers: :totals })) unless @total_data.present? end
trackers()
click to toggle source
# File lib/active_reporter/report/metrics.rb, line 52 def trackers @trackers ||= build_axes(self.class.trackers.slice(*(Array(params[:trackers])+Array(params[:aggregators])).collect(&:to_sym).uniq)) end
Private Instance Methods
build_axes(axes)
click to toggle source
# File lib/active_reporter/report/metrics.rb, line 74 def build_axes(axes) axes.map { |name, h| [name, h[:axis_class].new(name, self, h[:opts])] }.to_h end