File tree Expand file tree Collapse file tree 4 files changed +61
-58
lines changed
ajax-datatables-rails/datatable Expand file tree Collapse file tree 4 files changed +61
-58
lines changed Original file line number Diff line number Diff line change 11# frozen_string_literal: true
22
3- require 'ostruct'
4-
53module AjaxDatatablesRails
64 module Datatable
75 class Column
86 attr_reader :datatable , :index , :options
97 attr_writer :search
108
119 unless AjaxDatatablesRails . old_rails?
12- prepend ColumnDateFilter
10+ prepend DateFilter
1311 end
1412
1513 def initialize ( datatable , index , options )
@@ -67,11 +65,6 @@ def use_regex?
6765 @view_column . fetch ( :use_regex , true )
6866 end
6967
70- # Add delimiter option to handle range search
71- def delimiter
72- @view_column [ :delimiter ] || '-'
73- end
74-
7568 def table
7669 model = source . split ( '.' ) . first . constantize
7770 model . arel_table rescue model
Original file line number Diff line number Diff line change 1+ # frozen_string_literal: true
2+
3+ require 'ostruct'
4+
5+ module AjaxDatatablesRails
6+ module Datatable
7+ class Column
8+ module DateFilter
9+
10+ # Add delimiter option to handle range search
11+ def delimiter
12+ @view_column [ :delimiter ] || '-'
13+ end
14+
15+ def empty_range_search?
16+ ( formated_value == delimiter ) || ( range_start . blank? && range_end . blank? )
17+ end
18+
19+ # A range value is in form '<range_start><delimiter><range_end>'
20+ # This returns <range_start>
21+ def range_start
22+ @range_start ||= formated_value . split ( delimiter ) [ 0 ]
23+ end
24+
25+ # A range value is in form '<range_start><delimiter><range_end>'
26+ # This returns <range_end>
27+ def range_end
28+ @range_end ||= formated_value . split ( delimiter ) [ 1 ]
29+ end
30+
31+ # Do a range search
32+ def date_range_search
33+ return nil if empty_range_search?
34+
35+ if Time . zone
36+ new_start = range_start . blank? ? Time . zone . parse ( '01/01/1970' ) : Time . zone . parse ( range_start )
37+ new_end = range_end . blank? ? Time . current : Time . zone . parse ( "#{ range_end } 23:59:59" )
38+ else
39+ new_start = range_start . blank? ? Time . parse ( '01/01/1970' ) : Time . parse ( range_start )
40+ new_end = range_end . blank? ? Time . current : Time . parse ( "#{ range_end } 23:59:59" )
41+ end
42+
43+ table [ field ] . between ( OpenStruct . new ( begin : new_start , end : new_end ) )
44+ end
45+
46+ private
47+
48+ def non_regex_search
49+ if cond == :date_range
50+ date_range_search
51+ else
52+ super
53+ end
54+ end
55+
56+ end
57+ end
58+ end
59+ end
Load Diff This file was deleted.
Original file line number Diff line number Diff line change @@ -7,7 +7,7 @@ module AjaxDatatablesRails
77 require 'ajax-datatables-rails/datatable/datatable'
88 require 'ajax-datatables-rails/datatable/simple_search'
99 require 'ajax-datatables-rails/datatable/simple_order'
10- require 'ajax-datatables-rails/datatable/column_date_filter ' unless AjaxDatatablesRails . old_rails?
10+ require 'ajax-datatables-rails/datatable/column/date_filter ' unless AjaxDatatablesRails . old_rails?
1111 require 'ajax-datatables-rails/datatable/column'
1212 require 'ajax-datatables-rails/orm/active_record'
1313end
You can’t perform that action at this time.
0 commit comments