effective_datatables 4.8.8 → 4.8.13

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a9523ed0159096daf782db8331cd502b8b705667a9b6bce9b22e5e46a167cfed
4
- data.tar.gz: 8e118dcc38bbfd2f2bbb47e2e24cbb76a12159e97060636c0625f714b7d8badf
3
+ metadata.gz: 0b0edb95c464c25b0ed732bfac841becc3d09685befc3c352714b1ee0a2c7497
4
+ data.tar.gz: 6a469ab0e68213f62ac74a04ed14235ed924b7ac51fcea1d130d113763bba9e7
5
5
  SHA512:
6
- metadata.gz: 75f57a4bd505a0c21f121c506dc3dad7f757af1a94e3e3677dfd5a941e6e1650411eacfd774d45ebe2e6c94e8cc67f47eabe89f4644824aa154cf05126e7621c
7
- data.tar.gz: abdc9f48a7694c17313fc4a10f50987c8ecbd56e8796d1651c633c82b788ddcf94c06205797a7204fcbd49a00fb4f68bc99b6ed2884feb99d74b8a3a2d228e6e
6
+ metadata.gz: fba9d13292e49be2ce9a0a5b6ddbb08cbed6753ce8196aebf6ddab0f3daaf0d8dae78d23fb17ddbb25834f3245241ab5fcde1a6f06bd6d667be1da6865d482ba
7
+ data.tar.gz: 39b61f089ffbc7ec9b505611717bf421a3a68f5131253040e17eae00d429dd5aacd36cf0c831d8919ab0992e6ff5aef98363094c1161fa2e0fbb2ccf1d50c733
@@ -52,7 +52,7 @@ initializeDataTables = (target) ->
52
52
  displayStart: datatable.data('display-start')
53
53
  iDisplayLength: datatable.data('display-length')
54
54
  language: datatable.data('language')
55
- lengthMenu: [[5, 10, 25, 50, 100, 250, 500, 9999999], ['5', '10', '25', '50', '100', '250', '500', 'All']]
55
+ lengthMenu: [[5, 10, 25, 50, 100, 250, 500, 9999999], ['5', '10', '25', '50', '100', '250', '500', datatable.data('all-label')]]
56
56
  order: datatable.data('display-order')
57
57
  processing: true
58
58
  responsive: true
@@ -80,7 +80,7 @@ initializeDataTables = (target) ->
80
80
  filter_name = name.replace('filters[', '').substring(0, name.length-9)
81
81
 
82
82
  params['filter'][filter_name] = $form.find("input[name='#{name}']:checked").val()
83
-
83
+
84
84
  else if $input.attr('id')
85
85
  filter_name = $input.attr('id').replace('filters_', '')
86
86
  params['filter'][filter_name] = $input.val()
@@ -8,7 +8,14 @@ reorder = (event, diff, edit) ->
8
8
  return unless oldNode? && newNode?
9
9
 
10
10
  url = @context[0].ajax.url.replace('.json', '/reorder.json')
11
- data = {'reorder[id]': oldNode.data('reorder-resource'), 'reorder[old]': oldNode.val(), 'reorder[new]': newNode.val(), attributes: $table.data('attributes') }
11
+
12
+ data = {
13
+ 'authenticity_token': $('head').find("meta[name='csrf-token']").attr('content'),
14
+ 'reorder[id]': oldNode.data('reorder-resource'),
15
+ 'reorder[old]': oldNode.val(),
16
+ 'reorder[new]': newNode.val(),
17
+ 'attributes': $table.data('attributes')
18
+ }
12
19
 
13
20
  @context[0].rowreorder.c.enable = false
14
21
 
@@ -40,4 +47,3 @@ $(document).on 'click', '.dataTables_wrapper a.buttons-reorder', (event) ->
40
47
  $table.addClass('reordering')
41
48
 
42
49
  column.visible(!column.visible())
43
-
@@ -40,6 +40,7 @@ module EffectiveDatatablesHelper
40
40
  id: datatable.to_param,
41
41
  class: html_class,
42
42
  data: {
43
+ 'all-label' => I18n.t('effective_datatables.all'),
43
44
  'attributes' => EffectiveDatatables.encrypt(datatable.attributes),
44
45
  'authenticity-token' => form_authenticity_token,
45
46
  'bulk-actions' => datatable_bulk_actions(datatable),
@@ -44,7 +44,7 @@ module EffectiveDatatablesPrivateHelper
44
44
  action = { action: :new, class: ['btn', column[:btn_class].presence].compact.join(' '), 'data-remote': true }
45
45
 
46
46
  if column[:actions][:new].kind_of?(Hash) # This might be active_record_array_collection?
47
- action = action.merge(column[:actions][:new])
47
+ action.merge!(column[:actions][:new])
48
48
 
49
49
  effective_resource = (datatable.effective_resource || datatable.fallback_effective_resource)
50
50
  klass = (column[:actions][:new][:klass] || effective_resource&.klass || datatable.collection_class)
@@ -84,7 +84,7 @@ module EffectiveDatatablesPrivateHelper
84
84
  collection = opts[:search].delete(:collection)
85
85
  value = datatable.state[:search][name]
86
86
 
87
- options = opts[:search].except(:fuzzy).merge!(
87
+ options = opts[:search].merge!(
88
88
  name: nil,
89
89
  feedback: false,
90
90
  label: false,
@@ -92,24 +92,26 @@ module EffectiveDatatablesPrivateHelper
92
92
  data: { 'column-name': name, 'column-index': opts[:index] }
93
93
  )
94
94
 
95
+ options.delete(:fuzzy)
96
+
95
97
  case options.delete(:as)
96
98
  when :string, :text, :number
97
99
  form.text_field name, options
98
100
  when :date, :datetime
99
- form.date_field name, options.reverse_merge(
101
+ form.date_field name, options.reverse_merge!(
100
102
  date_linked: false, prepend: false, input_js: { useStrict: true, keepInvalid: true }
101
103
  )
102
104
  when :time
103
- form.time_field name, options.reverse_merge(
105
+ form.time_field name, options.reverse_merge!(
104
106
  date_linked: false, prepend: false, input_js: { useStrict: false, keepInvalid: true }
105
107
  )
106
108
  when :select, :boolean
107
- options[:input_js] = (options[:input_js] || {}).reverse_merge(placeholder: '')
109
+ options[:input_js] = (options[:input_js] || {}).reverse_merge!(placeholder: '')
108
110
 
109
111
  form.select name, collection, options
110
112
  when :bulk_actions
111
113
  options[:data]['role'] = 'bulk-actions'
112
- form.check_box name, options.merge(label: ' ')
114
+ form.check_box name, options.merge!(label: ' ')
113
115
  end
114
116
  end
115
117
 
@@ -139,7 +141,7 @@ module EffectiveDatatablesPrivateHelper
139
141
  placeholder: (opts[:label] || name.to_s.titleize),
140
142
  value: value,
141
143
  wrapper: { class: 'form-group col-auto'}
142
- }.merge(opts.except(:as, :collection, :parse, :value))
144
+ }.merge!(opts.except(:as, :collection, :parse, :value))
143
145
 
144
146
  options[:name] = '' unless datatable._filters_form_required?
145
147
 
@@ -171,7 +173,7 @@ module EffectiveDatatablesPrivateHelper
171
173
  label: false,
172
174
  required: false,
173
175
  wrapper: { class: 'form-group col-auto'}
174
- }.merge(opts.except(:checked, :value))
176
+ }.merge!(opts.except(:checked, :value))
175
177
 
176
178
  form.radios :scope, collection, options
177
179
  end
@@ -1,8 +1,8 @@
1
1
  module Effective
2
2
  class Datatable
3
3
  attr_reader :attributes # Anything that we initialize our table with. That's it. Can't be changed by state.
4
- attr_reader :effective_resource
5
4
  attr_reader :state
5
+ attr_accessor :effective_resource
6
6
 
7
7
  # Hashes of DSL options
8
8
  attr_reader :_aggregates
@@ -64,6 +64,7 @@ module Effective
64
64
  if state[:visible][name] == false && (name != order_name) # Sort by invisible array column
65
65
  BLANK
66
66
  elsif opts[:compute]
67
+
67
68
  if array_collection?
68
69
  dsl_tool.instance_exec(obj, obj[opts[:index]], &opts[:compute])
69
70
  else
@@ -88,9 +88,9 @@ module Effective
88
88
  when :currency
89
89
  view.number_to_currency(value)
90
90
  when :date
91
- (value.strftime('%F') rescue BLANK)
91
+ value.respond_to?(:strftime) ? value.strftime(EffectiveDatatables.format_date) : BLANK
92
92
  when :datetime
93
- (value.strftime('%F %H:%M') rescue BLANK)
93
+ value.respond_to?(:strftime) ? value.strftime(EffectiveDatatables.format_datetime) : BLANK
94
94
  when :decimal
95
95
  value
96
96
  when :duration
@@ -116,7 +116,7 @@ module Effective
116
116
  when Numeric ; view.number_to_currency(value)
117
117
  end
118
118
  when :time
119
- (value.strftime('%H:%M') rescue BLANK)
119
+ value.respond_to?(:strftime) ? value.strftime(EffectiveDatatables.format_time) : BLANK
120
120
  else
121
121
  value.to_s
122
122
  end
@@ -31,7 +31,7 @@ module Effective
31
31
  end
32
32
 
33
33
  def load_effective_resource!
34
- @effective_resource = if active_record_collection?
34
+ @effective_resource ||= if active_record_collection?
35
35
  Effective::Resource.new(collection_class, namespace: controller_namespace)
36
36
  end
37
37
  end
@@ -98,9 +98,11 @@ module Effective
98
98
  opts[:sql_as_column] = true if (effective_resource.table && effective_resource.column(name).blank?)
99
99
  end
100
100
 
101
- if opts[:sql_column].present? && AGGREGATE_SQL_FUNCTIONS.any? { |str| opts[:sql_column].to_s.start_with?(str) }
102
- opts[:sql_as_column] = true
101
+ if opts[:sql_column].present?
102
+ sql_column = opts[:sql_column].to_s
103
+ opts[:sql_as_column] = true if AGGREGATE_SQL_FUNCTIONS.any? { |str| sql_column.start_with?(str) }
103
104
  end
105
+
104
106
  end
105
107
  end
106
108
 
@@ -200,7 +202,7 @@ module Effective
200
202
 
201
203
  def load_resource_belongs_tos!
202
204
  return unless active_record_collection?
203
- return unless @_collection_apply_belongs_to
205
+ return unless @_collection_apply_belongs_to
204
206
 
205
207
  changed = attributes.select do |attribute, value|
206
208
  attribute = attribute.to_s
@@ -39,4 +39,8 @@ EffectiveDatatables.setup do |config|
39
39
  config.cookie_domain = :all # Should usually be :all
40
40
  config.cookie_tld_length = nil # Leave nil to autodetect, or set to probably 2
41
41
 
42
+ # Date formatting
43
+ config.format_datetime = '%F %H:%M'
44
+ config.format_date = '%F'
45
+ config.format_time = '%H:%M'
42
46
  end
@@ -9,4 +9,5 @@ en:
9
9
  bulk_actions: Bulk Actions
10
10
  applying: Applying...
11
11
  boolean_true: 'Yes'
12
- boolean_false: 'No'
12
+ boolean_false: 'No'
13
+ all: All
@@ -9,4 +9,5 @@ es:
9
9
  bulk_actions: Acciones en masa
10
10
  applying: Filtrando...
11
11
  boolean_true: 'Sí'
12
- boolean_false: 'No'
12
+ boolean_false: 'No'
13
+ all: Todo
@@ -9,4 +9,5 @@ nl:
9
9
  bulk_actions: Bulkacties
10
10
  applying: Toepassen...
11
11
  boolean_true: 'Ja'
12
- boolean_false: 'Nee'
12
+ boolean_false: 'Nee'
13
+ all: Te doen
@@ -16,6 +16,10 @@ module EffectiveDatatables
16
16
  mattr_accessor :cookie_domain
17
17
  mattr_accessor :cookie_tld_length
18
18
 
19
+ mattr_accessor :format_datetime
20
+ mattr_accessor :format_date
21
+ mattr_accessor :format_time
22
+
19
23
  mattr_accessor :debug
20
24
 
21
25
  alias_method :max_cookie_size, :cookie_max_size
@@ -1,3 +1,3 @@
1
1
  module EffectiveDatatables
2
- VERSION = '4.8.8'.freeze
2
+ VERSION = '4.8.13'.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: 4.8.8
4
+ version: 4.8.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-18 00:00:00.000000000 Z
11
+ date: 2020-11-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -193,7 +193,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
193
193
  - !ruby/object:Gem::Version
194
194
  version: '0'
195
195
  requirements: []
196
- rubygems_version: 3.1.4
196
+ rubygems_version: 3.1.2
197
197
  signing_key:
198
198
  specification_version: 4
199
199
  summary: Uniquely powerful server-side searching, sorting and filtering of any ActiveRecord