class ReportsKit::Reports::FilterTypes::Datetime

Constants

DEFAULT_CRITERIA
SEPARATOR

Public Instance Methods

adjust_range_to_dimension(start_at, end_at) click to toggle source
# File lib/reports_kit/reports/filter_types/datetime.rb, line 31
def adjust_range_to_dimension(start_at, end_at)
  return [start_at.beginning_of_day, end_at.end_of_day] unless primary_dimension.configured_by_time?
  return [start_at.beginning_of_day, end_at.end_of_day] if primary_dimension.granularity == 'day'
  return [
    start_at.beginning_of_week(ReportsKit.configuration.first_day_of_week),
    end_at.end_of_week(ReportsKit.configuration.first_day_of_week)
  ] if primary_dimension.granularity == 'week'
  return [
    start_at.beginning_of_month,
    end_at.end_of_month
  ] if primary_dimension.granularity == 'month'
  [start_at, end_at]
end
apply_conditions(records) click to toggle source
# File lib/reports_kit/reports/filter_types/datetime.rb, line 10
def apply_conditions(records)
  case criteria[:operator]
  when 'between'
    records.where.not(column => nil).where(column => start_at..end_at)
  else
    raise ArgumentError.new("Unsupported operator: '#{criteria[:operator]}'")
  end
end
end_at() click to toggle source
# File lib/reports_kit/reports/filter_types/datetime.rb, line 27
def end_at
  start_at_end_at.try(:[], 1)
end
start_at() click to toggle source
# File lib/reports_kit/reports/filter_types/datetime.rb, line 23
def start_at
  start_at_end_at.try(:[], 0)
end
start_at_end_at() click to toggle source
# File lib/reports_kit/reports/filter_types/datetime.rb, line 19
def start_at_end_at
  @start_at_end_at ||= valid? ? adjust_range_to_dimension(*Reports::Data::Utils.parse_date_range(value, type: Array)) : nil
end
valid?() click to toggle source
# File lib/reports_kit/reports/filter_types/datetime.rb, line 45
def valid?
  value.present?
end