Sha256: 7c68cd16b0f190035691a860a0d608fd3d8b270ad679a2b6d90b6287965165b2
Contents?: true
Size: 1.31 KB
Versions: 2
Compression:
Stored size: 1.31 KB
Contents
module ReportsKits module Reports module Data class AggregateOneDimension attr_accessor :series, :dimension def initialize(series) self.series = series self.dimension = series.dimensions[0] end def perform dimension_keys_values end private def dimension_keys_values relation = series.filtered_relation relation = relation.group(dimension.group_expression) relation = relation.joins(dimension.joins) if dimension.joins relation = relation.limit(dimension.dimension_instances_limit) if dimension.dimension_instances_limit 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('') dimension_keys_values = dimension_keys_values.take(series.limit) if series.limit Hash[dimension_keys_values] end def order dimension.configured_by_time? ? '2' : '1 DESC' end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
reports_kits-0.7.8 | lib/reports_kits/reports/data/aggregate_one_dimension.rb |
reports_kits-0.7.7 | lib/reports_kits/reports/data/aggregate_one_dimension.rb |