class ReportsKits::Reports::Data::AggregateTwoDimensions
Attributes
dimension[RW]
second_dimension[RW]
series[RW]
Public Class Methods
new(series)
click to toggle source
# File lib/reports_kits/reports/data/aggregate_two_dimensions.rb, line 7 def initialize(series) self.series = series self.dimension = series.dimensions[0] self.second_dimension = series.dimensions[1] end
Public Instance Methods
perform()
click to toggle source
# File lib/reports_kits/reports/data/aggregate_two_dimensions.rb, line 13 def perform dimension_keys_values end
Private Instance Methods
dimension_keys_values()
click to toggle source
# File lib/reports_kits/reports/data/aggregate_two_dimensions.rb, line 19 def dimension_keys_values relation = series.filtered_relation relation = relation.group(dimension.group_expression, second_dimension.group_expression) relation = relation.joins(dimension.joins) if dimension.joins relation = relation.joins(second_dimension.joins) if second_dimension.joins relation = relation.order(order) relation = series.edit_relation_method.call(relation) if series.edit_relation_method dimension_keys_values = relation.distinct.public_send(*series.aggregate_function) dimension_keys_values = Utils.populate_sparse_hash(dimension_keys_values, dimension: dimension) dimension_keys_values.delete(nil) dimension_keys_values.delete('') Hash[dimension_keys_values] end
order()
click to toggle source
# File lib/reports_kits/reports/data/aggregate_two_dimensions.rb, line 33 def order dimension.configured_by_time? ? '2' : '1 DESC' end