ajax-datatables-rails 0.4.2 → 1.3.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 (69) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +120 -0
  3. data/.rubocop.yml +17 -7
  4. data/Appraisals +15 -20
  5. data/CHANGELOG.md +56 -4
  6. data/Gemfile +0 -5
  7. data/Guardfile +16 -0
  8. data/README.md +223 -97
  9. data/Rakefile +1 -0
  10. data/ajax-datatables-rails.gemspec +24 -20
  11. data/bin/_guard-core +29 -0
  12. data/bin/appraisal +29 -0
  13. data/bin/guard +29 -0
  14. data/bin/rake +29 -0
  15. data/bin/rspec +29 -0
  16. data/bin/rubocop +29 -0
  17. data/doc/migrate.md +97 -0
  18. data/doc/webpack.md +7 -2
  19. data/gemfiles/{rails_5.2.0.gemfile → rails_5.2.4.gemfile} +3 -5
  20. data/gemfiles/{rails_5.0.7.gemfile → rails_6.0.3.gemfile} +4 -6
  21. data/gemfiles/{rails_5.1.6.gemfile → rails_6.1.0.gemfile} +4 -6
  22. data/lib/ajax-datatables-rails.rb +12 -1
  23. data/lib/ajax-datatables-rails/active_record.rb +7 -0
  24. data/lib/ajax-datatables-rails/base.rb +47 -46
  25. data/lib/ajax-datatables-rails/datatable.rb +6 -0
  26. data/lib/ajax-datatables-rails/datatable/column.rb +65 -20
  27. data/lib/ajax-datatables-rails/datatable/column/date_filter.rb +12 -21
  28. data/lib/ajax-datatables-rails/datatable/column/order.rb +1 -1
  29. data/lib/ajax-datatables-rails/datatable/column/search.rb +36 -23
  30. data/lib/ajax-datatables-rails/datatable/datatable.rb +16 -6
  31. data/lib/ajax-datatables-rails/datatable/simple_order.rb +23 -10
  32. data/lib/ajax-datatables-rails/datatable/simple_search.rb +2 -0
  33. data/lib/ajax-datatables-rails/error.rb +9 -0
  34. data/lib/ajax-datatables-rails/orm.rb +6 -0
  35. data/lib/ajax-datatables-rails/orm/active_record.rb +11 -12
  36. data/lib/ajax-datatables-rails/version.rb +13 -1
  37. data/lib/generators/rails/templates/datatable.rb +1 -1
  38. data/spec/ajax-datatables-rails/base_spec.rb +95 -79
  39. data/spec/ajax-datatables-rails/datatable/column_spec.rb +83 -12
  40. data/spec/ajax-datatables-rails/datatable/datatable_spec.rb +62 -24
  41. data/spec/ajax-datatables-rails/datatable/simple_order_spec.rb +32 -12
  42. data/spec/ajax-datatables-rails/orm/active_record_filter_records_spec.rb +329 -221
  43. data/spec/ajax-datatables-rails/orm/active_record_paginate_records_spec.rb +5 -6
  44. data/spec/ajax-datatables-rails/orm/active_record_sort_records_spec.rb +12 -11
  45. data/spec/ajax-datatables-rails/orm/active_record_spec.rb +3 -4
  46. data/spec/install_oracle.sh +9 -3
  47. data/spec/spec_helper.rb +10 -21
  48. data/spec/support/datatables/complex_datatable.rb +29 -0
  49. data/spec/support/datatables/complex_datatable_array.rb +14 -0
  50. data/spec/support/{datatable_cond_date.rb → datatables/datatable_cond_date.rb} +0 -0
  51. data/spec/support/{datatable_cond_numeric.rb → datatables/datatable_cond_numeric.rb} +1 -1
  52. data/spec/support/{datatable_cond_proc.rb → datatables/datatable_cond_proc.rb} +0 -0
  53. data/spec/support/datatables/datatable_cond_string.rb +41 -0
  54. data/spec/support/datatables/datatable_cond_unknown.rb +5 -0
  55. data/spec/support/{datatable_order_nulls_last.rb → datatables/datatable_order_nulls_last.rb} +0 -0
  56. data/spec/support/{test_helpers.rb → helpers/params.rb} +14 -41
  57. data/spec/support/{test_models.rb → models/user.rb} +0 -0
  58. metadata +75 -74
  59. data/.travis.yml +0 -80
  60. data/gemfiles/rails_4.0.13.gemfile +0 -14
  61. data/gemfiles/rails_4.1.16.gemfile +0 -14
  62. data/gemfiles/rails_4.2.10.gemfile +0 -14
  63. data/lib/ajax-datatables-rails/config.rb +0 -31
  64. data/lib/ajax_datatables_rails.rb +0 -15
  65. data/lib/generators/datatable/config_generator.rb +0 -19
  66. data/lib/generators/datatable/templates/ajax_datatables_rails_config.rb +0 -12
  67. data/spec/ajax-datatables-rails/configuration_spec.rb +0 -43
  68. data/spec/ajax-datatables-rails/extended_spec.rb +0 -20
  69. data/spec/support/datatable_cond_string.rb +0 -23
@@ -1,80 +0,0 @@
1
- dist: trusty
2
- language: ruby
3
- sudo: required
4
- cache: bundler
5
- rvm:
6
- - 2.2.10
7
- - 2.3.7
8
- gemfile:
9
- - gemfiles/rails_4.0.13.gemfile
10
- - gemfiles/rails_4.1.16.gemfile
11
- - gemfiles/rails_4.2.10.gemfile
12
- - gemfiles/rails_5.0.7.gemfile
13
- - gemfiles/rails_5.1.6.gemfile
14
- - gemfiles/rails_5.2.0.gemfile
15
- matrix:
16
- include:
17
- - rvm: 2.4.4
18
- gemfile: gemfiles/rails_4.2.10.gemfile
19
- env: DB_ADAPTER=postgresql
20
- - rvm: 2.4.4
21
- gemfile: gemfiles/rails_5.0.7.gemfile
22
- env: DB_ADAPTER=postgresql
23
- - rvm: 2.4.4
24
- gemfile: gemfiles/rails_5.1.6.gemfile
25
- env: DB_ADAPTER=postgresql
26
- - rvm: 2.4.4
27
- gemfile: gemfiles/rails_5.2.0.gemfile
28
- env: DB_ADAPTER=postgresql
29
- - rvm: 2.4.4
30
- gemfile: gemfiles/rails_4.2.10.gemfile
31
- env: DB_ADAPTER=mysql2
32
- - rvm: 2.4.4
33
- gemfile: gemfiles/rails_5.0.7.gemfile
34
- env: DB_ADAPTER=mysql2
35
- - rvm: 2.4.4
36
- gemfile: gemfiles/rails_5.1.6.gemfile
37
- env: DB_ADAPTER=mysql2
38
- - rvm: 2.4.4
39
- gemfile: gemfiles/rails_5.2.0.gemfile
40
- env: DB_ADAPTER=mysql2
41
- - rvm: 2.4.4
42
- gemfile: gemfiles/rails_4.2.10.gemfile
43
- env: DB_ADAPTER=oracle_enhanced
44
- - rvm: 2.4.4
45
- gemfile: gemfiles/rails_5.0.7.gemfile
46
- env: DB_ADAPTER=oracle_enhanced
47
- - rvm: 2.4.4
48
- gemfile: gemfiles/rails_5.1.6.gemfile
49
- env: DB_ADAPTER=oracle_enhanced
50
- - rvm: 2.4.4
51
- gemfile: gemfiles/rails_5.2.0.gemfile
52
- env: DB_ADAPTER=oracle_enhanced
53
- after_success:
54
- - bundle exec codeclimate-test-reporter
55
- services:
56
- - postgresql
57
- - mysql
58
- addons:
59
- postgresql: '9.6'
60
- apt:
61
- packages:
62
- - mysql-server-5.6
63
- - mysql-client-core-5.6
64
- - mysql-client-5.6
65
- before_install:
66
- - gem update --system
67
- - gem install bundler
68
- - sh -c "if [ '$DB_ADAPTER' = 'mysql2' ]; then mysql -e 'create database ajax_datatables_rails;'; fi"
69
- - sh -c "if [ '$DB_ADAPTER' = 'postgresql' ]; then psql -c 'create database ajax_datatables_rails;' -U postgres; fi"
70
- - sh -c "if [ '$DB_ADAPTER' = 'oracle_enhanced' ]; then ./spec/install_oracle.sh; fi"
71
- env:
72
- global:
73
- - ORACLE_COOKIE=sqldev
74
- - ORACLE_FILE=oracle11g/xe/oracle-xe-11.2.0-1.0.x86_64.rpm.zip
75
- - ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
76
- - ORACLE_SID=XE
77
- matrix:
78
- - DB_ADAPTER=postgresql
79
- - DB_ADAPTER=mysql2
80
- - DB_ADAPTER=oracle_enhanced
@@ -1,14 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "4.0.13"
6
- gem "mysql2", "~> 0.3.18"
7
- gem "activerecord-oracle_enhanced-adapter", "~> 1.5.0"
8
- gem "ruby-oci8" if ENV["DB_ADAPTER"] == "oracle_enhanced"
9
-
10
- group :test do
11
- gem "codeclimate-test-reporter", "~> 1.0.0"
12
- end
13
-
14
- gemspec path: "../"
@@ -1,14 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "4.1.16"
6
- gem "mysql2", "~> 0.3.18"
7
- gem "activerecord-oracle_enhanced-adapter", "~> 1.5.0"
8
- gem "ruby-oci8" if ENV["DB_ADAPTER"] == "oracle_enhanced"
9
-
10
- group :test do
11
- gem "codeclimate-test-reporter", "~> 1.0.0"
12
- end
13
-
14
- gemspec path: "../"
@@ -1,14 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "4.2.10"
6
- gem "mysql2", "0.4.10"
7
- gem "activerecord-oracle_enhanced-adapter", "~> 1.6.0"
8
- gem "ruby-oci8" if ENV["DB_ADAPTER"] == "oracle_enhanced"
9
-
10
- group :test do
11
- gem "codeclimate-test-reporter", "~> 1.0.0"
12
- end
13
-
14
- gemspec path: "../"
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'active_support/configurable'
4
-
5
- module AjaxDatatablesRails
6
-
7
- # configure AjaxDatatablesRails global settings
8
- # AjaxDatatablesRails.configure do |config|
9
- # config.db_adapter = :postgresql
10
- # end
11
- def self.configure
12
- yield @config ||= AjaxDatatablesRails::Configuration.new
13
- end
14
-
15
- # AjaxDatatablesRails global settings
16
- def self.config
17
- @config ||= AjaxDatatablesRails::Configuration.new
18
- end
19
-
20
- def self.old_rails?
21
- Rails::VERSION::MAJOR == 4 && (Rails::VERSION::MINOR == 1 || Rails::VERSION::MINOR == 0)
22
- end
23
-
24
- class Configuration
25
- include ActiveSupport::Configurable
26
-
27
- config_accessor(:orm) { :active_record }
28
- config_accessor(:db_adapter) { :postgresql }
29
- config_accessor(:nulls_last) { false }
30
- end
31
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module AjaxDatatablesRails
4
- require 'ajax-datatables-rails/version'
5
- require 'ajax-datatables-rails/config'
6
- require 'ajax-datatables-rails/base'
7
- require 'ajax-datatables-rails/datatable/datatable'
8
- require 'ajax-datatables-rails/datatable/simple_search'
9
- require 'ajax-datatables-rails/datatable/simple_order'
10
- require 'ajax-datatables-rails/datatable/column/search'
11
- require 'ajax-datatables-rails/datatable/column/order'
12
- require 'ajax-datatables-rails/datatable/column/date_filter' unless AjaxDatatablesRails.old_rails?
13
- require 'ajax-datatables-rails/datatable/column'
14
- require 'ajax-datatables-rails/orm/active_record'
15
- end
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails/generators'
4
-
5
- module Datatable
6
- module Generators
7
- class ConfigGenerator < ::Rails::Generators::Base
8
- source_root File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
9
- desc <<DESC
10
- Description:
11
- Creates an initializer file for AjaxDatatablesRails configuration at config/initializers.
12
- DESC
13
-
14
- def copy_config_file
15
- template 'ajax_datatables_rails_config.rb', 'config/initializers/ajax_datatables_rails.rb'
16
- end
17
- end
18
- end
19
- end
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- AjaxDatatablesRails.configure do |config|
4
- # available options for db_adapter are: :pg, :mysql, :mysql2, :sqlite, :sqlite3
5
- # config.db_adapter = :pg
6
-
7
- # Or you can use your rails environment adapter if you want a generic dev and production
8
- # config.db_adapter = Rails.configuration.database_configuration[Rails.env]['adapter'].to_sym
9
-
10
- # available options for orm are: :active_record, :mongoid
11
- # config.orm = :active_record
12
- end
@@ -1,43 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe AjaxDatatablesRails do
4
- describe 'configurations' do
5
- context 'configurable from outside' do
6
- before(:each) do
7
- AjaxDatatablesRails.configure do |config|
8
- config.db_adapter = :mysql
9
- end
10
- end
11
-
12
- it 'should have custom value' do
13
- expect(AjaxDatatablesRails.config.db_adapter).to eq(:mysql)
14
- end
15
- end
16
- end
17
- end
18
-
19
- describe AjaxDatatablesRails::Configuration do
20
- let(:config) { AjaxDatatablesRails::Configuration.new }
21
-
22
- describe 'default config' do
23
- it 'default orm should :active_record' do
24
- expect(config.orm).to eq(:active_record)
25
- end
26
-
27
- it 'default db_adapter should :postgresql' do
28
- expect(config.db_adapter).to eq(:postgresql)
29
- end
30
- end
31
-
32
- describe 'custom config' do
33
- it 'should accept db_adapter custom value' do
34
- config.db_adapter = :mysql
35
- expect(config.db_adapter).to eq(:mysql)
36
- end
37
-
38
- it 'accepts a custom orm value' do
39
- config.orm = :mongoid
40
- expect(config.orm).to eq(:mongoid)
41
- end
42
- end
43
- end
@@ -1,20 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe AjaxDatatablesRails::Base do
4
- describe 'it can transform search value before asking the database' do
5
- let(:view) { double('view', params: sample_params) }
6
- let(:datatable) { DatatableWithFormater.new(view) }
7
-
8
- before(:each) do
9
- create(:user, username: 'johndoe', email: 'johndoe@example.com', last_name: 'DOE')
10
- create(:user, username: 'msmith', email: 'mary.smith@example.com', last_name: 'SMITH')
11
- datatable.params[:columns]['3'][:search][:value] = 'doe'
12
- end
13
-
14
- it 'should filter records' do
15
- expect(datatable.data.size).to eq 1
16
- item = datatable.data.first
17
- expect(item[:last_name]).to eq 'DOE'
18
- end
19
- end
20
- end
@@ -1,23 +0,0 @@
1
- class DatatableCondStartWith < ComplexDatatable
2
- def view_columns
3
- super.deep_merge(first_name: { cond: :start_with })
4
- end
5
- end
6
-
7
- class DatatableCondEndWith < ComplexDatatable
8
- def view_columns
9
- super.deep_merge(last_name: { cond: :end_with })
10
- end
11
- end
12
-
13
- class DatatableCondNullValue < ComplexDatatable
14
- def view_columns
15
- super.deep_merge(email: { cond: :null_value })
16
- end
17
- end
18
-
19
- class DatatableWithFormater < ComplexDatatable
20
- def view_columns
21
- super.deep_merge(last_name: { formater: -> (o) { o.upcase } })
22
- end
23
- end