class ReportsKit::Reports::PropertiesToFilter

Attributes

context_record[RW]
properties[RW]

Public Class Methods

new(properties, context_record: nil) click to toggle source
# File lib/reports_kit/reports/properties_to_filter.rb, line 6
def initialize(properties, context_record: nil)
  self.properties = properties
  self.context_record = context_record
end

Public Instance Methods

perform(filter_key) click to toggle source
# File lib/reports_kit/reports/properties_to_filter.rb, line 11
def perform(filter_key)
  filter_key = filter_key.to_s
  filter = filters.find { |f| f.key == filter_key }
  raise ArgumentError.new("A filter with key '#{filter_key}' is not configured in this report") unless filter
  filter
end

Private Instance Methods

filters() click to toggle source
# File lib/reports_kit/reports/properties_to_filter.rb, line 20
def filters
  @filters ||= ui_filters + series_filters
end
series_filters() click to toggle source
# File lib/reports_kit/reports/properties_to_filter.rb, line 24
def series_filters
  serieses.map(&:filters).flatten
end
serieses() click to toggle source
# File lib/reports_kit/reports/properties_to_filter.rb, line 35
def serieses
  Reports::Series.new_from_properties!(properties, context_record: context_record)
end
ui_filters() click to toggle source
# File lib/reports_kit/reports/properties_to_filter.rb, line 28
def ui_filters
  return [] if properties[:ui_filters].blank?
  properties[:ui_filters].map do |ui_filter_properties|
    Reports::Filter.new(ui_filter_properties)
  end
end