effective_datatables 2.6.8 → 2.6.9
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 +4 -4
- data/app/assets/javascripts/effective_datatables/initialize.js.coffee +2 -0
- data/app/assets/stylesheets/effective_datatables/_overrides.scss.erb +4 -0
- data/app/controllers/effective/datatables_controller.rb +2 -0
- data/app/helpers/effective_datatables_helper.rb +15 -5
- data/app/models/effective/effective_datatable/ajax.rb +10 -6
- data/app/models/effective/effective_datatable/options.rb +10 -12
- data/lib/effective_datatables/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bfcfa607598e145978051831be4699b22abada93
|
4
|
+
data.tar.gz: 7400ddc7374fa28e61c06f620d82780de069be75
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 008e48a5a8bb112d32a7b5c64df8c381d099371588af74321ff0ce30aae6ad9b95c14dbdb659b95469bdc9668a91d8bc217d27b44e8f3fcf6b5bda2e7cb0ed4b
|
7
|
+
data.tar.gz: c9dcca53071f78e3ab100e69f82d675be3bcce35bd9c97b586161dce402823fed45c856433c247419df061af9cece2c1057b8affc7b89ee2770674285086ca29
|
@@ -146,6 +146,8 @@ initializeDataTables = ->
|
|
146
146
|
|
147
147
|
# Do the actual search
|
148
148
|
dataTableSearch = ($input) -> # This is the function called by a select or input to run the search
|
149
|
+
return if $input.is(':invalid')
|
150
|
+
|
149
151
|
table = $input.closest('table.dataTable')
|
150
152
|
table.DataTable().column("#{$input.data('column-name')}:name").search($input.val()).draw()
|
151
153
|
|
@@ -156,6 +156,10 @@ table.dataTable.dtr-inline.collapsed > tbody > tr:not(.child) > th:first-child {
|
|
156
156
|
table.dataTable tbody {
|
157
157
|
td.col-price { text-align: right; }
|
158
158
|
|
159
|
+
td.col-actions {
|
160
|
+
white-space: nowrap;
|
161
|
+
}
|
162
|
+
|
159
163
|
td.col-bulk_actions {
|
160
164
|
input[type='checkbox'] { margin-left: 3px; }
|
161
165
|
}
|
@@ -89,27 +89,37 @@ module EffectiveDatatablesHelper
|
|
89
89
|
return render(partial: opts[:header_partial], locals: {form: form, name: (opts[:label] || name), column: opts}) if opts[:header_partial].present?
|
90
90
|
|
91
91
|
include_blank = opts[:filter].key?(:include_blank) ? opts[:filter][:include_blank] : (opts[:label] || name.titleize)
|
92
|
+
pattern = opts[:filter].key?(:pattern) ? opts[:filter][:pattern] : nil
|
92
93
|
placeholder = opts[:filter].key?(:placeholder) ? opts[:filter][:placeholder] : (opts[:label] || name.titleize)
|
94
|
+
title = opts[:filter].key?(:title) ? opts[:filter][:title] : (opts[:label] || name.titleize)
|
93
95
|
|
94
96
|
case opts[:filter][:as]
|
95
97
|
when :string, :text, :number
|
96
98
|
form.input name, label: false, required: false, value: value,
|
97
99
|
as: :string,
|
98
100
|
placeholder: placeholder,
|
99
|
-
input_html: { name: nil, value: value, autocomplete: 'off', data: {'column-name' => opts[:name], 'column-index' => opts[:index]} }
|
101
|
+
input_html: { name: nil, value: value, title: title, pattern: pattern, autocomplete: 'off', data: {'column-name' => opts[:name], 'column-index' => opts[:index]} }
|
102
|
+
when :obfuscated_id
|
103
|
+
pattern ||= "[0-9]{3}-?[0-9]{4}-?[0-9]{3}"
|
104
|
+
title = opts[:filter].key?(:title) ? opts[:filter][:title] : "Expected format: XXX-XXXX-XXX"
|
105
|
+
|
106
|
+
form.input name, label: false, required: false, value: value,
|
107
|
+
as: :string,
|
108
|
+
placeholder: placeholder,
|
109
|
+
input_html: { name: nil, value: value, title: title, pattern: pattern, autocomplete: 'off', data: {'column-name' => opts[:name], 'column-index' => opts[:index]} }
|
100
110
|
when :date
|
101
111
|
form.input name, label: false, required: false, value: value,
|
102
112
|
as: (ActionView::Helpers::FormBuilder.instance_methods.include?(:effective_date_picker) ? :effective_date_picker : :string),
|
103
113
|
placeholder: placeholder,
|
104
114
|
input_group: false,
|
105
|
-
input_html: { name: nil, autocomplete: 'off', data: {'column-name' => opts[:name], 'column-index' => opts[:index]} },
|
115
|
+
input_html: { name: nil, value: value, title: title, autocomplete: 'off', data: {'column-name' => opts[:name], 'column-index' => opts[:index]} },
|
106
116
|
input_js: { useStrict: true, keepInvalid: true }
|
107
117
|
when :datetime
|
108
118
|
form.input name, label: false, required: false, value: value,
|
109
119
|
as: (ActionView::Helpers::FormBuilder.instance_methods.include?(:effective_date_time_picker) ? :effective_date_time_picker : :string),
|
110
120
|
placeholder: placeholder,
|
111
121
|
input_group: false,
|
112
|
-
input_html: { name: nil, value: value, autocomplete: 'off', data: {'column-name' => opts[:name], 'column-index' => opts[:index]} },
|
122
|
+
input_html: { name: nil, value: value, title: title, autocomplete: 'off', data: {'column-name' => opts[:name], 'column-index' => opts[:index]} },
|
113
123
|
input_js: { useStrict: true, keepInvalid: true } # Keep invalid format like "2015-11" so we can still filter by year, month or day
|
114
124
|
when :select, :boolean
|
115
125
|
form.input name, label: false, required: false, value: value,
|
@@ -118,7 +128,7 @@ module EffectiveDatatablesHelper
|
|
118
128
|
selected: opts[:filter][:selected],
|
119
129
|
multiple: opts[:filter][:multiple] == true,
|
120
130
|
include_blank: include_blank,
|
121
|
-
input_html: { name: nil, value: value, autocomplete: 'off', data: {'column-name' => opts[:name], 'column-index' => opts[:index]} },
|
131
|
+
input_html: { name: nil, value: value, title: title, autocomplete: 'off', data: {'column-name' => opts[:name], 'column-index' => opts[:index]} },
|
122
132
|
input_js: { placeholder: placeholder }
|
123
133
|
when :grouped_select
|
124
134
|
form.input name, label: false, required: false, value: value,
|
@@ -131,7 +141,7 @@ module EffectiveDatatablesHelper
|
|
131
141
|
polymorphic: opts[:filter][:polymorphic] == true,
|
132
142
|
group_label_method: opts[:filter][:group_label_method] || :first,
|
133
143
|
group_method: opts[:filter][:group_method] || :last,
|
134
|
-
input_html: { name: nil, value: value, autocomplete: 'off', data: {'column-name' => opts[:name], 'column-index' => opts[:index]} },
|
144
|
+
input_html: { name: nil, value: value, title: title, autocomplete: 'off', data: {'column-name' => opts[:name], 'column-index' => opts[:index]} },
|
135
145
|
input_js: { placeholder: placeholder }
|
136
146
|
when :bulk_actions_column
|
137
147
|
form.input name, label: false, required: false, value: nil,
|
@@ -10,16 +10,20 @@ module Effective
|
|
10
10
|
def display_table_columns
|
11
11
|
return nil if params[:columns].blank?
|
12
12
|
|
13
|
-
@display_table_columns ||=
|
14
|
-
|
15
|
-
|
16
|
-
|
13
|
+
@display_table_columns ||= (
|
14
|
+
{}.tap do |retval|
|
15
|
+
params[:columns].each do |_, column|
|
16
|
+
retval[column[:name]] = table_columns[column[:name]] # Same order as ColReordernow
|
17
|
+
retval[column[:name]][:visible] = (column[:visible] == 'true') # As per ColVis
|
18
|
+
end
|
19
|
+
end
|
20
|
+
)
|
17
21
|
end
|
18
22
|
|
19
23
|
def order_name
|
20
24
|
@order_name ||= begin
|
21
25
|
if params[:order] && params[:columns]
|
22
|
-
order_by_column_index = (params[:order]
|
26
|
+
order_by_column_index = (params[:order]['0'][:column] rescue '0')
|
23
27
|
(params[:columns][order_by_column_index] || {})[:name]
|
24
28
|
elsif @default_order.present?
|
25
29
|
@default_order.keys.first
|
@@ -33,7 +37,7 @@ module Effective
|
|
33
37
|
|
34
38
|
def order_direction
|
35
39
|
@order_direction ||= if params[:order].present?
|
36
|
-
params[:order]
|
40
|
+
params[:order]['0'][:dir] == 'desc' ? :desc : :asc
|
37
41
|
elsif @default_order.present?
|
38
42
|
@default_order.values.first.to_s.downcase == 'desc' ? :desc : :asc
|
39
43
|
else
|
@@ -114,8 +114,12 @@ module Effective
|
|
114
114
|
:has_and_belongs_to_many
|
115
115
|
elsif cols[name][:bulk_actions_column]
|
116
116
|
:bulk_actions_column
|
117
|
-
elsif name.include?('_address') && (collection_class.new rescue nil).respond_to?(:effective_addresses)
|
117
|
+
elsif name.include?('_address') && defined?(EffectiveAddresses) && (collection_class.new rescue nil).respond_to?(:effective_addresses)
|
118
118
|
:effective_address
|
119
|
+
elsif name == 'id' && defined?(EffectiveObfuscation) && collection.respond_to?(:deobfuscate)
|
120
|
+
:obfuscated_id
|
121
|
+
elsif name == 'roles' && defined?(EffectiveRoles) && collection.respond_to?(:with_role)
|
122
|
+
:effective_roles
|
119
123
|
elsif sql_column.try(:type).present?
|
120
124
|
sql_column.type
|
121
125
|
elsif name.end_with?('_id')
|
@@ -132,22 +136,14 @@ module Effective
|
|
132
136
|
cols[name][:format] = :non_formatted_integer
|
133
137
|
end
|
134
138
|
|
135
|
-
#
|
136
|
-
if [:has_many, :effective_address].include?(cols[name][:type])
|
139
|
+
# Sortable - Disable sorting on these types
|
140
|
+
if [:has_many, :effective_address, :obfuscated_id].include?(cols[name][:type])
|
137
141
|
cols[name][:sortable] = false
|
138
142
|
end
|
139
143
|
|
140
|
-
# EffectiveObfuscation
|
141
|
-
if name == 'id' && defined?(EffectiveObfuscation) && collection.respond_to?(:deobfuscate)
|
142
|
-
cols[name][:sortable] = false
|
143
|
-
cols[name][:type] = :obfuscated_id
|
144
|
-
end
|
145
|
-
|
146
144
|
# EffectiveRoles, if you do table_column :roles, everything just works
|
147
|
-
if name ==
|
148
|
-
cols[name][:sortable] = true
|
145
|
+
if cols[name][:type] == :effective_roles
|
149
146
|
cols[name][:column] = sql_table.present? ? "#{quote_sql(sql_table.name)}.#{quote_sql('roles_mask')}" : name
|
150
|
-
cols[name][:type] = :effective_roles
|
151
147
|
end
|
152
148
|
|
153
149
|
if sql_table.present? && sql_column.blank? # This is a SELECT AS column, or a JOIN column
|
@@ -256,6 +252,8 @@ module Effective
|
|
256
252
|
{as: :string}
|
257
253
|
when :effective_roles
|
258
254
|
{as: :select, collection: EffectiveRoles.roles}
|
255
|
+
when :obfuscated_id
|
256
|
+
{as: :obfuscated_id}
|
259
257
|
when :integer
|
260
258
|
{as: :number}
|
261
259
|
when :boolean
|
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: 2.6.
|
4
|
+
version: 2.6.9
|
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: 2016-08
|
11
|
+
date: 2016-09-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|