ajax-datatables-rails 0.4.2 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -3
- data/README.md +1 -1
- data/lib/ajax-datatables-rails/datatable/column/search.rb +4 -2
- data/lib/ajax-datatables-rails/version.rb +1 -1
- data/spec/ajax-datatables-rails/orm/active_record_filter_records_spec.rb +32 -0
- data/spec/support/datatable_cond_string.rb +12 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 32f4790c082cfaf7a15b4463d51e7bfd1d16ddb215ad132a40572765ff79e262
|
4
|
+
data.tar.gz: cca488fce38bd4ea5dcba5112dca37fbc106c196010362ad1b2c24d231d0cf72
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3f50889d4584929e3a01f8895d7b3e10e8118dcfa7fe2a4188eefe38f2cdc4b3bf0b043f996a7c7d43ba7706f085dd3dddab84756f8e21d74e3f55f1a73ab083
|
7
|
+
data.tar.gz: 7b36341f278d8cf407cd21060635b37723c14f7b564e510bf5699e6665d81b8fd282220d5fe031ad97f8b67224ce3ab0dddd4131ff18287ff3576d34df1af74d
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
## 0.4.3 (2018-06-05)
|
4
|
+
|
5
|
+
* Add: Add `:string_eq` condition on columns filter [Issue #291](https://github.com/jbox-web/ajax-datatables-rails/issues/291)
|
6
|
+
|
7
|
+
**Note :** This is the last version to support Rails 4.0.x and Rails 4.1.x
|
8
|
+
|
3
9
|
## 0.4.2 (2018-05-11)
|
4
10
|
|
5
11
|
* Fix: Integer out of range [PR #289](https://github.com/jbox-web/ajax-datatables-rails/pull/289) from [PR #284](https://github.com/jbox-web/ajax-datatables-rails/pull/284)
|
@@ -16,9 +22,6 @@
|
|
16
22
|
* Change: Add # frozen_string_literal: true pragma
|
17
23
|
* Various improvements in internal API
|
18
24
|
|
19
|
-
**Note :** This is the last version to support Rails 4.0.x and Rails 4.1.x
|
20
|
-
|
21
|
-
|
22
25
|
## 0.4.0 (2017-05-21)
|
23
26
|
|
24
27
|
**Warning:** this version is a **major break** from v0.3. The core has been rewriten to remove dependency on Kaminari (or WillPaginate).
|
data/README.md
CHANGED
@@ -205,7 +205,7 @@ end
|
|
205
205
|
|
206
206
|
`cond` can be :
|
207
207
|
|
208
|
-
* `:like`, `:start_with`, `:end_with` for string or full text search
|
208
|
+
* `:like`, `:start_with`, `:end_with`, `:string_eq` for string or full text search
|
209
209
|
* `:eq`, `:not_eq`, `:lt`, `:gt`, `:lteq`, `:gteq`, `:in` for numeric
|
210
210
|
* `:date_range` for date range (only for Rails > 4.2.x, see [here](#daterange-search))
|
211
211
|
* `:null_value` for nil field
|
@@ -57,7 +57,7 @@ module AjaxDatatablesRails
|
|
57
57
|
when Proc
|
58
58
|
filter
|
59
59
|
when :eq, :not_eq, :lt, :gt, :lteq, :gteq, :in
|
60
|
-
is_searchable_integer? ?
|
60
|
+
is_searchable_integer? ? raw_search(cond) : empty_search
|
61
61
|
when :null_value
|
62
62
|
null_value_search
|
63
63
|
when :start_with
|
@@ -66,6 +66,8 @@ module AjaxDatatablesRails
|
|
66
66
|
casted_column.matches("%#{formated_value}")
|
67
67
|
when :like
|
68
68
|
casted_column.matches("%#{formated_value}%")
|
69
|
+
when :string_eq
|
70
|
+
raw_search(:eq)
|
69
71
|
end
|
70
72
|
end
|
71
73
|
|
@@ -77,7 +79,7 @@ module AjaxDatatablesRails
|
|
77
79
|
end
|
78
80
|
end
|
79
81
|
|
80
|
-
def
|
82
|
+
def raw_search(cond)
|
81
83
|
if custom_field?
|
82
84
|
::Arel::Nodes::SqlLiteral.new(field).eq(formated_value)
|
83
85
|
else
|
@@ -360,6 +360,38 @@ describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
360
360
|
end
|
361
361
|
end
|
362
362
|
|
363
|
+
describe 'it can filter records with condition :like' do
|
364
|
+
let(:datatable) { DatatableCondLike.new(view) }
|
365
|
+
|
366
|
+
before(:each) do
|
367
|
+
create(:user, email: 'john@foo.com')
|
368
|
+
create(:user, email: 'mary@bar.com')
|
369
|
+
end
|
370
|
+
|
371
|
+
it 'should filter records matching' do
|
372
|
+
datatable.params[:columns]['1'][:search][:value] = 'foo'
|
373
|
+
expect(datatable.data.size).to eq 1
|
374
|
+
item = datatable.data.first
|
375
|
+
expect(item[:email]).to eq 'john@foo.com'
|
376
|
+
end
|
377
|
+
end
|
378
|
+
|
379
|
+
describe 'it can filter records with condition :string_eq' do
|
380
|
+
let(:datatable) { DatatableCondStringEq.new(view) }
|
381
|
+
|
382
|
+
before(:each) do
|
383
|
+
create(:user, email: 'john@foo.com')
|
384
|
+
create(:user, email: 'mary@bar.com')
|
385
|
+
end
|
386
|
+
|
387
|
+
it 'should filter records matching' do
|
388
|
+
datatable.params[:columns]['1'][:search][:value] = 'john@foo.com'
|
389
|
+
expect(datatable.data.size).to eq 1
|
390
|
+
item = datatable.data.first
|
391
|
+
expect(item[:email]).to eq 'john@foo.com'
|
392
|
+
end
|
393
|
+
end
|
394
|
+
|
363
395
|
describe 'it can filter records with condition :null_value' do
|
364
396
|
let(:datatable) { DatatableCondNullValue.new(view) }
|
365
397
|
|
@@ -10,6 +10,18 @@ class DatatableCondEndWith < ComplexDatatable
|
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
+
class DatatableCondLike < ComplexDatatable
|
14
|
+
def view_columns
|
15
|
+
super.deep_merge(email: { cond: :like })
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
class DatatableCondStringEq < ComplexDatatable
|
20
|
+
def view_columns
|
21
|
+
super.deep_merge(email: { cond: :string_eq })
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
13
25
|
class DatatableCondNullValue < ComplexDatatable
|
14
26
|
def view_columns
|
15
27
|
super.deep_merge(email: { cond: :null_value })
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ajax-datatables-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joel Quenneville
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-
|
12
|
+
date: 2018-06-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: railties
|
@@ -308,7 +308,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
308
308
|
version: '0'
|
309
309
|
requirements: []
|
310
310
|
rubyforge_project:
|
311
|
-
rubygems_version: 2.7.
|
311
|
+
rubygems_version: 2.7.7
|
312
312
|
signing_key:
|
313
313
|
specification_version: 4
|
314
314
|
summary: A gem that simplifies using datatables and hundreds of records via ajax
|