class ReportsKits::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_kits/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(ReportsKits.configuration.first_day_of_week), end_at.end_of_week(ReportsKits.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_kits/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_kits/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_kits/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_kits/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_kits/reports/filter_types/datetime.rb, line 45 def valid? value.present? end