ajax-datatables-rails 1.3.1 → 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.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +5 -23
  3. data/.github/workflows/ci.yml +35 -17
  4. data/.gitignore +6 -3
  5. data/.rubocop.yml +1 -1
  6. data/Appraisals +18 -25
  7. data/CHANGELOG.md +22 -0
  8. data/Gemfile +3 -0
  9. data/README.md +2 -2
  10. data/ajax-datatables-rails.gemspec +5 -2
  11. data/appraisal.yml +131 -0
  12. data/bin/rackup +27 -0
  13. data/config.ru +7 -0
  14. data/gemfiles/rails_6.0.6.gemfile +37 -0
  15. data/gemfiles/rails_6.1.7.gemfile +37 -0
  16. data/gemfiles/rails_7.0.8.gemfile +37 -0
  17. data/gemfiles/rails_7.1.0.gemfile +32 -0
  18. data/lib/ajax-datatables-rails/base.rb +33 -4
  19. data/lib/ajax-datatables-rails/datatable/column/search.rb +2 -6
  20. data/lib/ajax-datatables-rails/datatable/column.rb +11 -9
  21. data/lib/ajax-datatables-rails/datatable/simple_order.rb +2 -2
  22. data/lib/ajax-datatables-rails/version.rb +2 -2
  23. data/spec/ajax-datatables-rails/base_spec.rb +2 -0
  24. data/spec/ajax-datatables-rails/datatable/column_spec.rb +10 -0
  25. data/spec/ajax-datatables-rails/datatable/datatable_spec.rb +2 -2
  26. data/spec/ajax-datatables-rails/datatable/simple_order_spec.rb +9 -1
  27. data/spec/ajax-datatables-rails/orm/active_record_count_records_spec.rb +42 -0
  28. data/spec/ajax-datatables-rails/orm/active_record_filter_records_spec.rb +58 -26
  29. data/spec/ajax-datatables-rails/orm/active_record_paginate_records_spec.rb +2 -2
  30. data/spec/ajax-datatables-rails/orm/active_record_sort_records_spec.rb +2 -2
  31. data/spec/dummy/app/assets/config/manifest.js +0 -0
  32. data/spec/dummy/config/database.yml +25 -0
  33. data/spec/dummy/config/routes.rb +5 -0
  34. data/spec/dummy/config/storage.yml +3 -0
  35. data/spec/{support → dummy/db}/schema.rb +0 -3
  36. data/spec/dummy/log/.gitignore +1 -0
  37. data/spec/dummy/public/favicon.ico +0 -0
  38. data/spec/spec_helper.rb +20 -23
  39. data/spec/support/datatables/complex_datatable.rb +2 -0
  40. data/spec/support/datatables/datatable_custom_column.rb +17 -0
  41. data/spec/support/datatables/grouped_datatable_array.rb +8 -0
  42. data/spec/support/helpers/params.rb +9 -3
  43. data/spec/support/models/user.rb +3 -0
  44. metadata +66 -11
  45. data/gemfiles/rails_5.2.4.gemfile +0 -11
  46. data/gemfiles/rails_6.0.3.gemfile +0 -11
  47. data/gemfiles/rails_6.1.0.gemfile +0 -11
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'combustion'
4
+
5
+ Combustion.path = 'spec/dummy'
6
+ Combustion.initialize! :active_record, :action_controller
7
+
3
8
  require 'simplecov'
4
9
  require 'rspec'
5
10
  require 'rspec/retry'
@@ -7,9 +12,6 @@ require 'database_cleaner'
7
12
  require 'factory_bot'
8
13
  require 'faker'
9
14
  require 'pry'
10
- require 'rails'
11
- require 'active_record'
12
- require 'action_controller'
13
15
 
14
16
  # Start Simplecov
15
17
  SimpleCov.start do
@@ -61,28 +63,23 @@ RSpec.configure do |config|
61
63
  end
62
64
  end
63
65
 
64
- # Configure ActiveRecord
65
- adapter = ENV.fetch('DB_ADAPTER', 'postgresql')
66
-
67
- options = {
68
- adapter: adapter,
69
- database: 'ajax_datatables_rails',
70
- encoding: 'utf8',
71
- }
72
-
73
- options =
74
- case adapter
75
- when 'postgresql'
76
- options.merge(host: '127.0.0.1', port: 5432, username: 'postgres', password: 'postgres')
77
- when 'mysql2'
78
- options.merge(host: '127.0.0.1', port: 3306, username: 'root', password: 'root')
79
- when 'oracle_enhanced'
80
- options.merge(host: '127.0.0.1/xe', username: ENV['USER'], password: ENV['USER'], database: 'xe')
81
- when 'sqlite3'
82
- options.merge(database: ':memory:')
66
+ class RunningSpec
67
+ def self.sqlite?
68
+ ENV['DB_ADAPTER'] == 'sqlite3'
69
+ end
70
+
71
+ def self.oracle?
72
+ ENV['DB_ADAPTER'] == 'oracle_enhanced'
83
73
  end
84
74
 
85
- ActiveRecord::Base.establish_connection(options)
75
+ def self.mysql?
76
+ ENV['DB_ADAPTER'] == 'mysql2' || ENV['DB_ADAPTER'] == 'trilogy'
77
+ end
78
+
79
+ def self.postgresql?
80
+ ENV['DB_ADAPTER'] == 'postgresql' || ENV['DB_ADAPTER'] == 'postgis'
81
+ end
82
+ end
86
83
 
87
84
  # Require our gem
88
85
  require 'ajax-datatables-rails'
@@ -7,6 +7,7 @@ class ComplexDatatable < AjaxDatatablesRails::ActiveRecord
7
7
  email: { source: 'User.email' },
8
8
  first_name: { source: 'User.first_name' },
9
9
  last_name: { source: 'User.last_name' },
10
+ full_name: { source: 'full_name' },
10
11
  post_id: { source: 'User.post_id', orderable: false },
11
12
  created_at: { source: 'User.created_at' },
12
13
  }
@@ -19,6 +20,7 @@ class ComplexDatatable < AjaxDatatablesRails::ActiveRecord
19
20
  email: record.email,
20
21
  first_name: record.first_name,
21
22
  last_name: record.last_name,
23
+ full_name: record.full_name,
22
24
  post_id: record.post_id,
23
25
  created_at: record.created_at,
24
26
  }
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ class DatatableCustomColumn < ComplexDatatable
4
+ def view_columns
5
+ super.deep_merge(full_name: { cond: filter_full_name })
6
+ end
7
+
8
+ def get_raw_records
9
+ User.select("*, CONCAT(first_name, ' ', last_name) as full_name")
10
+ end
11
+
12
+ private
13
+
14
+ def filter_full_name
15
+ ->(_column, value) { ::Arel::Nodes::SqlLiteral.new("CONCAT(first_name, ' ', last_name)").matches("#{value}%") }
16
+ end
17
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ class GroupedDatatable < ComplexDatatable
4
+
5
+ def get_raw_records
6
+ User.all.group(:id)
7
+ end
8
+ end
@@ -31,12 +31,18 @@ def sample_params
31
31
  }
32
32
  },
33
33
  '4' => {
34
- 'data' => 'post_id', 'name' => '', 'searchable' => 'true', 'orderable' => 'true',
34
+ 'data' => 'full_name', 'name' => '', 'searchable' => 'true', 'orderable' => 'true',
35
35
  'search' => {
36
36
  'value' => '', 'regex' => 'false'
37
37
  }
38
38
  },
39
39
  '5' => {
40
+ 'data' => 'post_id', 'name' => '', 'searchable' => 'true', 'orderable' => 'true',
41
+ 'search' => {
42
+ 'value' => '', 'regex' => 'false'
43
+ }
44
+ },
45
+ '6' => {
40
46
  'data' => 'created_at', 'name' => '', 'searchable' => 'true', 'orderable' => 'true',
41
47
  'search' => {
42
48
  'value' => '', 'regex' => 'false'
@@ -64,9 +70,9 @@ end
64
70
 
65
71
  def nulls_last_sql(datatable)
66
72
  case datatable.db_adapter
67
- when :pg, :postgresql, :postgres, :oracle
73
+ when :pg, :postgresql, :postgres, :oracle, :postgis
68
74
  'NULLS LAST'
69
- when :mysql, :mysql2, :sqlite, :sqlite3
75
+ when :mysql, :mysql2, :trilogy, :sqlite, :sqlite3
70
76
  'IS NULL'
71
77
  else
72
78
  raise 'unsupported database adapter'
@@ -1,4 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class User < ActiveRecord::Base
4
+ def full_name
5
+ "#{first_name} #{last_name}"
6
+ end
4
7
  end
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.3.1
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joel Quenneville
@@ -9,8 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-02-09 00:00:00.000000000 Z
12
+ date: 2024-04-08 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rails
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '6.0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '6.0'
14
28
  - !ruby/object:Gem::Dependency
15
29
  name: zeitwerk
16
30
  requirement: !ruby/object:Gem::Requirement
@@ -53,6 +67,20 @@ dependencies:
53
67
  - - ">="
54
68
  - !ruby/object:Gem::Version
55
69
  version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: combustion
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '1.3'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '1.3'
56
84
  - !ruby/object:Gem::Dependency
57
85
  name: database_cleaner
58
86
  requirement: !ruby/object:Gem::Requirement
@@ -152,19 +180,19 @@ dependencies:
152
180
  - !ruby/object:Gem::Version
153
181
  version: '0'
154
182
  - !ruby/object:Gem::Dependency
155
- name: rails
183
+ name: puma
156
184
  requirement: !ruby/object:Gem::Requirement
157
185
  requirements:
158
186
  - - ">="
159
187
  - !ruby/object:Gem::Version
160
- version: '5.2'
188
+ version: '0'
161
189
  type: :development
162
190
  prerelease: false
163
191
  version_requirements: !ruby/object:Gem::Requirement
164
192
  requirements:
165
193
  - - ">="
166
194
  - !ruby/object:Gem::Version
167
- version: '5.2'
195
+ version: '0'
168
196
  - !ruby/object:Gem::Dependency
169
197
  name: rake
170
198
  requirement: !ruby/object:Gem::Requirement
@@ -235,6 +263,20 @@ dependencies:
235
263
  - - ">="
236
264
  - !ruby/object:Gem::Version
237
265
  version: '0'
266
+ - !ruby/object:Gem::Dependency
267
+ name: sqlite3
268
+ requirement: !ruby/object:Gem::Requirement
269
+ requirements:
270
+ - - "~>"
271
+ - !ruby/object:Gem::Version
272
+ version: 1.4.0
273
+ type: :development
274
+ prerelease: false
275
+ version_requirements: !ruby/object:Gem::Requirement
276
+ requirements:
277
+ - - "~>"
278
+ - !ruby/object:Gem::Version
279
+ version: 1.4.0
238
280
  description: A wrapper around datatable's ajax methods that allow synchronization
239
281
  with server-side pagination in a rails app
240
282
  email:
@@ -257,18 +299,22 @@ files:
257
299
  - README.md
258
300
  - Rakefile
259
301
  - ajax-datatables-rails.gemspec
302
+ - appraisal.yml
260
303
  - bin/_guard-core
261
304
  - bin/appraisal
262
305
  - bin/bundle
263
306
  - bin/guard
307
+ - bin/rackup
264
308
  - bin/rake
265
309
  - bin/rspec
266
310
  - bin/rubocop
311
+ - config.ru
267
312
  - doc/migrate.md
268
313
  - doc/webpack.md
269
- - gemfiles/rails_5.2.4.gemfile
270
- - gemfiles/rails_6.0.3.gemfile
271
- - gemfiles/rails_6.1.0.gemfile
314
+ - gemfiles/rails_6.0.6.gemfile
315
+ - gemfiles/rails_6.1.7.gemfile
316
+ - gemfiles/rails_7.0.8.gemfile
317
+ - gemfiles/rails_7.1.0.gemfile
272
318
  - lib/ajax-datatables-rails.rb
273
319
  - lib/ajax-datatables-rails/active_record.rb
274
320
  - lib/ajax-datatables-rails/base.rb
@@ -291,9 +337,17 @@ files:
291
337
  - spec/ajax-datatables-rails/datatable/datatable_spec.rb
292
338
  - spec/ajax-datatables-rails/datatable/simple_order_spec.rb
293
339
  - spec/ajax-datatables-rails/datatable/simple_search_spec.rb
340
+ - spec/ajax-datatables-rails/orm/active_record_count_records_spec.rb
294
341
  - spec/ajax-datatables-rails/orm/active_record_filter_records_spec.rb
295
342
  - spec/ajax-datatables-rails/orm/active_record_paginate_records_spec.rb
296
343
  - spec/ajax-datatables-rails/orm/active_record_sort_records_spec.rb
344
+ - spec/dummy/app/assets/config/manifest.js
345
+ - spec/dummy/config/database.yml
346
+ - spec/dummy/config/routes.rb
347
+ - spec/dummy/config/storage.yml
348
+ - spec/dummy/db/schema.rb
349
+ - spec/dummy/log/.gitignore
350
+ - spec/dummy/public/favicon.ico
297
351
  - spec/factories/user.rb
298
352
  - spec/install_oracle.sh
299
353
  - spec/spec_helper.rb
@@ -304,10 +358,11 @@ files:
304
358
  - spec/support/datatables/datatable_cond_proc.rb
305
359
  - spec/support/datatables/datatable_cond_string.rb
306
360
  - spec/support/datatables/datatable_cond_unknown.rb
361
+ - spec/support/datatables/datatable_custom_column.rb
307
362
  - spec/support/datatables/datatable_order_nulls_last.rb
363
+ - spec/support/datatables/grouped_datatable_array.rb
308
364
  - spec/support/helpers/params.rb
309
365
  - spec/support/models/user.rb
310
- - spec/support/schema.rb
311
366
  homepage: https://github.com/jbox-web/ajax-datatables-rails
312
367
  licenses:
313
368
  - MIT
@@ -324,14 +379,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
324
379
  requirements:
325
380
  - - ">="
326
381
  - !ruby/object:Gem::Version
327
- version: 2.5.0
382
+ version: 2.7.0
328
383
  required_rubygems_version: !ruby/object:Gem::Requirement
329
384
  requirements:
330
385
  - - ">="
331
386
  - !ruby/object:Gem::Version
332
387
  version: '0'
333
388
  requirements: []
334
- rubygems_version: 3.2.7
389
+ rubygems_version: 3.5.7
335
390
  signing_key:
336
391
  specification_version: 4
337
392
  summary: A gem that simplifies using datatables and hundreds of records via ajax
@@ -1,11 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "5.2.4"
6
- gem "activerecord-oracle_enhanced-adapter", "~> 5.2.0"
7
- gem "sqlite3", "~> 1.3.0"
8
- gem "mysql2"
9
- gem "ruby-oci8" if ENV["DB_ADAPTER"] == "oracle_enhanced"
10
-
11
- gemspec path: "../"
@@ -1,11 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "6.0.3"
6
- gem "activerecord-oracle_enhanced-adapter", "~> 6.0.0"
7
- gem "sqlite3", "~> 1.4.0"
8
- gem "mysql2"
9
- gem "ruby-oci8" if ENV["DB_ADAPTER"] == "oracle_enhanced"
10
-
11
- gemspec path: "../"
@@ -1,11 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "6.1.0"
6
- gem "activerecord-oracle_enhanced-adapter", "~> 6.1.0"
7
- gem "sqlite3", "~> 1.4.0"
8
- gem "mysql2"
9
- gem "ruby-oci8" if ENV["DB_ADAPTER"] == "oracle_enhanced"
10
-
11
- gemspec path: "../"