Sha256: 9aa195eff403aba9f278284547cc7ce0eb64b63988406c84a435b7e901db79c2
Contents?: true
Size: 1.55 KB
Versions: 2
Compression:
Stored size: 1.55 KB
Contents
module ReportsKits module Reports module FilterTypes class Datetime < Base DEFAULT_CRITERIA = { operator: 'between' } SEPARATOR = ' - ' 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 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 def start_at start_at_end_at.try(:[], 0) end def end_at start_at_end_at.try(:[], 1) end 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 def valid? value.present? end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
reports_kits-0.7.8 | lib/reports_kits/reports/filter_types/datetime.rb |
reports_kits-0.7.7 | lib/reports_kits/reports/filter_types/datetime.rb |