@@ -5,6 +5,10 @@ module Datatable
55 class Column
66 attr_reader :datatable , :index , :options
77
8+ unless AjaxDatatablesRails . rails_41?
9+ prepend ColumnDateFilter
10+ end
11+
812 def initialize ( datatable , index , options )
913 @datatable , @index , @options = datatable , index , options
1014 @view_column = datatable . view_columns [ options [ "data" ] . to_sym ]
@@ -113,8 +117,6 @@ def non_regex_search
113117 filter ( formated_value )
114118 when :eq , :not_eq , :lt , :gt , :lteq , :gteq , :in
115119 numeric_search
116- when :date_range
117- date_range_search
118120 when :null_value
119121 null_value_search
120122 when :start_with
@@ -141,30 +143,6 @@ def casted_column
141143 ::Arel ::Nodes ::NamedFunction . new ( 'CAST' , [ table [ field ] . as ( typecast ) ] )
142144 end
143145
144- def empty_range_search?
145- ( formated_value == delimiter ) || ( range_start . blank? && range_end . blank? )
146- end
147-
148- # A range value is in form '<range_start><delimiter><range_end>'
149- # This returns <range_start>
150- def range_start
151- @range_start ||= formated_value . split ( delimiter ) [ 0 ]
152- end
153-
154- # A range value is in form '<range_start><delimiter><range_end>'
155- # This returns <range_end>
156- def range_end
157- @range_end ||= formated_value . split ( delimiter ) [ 1 ]
158- end
159-
160- # Do a range search
161- def date_range_search
162- return nil if empty_range_search?
163- new_start = range_start . blank? ? DateTime . parse ( '01/01/1970' ) : DateTime . parse ( range_start )
164- new_end = range_end . blank? ? DateTime . current : DateTime . parse ( "#{ range_end } 23:59:59" )
165- table [ field ] . between ( OpenStruct . new ( begin : new_start , end : new_end ) )
166- end
167-
168146 def null_value_search
169147 if formated_value == '!NULL'
170148 table [ field ] . not_eq ( nil )
0 commit comments