effective_datatables 4.13.4 → 4.14.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bb08f8a05559f50227ad9957db50f1fe46952a3509b8ec2a633b5991cc2984fb
4
- data.tar.gz: 161bf01768bd46d37eac6e15e966b7dc5c2c9bc6a120c28510cc47b5d92414dd
3
+ metadata.gz: fc47f42fc35402807796c781d25c4a2c04209c298524ff5097eccd4132e0831d
4
+ data.tar.gz: 5237226dfc47dd03a9132f06a44bd664ce55c24016ea037c948ba781d05f4843
5
5
  SHA512:
6
- metadata.gz: 7b7f399eccc357014bbcbce19dc9e75cc8196865a5a6943d0dbf8f850e9acd316a5ece105d03ccca61efc774faf3a627b4e9d48b0d93ec230af128b99e1eb07e
7
- data.tar.gz: 778322bf428c4528520b7726466ac7bb57e63105967809c30846c12e2f351c613a18928efde8bf999ee89d6e2d492ad0eae3541543ff0f337733b99776789337
6
+ metadata.gz: fca83c18fac2f69f8934f2835ff1e26f7c90ee71cac121ce61652a6a17dfe064e57c3f22e8e2335a0b6ca866b0e531886d396babb72dccbb3ba24166859a13b3
7
+ data.tar.gz: 3bddcb7006524041110b313c5f5ce577c757c790abafac7e9324dbda6126c2a4a3472ee0ce28e63b81112562430adf7ecd93be994ac108f8e9730ec53fc3d496
@@ -75,10 +75,10 @@ module Effective
75
75
  end
76
76
 
77
77
  def search_column(collection, value, column, sql_column)
78
- Rails.logger.info "COLUMN TOOL: search_column #{column.to_s} #{value} #{sql_column}" if EffectiveDatatables.debug
78
+ Rails.logger.info "COLUMN TOOL: search_column #{column.to_s} value=#{value} operation=#{column[:search][:operation]} column=#{sql_column}" if EffectiveDatatables.debug
79
79
 
80
80
  Effective::Resource.new(collection)
81
- .search(column[:name], value, as: column[:as], fuzzy: column[:search][:fuzzy], sql_column: sql_column)
81
+ .search(column[:name], value, as: column[:as], operation: column[:search][:operation], column: sql_column)
82
82
  end
83
83
 
84
84
  def paginate(collection)
@@ -22,7 +22,7 @@ module Effective
22
22
  CSV.generate do |csv|
23
23
  csv << csv_header()
24
24
 
25
- collection.send(csv_collection_method) do |resources|
25
+ collection.find_in_batches do |resources|
26
26
  resources = arrayize(resources, csv: true)
27
27
  format(resources, csv: true)
28
28
  finalize(resources)
@@ -68,7 +68,7 @@ module Effective
68
68
  elsif opts[:format] && rendered.key?(name)
69
69
  dsl_tool.instance_exec(value, row, rendered[name][row_index], &opts[:format])
70
70
  elsif opts[:format]
71
- dsl_tool.instance_exec(value, row, &opts[:format])
71
+ dsl_tool.instance_exec(value, row, &opts[:format]).to_s
72
72
  elsif opts[:partial]
73
73
  rendered[name][row_index]
74
74
  else
@@ -88,6 +88,7 @@ module Effective
88
88
  end
89
89
  end
90
90
 
91
+ # Must return a string
91
92
  def format_column(value, column, csv: false)
92
93
  return if value.nil? || (column[:resource] && value.blank?)
93
94
 
@@ -114,24 +115,24 @@ module Effective
114
115
  value.respond_to?(:strftime) ? value.strftime(EffectiveDatatables.format_date) : BLANK
115
116
  when :datetime
116
117
  if csv
117
- value
118
+ value.to_s
118
119
  else
119
120
  value.respond_to?(:strftime) ? value.strftime(EffectiveDatatables.format_datetime) : BLANK
120
121
  end
121
122
  when :decimal
122
- value
123
+ value.to_s
123
124
  when :duration
124
125
  view.number_to_duration(value)
125
126
  when :effective_addresses
126
127
  csv ? value.to_html.gsub('<br>', "\n") : value.to_html
127
128
  when :effective_obfuscation
128
- value
129
+ value.to_s
129
130
  when :effective_roles
130
131
  value.join(', ')
131
132
  when :email
132
133
  csv ? value : view.mail_to(value)
133
134
  when :integer
134
- value
135
+ value.to_s
135
136
  when :percent
136
137
  case value
137
138
  when Integer ; view.number_to_percentage(value / 1000.0, precision: 3).gsub('.000%', '%')
@@ -158,7 +158,6 @@ module Effective
158
158
 
159
159
  def load_resource_search!
160
160
  columns.each do |name, opts|
161
-
162
161
  case opts[:search]
163
162
  when false
164
163
  opts[:search] = { as: :null }; next
@@ -176,13 +175,12 @@ module Effective
176
175
 
177
176
  # Parameterize collection
178
177
  if search[:collection].kind_of?(ActiveRecord::Relation)
179
- search[:collection] = search[:collection].map { |obj| [obj.to_s, obj.to_param] }
178
+ search[:collection] = search[:collection].map { |obj| [obj.to_s, obj.id] }
180
179
  elsif search[:collection].kind_of?(Array) && search[:collection].first.kind_of?(ActiveRecord::Base)
181
- search[:collection] = search[:collection].map { |obj| [obj.to_s, obj.to_param] }
180
+ search[:collection] = search[:collection].map { |obj| [obj.to_s, obj.id] }
182
181
  end
183
182
 
184
183
  search[:as] ||= :select if search.key?(:collection)
185
- search[:fuzzy] ||= true unless search.key?(:fuzzy)
186
184
  search[:value] ||= search.delete(:selected) if search.key?(:selected)
187
185
 
188
186
  # Merge with defaults
@@ -195,6 +193,12 @@ module Effective
195
193
  search.reverse_merge!(search_resource.search_form_field(name, opts[:as]))
196
194
  end
197
195
 
196
+ # Assign default search operation
197
+ search[:operation] ||= search.delete(:op)
198
+ search[:operation] ||= :eq if search[:as] == :select
199
+ search[:operation] ||= :matches if search[:fuzzy]
200
+ search[:operation] ||= search_resource.sql_operation(name, as: opts[:as])
201
+
198
202
  # Assign default include_null
199
203
  if search[:as] == :select && !search.key?(:include_null)
200
204
  search[:include_null] = true
@@ -1,3 +1,3 @@
1
1
  module EffectiveDatatables
2
- VERSION = '4.13.4'.freeze
2
+ VERSION = '4.14.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: 4.13.4
4
+ version: 4.14.0
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: 2022-12-19 00:00:00.000000000 Z
11
+ date: 2023-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails