effective_datatables 3.7.7 → 4.0.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 (68) hide show
  1. checksums.yaml +5 -5
  2. data/MIT-LICENSE +1 -1
  3. data/README.md +32 -32
  4. data/app/assets/images/dataTables/sort-down.svg +1 -0
  5. data/app/assets/images/dataTables/sort-up.svg +1 -0
  6. data/app/assets/images/dataTables/sort.svg +1 -0
  7. data/app/assets/javascripts/dataTables/buttons/{buttons.bootstrap.js → buttons.bootstrap4.js} +7 -15
  8. data/app/assets/javascripts/dataTables/dataTables.bootstrap4.js +184 -0
  9. data/app/assets/javascripts/dataTables/responsive/dataTables.responsive.js +30 -11
  10. data/app/assets/javascripts/dataTables/responsive/{responsive.bootstrap.js → responsive.bootstrap4.js} +6 -6
  11. data/app/assets/javascripts/effective_datatables.js +4 -4
  12. data/app/assets/javascripts/effective_datatables/bulk_actions.js.coffee +43 -43
  13. data/app/assets/javascripts/effective_datatables/events.js.coffee +7 -4
  14. data/app/assets/javascripts/effective_datatables/filters.js.coffee +0 -1
  15. data/app/assets/javascripts/effective_datatables/initialize.js.coffee +45 -49
  16. data/app/assets/javascripts/effective_datatables/overrides.js +12 -0
  17. data/app/assets/javascripts/effective_datatables/reset.js.coffee +1 -1
  18. data/app/assets/stylesheets/dataTables/buttons/{buttons.bootstrap.scss → buttons.bootstrap4.css} +68 -1
  19. data/app/assets/stylesheets/dataTables/{dataTables.bootstrap.scss → dataTables.bootstrap4.css} +44 -29
  20. data/app/assets/stylesheets/dataTables/responsive/{responsive.bootstrap.scss → responsive.bootstrap4.css} +3 -3
  21. data/app/assets/stylesheets/effective_datatables.scss +3 -4
  22. data/app/assets/stylesheets/effective_datatables/_overrides.scss +72 -152
  23. data/app/controllers/effective/datatables_controller.rb +6 -39
  24. data/app/helpers/effective_datatables_helper.rb +55 -50
  25. data/app/helpers/effective_datatables_private_helper.rb +47 -179
  26. data/app/models/effective/datatable.rb +16 -44
  27. data/app/models/effective/datatable_column.rb +0 -1
  28. data/app/models/effective/datatable_column_tool.rb +1 -1
  29. data/app/models/effective/datatable_dsl_tool.rb +3 -11
  30. data/app/models/effective/datatable_value_tool.rb +23 -23
  31. data/app/models/effective/effective_datatable/attributes.rb +13 -5
  32. data/app/models/effective/effective_datatable/collection.rb +3 -18
  33. data/app/models/effective/effective_datatable/compute.rb +6 -17
  34. data/app/models/effective/effective_datatable/cookie.rb +20 -19
  35. data/app/models/effective/effective_datatable/dsl.rb +3 -8
  36. data/app/models/effective/effective_datatable/dsl/bulk_actions.rb +25 -14
  37. data/app/models/effective/effective_datatable/dsl/datatable.rb +28 -70
  38. data/app/models/effective/effective_datatable/dsl/filters.rb +5 -5
  39. data/app/models/effective/effective_datatable/format.rb +50 -95
  40. data/app/models/effective/effective_datatable/params.rb +3 -8
  41. data/app/models/effective/effective_datatable/resource.rb +76 -137
  42. data/app/models/effective/effective_datatable/state.rb +15 -30
  43. data/app/views/effective/datatables/_actions_column.html.haml +8 -1
  44. data/app/views/effective/datatables/_bulk_actions_column.html.haml +1 -1
  45. data/app/views/effective/datatables/_filters.html.haml +11 -12
  46. data/app/views/effective/datatables/_resource_column.html.haml +8 -11
  47. data/config/effective_datatables.rb +14 -12
  48. data/config/routes.rb +0 -1
  49. data/lib/effective_datatables.rb +4 -57
  50. data/lib/effective_datatables/engine.rb +1 -1
  51. data/lib/effective_datatables/version.rb +1 -1
  52. metadata +20 -30
  53. data/app/assets/images/dataTables/sort_asc.png +0 -0
  54. data/app/assets/images/dataTables/sort_both.png +0 -0
  55. data/app/assets/images/dataTables/sort_desc.png +0 -0
  56. data/app/assets/javascripts/dataTables/dataTables.bootstrap.js +0 -182
  57. data/app/assets/javascripts/dataTables/locales/en.lang +0 -33
  58. data/app/assets/javascripts/dataTables/locales/es.lang +0 -36
  59. data/app/assets/javascripts/dataTables/locales/nl.lang +0 -30
  60. data/app/assets/javascripts/effective_datatables/flash.js.coffee +0 -31
  61. data/app/assets/javascripts/effective_datatables/inline_crud.js.coffee +0 -217
  62. data/app/assets/javascripts/effective_datatables/overrides.js.coffee +0 -7
  63. data/app/assets/javascripts/effective_datatables/reorder.js.coffee +0 -43
  64. data/app/assets/stylesheets/effective_datatables/_filters.scss +0 -7
  65. data/app/views/effective/datatables/_reorder_column.html.haml +0 -5
  66. data/config/locales/en.yml +0 -12
  67. data/config/locales/es.yml +0 -12
  68. data/config/locales/nl.yml +0 -12
@@ -55,6 +55,7 @@ module Effective
55
55
  # This is called first. Our initial state is set.
56
56
  def initial_state
57
57
  {
58
+ attributes: {},
58
59
  filter: {},
59
60
  length: nil,
60
61
  order_name: nil,
@@ -88,27 +89,23 @@ module Effective
88
89
 
89
90
  def load_state!
90
91
  if datatables_ajax_request?
91
- load_cookie! # but not state.
92
92
  load_filter_params!
93
93
  load_ajax_state!
94
- elsif datatables_inline_request?
95
- load_filter_params!
94
+ elsif cookie.present? && cookie[:params] == params.length
95
+ load_cookie_state!
96
96
  else
97
- load_cookie!
98
- load_cookie_state! if cookie.present? && cookie[:params] == cookie_state_params
99
- load_filter_params!
97
+ # Nothing to do for default state
100
98
  end
101
99
 
100
+ load_filter_params! unless datatables_ajax_request?
102
101
  fill_empty_filters!
103
102
  end
104
103
 
105
104
  def load_ajax_state!
106
105
  state[:length] = params[:length].to_i
107
106
 
108
- if params[:order]
109
- state[:order_dir] = (params[:order]['0'][:dir] == 'desc' ? :desc : :asc)
110
- state[:order_index] = params[:order]['0'][:column].to_i
111
- end
107
+ state[:order_dir] = (params[:order]['0'][:dir] == 'desc' ? :desc : :asc)
108
+ state[:order_index] = params[:order]['0'][:column].to_i
112
109
 
113
110
  state[:scope] = _scopes.keys.find { |name| params[:scope] == name.to_s }
114
111
  state[:start] = params[:start].to_i
@@ -133,7 +130,7 @@ module Effective
133
130
  state[:filter][name] = parse_filter_value(_filters[name], value)
134
131
  end
135
132
 
136
- state[:params] = cookie[:params] if cookie.present?
133
+ state[:params] = cookie[:params]
137
134
  end
138
135
 
139
136
  def load_cookie_state!
@@ -143,21 +140,14 @@ module Effective
143
140
  def load_columns!
144
141
  state[:length] ||= EffectiveDatatables.default_length
145
142
 
146
- (columns || {}).each_with_index { |(_, column), index| column[:index] = index }
147
-
148
143
  if columns.present?
149
- state[:order_name] = (
150
- if columns.key?(:_reorder)
151
- :_reorder
152
- elsif order_index.present?
153
- columns.keys[order_index]
154
- elsif state[:order_name].present?
155
- state[:order_name]
156
- else
157
- columns.find { |name, opts| opts[:sort] }.first
158
- end
159
- )
144
+ columns.each_with_index { |(_, column), index| column[:index] = index }
160
145
 
146
+ if order_index.present?
147
+ state[:order_name] = columns.keys[order_index]
148
+ end
149
+
150
+ state[:order_name] ||= columns.find { |name, opts| opts[:sort] }.first
161
151
  raise "order column :#{order_name} must exist as a col or val" unless columns[order_name]
162
152
 
163
153
  state[:order_index] = columns[order_name][:index]
@@ -186,7 +176,7 @@ module Effective
186
176
 
187
177
  unless datatables_ajax_request?
188
178
  search_params.each { |name, value| state[:search][name] = value }
189
- state[:params] = cookie_state_params
179
+ state[:params] = params.length
190
180
  end
191
181
 
192
182
  state[:visible].delete_if { |name, _| columns.key?(name) == false }
@@ -197,14 +187,9 @@ module Effective
197
187
  # When we parse an incoming filter term for this filter.
198
188
  def parse_filter_value(filter, value)
199
189
  return filter[:parse].call(value) if filter[:parse]
200
- return nil if value.blank? && !filter[:required]
201
190
  Effective::Attribute.new(filter[:value]).parse(value, name: filter[:name])
202
191
  end
203
192
 
204
- def cookie_state_params
205
- params.hash.abs.to_s.last(12)
206
- end
207
-
208
193
  end
209
194
  end
210
195
  end
@@ -1 +1,8 @@
1
- = render_resource_actions(resource, **actions_col_locals)
1
+ - if show_action && EffectiveDatatables.authorized?(self, :show, resource)
2
+ = show_icon_to effective_resource.action_path(:show, resource)
3
+
4
+ - if edit_action && EffectiveDatatables.authorized?(self, :edit, resource)
5
+ = edit_icon_to effective_resource.action_path(:edit, resource)
6
+
7
+ - if destroy_action && EffectiveDatatables.authorized?(self, :destroy, resource)
8
+ = destroy_icon_to effective_resource.action_path(:destroy, resource), data: { method: :delete, confirm: "Delete #{resource}?" }
@@ -1,2 +1,2 @@
1
1
  - id = (resource.try(:to_param) || resource.try(:id) || resource.object_id)
2
- = check_box_tag 'bulk_actions_resources[]', id, false, autocomplete: 'off', id: "datatable_bulk_actions_resource_#{id}", data: { role: 'bulk-action' }, onClick: 'event.stopPropagation();'
2
+ = check_box_tag 'bulk_actions_resources[]', id, false, autocomplete: 'off', id: "datatable_bulk_actions_resource_#{id}", data: { role: 'bulk-actions-resource' }, onClick: 'event.stopPropagation();'
@@ -1,17 +1,16 @@
1
1
  .effective-datatables-filters{'aria-controls': datatable.to_param}
2
- = simple_form_for :filters, url: (datatable._form[:url] || '#'), method: datatable._form[:verb], html: { class: 'form-inline' } do |form|
3
- - if datatable._scopes.present?
4
- .effective-datatables-filters-scopes
5
- = datatable_scope_tag(form, datatable)
2
+ = effective_form_with(scope: :filters, url: (datatable._form[:url] || '#'), method: datatable._form[:verb]) do |form|
3
+ .form-row.align-items-center
4
+ - if datatable._scopes.present?
5
+ = form.radios :scope, datatable._scopes.map { |name, opts| [opts[:label], name] },
6
+ label: false, required: false, checked: datatable.state[:scope], buttons: true,
7
+ wrapper: { class: 'form-group col-auto' }
6
8
 
7
- - if datatable._filters.present?
8
- .effective-datatables-filters-inputs
9
- - datatable._filters.each do |name, opts|
10
- = datatable_filter_tag(form, datatable, name, opts)
9
+ - datatable._filters.each do |name, opts|
10
+ = datatable_filter_tag(form, datatable, name, opts)
11
11
 
12
- - if datatable._scopes.present? || datatable._filters.present?
13
- .effective-datatables-filters-btn
12
+ .form-group.col-auto
14
13
  - if datatable._filters_form_required?
15
- = form.button :submit, t('effective_datatables.apply'), 'data-disable-with': t('effective_datatables.applying')
14
+ = form.save 'Apply', 'data-disable-with': 'Applying...'
16
15
  - else
17
- = link_to t('effective_datatables.apply'), '#', class: 'btn btn-primary btn-sm btn-effective-datatables-filters', 'data-apply-effective-datatables-filters': true
16
+ = link_to 'Apply', '#', class: 'btn btn-primary btn-effective-datatables-filters', 'data-apply-effective-datatables-filters': true
@@ -1,11 +1,8 @@
1
- - Array(local_assigns[:resource_name] ? resource.public_send(resource_name) : resource).each do |resource|
2
- - resource_to_s = ((local_assigns[:resource_to_s] && resource) ? resource.public_send(resource_to_s) : resource.to_s)
3
-
4
- - if resource_to_s.present?
5
- .col-resource_item
6
- - if edit_action && EffectiveDatatables.authorized?(controller, :edit, resource) && (path = effective_resource.action_path(:edit, resource)).present?
7
- = link_to resource_to_s, path, title: resource_to_s
8
- - elsif show_action && EffectiveDatatables.authorized?(controller, :show, resource) && (path = effective_resource.action_path(:show, resource)).present?
9
- = link_to resource_to_s, path, title: resource_to_s
10
- - else
11
- = resource_to_s.to_s.html_safe
1
+ - Array(datatable.array_collection? ? resource : resource.send(name)).each do |resource|
2
+ .col-resource_item
3
+ - if show_action
4
+ = link_to resource.to_s, effective_resource.action_path(:show, resource), title: resource.to_s
5
+ - elsif edit_action
6
+ = link_to resource.to_s, effective_resource.action_path(:edit, resource), title: resource.to_s
7
+ - else
8
+ = resource.to_s.html_safe
@@ -28,19 +28,21 @@ EffectiveDatatables.setup do |config|
28
28
  # Default class used on the <table> tag
29
29
  config.html_class = 'table table-hover'
30
30
 
31
+ # When using the actions_column DSL method, apply the following behavior
32
+ # Valid values for each action are:
33
+ # true - display this action if authorized?(:show, Post)
34
+ # false - do not display this action
35
+ # :authorize - display this action if authorized?(:show, Post<3>) (every instance is checked)
36
+ #
37
+ # You can override these defaults on a per-table basis
38
+ # by calling `actions_column(show: false, edit: true, destroy: :authorize)`
39
+ config.actions_column = {
40
+ show: true,
41
+ edit: true,
42
+ destroy: true
43
+ }
44
+
31
45
  # Log search/sort information to the console
32
46
  config.debug = true
33
47
 
34
- # Use a cookie to save and restore state from previous page visits.
35
- config.save_state = true
36
-
37
- # Configure the _effective_dt cookie.
38
- config.cookie_max_size = 2000 # String size. Final byte size is about 1.5 times bigger, after rails signs it
39
- config.cookie_domain = :all # Should usually be :all
40
- config.cookie_tld_length = nil # Leave nil to autodetect, or set to probably 2
41
-
42
- # Date formatting
43
- config.format_datetime = '%F %H:%M'
44
- config.format_date = '%F'
45
- config.format_time = '%H:%M'
46
48
  end
data/config/routes.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  EffectiveDatatables::Engine.routes.draw do
2
2
  scope :module => 'effective' do
3
3
  match 'datatables/:id(.:format)', to: 'datatables#show', via: [:get, :post], as: :datatable
4
- match 'datatables/:id/reorder(.:format)', to: 'datatables#reorder', via: [:post], as: :reorder_datatable
5
4
  end
6
5
  end
7
6
 
@@ -1,30 +1,17 @@
1
- require 'simple_form'
1
+ require 'effective_bootstrap'
2
2
  require 'effective_resources'
3
3
  require 'effective_datatables/engine'
4
4
  require 'effective_datatables/version'
5
5
 
6
6
  module EffectiveDatatables
7
- AVAILABLE_LOCALES = %w(en es nl)
8
-
9
7
  mattr_accessor :authorization_method
10
8
 
11
9
  mattr_accessor :default_length
12
10
  mattr_accessor :html_class
13
- mattr_accessor :save_state
14
-
15
- mattr_accessor :cookie_max_size
16
- mattr_accessor :cookie_domain
17
- mattr_accessor :cookie_tld_length
18
-
19
- mattr_accessor :format_datetime
20
- mattr_accessor :format_date
21
- mattr_accessor :format_time
22
11
 
12
+ mattr_accessor :actions_column # A Hash
23
13
  mattr_accessor :debug
24
14
 
25
- alias_method :max_cookie_size, :cookie_max_size
26
- alias_method :max_cookie_size=, :cookie_max_size=
27
-
28
15
  def self.setup
29
16
  yield self
30
17
  end
@@ -33,7 +20,7 @@ module EffectiveDatatables
33
20
  @_exceptions ||= [Effective::AccessDenied, (CanCan::AccessDenied if defined?(CanCan)), (Pundit::NotAuthorizedError if defined?(Pundit))].compact
34
21
 
35
22
  return !!authorization_method unless authorization_method.respond_to?(:call)
36
- controller = controller.controller if controller.respond_to?(:controller)
23
+ controller = controller.controller if controller.respond_to?(:controller) # Do the right thing with a view
37
24
 
38
25
  begin
39
26
  !!(controller || self).instance_exec((controller || self), action, resource, &authorization_method)
@@ -43,47 +30,7 @@ module EffectiveDatatables
43
30
  end
44
31
 
45
32
  def self.authorize!(controller, action, resource)
46
- raise Effective::AccessDenied.new('Access Denied', action, resource) unless authorized?(controller, action, resource)
47
- end
48
-
49
- def self.find(id, attributes = nil)
50
- id = id.to_s.gsub(/-\d+\z/, '').gsub('-', '/')
51
- klass = (id.classify.safe_constantize || id.classify.pluralize.safe_constantize)
52
- attributes = decrypt(attributes) || {}
53
-
54
- klass.try(:new, **attributes) || raise('unable to find datatable')
55
- end
56
-
57
- # Locale is coming from view. I think it can be dynamic.
58
- # We currently support: en, es, nl
59
- def self.language(locale)
60
- @_languages ||= {}
61
-
62
- locale = :en unless AVAILABLE_LOCALES.include?(locale.to_s)
63
-
64
- @_languages[locale] ||= begin
65
- path = Gem::Specification.find_by_name('effective_datatables').gem_dir + "/app/assets/javascripts/dataTables/locales/#{locale}.lang"
66
- JSON.parse(File.read(path)).to_json
67
- end
68
- end
69
-
70
- def self.encrypt(attributes)
71
- payload = message_encrypter.encrypt_and_sign(attributes)
72
- end
73
-
74
- def self.decrypt(payload)
75
- return unless payload.present?
76
- return payload if payload.kind_of?(Hash)
77
-
78
- attributes = message_encrypter.decrypt_and_verify(payload)
79
-
80
- raise 'invalid decoded inline payload' unless attributes.kind_of?(Hash)
81
-
82
- attributes
83
- end
84
-
85
- def self.message_encrypter
86
- ActiveSupport::MessageEncryptor.new(Rails.application.secret_key_base.to_s.first(32))
33
+ raise Effective::AccessDenied unless authorized?(controller, action, resource)
87
34
  end
88
35
 
89
36
  end
@@ -6,7 +6,7 @@ module EffectiveDatatables
6
6
 
7
7
  # Include Helpers to base application
8
8
  initializer 'effective_datatables.action_controller' do |app|
9
- ActiveSupport.on_load :action_controller_base do
9
+ ActiveSupport.on_load :action_controller do
10
10
  helper EffectiveDatatablesHelper
11
11
  helper EffectiveDatatablesPrivateHelper
12
12
 
@@ -1,3 +1,3 @@
1
1
  module EffectiveDatatables
2
- VERSION = '3.7.7'.freeze
2
+ VERSION = '4.0.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_datatables
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.7.7
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-08 00:00:00.000000000 Z
11
+ date: 2018-03-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: effective_resources
42
+ name: effective_bootstrap
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -53,7 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: sass
56
+ name: effective_resources
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
@@ -67,7 +67,7 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: simple_form
70
+ name: sass-rails
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
@@ -91,40 +91,33 @@ extra_rdoc_files: []
91
91
  files:
92
92
  - MIT-LICENSE
93
93
  - README.md
94
- - app/assets/images/dataTables/sort_asc.png
95
- - app/assets/images/dataTables/sort_both.png
96
- - app/assets/images/dataTables/sort_desc.png
97
- - app/assets/javascripts/dataTables/buttons/buttons.bootstrap.js
94
+ - app/assets/images/dataTables/sort-down.svg
95
+ - app/assets/images/dataTables/sort-up.svg
96
+ - app/assets/images/dataTables/sort.svg
97
+ - app/assets/javascripts/dataTables/buttons/buttons.bootstrap4.js
98
98
  - app/assets/javascripts/dataTables/buttons/buttons.colVis.js
99
99
  - app/assets/javascripts/dataTables/buttons/buttons.html5.js
100
100
  - app/assets/javascripts/dataTables/buttons/buttons.print.js
101
101
  - app/assets/javascripts/dataTables/buttons/dataTables.buttons.js
102
- - app/assets/javascripts/dataTables/dataTables.bootstrap.js
102
+ - app/assets/javascripts/dataTables/dataTables.bootstrap4.js
103
103
  - app/assets/javascripts/dataTables/jquery.dataTables.js
104
- - app/assets/javascripts/dataTables/locales/en.lang
105
- - app/assets/javascripts/dataTables/locales/es.lang
106
- - app/assets/javascripts/dataTables/locales/nl.lang
107
104
  - app/assets/javascripts/dataTables/responsive/dataTables.responsive.js
108
- - app/assets/javascripts/dataTables/responsive/responsive.bootstrap.js
105
+ - app/assets/javascripts/dataTables/responsive/responsive.bootstrap4.js
109
106
  - app/assets/javascripts/effective_datatables.js
110
107
  - app/assets/javascripts/effective_datatables/bulk_actions.js.coffee
111
108
  - app/assets/javascripts/effective_datatables/charts.js.coffee
112
109
  - app/assets/javascripts/effective_datatables/events.js.coffee
113
110
  - app/assets/javascripts/effective_datatables/filters.js.coffee
114
- - app/assets/javascripts/effective_datatables/flash.js.coffee
115
111
  - app/assets/javascripts/effective_datatables/initialize.js.coffee
116
- - app/assets/javascripts/effective_datatables/inline_crud.js.coffee
117
- - app/assets/javascripts/effective_datatables/overrides.js.coffee
118
- - app/assets/javascripts/effective_datatables/reorder.js.coffee
112
+ - app/assets/javascripts/effective_datatables/overrides.js
119
113
  - app/assets/javascripts/effective_datatables/reset.js.coffee
120
114
  - app/assets/javascripts/effective_datatables/responsive.js.coffee
121
115
  - app/assets/javascripts/vendor/jquery.delayedChange.js
122
116
  - app/assets/javascripts/vendor/jquery.fileDownload.js
123
- - app/assets/stylesheets/dataTables/buttons/buttons.bootstrap.scss
124
- - app/assets/stylesheets/dataTables/dataTables.bootstrap.scss
125
- - app/assets/stylesheets/dataTables/responsive/responsive.bootstrap.scss
117
+ - app/assets/stylesheets/dataTables/buttons/buttons.bootstrap4.css
118
+ - app/assets/stylesheets/dataTables/dataTables.bootstrap4.css
119
+ - app/assets/stylesheets/dataTables/responsive/responsive.bootstrap4.css
126
120
  - app/assets/stylesheets/effective_datatables.scss
127
- - app/assets/stylesheets/effective_datatables/_filters.scss
128
121
  - app/assets/stylesheets/effective_datatables/_overrides.scss
129
122
  - app/controllers/effective/datatables_controller.rb
130
123
  - app/datatables/effective_style_guide_datatable.rb
@@ -157,15 +150,11 @@ files:
157
150
  - app/views/effective/datatables/_chart.html.haml
158
151
  - app/views/effective/datatables/_datatable.html.haml
159
152
  - app/views/effective/datatables/_filters.html.haml
160
- - app/views/effective/datatables/_reorder_column.html.haml
161
153
  - app/views/effective/datatables/_resource_column.html.haml
162
154
  - app/views/effective/datatables/_spacer_template.html
163
155
  - app/views/effective/datatables/index.html.haml
164
156
  - app/views/effective/style_guide/_effective_datatables.html.haml
165
157
  - config/effective_datatables.rb
166
- - config/locales/en.yml
167
- - config/locales/es.yml
168
- - config/locales/nl.yml
169
158
  - config/routes.rb
170
159
  - lib/effective_datatables.rb
171
160
  - lib/effective_datatables/engine.rb
@@ -176,7 +165,7 @@ homepage: https://github.com/code-and-effect/effective_datatables
176
165
  licenses:
177
166
  - MIT
178
167
  metadata: {}
179
- post_install_message:
168
+ post_install_message:
180
169
  rdoc_options: []
181
170
  require_paths:
182
171
  - lib
@@ -191,8 +180,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
191
180
  - !ruby/object:Gem::Version
192
181
  version: '0'
193
182
  requirements: []
194
- rubygems_version: 3.1.4
195
- signing_key:
183
+ rubyforge_project:
184
+ rubygems_version: 2.4.5.1
185
+ signing_key:
196
186
  specification_version: 4
197
187
  summary: Uniquely powerful server-side searching, sorting and filtering of any ActiveRecord
198
188
  or Array collection as well as post-rendered content displayed as a frontend jQuery