Skip to content

Commit bc4ef01

Browse files
author
Nicolas Rodriguez
committed
Test with Rails 4.1.15
1 parent 92c7910 commit bc4ef01

File tree

11 files changed

+141
-86
lines changed

11 files changed

+141
-86
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
# Ignore Gemfile.lock
55
/Gemfile.lock
66
/gemfiles/*.lock
7+
/gemfiles/.bundle
78

89
# Ignore test files
910
/coverage

.travis.yml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,21 @@ language: ruby
33
sudo: required
44
cache: bundler
55
rvm:
6-
- 2.4.1
7-
- 2.3.4
86
- 2.2.7
7+
- 2.3.4
98
gemfile:
9+
- gemfiles/rails_4.1.15.gemfile
1010
- gemfiles/rails_4.2.8.gemfile
1111
- gemfiles/rails_5.0.2.gemfile
1212
- gemfiles/rails_5.1.0.gemfile
13+
matrix:
14+
include:
15+
- rvm: 2.4.1
16+
gemfile: gemfiles/rails_4.2.8.gemfile
17+
- rvm: 2.4.1
18+
gemfile: gemfiles/rails_5.0.2.gemfile
19+
- rvm: 2.4.1
20+
gemfile: gemfiles/rails_5.1.0.gemfile
1321
after_success:
1422
- bundle exec codeclimate-test-reporter
1523
services:

Appraisals

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
RAILS_VERSIONS = %w(
2+
4.1.15
23
4.2.8
34
5.0.2
45
5.1.0

ajax-datatables-rails.gemspec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ Gem::Specification.new do |s|
1313
s.description = %q{A wrapper around datatable's ajax methods that allow synchronization with server-side pagination in a rails app}
1414
s.license = 'MIT'
1515

16-
s.add_dependency 'railties', '>= 4.2'
16+
s.add_dependency 'railties', '>= 4.1'
1717

18-
s.add_development_dependency 'rails', '>= 4.2'
18+
s.add_development_dependency 'rails', '>= 4.1'
1919
s.add_development_dependency 'rake'
2020
s.add_development_dependency 'pg'
2121
s.add_development_dependency 'mysql2'

gemfiles/rails_4.1.15.gemfile

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# This file was generated by Appraisal
2+
3+
source "https://rubygems.org"
4+
5+
gem "rails", "4.1.15"
6+
7+
group :test do
8+
gem "codeclimate-test-reporter", "~> 1.0.0"
9+
end
10+
11+
gemspec path: "../"

lib/ajax-datatables-rails.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ module AjaxDatatablesRails
55
require 'ajax-datatables-rails/datatable/datatable'
66
require 'ajax-datatables-rails/datatable/simple_search'
77
require 'ajax-datatables-rails/datatable/simple_order'
8+
require 'ajax-datatables-rails/datatable/column_date_filter' unless AjaxDatatablesRails.rails_41?
89
require 'ajax-datatables-rails/datatable/column'
910
require 'ajax-datatables-rails/orm/active_record'
1011
end

lib/ajax-datatables-rails/config.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ def self.config
1515
@config ||= AjaxDatatablesRails::Configuration.new
1616
end
1717

18+
def self.rails_41?
19+
Rails::VERSION::MAJOR == 4 && Rails::VERSION::MINOR == 1
20+
end
21+
1822
class Configuration
1923
include ActiveSupport::Configurable
2024

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

Lines changed: 4 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -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)
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
module AjaxDatatablesRails
2+
module Datatable
3+
module ColumnDateFilter
4+
5+
def empty_range_search?
6+
(formated_value == delimiter) || (range_start.blank? && range_end.blank?)
7+
end
8+
9+
# A range value is in form '<range_start><delimiter><range_end>'
10+
# This returns <range_start>
11+
def range_start
12+
@range_start ||= formated_value.split(delimiter)[0]
13+
end
14+
15+
# A range value is in form '<range_start><delimiter><range_end>'
16+
# This returns <range_end>
17+
def range_end
18+
@range_end ||= formated_value.split(delimiter)[1]
19+
end
20+
21+
# Do a range search
22+
def date_range_search
23+
return nil if empty_range_search?
24+
new_start = range_start.blank? ? DateTime.parse('01/01/1970') : DateTime.parse(range_start)
25+
new_end = range_end.blank? ? DateTime.current : DateTime.parse("#{range_end} 23:59:59")
26+
table[field].between(OpenStruct.new(begin: new_start, end: new_end))
27+
end
28+
29+
private
30+
31+
def non_regex_search
32+
if cond == :date_range
33+
date_range_search
34+
else
35+
super
36+
end
37+
end
38+
39+
end
40+
end
41+
end

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

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ def orderable?
1818
end
1919

2020
def orders
21-
@orders ||= options[:order].to_unsafe_h.with_indifferent_access.map do |_, order_options|
21+
@orders ||= get_param(:order).map do |_, order_options|
2222
SimpleOrder.new(self, order_options)
2323
end
2424
end
@@ -40,7 +40,7 @@ def search
4040
# ----------------- COLUMN METHODS --------------------
4141

4242
def columns
43-
@columns ||= options[:columns].to_unsafe_h.with_indifferent_access.map do |index, column_options|
43+
@columns ||= get_param(:columns).map do |index, column_options|
4444
Column.new(datatable, index, column_options)
4545
end
4646
end
@@ -66,6 +66,14 @@ def page
6666
def per_page
6767
options.fetch(:length, 10).to_i
6868
end
69+
70+
def get_param(param)
71+
if AjaxDatatablesRails.rails_41?
72+
options[param]
73+
else
74+
options[param].to_unsafe_h.with_indifferent_access
75+
end
76+
end
6977
end
7078
end
7179
end

0 commit comments

Comments
 (0)