Sha256: b1f38d3c66ce1b12b72cbe1cf34d49f81b5ca82b94551c44aa7c8635b0302dc7

Contents?: true

Size: 807 Bytes

Versions: 1

Compression:

Stored size: 807 Bytes

Contents

require "datagrid/filters/ranged_filter"

class Datagrid::Filters::DateFilter < Datagrid::Filters::BaseFilter

  include Datagrid::Filters::RangedFilter

  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

  def parse(value)
    Datagrid::Utils.parse_date(value)
  end


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

  def default_filter_where(driver, scope, value)
    if driver.is_timestamp?(scope, name)
      value = Datagrid::Utils.format_date_as_timestamp(value)
    end
    super(driver, scope, value)
  end

  protected

  def formats
    Array(Datagrid.configuration.date_formats)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
datagrid-1.3.9 lib/datagrid/filters/date_filter.rb