ajax-datatables-rails 1.4.0 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +25 -15
- data/Appraisals +1 -1
- data/CHANGELOG.md +12 -0
- data/Gemfile +1 -0
- data/README.md +2 -2
- data/ajax-datatables-rails.gemspec +1 -1
- data/appraisal.yml +88 -13
- data/gemfiles/rails_6.0.6.gemfile +16 -0
- data/gemfiles/rails_6.1.7.gemfile +16 -0
- data/gemfiles/{rails_7.0.4.gemfile → rails_7.0.8.gemfile} +17 -1
- data/gemfiles/rails_7.1.0.gemfile +32 -0
- data/lib/ajax-datatables-rails/base.rb +12 -3
- data/lib/ajax-datatables-rails/datatable/column.rb +1 -0
- data/lib/ajax-datatables-rails/datatable/simple_order.rb +2 -2
- data/lib/ajax-datatables-rails/version.rb +1 -1
- data/spec/ajax-datatables-rails/base_spec.rb +2 -0
- data/spec/ajax-datatables-rails/datatable/column_spec.rb +10 -0
- data/spec/ajax-datatables-rails/datatable/simple_order_spec.rb +8 -0
- data/spec/ajax-datatables-rails/orm/active_record_count_records_spec.rb +42 -0
- data/spec/ajax-datatables-rails/orm/active_record_filter_records_spec.rb +10 -0
- data/spec/dummy/config/database.yml +2 -2
- data/spec/spec_helper.rb +2 -2
- data/spec/support/datatables/grouped_datatable_array.rb +8 -0
- data/spec/support/helpers/params.rb +2 -2
- metadata +9 -7
- data/gemfiles/rails_5.2.8.gemfile +0 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: df0c98573d156527bb34590ddac2fb860c53c578b3be69306d71db1123c0c1df
|
4
|
+
data.tar.gz: bef2b0041b0755590c3d98607f9234514e289ce654cb4b34399b0f50211c8500
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dcb780dd2416b592daadce7774a2002e37e81535399638012a7ae958c5385a31b79a544a72c80b914f0f2d3ab42dc9b483ac5c2953de7e82270971b3982f245e
|
7
|
+
data.tar.gz: c52b3cdb779556d89251b4434419aa269966d80e56c97479a87986c96d7889005d9222a4b6bbdf604ca120a320c2ce26efefcfdb58f1ffac099bc8f06cc17719
|
data/.github/workflows/ci.yml
CHANGED
@@ -13,7 +13,7 @@ on:
|
|
13
13
|
|
14
14
|
jobs:
|
15
15
|
rspec:
|
16
|
-
runs-on: ubuntu-
|
16
|
+
runs-on: ubuntu-latest
|
17
17
|
|
18
18
|
env:
|
19
19
|
ORACLE_COOKIE: sqldev
|
@@ -23,7 +23,7 @@ jobs:
|
|
23
23
|
|
24
24
|
services:
|
25
25
|
postgres:
|
26
|
-
image: 'postgres:
|
26
|
+
image: 'postgres:16'
|
27
27
|
ports: ['5432:5432']
|
28
28
|
env:
|
29
29
|
POSTGRES_PASSWORD: postgres
|
@@ -52,28 +52,35 @@ jobs:
|
|
52
52
|
fail-fast: false
|
53
53
|
matrix:
|
54
54
|
ruby:
|
55
|
+
- '3.3'
|
56
|
+
- '3.2'
|
55
57
|
- '3.1'
|
56
58
|
- '3.0'
|
57
59
|
- '2.7'
|
60
|
+
- 'head'
|
58
61
|
rails:
|
59
|
-
-
|
60
|
-
-
|
62
|
+
- rails_7.1.0
|
63
|
+
- rails_7.0.8
|
61
64
|
- rails_6.1.7
|
62
|
-
-
|
65
|
+
- rails_6.0.6
|
63
66
|
adapter:
|
64
67
|
- sqlite3
|
65
68
|
- postgresql
|
66
69
|
- mysql2
|
67
70
|
- oracle_enhanced
|
71
|
+
- postgis
|
72
|
+
# - trilogy
|
68
73
|
exclude:
|
69
|
-
-
|
70
|
-
|
71
|
-
|
72
|
-
|
74
|
+
- rails: rails_7.1.0
|
75
|
+
adapter: oracle_enhanced
|
76
|
+
|
77
|
+
- rails: rails_7.1.0
|
78
|
+
adapter: postgis
|
79
|
+
ruby: 2.7'
|
73
80
|
|
74
81
|
steps:
|
75
82
|
- name: Checkout
|
76
|
-
uses: actions/checkout@
|
83
|
+
uses: actions/checkout@v4
|
77
84
|
|
78
85
|
- name: Setup Ruby
|
79
86
|
uses: ruby/setup-ruby@v1
|
@@ -88,19 +95,19 @@ jobs:
|
|
88
95
|
|
89
96
|
# See: https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-README.md#mysql
|
90
97
|
run: |
|
91
|
-
if [ "${DB_ADAPTER}"
|
98
|
+
if [[ "${DB_ADAPTER}" == "mysql2" ]] || [[ "${DB_ADAPTER}" == "trilogy" ]]; then
|
92
99
|
sudo systemctl start mysql.service
|
93
100
|
mysql -u root -proot -e 'create database ajax_datatables_rails;'
|
94
101
|
fi
|
95
102
|
|
96
|
-
if [ "${DB_ADAPTER}"
|
103
|
+
if [[ "${DB_ADAPTER}" == "oracle_enhanced" ]]; then
|
97
104
|
./spec/install_oracle.sh
|
98
105
|
# Fix error : libnnz11.so: cannot open shared object file: No such file or directory
|
99
106
|
sudo ln -s ${ORACLE_HOME}/lib/libnnz11.so /usr/lib/libnnz11.so
|
100
107
|
fi
|
101
108
|
|
102
109
|
- name: Setup Ruby cache
|
103
|
-
uses: actions/cache@
|
110
|
+
uses: actions/cache@v4
|
104
111
|
with:
|
105
112
|
path: vendor/bundle
|
106
113
|
key: ${{ runner.os }}-gems-${{ matrix.ruby }}-${{ matrix.rails }}-${{ matrix.adapter }}-${{ hashFiles('**/Gemfile.lock') }}
|
@@ -109,16 +116,19 @@ jobs:
|
|
109
116
|
|
110
117
|
- name: Bundle
|
111
118
|
env:
|
119
|
+
RUBY_VERSION: ${{ matrix.ruby }}
|
112
120
|
RAILS_VERSION: ${{ matrix.rails }}
|
113
121
|
DB_ADAPTER: ${{ matrix.adapter }}
|
114
122
|
BUNDLE_GEMFILE: gemfiles/${{ matrix.rails }}.gemfile
|
115
123
|
run: |
|
116
|
-
|
124
|
+
if [[ "${RUBY_VERSION}" != "2.7" ]]; then
|
125
|
+
gem install bundler
|
126
|
+
fi
|
117
127
|
bundle config path vendor/bundle
|
118
128
|
bundle install --jobs 4 --retry 3
|
119
129
|
|
120
130
|
- name: RSpec & publish code coverage
|
121
|
-
uses: paambaati/codeclimate-action@
|
131
|
+
uses: paambaati/codeclimate-action@v5.0.0
|
122
132
|
env:
|
123
133
|
RAILS_VERSION: ${{ matrix.rails }}
|
124
134
|
DB_ADAPTER: ${{ matrix.adapter }}
|
data/Appraisals
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
## 1.5.0 (2024-04-08)
|
4
|
+
|
5
|
+
* Drop support of Rails 5.2
|
6
|
+
* Add support for grouped results (merge: [#419](https://github.com/jbox-web/ajax-datatables-rails/pull/419))
|
7
|
+
* Fix server-side out of order ajax responses (merge: [#418](https://github.com/jbox-web/ajax-datatables-rails/pull/418))
|
8
|
+
* Add support for postgis adapter (merge: [#417](https://github.com/jbox-web/ajax-datatables-rails/pull/417))
|
9
|
+
* Add support for trilogy adapter (merge: [#423](https://github.com/jbox-web/ajax-datatables-rails/pull/423))
|
10
|
+
* Add support for Rails 7.1
|
11
|
+
* Add support for Ruby 3.3
|
12
|
+
|
13
|
+
This is the last version to support Rails 6.0.x and Ruby 2.7.x.
|
14
|
+
|
3
15
|
## 1.4.0 (2022-12-18)
|
4
16
|
|
5
17
|
* Improve tests
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
|
|
23
23
|
|
24
24
|
s.files = `git ls-files`.split("\n")
|
25
25
|
|
26
|
-
s.add_runtime_dependency 'rails', '>=
|
26
|
+
s.add_runtime_dependency 'rails', '>= 6.0'
|
27
27
|
s.add_runtime_dependency 'zeitwerk'
|
28
28
|
|
29
29
|
s.add_development_dependency 'activerecord-oracle_enhanced-adapter'
|
data/appraisal.yml
CHANGED
@@ -1,56 +1,131 @@
|
|
1
1
|
---
|
2
|
-
|
2
|
+
6.0.6:
|
3
3
|
sqlite3:
|
4
|
-
version: ~> 1.
|
4
|
+
version: ~> 1.4.0
|
5
5
|
install_if: '-> { ENV["DB_ADAPTER"] == "sqlite3" }'
|
6
6
|
mysql2:
|
7
7
|
version: ''
|
8
8
|
install_if: '-> { ENV["DB_ADAPTER"] == "mysql2" }'
|
9
|
+
activerecord-trilogy-adapter:
|
10
|
+
version: ''
|
11
|
+
install_if: '-> { ENV["DB_ADAPTER"] == "trilogy" }'
|
9
12
|
activerecord-oracle_enhanced-adapter:
|
10
|
-
version: ~>
|
13
|
+
version: ~> 6.0.0
|
11
14
|
install_if: '-> { ENV["DB_ADAPTER"] == "oracle_enhanced" }'
|
12
15
|
ruby-oci8:
|
13
16
|
version: ''
|
14
17
|
install_if: '-> { ENV["DB_ADAPTER"] == "oracle_enhanced" }'
|
18
|
+
activerecord-postgis-adapter:
|
19
|
+
version: ''
|
20
|
+
install_if: '-> { ENV["DB_ADAPTER"] == "postgis" }'
|
21
|
+
base64:
|
22
|
+
version: ''
|
23
|
+
install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
|
24
|
+
bigdecimal:
|
25
|
+
version: ''
|
26
|
+
install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
|
27
|
+
mutex_m:
|
28
|
+
version: ''
|
29
|
+
install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
|
30
|
+
drb:
|
31
|
+
version: ''
|
32
|
+
install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
|
15
33
|
|
16
|
-
|
34
|
+
|
35
|
+
6.1.7:
|
17
36
|
sqlite3:
|
18
37
|
version: ~> 1.4.0
|
19
38
|
install_if: '-> { ENV["DB_ADAPTER"] == "sqlite3" }'
|
20
39
|
mysql2:
|
21
40
|
version: ''
|
22
41
|
install_if: '-> { ENV["DB_ADAPTER"] == "mysql2" }'
|
42
|
+
activerecord-trilogy-adapter:
|
43
|
+
version: ''
|
44
|
+
install_if: '-> { ENV["DB_ADAPTER"] == "trilogy" }'
|
23
45
|
activerecord-oracle_enhanced-adapter:
|
24
|
-
version: ~> 6.
|
46
|
+
version: ~> 6.1.0
|
25
47
|
install_if: '-> { ENV["DB_ADAPTER"] == "oracle_enhanced" }'
|
26
48
|
ruby-oci8:
|
27
49
|
version: ''
|
28
50
|
install_if: '-> { ENV["DB_ADAPTER"] == "oracle_enhanced" }'
|
51
|
+
activerecord-postgis-adapter:
|
52
|
+
version: ''
|
53
|
+
install_if: '-> { ENV["DB_ADAPTER"] == "postgis" }'
|
54
|
+
base64:
|
55
|
+
version: ''
|
56
|
+
install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
|
57
|
+
bigdecimal:
|
58
|
+
version: ''
|
59
|
+
install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
|
60
|
+
mutex_m:
|
61
|
+
version: ''
|
62
|
+
install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
|
63
|
+
drb:
|
64
|
+
version: ''
|
65
|
+
install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
|
29
66
|
|
30
|
-
|
67
|
+
|
68
|
+
7.0.8:
|
31
69
|
sqlite3:
|
32
70
|
version: ~> 1.4.0
|
33
71
|
install_if: '-> { ENV["DB_ADAPTER"] == "sqlite3" }'
|
34
72
|
mysql2:
|
35
73
|
version: ''
|
36
74
|
install_if: '-> { ENV["DB_ADAPTER"] == "mysql2" }'
|
75
|
+
activerecord-trilogy-adapter:
|
76
|
+
version: ''
|
77
|
+
install_if: '-> { ENV["DB_ADAPTER"] == "trilogy" }'
|
37
78
|
activerecord-oracle_enhanced-adapter:
|
38
|
-
version: ~>
|
79
|
+
version: ~> 7.0.0
|
39
80
|
install_if: '-> { ENV["DB_ADAPTER"] == "oracle_enhanced" }'
|
40
81
|
ruby-oci8:
|
41
82
|
version: ''
|
42
83
|
install_if: '-> { ENV["DB_ADAPTER"] == "oracle_enhanced" }'
|
84
|
+
activerecord-postgis-adapter:
|
85
|
+
version: ''
|
86
|
+
install_if: '-> { ENV["DB_ADAPTER"] == "postgis" }'
|
87
|
+
base64:
|
88
|
+
version: ''
|
89
|
+
install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
|
90
|
+
bigdecimal:
|
91
|
+
version: ''
|
92
|
+
install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
|
93
|
+
mutex_m:
|
94
|
+
version: ''
|
95
|
+
install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
|
96
|
+
drb:
|
97
|
+
version: ''
|
98
|
+
install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
|
99
|
+
|
43
100
|
|
44
|
-
7.0
|
101
|
+
7.1.0:
|
45
102
|
sqlite3:
|
46
103
|
version: ~> 1.4.0
|
47
104
|
install_if: '-> { ENV["DB_ADAPTER"] == "sqlite3" }'
|
48
105
|
mysql2:
|
49
106
|
version: ''
|
50
107
|
install_if: '-> { ENV["DB_ADAPTER"] == "mysql2" }'
|
51
|
-
activerecord-
|
52
|
-
version: ~> 7.0.0
|
53
|
-
install_if: '-> { ENV["DB_ADAPTER"] == "oracle_enhanced" }'
|
54
|
-
ruby-oci8:
|
108
|
+
activerecord-trilogy-adapter:
|
55
109
|
version: ''
|
56
|
-
install_if: '-> { ENV["DB_ADAPTER"] == "
|
110
|
+
install_if: '-> { ENV["DB_ADAPTER"] == "trilogy" }'
|
111
|
+
# activerecord-oracle_enhanced-adapter:
|
112
|
+
# version: ~> 7.0.0
|
113
|
+
# install_if: '-> { ENV["DB_ADAPTER"] == "oracle_enhanced" }'
|
114
|
+
# ruby-oci8:
|
115
|
+
# version: ''
|
116
|
+
# install_if: '-> { ENV["DB_ADAPTER"] == "oracle_enhanced" }'
|
117
|
+
activerecord-postgis-adapter:
|
118
|
+
version: ''
|
119
|
+
install_if: '-> { ENV["DB_ADAPTER"] == "postgis" }'
|
120
|
+
base64:
|
121
|
+
version: ''
|
122
|
+
install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
|
123
|
+
bigdecimal:
|
124
|
+
version: ''
|
125
|
+
install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
|
126
|
+
mutex_m:
|
127
|
+
version: ''
|
128
|
+
install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
|
129
|
+
drb:
|
130
|
+
version: ''
|
131
|
+
install_if: '-> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") }'
|
@@ -3,6 +3,7 @@
|
|
3
3
|
source "https://rubygems.org"
|
4
4
|
|
5
5
|
gem "appraisal", git: "https://github.com/n-rodriguez/appraisal.git", branch: "wip/combustion"
|
6
|
+
gem "combustion", git: "https://github.com/pat/combustion.git"
|
6
7
|
gem "rails", "6.0.6"
|
7
8
|
|
8
9
|
install_if -> { ENV["DB_ADAPTER"] == "sqlite3" } do
|
@@ -13,9 +14,24 @@ install_if -> { ENV["DB_ADAPTER"] == "mysql2" } do
|
|
13
14
|
gem "mysql2"
|
14
15
|
end
|
15
16
|
|
17
|
+
install_if -> { ENV["DB_ADAPTER"] == "trilogy" } do
|
18
|
+
gem "activerecord-trilogy-adapter"
|
19
|
+
end
|
20
|
+
|
16
21
|
install_if -> { ENV["DB_ADAPTER"] == "oracle_enhanced" } do
|
17
22
|
gem "activerecord-oracle_enhanced-adapter", "~> 6.0.0"
|
18
23
|
gem "ruby-oci8"
|
19
24
|
end
|
20
25
|
|
26
|
+
install_if -> { ENV["DB_ADAPTER"] == "postgis" } do
|
27
|
+
gem "activerecord-postgis-adapter"
|
28
|
+
end
|
29
|
+
|
30
|
+
install_if -> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") } do
|
31
|
+
gem "base64"
|
32
|
+
gem "bigdecimal"
|
33
|
+
gem "mutex_m"
|
34
|
+
gem "drb"
|
35
|
+
end
|
36
|
+
|
21
37
|
gemspec path: "../"
|
@@ -3,6 +3,7 @@
|
|
3
3
|
source "https://rubygems.org"
|
4
4
|
|
5
5
|
gem "appraisal", git: "https://github.com/n-rodriguez/appraisal.git", branch: "wip/combustion"
|
6
|
+
gem "combustion", git: "https://github.com/pat/combustion.git"
|
6
7
|
gem "rails", "6.1.7"
|
7
8
|
|
8
9
|
install_if -> { ENV["DB_ADAPTER"] == "sqlite3" } do
|
@@ -13,9 +14,24 @@ install_if -> { ENV["DB_ADAPTER"] == "mysql2" } do
|
|
13
14
|
gem "mysql2"
|
14
15
|
end
|
15
16
|
|
17
|
+
install_if -> { ENV["DB_ADAPTER"] == "trilogy" } do
|
18
|
+
gem "activerecord-trilogy-adapter"
|
19
|
+
end
|
20
|
+
|
16
21
|
install_if -> { ENV["DB_ADAPTER"] == "oracle_enhanced" } do
|
17
22
|
gem "activerecord-oracle_enhanced-adapter", "~> 6.1.0"
|
18
23
|
gem "ruby-oci8"
|
19
24
|
end
|
20
25
|
|
26
|
+
install_if -> { ENV["DB_ADAPTER"] == "postgis" } do
|
27
|
+
gem "activerecord-postgis-adapter"
|
28
|
+
end
|
29
|
+
|
30
|
+
install_if -> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") } do
|
31
|
+
gem "base64"
|
32
|
+
gem "bigdecimal"
|
33
|
+
gem "mutex_m"
|
34
|
+
gem "drb"
|
35
|
+
end
|
36
|
+
|
21
37
|
gemspec path: "../"
|
@@ -3,7 +3,8 @@
|
|
3
3
|
source "https://rubygems.org"
|
4
4
|
|
5
5
|
gem "appraisal", git: "https://github.com/n-rodriguez/appraisal.git", branch: "wip/combustion"
|
6
|
-
gem "
|
6
|
+
gem "combustion", git: "https://github.com/pat/combustion.git"
|
7
|
+
gem "rails", "7.0.8"
|
7
8
|
|
8
9
|
install_if -> { ENV["DB_ADAPTER"] == "sqlite3" } do
|
9
10
|
gem "sqlite3", "~> 1.4.0"
|
@@ -13,9 +14,24 @@ install_if -> { ENV["DB_ADAPTER"] == "mysql2" } do
|
|
13
14
|
gem "mysql2"
|
14
15
|
end
|
15
16
|
|
17
|
+
install_if -> { ENV["DB_ADAPTER"] == "trilogy" } do
|
18
|
+
gem "activerecord-trilogy-adapter"
|
19
|
+
end
|
20
|
+
|
16
21
|
install_if -> { ENV["DB_ADAPTER"] == "oracle_enhanced" } do
|
17
22
|
gem "activerecord-oracle_enhanced-adapter", "~> 7.0.0"
|
18
23
|
gem "ruby-oci8"
|
19
24
|
end
|
20
25
|
|
26
|
+
install_if -> { ENV["DB_ADAPTER"] == "postgis" } do
|
27
|
+
gem "activerecord-postgis-adapter"
|
28
|
+
end
|
29
|
+
|
30
|
+
install_if -> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") } do
|
31
|
+
gem "base64"
|
32
|
+
gem "bigdecimal"
|
33
|
+
gem "mutex_m"
|
34
|
+
gem "drb"
|
35
|
+
end
|
36
|
+
|
21
37
|
gemspec path: "../"
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "https://rubygems.org"
|
4
|
+
|
5
|
+
gem "appraisal", git: "https://github.com/n-rodriguez/appraisal.git", branch: "wip/combustion"
|
6
|
+
gem "combustion", git: "https://github.com/pat/combustion.git"
|
7
|
+
gem "rails", "7.1.0"
|
8
|
+
|
9
|
+
install_if -> { ENV["DB_ADAPTER"] == "sqlite3" } do
|
10
|
+
gem "sqlite3", "~> 1.4.0"
|
11
|
+
end
|
12
|
+
|
13
|
+
install_if -> { ENV["DB_ADAPTER"] == "mysql2" } do
|
14
|
+
gem "mysql2"
|
15
|
+
end
|
16
|
+
|
17
|
+
install_if -> { ENV["DB_ADAPTER"] == "trilogy" } do
|
18
|
+
gem "activerecord-trilogy-adapter"
|
19
|
+
end
|
20
|
+
|
21
|
+
install_if -> { ENV["DB_ADAPTER"] == "postgis" } do
|
22
|
+
gem "activerecord-postgis-adapter"
|
23
|
+
end
|
24
|
+
|
25
|
+
install_if -> { Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0") } do
|
26
|
+
gem "base64"
|
27
|
+
gem "bigdecimal"
|
28
|
+
gem "mutex_m"
|
29
|
+
gem "drb"
|
30
|
+
end
|
31
|
+
|
32
|
+
gemspec path: "../"
|
@@ -77,7 +77,7 @@ module AjaxDatatablesRails
|
|
77
77
|
recordsTotal: records_total_count,
|
78
78
|
recordsFiltered: records_filtered_count,
|
79
79
|
data: sanitize_data(data),
|
80
|
-
}.merge(additional_data)
|
80
|
+
}.merge(draw_id).merge(additional_data)
|
81
81
|
end
|
82
82
|
|
83
83
|
# User helper methods
|
@@ -137,17 +137,26 @@ module AjaxDatatablesRails
|
|
137
137
|
end
|
138
138
|
|
139
139
|
def records_total_count
|
140
|
-
fetch_records.count(:all)
|
140
|
+
numeric_count fetch_records.count(:all)
|
141
141
|
end
|
142
142
|
|
143
143
|
def records_filtered_count
|
144
|
-
filter_records(fetch_records).count(:all)
|
144
|
+
numeric_count filter_records(fetch_records).count(:all)
|
145
|
+
end
|
146
|
+
|
147
|
+
def numeric_count(count)
|
148
|
+
count.is_a?(Hash) ? count.values.size : count
|
145
149
|
end
|
146
150
|
|
147
151
|
def global_search_delimiter
|
148
152
|
GLOBAL_SEARCH_DELIMITER
|
149
153
|
end
|
150
154
|
|
155
|
+
# See: https://datatables.net/manual/server-side#Returned-data
|
156
|
+
def draw_id
|
157
|
+
params[:draw].present? ? { draw: params[:draw].to_i } : {}
|
158
|
+
end
|
159
|
+
|
151
160
|
def raw_records_error_text
|
152
161
|
<<-ERROR
|
153
162
|
|
@@ -45,9 +45,9 @@ module AjaxDatatablesRails
|
|
45
45
|
return unless sort_nulls_last?
|
46
46
|
|
47
47
|
case @adapter
|
48
|
-
when :pg, :postgresql, :postgres, :oracle
|
48
|
+
when :pg, :postgresql, :postgres, :oracle, :postgis
|
49
49
|
'NULLS LAST'
|
50
|
-
when :mysql, :mysql2, :sqlite, :sqlite3
|
50
|
+
when :mysql, :mysql2, :trilogy, :sqlite, :sqlite3
|
51
51
|
'IS NULL'
|
52
52
|
else
|
53
53
|
raise "unsupported database adapter: #{@adapter}"
|
@@ -181,6 +181,7 @@ RSpec.describe AjaxDatatablesRails::Base do
|
|
181
181
|
data = datatable.as_json
|
182
182
|
expect(data[:recordsTotal]).to eq 5
|
183
183
|
expect(data[:recordsFiltered]).to eq 5
|
184
|
+
expect(data[:draw]).to eq 1
|
184
185
|
expect(data[:data]).to be_a(Array)
|
185
186
|
expect(data[:data].size).to eq 5
|
186
187
|
end
|
@@ -192,6 +193,7 @@ RSpec.describe AjaxDatatablesRails::Base do
|
|
192
193
|
data = datatable.as_json
|
193
194
|
expect(data[:recordsTotal]).to eq 5
|
194
195
|
expect(data[:recordsFiltered]).to eq 5
|
196
|
+
expect(data[:draw]).to eq 1
|
195
197
|
expect(data[:data]).to be_a(Array)
|
196
198
|
expect(data[:data].size).to eq 5
|
197
199
|
expect(data[:foo]).to eq 'bar'
|
@@ -168,6 +168,11 @@ RSpec.describe AjaxDatatablesRails::Datatable::Column do
|
|
168
168
|
expect(column.send(:type_cast)).to eq('VARCHAR')
|
169
169
|
end
|
170
170
|
|
171
|
+
it 'returns VARCHAR if :db_adapter is :postgis' do
|
172
|
+
expect(datatable).to receive(:db_adapter) { :postgis }
|
173
|
+
expect(column.send(:type_cast)).to eq('VARCHAR')
|
174
|
+
end
|
175
|
+
|
171
176
|
it 'returns VARCHAR2(4000) if :db_adapter is :oracle' do
|
172
177
|
expect(datatable).to receive(:db_adapter) { :oracle }
|
173
178
|
expect(column.send(:type_cast)).to eq('VARCHAR2(4000)')
|
@@ -183,6 +188,11 @@ RSpec.describe AjaxDatatablesRails::Datatable::Column do
|
|
183
188
|
expect(column.send(:type_cast)).to eq('CHAR')
|
184
189
|
end
|
185
190
|
|
191
|
+
it 'returns CHAR if :db_adapter is :trilogy' do
|
192
|
+
expect(datatable).to receive(:db_adapter) { :trilogy }
|
193
|
+
expect(column.send(:type_cast)).to eq('CHAR')
|
194
|
+
end
|
195
|
+
|
186
196
|
it 'returns CHAR if :db_adapter is :mysql' do
|
187
197
|
expect(datatable).to receive(:db_adapter) { :mysql }
|
188
198
|
expect(column.send(:type_cast)).to eq('CHAR')
|
@@ -42,6 +42,14 @@ RSpec.describe AjaxDatatablesRails::Datatable::SimpleOrder do
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
+
context 'with postgis database adapter' do
|
46
|
+
before { parent.db_adapter = :postgis }
|
47
|
+
|
48
|
+
it 'sql query' do
|
49
|
+
expect(nulls_last_order.query('email')).to eq('email DESC NULLS LAST')
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
45
53
|
context 'with sqlite database adapter' do
|
46
54
|
before { parent.db_adapter = :sqlite }
|
47
55
|
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
RSpec.describe AjaxDatatablesRails::ORM::ActiveRecord do
|
6
|
+
|
7
|
+
let(:datatable) { ComplexDatatable.new(sample_params) }
|
8
|
+
let(:records) { User.all }
|
9
|
+
|
10
|
+
describe '#records_total_count' do
|
11
|
+
context 'ungrouped results' do
|
12
|
+
it 'returns the count' do
|
13
|
+
expect(datatable.send(:records_total_count)).to eq records.count
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context 'grouped results' do
|
18
|
+
let(:datatable) { GroupedDatatable.new(sample_params) }
|
19
|
+
|
20
|
+
it 'returns the count' do
|
21
|
+
expect(datatable.send(:records_total_count)).to eq records.count
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
describe '#records_filtered_count' do
|
28
|
+
context 'ungrouped results' do
|
29
|
+
it 'returns the count' do
|
30
|
+
expect(datatable.send(:records_filtered_count)).to eq records.count
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context 'grouped results' do
|
35
|
+
let(:datatable) { GroupedDatatable.new(sample_params) }
|
36
|
+
|
37
|
+
it 'returns the count' do
|
38
|
+
expect(datatable.send(:records_filtered_count)).to eq records.count
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -202,6 +202,16 @@ RSpec.describe AjaxDatatablesRails::ORM::ActiveRecord do
|
|
202
202
|
)
|
203
203
|
end
|
204
204
|
end
|
205
|
+
|
206
|
+
context 'when db_adapter is trilogy' do
|
207
|
+
it 'can call #to_sql on returned object' do
|
208
|
+
result = datatable.build_conditions_for_selected_columns
|
209
|
+
expect(result).to respond_to(:to_sql)
|
210
|
+
expect(result.to_sql).to eq(
|
211
|
+
"CAST(`users`.`username` AS CHAR) LIKE '%doe%' AND CAST(`users`.`email` AS CHAR) LIKE '%example%'"
|
212
|
+
)
|
213
|
+
end
|
214
|
+
end
|
205
215
|
end
|
206
216
|
end
|
207
217
|
|
@@ -4,12 +4,12 @@ test:
|
|
4
4
|
database: ajax_datatables_rails
|
5
5
|
encoding: utf8
|
6
6
|
|
7
|
-
<% if adapter == 'postgresql' %>
|
7
|
+
<% if adapter == 'postgresql' || adapter == 'postgis' %>
|
8
8
|
host: '127.0.0.1'
|
9
9
|
port: 5432
|
10
10
|
username: 'postgres'
|
11
11
|
password: 'postgres'
|
12
|
-
<% elsif adapter == 'mysql2' %>
|
12
|
+
<% elsif adapter == 'mysql2' || adapter == 'trilogy' %>
|
13
13
|
host: '127.0.0.1'
|
14
14
|
port: 3306
|
15
15
|
username: 'root'
|
data/spec/spec_helper.rb
CHANGED
@@ -73,11 +73,11 @@ class RunningSpec
|
|
73
73
|
end
|
74
74
|
|
75
75
|
def self.mysql?
|
76
|
-
ENV['DB_ADAPTER'] == 'mysql2'
|
76
|
+
ENV['DB_ADAPTER'] == 'mysql2' || ENV['DB_ADAPTER'] == 'trilogy'
|
77
77
|
end
|
78
78
|
|
79
79
|
def self.postgresql?
|
80
|
-
ENV['DB_ADAPTER'] == 'postgresql'
|
80
|
+
ENV['DB_ADAPTER'] == 'postgresql' || ENV['DB_ADAPTER'] == 'postgis'
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
@@ -70,9 +70,9 @@ end
|
|
70
70
|
|
71
71
|
def nulls_last_sql(datatable)
|
72
72
|
case datatable.db_adapter
|
73
|
-
when :pg, :postgresql, :postgres, :oracle
|
73
|
+
when :pg, :postgresql, :postgres, :oracle, :postgis
|
74
74
|
'NULLS LAST'
|
75
|
-
when :mysql, :mysql2, :sqlite, :sqlite3
|
75
|
+
when :mysql, :mysql2, :trilogy, :sqlite, :sqlite3
|
76
76
|
'IS NULL'
|
77
77
|
else
|
78
78
|
raise 'unsupported database adapter'
|
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: 1.
|
4
|
+
version: 1.5.0
|
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:
|
12
|
+
date: 2024-04-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -17,14 +17,14 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '
|
20
|
+
version: '6.0'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: '
|
27
|
+
version: '6.0'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: zeitwerk
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -311,10 +311,10 @@ files:
|
|
311
311
|
- config.ru
|
312
312
|
- doc/migrate.md
|
313
313
|
- doc/webpack.md
|
314
|
-
- gemfiles/rails_5.2.8.gemfile
|
315
314
|
- gemfiles/rails_6.0.6.gemfile
|
316
315
|
- gemfiles/rails_6.1.7.gemfile
|
317
|
-
- gemfiles/rails_7.0.
|
316
|
+
- gemfiles/rails_7.0.8.gemfile
|
317
|
+
- gemfiles/rails_7.1.0.gemfile
|
318
318
|
- lib/ajax-datatables-rails.rb
|
319
319
|
- lib/ajax-datatables-rails/active_record.rb
|
320
320
|
- lib/ajax-datatables-rails/base.rb
|
@@ -337,6 +337,7 @@ files:
|
|
337
337
|
- spec/ajax-datatables-rails/datatable/datatable_spec.rb
|
338
338
|
- spec/ajax-datatables-rails/datatable/simple_order_spec.rb
|
339
339
|
- spec/ajax-datatables-rails/datatable/simple_search_spec.rb
|
340
|
+
- spec/ajax-datatables-rails/orm/active_record_count_records_spec.rb
|
340
341
|
- spec/ajax-datatables-rails/orm/active_record_filter_records_spec.rb
|
341
342
|
- spec/ajax-datatables-rails/orm/active_record_paginate_records_spec.rb
|
342
343
|
- spec/ajax-datatables-rails/orm/active_record_sort_records_spec.rb
|
@@ -359,6 +360,7 @@ files:
|
|
359
360
|
- spec/support/datatables/datatable_cond_unknown.rb
|
360
361
|
- spec/support/datatables/datatable_custom_column.rb
|
361
362
|
- spec/support/datatables/datatable_order_nulls_last.rb
|
363
|
+
- spec/support/datatables/grouped_datatable_array.rb
|
362
364
|
- spec/support/helpers/params.rb
|
363
365
|
- spec/support/models/user.rb
|
364
366
|
homepage: https://github.com/jbox-web/ajax-datatables-rails
|
@@ -384,7 +386,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
384
386
|
- !ruby/object:Gem::Version
|
385
387
|
version: '0'
|
386
388
|
requirements: []
|
387
|
-
rubygems_version: 3.
|
389
|
+
rubygems_version: 3.5.7
|
388
390
|
signing_key:
|
389
391
|
specification_version: 4
|
390
392
|
summary: A gem that simplifies using datatables and hundreds of records via ajax
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# This file was generated by Appraisal
|
2
|
-
|
3
|
-
source "https://rubygems.org"
|
4
|
-
|
5
|
-
gem "appraisal", git: "https://github.com/n-rodriguez/appraisal.git", branch: "wip/combustion"
|
6
|
-
gem "rails", "5.2.8"
|
7
|
-
|
8
|
-
install_if -> { ENV["DB_ADAPTER"] == "sqlite3" } do
|
9
|
-
gem "sqlite3", "~> 1.3.0"
|
10
|
-
end
|
11
|
-
|
12
|
-
install_if -> { ENV["DB_ADAPTER"] == "mysql2" } do
|
13
|
-
gem "mysql2"
|
14
|
-
end
|
15
|
-
|
16
|
-
install_if -> { ENV["DB_ADAPTER"] == "oracle_enhanced" } do
|
17
|
-
gem "activerecord-oracle_enhanced-adapter", "~> 5.2.0"
|
18
|
-
gem "ruby-oci8"
|
19
|
-
end
|
20
|
-
|
21
|
-
gemspec path: "../"
|