Class: Datagrid::Filters::DateFilter

Inherits:
BaseFilter show all
Includes:
RangedFilter
Defined in:
lib/datagrid/filters/date_filter.rb

Instance Attribute Summary

Attributes inherited from BaseFilter

#block, #grid, #name, #options

Instance Method Summary collapse

Methods included from RangedFilter

#default_filter_where, #initialize, #parse_values, #range?

Methods inherited from BaseFilter

#allow_blank?, #allow_nil?, #default, #default_filter, #default_filter_block, form_builder_helper_name, #form_builder_helper_name, #header, #initialize, #multiple, #parse_values

Instance Method Details

#apply(grid_object, scope, value) ⇒ Object



7
8
9
10
11
12
# File 'lib/datagrid/filters/date_filter.rb', line 7

def apply(grid_object, scope, value)
  if value.is_a?(Range)
    value = value.first.beginning_of_day..value.last.end_of_day
  end
  super(grid_object, scope, value)
end

#format(value) ⇒ Object



34
35
36
37
38
39
40
# File 'lib/datagrid/filters/date_filter.rb', line 34

def format(value)
  if formats.any?
    value.strftime(formats.first)
  else
    super
  end
end

#formatsObject



30
31
32
# File 'lib/datagrid/filters/date_filter.rb', line 30

def formats
  Array(Datagrid.configuration.date_formats)
end

#parse(value) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/datagrid/filters/date_filter.rb', line 14

def parse(value)
  return nil if value.blank?
  return value if value.is_a?(Range)
  formats.each do |format|
    begin
      return Date.strptime(value, format)
    rescue ArgumentError
    end
  end
  return value.to_date if value.respond_to?(:to_date)
  return value unless value.is_a?(String)
  Date.parse(value)
rescue ArgumentError
  nil
end