Class: CrudComponents::Fields::DateField

Inherits:
Base
  • Object
show all
Defined in:
lib/crud_components/fields/date_field.rb

Overview

date/datetime column: from–to range plus exact day; datetime ranges are whole-day-inclusive (a ‘leq` of 2026-01-31 includes that entire day).

Constant Summary

Constants inherited from Base

Base::NON_EDITABLE_COLUMNS

Instance Attribute Summary

Attributes inherited from Base

#facets, #model, #name, #options

Instance Method Summary collapse

Methods inherited from Base

#apply_filter, #apply_filter_facet, #apply_sort, #column, #custom_header?, #declared_preloads, #eager_load, #editable?, #editable_permitted?, #filter_choices, #filter_control, #filter_facet, #filter_includes_null?, #filterable?, #form_partial, #group_label, #group_model, #header, #header_actions, #human_name, #initialize, #nullable?, #permit_param, #permitted?, #picker_label, #range_filter?, #render_block, #renderer, #renderer_options, #sort_facet, #sortable?, #value

Constructor Details

This class inherits a constructor from CrudComponents::Fields::Base

Instance Method Details

#apply_derived_filter(scope, exact: nil, geq: nil, leq: nil) ⇒ Object



17
18
19
20
21
22
# File 'lib/crud_components/fields/date_field.rb', line 17

def apply_derived_filter(scope, exact: nil, geq: nil, leq: nil)
  if (d = cast(exact)) then scope = apply_day(scope, d) end
  if (d = cast(geq)) then scope = scope.where(arel_column.gteq(lower_bound(d))) end
  if (d = cast(leq)) then scope = scope.where(arel_column.lteq(upper_bound(d))) end
  scope
end

#datetime?Boolean

Returns:

  • (Boolean)


6
7
8
# File 'lib/crud_components/fields/date_field.rb', line 6

def datetime?
  @datetime ||= %i[datetime timestamp timestamptz].include?(model.columns_hash[name.to_s]&.type)
end

#default_editable?Boolean

Returns:

  • (Boolean)


14
# File 'lib/crud_components/fields/date_field.rb', line 14

def default_editable? = !NON_EDITABLE_COLUMNS.include?(name.to_s)

#default_rendererObject



10
# File 'lib/crud_components/fields/date_field.rb', line 10

def default_renderer = datetime? ? :datetime : :date

#derived_filter_controlObject



13
# File 'lib/crud_components/fields/date_field.rb', line 13

def derived_filter_control = :date_range

#derived_filterable?Boolean

Returns:

  • (Boolean)


11
# File 'lib/crud_components/fields/date_field.rb', line 11

def derived_filterable? = true

#derived_sortable?Boolean

Returns:

  • (Boolean)


12
# File 'lib/crud_components/fields/date_field.rb', line 12

def derived_sortable? = true

#form_controlObject



15
# File 'lib/crud_components/fields/date_field.rb', line 15

def form_control = datetime? ? :datetime : :date