Sha256: 4abc7733afccd9a3341a2910020c21d3d18bcb50a3fc8da3e0733ea4cce493ca

Contents?: true

Size: 1.91 KB

Versions: 9

Compression:

Stored size: 1.91 KB

Contents

module ReportsKit
  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
          ReportsKit.configuration.custom_method(properties[:report_options].try(:[], :edit_dimension_keys_method))
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
reports_kit-0.7.1 lib/reports_kit/reports/data/populate_one_dimension.rb
reports_kit-0.7.0 lib/reports_kit/reports/data/populate_one_dimension.rb
reports_kit-0.5.0 lib/reports_kit/reports/data/populate_one_dimension.rb
reports_kit-0.4.1 lib/reports_kit/reports/data/populate_one_dimension.rb
reports_kit-0.4.0 lib/reports_kit/reports/data/populate_one_dimension.rb
reports_kit-0.3.3 lib/reports_kit/reports/data/populate_one_dimension.rb
reports_kit-0.3.2 lib/reports_kit/reports/data/populate_one_dimension.rb
reports_kit-0.3.1 lib/reports_kit/reports/data/populate_one_dimension.rb
reports_kit-0.3.0 lib/reports_kit/reports/data/populate_one_dimension.rb