effective_datatables 3.7.2 → 3.7.3
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.js +1 -0
- data/app/assets/javascripts/effective_datatables/bulk_actions.js.coffee +43 -43
- data/app/assets/javascripts/effective_datatables/initialize.js.coffee +17 -6
- data/app/helpers/effective_datatables_private_helper.rb +1 -1
- data/app/views/effective/datatables/_bulk_actions_column.html.haml +1 -1
- data/lib/effective_datatables/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 10c87c87d54529b6e4952b9abc58512f1ab9c2dc3e9f6d6e03c5ed141a388dd3
|
4
|
+
data.tar.gz: c2a7fd23d6f7790e6e083af1084e61f969793fe587ed9722811e6197a4516465
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3bb3d7ab4f1ed0642f972bfdfd0828333b5149af4dc474fa1d9ecedb5a009ef20cd3ea2b29ab4bb71e8c7e85c7236edd4a22cce63503383acab3e40a25644407
|
7
|
+
data.tar.gz: 76b83708cb8b0d2cdd6f67c608a9892d473be9d0f58b29438c1d445015aedc3b2b345b027811cbb4957b1154d9a057e3ed8151bb28ae8dc7f7ad9066341c31a1
|
@@ -15,6 +15,7 @@
|
|
15
15
|
//= require effective_datatables/bulk_actions
|
16
16
|
//= require effective_datatables/events
|
17
17
|
//= require effective_datatables/filters
|
18
|
+
//= require effective_datatables/flash
|
18
19
|
//= require effective_datatables/reset
|
19
20
|
//= require effective_datatables/responsive
|
20
21
|
|
@@ -1,50 +1,66 @@
|
|
1
1
|
#### Checkbox toggling and Bulk Actions dropdown disabling
|
2
2
|
|
3
|
-
$(document).on 'change', "input[data-role='bulk-
|
3
|
+
$(document).on 'change', ".dataTables_wrapper input[data-role='bulk-action']", (event) ->
|
4
4
|
$wrapper = $(event.currentTarget).closest('.dataTables_wrapper')
|
5
5
|
|
6
|
-
$wrapper.find("input[data-role='bulk-actions
|
7
|
-
|
6
|
+
$wrapper.find("input[data-role='bulk-actions']").prop('checked', false)
|
7
|
+
toggleDropdown($wrapper)
|
8
8
|
|
9
|
-
$(document).on 'change', "input[data-role='bulk-actions
|
9
|
+
$(document).on 'change', ".dataTables_wrapper input[data-role='bulk-actions']", (event) ->
|
10
10
|
$wrapper = $(event.currentTarget).closest('.dataTables_wrapper')
|
11
|
-
$resources = $wrapper.find("input[data-role='bulk-
|
11
|
+
$resources = $wrapper.find("input[data-role='bulk-action']")
|
12
12
|
|
13
13
|
if $(event.currentTarget).is(':checked')
|
14
14
|
$resources.prop('checked', true)
|
15
15
|
else
|
16
16
|
$resources.prop('checked', false)
|
17
17
|
|
18
|
-
|
18
|
+
toggleDropdown($wrapper)
|
19
19
|
|
20
|
-
|
20
|
+
toggleDropdown = ($wrapper) ->
|
21
21
|
$bulkActions = $wrapper.children().first().find('.buttons-bulk-actions').children('button')
|
22
22
|
|
23
|
-
if $wrapper.find("input[data-role='bulk-
|
23
|
+
if $wrapper.find("input[data-role='bulk-action']:checked").length > 0
|
24
24
|
$bulkActions.removeAttr('disabled')
|
25
25
|
else
|
26
26
|
$bulkActions.attr('disabled', 'disabled')
|
27
27
|
|
28
|
+
restoreSelected = ($table, selected) ->
|
29
|
+
$bulkActions = $table.closest('.dataTables_wrapper').children().first().find('.buttons-bulk-actions').children('button')
|
30
|
+
present = false
|
31
|
+
|
32
|
+
if selected && selected.length > 0
|
33
|
+
$table.find("input[data-role='bulk-action']").each (_, input) ->
|
34
|
+
$input = $(input)
|
35
|
+
|
36
|
+
if selected.indexOf($input.val()) > -1
|
37
|
+
$input.prop('checked', true)
|
38
|
+
present = true
|
39
|
+
else
|
40
|
+
$input.prop('checked', false)
|
41
|
+
|
42
|
+
if present then $bulkActions.removeAttr('disabled') else $bulkActions.attr('disabled', 'disabled')
|
28
43
|
|
29
44
|
#### Bulk Action link behaviour
|
30
|
-
$(document).on 'click', '.buttons-bulk-actions a', (event) ->
|
45
|
+
$(document).on 'click', '.dataTables_wrapper .buttons-bulk-actions a', (event) ->
|
31
46
|
event.preventDefault() # prevent the click
|
32
47
|
|
33
48
|
$bulkAction = $(event.currentTarget) # This is a regular <a href=...> tag
|
34
49
|
$wrapper = $bulkAction.closest('.dataTables_wrapper')
|
35
50
|
$table = $wrapper.find('table.dataTable').first()
|
36
51
|
$processing = $table.siblings('.dataTables_processing').first()
|
37
|
-
$selected = $table.find("input[data-role='bulk-
|
52
|
+
$selected = $table.find("input[data-role='bulk-action']:checked")
|
38
53
|
|
39
54
|
url = $bulkAction.attr('href')
|
40
55
|
title = $bulkAction.text()
|
41
|
-
|
56
|
+
download = $bulkAction.data('bulk-download')
|
57
|
+
token = $table.data('authenticity-token')
|
42
58
|
values = $.map($selected, (input) -> input.getAttribute('value'))
|
43
|
-
|
59
|
+
method = $bulkAction.data('ajax-method')
|
44
60
|
|
45
61
|
return unless url && values
|
46
62
|
|
47
|
-
if
|
63
|
+
if method == 'GET'
|
48
64
|
if url.includes('?')
|
49
65
|
window.location.assign(url + '&' + $.param({ids: values}))
|
50
66
|
else
|
@@ -55,52 +71,36 @@ $(document).on 'click', '.buttons-bulk-actions a', (event) ->
|
|
55
71
|
# Disable the Bulk Actions dropdown, so only one can be run at a time
|
56
72
|
$bulkAction.closest('button').attr('disabled', 'disabled')
|
57
73
|
|
58
|
-
|
59
|
-
$processing.show().data('bulk-actions-processing', true)
|
74
|
+
$table.dataTable().data('bulk-actions-restore-selected-values', values)
|
60
75
|
|
61
|
-
if
|
76
|
+
if download # This is a file download
|
62
77
|
$.fileDownload(url,
|
63
78
|
httpMethod: 'POST',
|
64
79
|
data: { ids: values, authenticity_token: token }
|
65
80
|
successCallback: ->
|
66
81
|
success = "Successfully completed #{title} bulk action"
|
67
|
-
$
|
68
|
-
$table.dataTable().data('bulk-actions-restore-selected-values', values)
|
82
|
+
$table.one 'draw.dt', (e) -> $(e.target).DataTable().flash(success, 'success') and restoreSelected($(e.target), values)
|
69
83
|
$table.DataTable().draw()
|
70
84
|
failCallback: ->
|
71
85
|
error = "An error occured while attempting #{title} bulk action"
|
72
|
-
$
|
73
|
-
alert(error)
|
74
|
-
$table.dataTable().data('bulk-actions-restore-selected-values', values)
|
86
|
+
$table.one 'draw.dt', (e) -> $(e.target).DataTable().flash(error, 'danger') and restoreSelected($(e.target), values)
|
75
87
|
$table.DataTable().draw()
|
76
88
|
)
|
77
89
|
else # Normal AJAX post
|
78
|
-
|
79
|
-
|
90
|
+
$table.dataTable().data('bulk-actions-restore-selected-values', values)
|
91
|
+
|
92
|
+
$.ajax(
|
93
|
+
method: method,
|
94
|
+
url: url,
|
95
|
+
data: { ids: values, authenticity_token: token }
|
80
96
|
).done((response) ->
|
81
97
|
success = response['message'] || "Successfully completed #{title} bulk action"
|
82
|
-
$
|
98
|
+
$table.one 'draw.dt', (e) -> $(e.target).DataTable().flash(success, 'success') and restoreSelected($(e.target), values)
|
99
|
+
|
83
100
|
).fail((response) ->
|
84
101
|
error = response['message'] || "An error occured while attempting #{title} bulk action: #{response.statusText}"
|
85
|
-
$
|
86
|
-
|
102
|
+
$table.one 'draw.dt', (e) -> $(e.target).DataTable().flash(error, 'danger') and restoreSelected($(e.target), values)
|
103
|
+
|
87
104
|
).always((response) ->
|
88
|
-
$table.dataTable().data('bulk-actions-restore-selected-values', values)
|
89
105
|
$table.DataTable().draw()
|
90
106
|
)
|
91
|
-
|
92
|
-
# We borrow the Processing div for our bulk action success/error messages
|
93
|
-
# This makes sure that the message is displayed for 1500ms
|
94
|
-
$(document).on 'processing.dt', (event, settings, visible) ->
|
95
|
-
return if settings.bDestroying
|
96
|
-
|
97
|
-
$processing = $(event.target).siblings('.dataTables_processing').first()
|
98
|
-
return unless $processing.data('bulk-actions-processing')
|
99
|
-
|
100
|
-
timeout = $processing.show().data('timeout')
|
101
|
-
clearTimeout(timeout) if timeout
|
102
|
-
$processing.data('timeout', setTimeout( =>
|
103
|
-
$processing.html('Processing...').hide()
|
104
|
-
$processing.data('bulk-actions-processing', null)
|
105
|
-
, 1500)
|
106
|
-
)
|
@@ -24,14 +24,14 @@ initializeDataTables = (target) ->
|
|
24
24
|
extend: 'copy',
|
25
25
|
exportOptions:
|
26
26
|
format:
|
27
|
-
header: (str) -> $("<div>#{str}</div>").children('
|
27
|
+
header: (str) -> $("<div>#{str}</div>").children('span').first().text()
|
28
28
|
columns: buttons_export_columns
|
29
29
|
},
|
30
30
|
{
|
31
31
|
extend: 'csv',
|
32
32
|
exportOptions:
|
33
33
|
format:
|
34
|
-
header: (str) -> $("<div>#{str}</div>").children('
|
34
|
+
header: (str) -> $("<div>#{str}</div>").children('span').first().text()
|
35
35
|
columns: buttons_export_columns
|
36
36
|
},
|
37
37
|
{
|
@@ -39,7 +39,7 @@ initializeDataTables = (target) ->
|
|
39
39
|
footer: true,
|
40
40
|
exportOptions:
|
41
41
|
format:
|
42
|
-
header: (str) -> $("<div>#{str}</div>").children('
|
42
|
+
header: (str) -> $("<div>#{str}</div>").children('span').first().text()
|
43
43
|
columns: ':visible:not(.col-actions)'
|
44
44
|
},
|
45
45
|
]
|
@@ -64,12 +64,23 @@ initializeDataTables = (target) ->
|
|
64
64
|
params['authenticity_token'] = $table.data('authenticity-token')
|
65
65
|
|
66
66
|
if $form.length > 0
|
67
|
-
params['scope'] = $form.find("input[
|
67
|
+
params['scope'] = $form.find("input[name='filters[scope]']:checked").val() || ''
|
68
68
|
params['filter'] = {}
|
69
69
|
|
70
|
-
$form.find("
|
70
|
+
$form.find("select,textarea,input:not([type=submit])").each ->
|
71
71
|
$input = $(this)
|
72
|
-
|
72
|
+
|
73
|
+
if ['utf8', 'authenticity_token', 'filters[scope]'].includes($input.attr('name'))
|
74
|
+
# Skipped
|
75
|
+
else if $input.attr('type') == 'radio'
|
76
|
+
name = $input.attr('name')
|
77
|
+
filter_name = name.replace('filters[', '').substring(0, name.length-9)
|
78
|
+
|
79
|
+
params['filter'][filter_name] = $form.find("input[name='#{name}']:checked").val()
|
80
|
+
|
81
|
+
else if $input.attr('id')
|
82
|
+
filter_name = $input.attr('id').replace('filters_', '')
|
83
|
+
params['filter'][filter_name] = $input.val()
|
73
84
|
|
74
85
|
serverSide: true
|
75
86
|
scrollCollapse: true
|
@@ -148,7 +148,7 @@ module EffectiveDatatablesPrivateHelper
|
|
148
148
|
input_html: input_html,
|
149
149
|
input_js: { placeholder: placeholder }
|
150
150
|
when :bulk_actions
|
151
|
-
input_html[:data]['role'] = 'bulk-actions
|
151
|
+
input_html[:data]['role'] = 'bulk-actions'
|
152
152
|
|
153
153
|
form.input name, label: false, required: false, value: nil,
|
154
154
|
as: :boolean,
|
@@ -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-
|
2
|
+
= check_box_tag 'bulk_actions_resources[]', id, false, autocomplete: 'off', id: "datatable_bulk_actions_resource_#{id}", data: { role: 'bulk-action' }, onClick: 'event.stopPropagation();'
|
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.
|
4
|
+
version: 3.7.3
|
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: 2019-
|
11
|
+
date: 2019-10-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|