Skip to content

Commit cc44a08

Browse files
committed
Move ColumnDateFilter module under Column namespace
1 parent 82fb2c6 commit cc44a08

File tree

4 files changed

+61
-58
lines changed

4 files changed

+61
-58
lines changed

lib/ajax-datatables-rails/datatable/column.rb

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
# frozen_string_literal: true
22

3-
require 'ostruct'
4-
53
module 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
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
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

lib/ajax-datatables-rails/datatable/column_date_filter.rb

Lines changed: 0 additions & 49 deletions
This file was deleted.

lib/ajax_datatables_rails.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff 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'
1313
end

0 commit comments

Comments
 (0)