Sha256: eb282070d9617e7797f3407bda6c96bbf480288d0211f4f3aadd3ca42892537a

Contents?: true

Size: 1.91 KB

Versions: 2

Compression:

Stored size: 1.91 KB

Contents

module ReportsKits
  module Reports
    module Data
      class PopulateOneDimension
        attr_accessor :sparse_serieses_dimension_keys_values, :context_record, :properties

        def initialize(sparse_serieses_dimension_keys_values, context_record: nil, properties: nil)
          self.sparse_serieses_dimension_keys_values = sparse_serieses_dimension_keys_values
          self.context_record = context_record
          self.properties = properties
        end

        def perform
          return sparse_serieses_dimension_keys_values if sparse_serieses_dimension_keys_values.length == 1
          serieses_dimension_keys_values
        end

        private

        def serieses_dimension_keys_values
          serieses_dimension_keys_values = sparse_serieses_dimension_keys_values.map do |series, dimension_keys_values|
            dimension_keys.each do |key|
              dimension_keys_values[key] ||= 0
            end
            [series, dimension_keys_values]
          end
          Hash[serieses_dimension_keys_values]
        end

        def dimension_keys
          dimension_keys_from_edit_dimension_keys_method || dimension_keys_from_results
        end

        def dimension_keys_from_edit_dimension_keys_method
          return unless edit_dimension_keys_method
          edit_dimension_keys_method.call(dimension_keys: dimension_keys_from_results, properties: properties, context_record: context_record)
        end

        def dimension_keys_from_results
          @dimension_keys_from_results ||= begin
            sparse_serieses_dimension_keys_values.map do |series, dimension_keys_values|
              dimension_keys_values.keys
            end.reduce(&:+).uniq
          end
        end

        def edit_dimension_keys_method
          return unless properties
          ReportsKits.configuration.custom_method(properties[:report_options].try(:[], :edit_dimension_keys_method))
        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/populate_one_dimension.rb
reports_kits-0.7.7 lib/reports_kits/reports/data/populate_one_dimension.rb