Sha256: 49af5fa354144817242a5ba6dfe00d459c4379a399ce72dbee53b09af8f585d2

Contents?: true

Size: 1.12 KB

Versions: 9

Compression:

Stored size: 1.12 KB

Contents

module ReportsKit
  module Reports
    module FilterTypes
      class Base
        attr_accessor :settings, :properties, :primary_dimension

        def initialize(settings, properties, primary_dimension:)
          self.settings = settings || {}
          self.properties = properties
          self.primary_dimension = primary_dimension
        end

        def apply_filter(records)
          return records unless valid?
          records = records.joins(joins) if joins.present?
          return records if value.blank? && !is_a?(FilterTypes::Boolean)
          apply_conditions(records)
        end

        def default_criteria
          self.class::DEFAULT_CRITERIA
        end

        private

        def apply_conditions(_records)
          raise NotImplementedError
        end

        def criteria
          @criteria ||= default_criteria.merge(properties[:criteria])
        end

        def value
          criteria[:value]
        end

        def joins
          settings[:joins]
        end

        def column
          settings[:column] || Data::Utils.quote_column_name(properties[:key])
        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/filter_types/base.rb
reports_kit-0.7.0 lib/reports_kit/reports/filter_types/base.rb
reports_kit-0.5.0 lib/reports_kit/reports/filter_types/base.rb
reports_kit-0.4.1 lib/reports_kit/reports/filter_types/base.rb
reports_kit-0.4.0 lib/reports_kit/reports/filter_types/base.rb
reports_kit-0.3.3 lib/reports_kit/reports/filter_types/base.rb
reports_kit-0.3.2 lib/reports_kit/reports/filter_types/base.rb
reports_kit-0.3.1 lib/reports_kit/reports/filter_types/base.rb
reports_kit-0.3.0 lib/reports_kit/reports/filter_types/base.rb