ajax-datatables-rails 1.4.0 → 1.5.0
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/.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: "../"
|