effective_datatables 3.7.10 → 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 (69) 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/bulk_actions.js.coffee +43 -43
  12. data/app/assets/javascripts/effective_datatables/events.js.coffee +7 -4
  13. data/app/assets/javascripts/effective_datatables/filters.js.coffee +0 -1
  14. data/app/assets/javascripts/effective_datatables/initialize.js.coffee +45 -49
  15. data/app/assets/javascripts/effective_datatables/overrides.js +12 -0
  16. data/app/assets/javascripts/effective_datatables/reset.js.coffee +1 -1
  17. data/app/assets/javascripts/effective_datatables.js +4 -4
  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/_overrides.scss +72 -152
  22. data/app/assets/stylesheets/effective_datatables.scss +3 -4
  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 +2 -4
  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/bulk_actions.rb +25 -14
  36. data/app/models/effective/effective_datatable/dsl/datatable.rb +28 -70
  37. data/app/models/effective/effective_datatable/dsl/filters.rb +5 -5
  38. data/app/models/effective/effective_datatable/dsl.rb +3 -8
  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/engine.rb +4 -14
  50. data/lib/effective_datatables/version.rb +1 -1
  51. data/lib/effective_datatables.rb +4 -57
  52. metadata +20 -31
  53. data/app/assets/config/effective_datatables_manifest.js +0 -3
  54. data/app/assets/images/dataTables/sort_asc.png +0 -0
  55. data/app/assets/images/dataTables/sort_both.png +0 -0
  56. data/app/assets/images/dataTables/sort_desc.png +0 -0
  57. data/app/assets/javascripts/dataTables/dataTables.bootstrap.js +0 -182
  58. data/app/assets/javascripts/dataTables/locales/en.lang +0 -33
  59. data/app/assets/javascripts/dataTables/locales/es.lang +0 -36
  60. data/app/assets/javascripts/dataTables/locales/nl.lang +0 -30
  61. data/app/assets/javascripts/effective_datatables/flash.js.coffee +0 -31
  62. data/app/assets/javascripts/effective_datatables/inline_crud.js.coffee +0 -217
  63. data/app/assets/javascripts/effective_datatables/overrides.js.coffee +0 -7
  64. data/app/assets/javascripts/effective_datatables/reorder.js.coffee +0 -43
  65. data/app/assets/stylesheets/effective_datatables/_filters.scss +0 -7
  66. data/app/views/effective/datatables/_reorder_column.html.haml +0 -5
  67. data/config/locales/en.yml +0 -12
  68. data/config/locales/es.yml +0 -12
  69. data/config/locales/nl.yml +0 -12
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.10
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: 2023-05-31 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,41 +91,33 @@ extra_rdoc_files: []
91
91
  files:
92
92
  - MIT-LICENSE
93
93
  - README.md
94
- - app/assets/config/effective_datatables_manifest.js
95
- - app/assets/images/dataTables/sort_asc.png
96
- - app/assets/images/dataTables/sort_both.png
97
- - app/assets/images/dataTables/sort_desc.png
98
- - 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
99
98
  - app/assets/javascripts/dataTables/buttons/buttons.colVis.js
100
99
  - app/assets/javascripts/dataTables/buttons/buttons.html5.js
101
100
  - app/assets/javascripts/dataTables/buttons/buttons.print.js
102
101
  - app/assets/javascripts/dataTables/buttons/dataTables.buttons.js
103
- - app/assets/javascripts/dataTables/dataTables.bootstrap.js
102
+ - app/assets/javascripts/dataTables/dataTables.bootstrap4.js
104
103
  - app/assets/javascripts/dataTables/jquery.dataTables.js
105
- - app/assets/javascripts/dataTables/locales/en.lang
106
- - app/assets/javascripts/dataTables/locales/es.lang
107
- - app/assets/javascripts/dataTables/locales/nl.lang
108
104
  - app/assets/javascripts/dataTables/responsive/dataTables.responsive.js
109
- - app/assets/javascripts/dataTables/responsive/responsive.bootstrap.js
105
+ - app/assets/javascripts/dataTables/responsive/responsive.bootstrap4.js
110
106
  - app/assets/javascripts/effective_datatables.js
111
107
  - app/assets/javascripts/effective_datatables/bulk_actions.js.coffee
112
108
  - app/assets/javascripts/effective_datatables/charts.js.coffee
113
109
  - app/assets/javascripts/effective_datatables/events.js.coffee
114
110
  - app/assets/javascripts/effective_datatables/filters.js.coffee
115
- - app/assets/javascripts/effective_datatables/flash.js.coffee
116
111
  - app/assets/javascripts/effective_datatables/initialize.js.coffee
117
- - app/assets/javascripts/effective_datatables/inline_crud.js.coffee
118
- - app/assets/javascripts/effective_datatables/overrides.js.coffee
119
- - app/assets/javascripts/effective_datatables/reorder.js.coffee
112
+ - app/assets/javascripts/effective_datatables/overrides.js
120
113
  - app/assets/javascripts/effective_datatables/reset.js.coffee
121
114
  - app/assets/javascripts/effective_datatables/responsive.js.coffee
122
115
  - app/assets/javascripts/vendor/jquery.delayedChange.js
123
116
  - app/assets/javascripts/vendor/jquery.fileDownload.js
124
- - app/assets/stylesheets/dataTables/buttons/buttons.bootstrap.scss
125
- - app/assets/stylesheets/dataTables/dataTables.bootstrap.scss
126
- - 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
127
120
  - app/assets/stylesheets/effective_datatables.scss
128
- - app/assets/stylesheets/effective_datatables/_filters.scss
129
121
  - app/assets/stylesheets/effective_datatables/_overrides.scss
130
122
  - app/controllers/effective/datatables_controller.rb
131
123
  - app/datatables/effective_style_guide_datatable.rb
@@ -158,15 +150,11 @@ files:
158
150
  - app/views/effective/datatables/_chart.html.haml
159
151
  - app/views/effective/datatables/_datatable.html.haml
160
152
  - app/views/effective/datatables/_filters.html.haml
161
- - app/views/effective/datatables/_reorder_column.html.haml
162
153
  - app/views/effective/datatables/_resource_column.html.haml
163
154
  - app/views/effective/datatables/_spacer_template.html
164
155
  - app/views/effective/datatables/index.html.haml
165
156
  - app/views/effective/style_guide/_effective_datatables.html.haml
166
157
  - config/effective_datatables.rb
167
- - config/locales/en.yml
168
- - config/locales/es.yml
169
- - config/locales/nl.yml
170
158
  - config/routes.rb
171
159
  - lib/effective_datatables.rb
172
160
  - lib/effective_datatables/engine.rb
@@ -177,7 +165,7 @@ homepage: https://github.com/code-and-effect/effective_datatables
177
165
  licenses:
178
166
  - MIT
179
167
  metadata: {}
180
- post_install_message:
168
+ post_install_message:
181
169
  rdoc_options: []
182
170
  require_paths:
183
171
  - lib
@@ -192,8 +180,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
192
180
  - !ruby/object:Gem::Version
193
181
  version: '0'
194
182
  requirements: []
195
- rubygems_version: 3.1.2
196
- signing_key:
183
+ rubyforge_project:
184
+ rubygems_version: 2.4.5.1
185
+ signing_key:
197
186
  specification_version: 4
198
187
  summary: Uniquely powerful server-side searching, sorting and filtering of any ActiveRecord
199
188
  or Array collection as well as post-rendered content displayed as a frontend jQuery
@@ -1,3 +0,0 @@
1
- //= link_directory ../javascripts .js
2
- //= link_directory ../stylesheets .css
3
- //= link_tree ../images
@@ -1,182 +0,0 @@
1
- /*! DataTables Bootstrap 3 integration
2
- * ©2011-2015 SpryMedia Ltd - datatables.net/license
3
- */
4
-
5
- /**
6
- * DataTables integration for Bootstrap 3. This requires Bootstrap 3 and
7
- * DataTables 1.10 or newer.
8
- *
9
- * This file sets the defaults and adds options to DataTables to style its
10
- * controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap
11
- * for further information.
12
- */
13
- (function( factory ){
14
- if ( typeof define === 'function' && define.amd ) {
15
- // AMD
16
- define( ['jquery', 'datatables.net'], function ( $ ) {
17
- return factory( $, window, document );
18
- } );
19
- }
20
- else if ( typeof exports === 'object' ) {
21
- // CommonJS
22
- module.exports = function (root, $) {
23
- if ( ! root ) {
24
- root = window;
25
- }
26
-
27
- if ( ! $ || ! $.fn.dataTable ) {
28
- // Require DataTables, which attaches to jQuery, including
29
- // jQuery if needed and have a $ property so we can access the
30
- // jQuery object that is used
31
- $ = require('datatables.net')(root, $).$;
32
- }
33
-
34
- return factory( $, root, root.document );
35
- };
36
- }
37
- else {
38
- // Browser
39
- factory( jQuery, window, document );
40
- }
41
- }(function( $, window, document, undefined ) {
42
- 'use strict';
43
- var DataTable = $.fn.dataTable;
44
-
45
-
46
- /* Set the defaults for DataTables initialisation */
47
- $.extend( true, DataTable.defaults, {
48
- dom:
49
- "<'row'<'col-sm-6'l><'col-sm-6'f>>" +
50
- "<'row'<'col-sm-12'tr>>" +
51
- "<'row'<'col-sm-5'i><'col-sm-7'p>>",
52
- renderer: 'bootstrap'
53
- } );
54
-
55
-
56
- /* Default class modification */
57
- $.extend( DataTable.ext.classes, {
58
- sWrapper: "dataTables_wrapper form-inline dt-bootstrap",
59
- sFilterInput: "form-control input-sm",
60
- sLengthSelect: "form-control input-sm",
61
- sProcessing: "dataTables_processing panel panel-default"
62
- } );
63
-
64
-
65
- /* Bootstrap paging button renderer */
66
- DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) {
67
- var api = new DataTable.Api( settings );
68
- var classes = settings.oClasses;
69
- var lang = settings.oLanguage.oPaginate;
70
- var aria = settings.oLanguage.oAria.paginate || {};
71
- var btnDisplay, btnClass, counter=0;
72
-
73
- var attach = function( container, buttons ) {
74
- var i, ien, node, button;
75
- var clickHandler = function ( e ) {
76
- e.preventDefault();
77
- if ( !$(e.currentTarget).hasClass('disabled') && api.page() != e.data.action ) {
78
- api.page( e.data.action ).draw( 'page' );
79
- }
80
- };
81
-
82
- for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
83
- button = buttons[i];
84
-
85
- if ( $.isArray( button ) ) {
86
- attach( container, button );
87
- }
88
- else {
89
- btnDisplay = '';
90
- btnClass = '';
91
-
92
- switch ( button ) {
93
- case 'ellipsis':
94
- btnDisplay = '&#x2026;';
95
- btnClass = 'disabled';
96
- break;
97
-
98
- case 'first':
99
- btnDisplay = lang.sFirst;
100
- btnClass = button + (page > 0 ?
101
- '' : ' disabled');
102
- break;
103
-
104
- case 'previous':
105
- btnDisplay = lang.sPrevious;
106
- btnClass = button + (page > 0 ?
107
- '' : ' disabled');
108
- break;
109
-
110
- case 'next':
111
- btnDisplay = lang.sNext;
112
- btnClass = button + (page < pages-1 ?
113
- '' : ' disabled');
114
- break;
115
-
116
- case 'last':
117
- btnDisplay = lang.sLast;
118
- btnClass = button + (page < pages-1 ?
119
- '' : ' disabled');
120
- break;
121
-
122
- default:
123
- btnDisplay = button + 1;
124
- btnClass = page === button ?
125
- 'active' : '';
126
- break;
127
- }
128
-
129
- if ( btnDisplay ) {
130
- node = $('<li>', {
131
- 'class': classes.sPageButton+' '+btnClass,
132
- 'id': idx === 0 && typeof button === 'string' ?
133
- settings.sTableId +'_'+ button :
134
- null
135
- } )
136
- .append( $('<a>', {
137
- 'href': '#',
138
- 'aria-controls': settings.sTableId,
139
- 'aria-label': aria[ button ],
140
- 'data-dt-idx': counter,
141
- 'tabindex': settings.iTabIndex
142
- } )
143
- .html( btnDisplay )
144
- )
145
- .appendTo( container );
146
-
147
- settings.oApi._fnBindAction(
148
- node, {action: button}, clickHandler
149
- );
150
-
151
- counter++;
152
- }
153
- }
154
- }
155
- };
156
-
157
- // IE9 throws an 'unknown error' if document.activeElement is used
158
- // inside an iframe or frame.
159
- var activeEl;
160
-
161
- try {
162
- // Because this approach is destroying and recreating the paging
163
- // elements, focus is lost on the select button which is bad for
164
- // accessibility. So we want to restore focus once the draw has
165
- // completed
166
- activeEl = $(host).find(document.activeElement).data('dt-idx');
167
- }
168
- catch (e) {}
169
-
170
- attach(
171
- $(host).empty().html('<ul class="pagination"/>').children('ul'),
172
- buttons
173
- );
174
-
175
- if ( activeEl !== undefined ) {
176
- $(host).find( '[data-dt-idx='+activeEl+']' ).focus();
177
- }
178
- };
179
-
180
-
181
- return DataTable;
182
- }));
@@ -1,33 +0,0 @@
1
- /**
2
- * English - this is the default DataTables ships with
3
- * @name English
4
- * @anchor English
5
- * @author <a href="http://www.sprymedia.co.uk/">Allan Jardine</a>
6
- */
7
-
8
- {
9
- "sEmptyTable": "No data available in table",
10
- "sInfo": "Showing _START_ to _END_ of _TOTAL_ entries",
11
- "sInfoEmpty": "Showing 0 to 0 of 0 entries",
12
- "sInfoFiltered": "(filtered from _MAX_ total entries)",
13
- "sInfoPostFix": "",
14
- "sInfoThousands": ",",
15
- "sLengthMenu": "&nbsp;with _MENU_ per page",
16
- "sLoadingRecords": "Loading...",
17
- "sProcessing": "Processing...",
18
- "sSearch": "Search:",
19
- "sZeroRecords": "No matching records found",
20
- "oPaginate": {
21
- "sFirst": "First",
22
- "sLast": "Last",
23
- "sNext": "Next",
24
- "sPrevious": "Previous"
25
- },
26
- "oAria": {
27
- "sSortAscending": ": activate to sort column ascending",
28
- "sSortDescending": ": activate to sort column descending"
29
- },
30
- "buttons": {
31
- "colvis": "Show / Hide"
32
- }
33
- }
@@ -1,36 +0,0 @@
1
- /**
2
- * Spanish translation
3
- * @name Spanish
4
- * @anchor Spanish
5
- * @author Giovanni Ariza, Aristobulo Gomez and Roberto Poo
6
- */
7
-
8
- {
9
- "sProcessing": "Procesando...",
10
- "sLengthMenu": "Mostrar _MENU_ registros",
11
- "sZeroRecords": "No se encontraron resultados",
12
- "sEmptyTable": "Ningún dato disponible en esta tabla =(",
13
- "sInfo": "Mostrando registros del _START_ al _END_ de un total de _TOTAL_ registros",
14
- "sInfoEmpty": "Mostrando registros del 0 al 0 de un total de 0 registros",
15
- "sInfoFiltered": "(filtrado de un total de _MAX_ registros)",
16
- "sLengthMenu": "&nbsp; con _MENU_ por página",
17
- "sInfoPostFix": "",
18
- "sSearch": "Buscar:",
19
- "sUrl": "",
20
- "sInfoThousands": ",",
21
- "sLoadingRecords": "Cargando...",
22
- "oPaginate": {
23
- "sFirst": "Primero",
24
- "sLast": "Último",
25
- "sNext": "Siguiente",
26
- "sPrevious": "Anterior"
27
- },
28
- "oAria": {
29
- "sSortAscending": ": Activar para ordenar la columna de manera ascendente",
30
- "sSortDescending": ": Activar para ordenar la columna de manera descendente"
31
- },
32
- "buttons": {
33
- "copy": "Copiar",
34
- "colvis": "Mostrar/Ocultar"
35
- }
36
- }
@@ -1,30 +0,0 @@
1
- /**
2
- * Dutch translation
3
- * @name Dutch
4
- * @anchor Dutch
5
- * @author <a href="http://www.blikgooien.nl/">Erwin Kerk</a> and <i>ashwin</i>
6
- */
7
-
8
- {
9
- "sProcessing": "Bezig...",
10
- "sLengthMenu": "_MENU_ resultaten weergeven",
11
- "sZeroRecords": "Geen resultaten gevonden",
12
- "sInfo": "_START_ tot _END_ van _TOTAL_ resultaten",
13
- "sInfoEmpty": "Geen resultaten om weer te geven",
14
- "sInfoFiltered": " (gefilterd uit _MAX_ resultaten)",
15
- "sInfoPostFix": "",
16
- "sSearch": "Zoeken:",
17
- "sEmptyTable": "Geen resultaten aanwezig in de tabel",
18
- "sInfoThousands": ".",
19
- "sLoadingRecords": "Een moment geduld aub - bezig met laden...",
20
- "oPaginate": {
21
- "sFirst": "Eerste",
22
- "sLast": "Laatste",
23
- "sNext": "Volgende",
24
- "sPrevious": "Vorige"
25
- },
26
- "oAria": {
27
- "sSortAscending": ": activeer om kolom oplopend te sorteren",
28
- "sSortDescending": ": activeer om kolom aflopend te sorteren"
29
- }
30
- }
@@ -1,31 +0,0 @@
1
- flash = (message, status = '') ->
2
- @context[0].oFeatures.bProcessing = false
3
-
4
- message ||= 'Processing...'
5
-
6
- if status == 'danger'
7
- message = 'Error: ' + message
8
-
9
- $processing = $(@table().node()).siblings('.dataTables_processing')
10
-
11
- if status.length > 0
12
- $processing.addClass("alert-#{status}")
13
-
14
- $processing.html(message).show()
15
-
16
- timeout = $processing.data('timeout')
17
- clearTimeout(timeout) if timeout
18
-
19
- delay = (if status == 'danger' then 4000 else 1500)
20
-
21
- $processing.html(message).data('timeout', setTimeout( =>
22
- $processing.html('Processing...')
23
- $processing.removeClass('alert-success alert-info alert-warning alert-danger alert-error')
24
- $processing.hide()
25
- @context[0].oFeatures.bProcessing = true
26
- , delay)
27
- )
28
-
29
- return @
30
-
31
- $.fn.DataTable.Api.register('flash()', flash);
@@ -1,217 +0,0 @@
1
- # To achieve inline crud, we use rails' data-remote links, and override their behaviour when inside a datatable
2
- # This works with EffectiveForm.remote_form which is part of the effective_bootstrap gem.
3
-
4
- # We click the New/Edit/Action button from the col-actions
5
- $(document).on 'ajax:beforeSend', '.dataTables_wrapper .col-actions', (e, xhr, settings) ->
6
- $action = $(e.target)
7
- $table = $(e.target).closest('table')
8
-
9
- return true if ('' + $action.data('inline')) == 'false'
10
-
11
- $params = $.param({_datatable_id: $table.attr('id'), _datatable_attributes: $table.data('attributes'), _datatable_action: true })
12
- settings.url += (if settings.url.indexOf('?') == -1 then '?' else '&') + $params
13
-
14
- if $action.closest('.effective-datatables-inline-row,table.dataTable').hasClass('effective-datatables-inline-row')
15
- # Nothing.
16
- else if $action.closest('tr').parent().prop('tagName') == 'THEAD'
17
- beforeNew($action)
18
- else
19
- beforeEdit($action)
20
-
21
- true
22
-
23
- # We have either completed the resource action, or fetched the inline form to load.
24
- $(document).on 'ajax:success', '.dataTables_wrapper .col-actions', (event, data) ->
25
- $action = $(event.target)
26
-
27
- return true if ('' + $action.data('inline')) == 'false'
28
-
29
- if data.length > 0
30
- return true if data.indexOf('Turbolinks.clearCache()') == 0 && data.includes("Turbolinks.visit(")
31
- return true if data.indexOf('<html') >= 0
32
-
33
- if ($action.data('method') || 'get') == 'get'
34
- if $action.closest('tr').parent().prop('tagName') == 'THEAD' then afterNew($action) else afterEdit($action)
35
- else
36
- afterAction($action)
37
-
38
- EffectiveForm.remote_form_payload = ''
39
- EffectiveForm.remote_form_commit = ''
40
- EffectiveForm.remote_form_flash = ''
41
-
42
- true
43
-
44
- # There was an error completing something
45
- $(document).on 'ajax:error', '.dataTables_wrapper', (event) ->
46
- $action = $(event.target)
47
-
48
- return true if ('' + $action.data('inline')) == 'false'
49
-
50
- afterError($action)
51
-
52
- EffectiveForm.remote_form_payload = ''
53
- EffectiveForm.remote_form_commit = ''
54
- EffectiveForm.remote_form_flash = ''
55
- true
56
-
57
- # Submitting an inline datatables form
58
- $(document).on 'ajax:beforeSend', '.dataTables_wrapper .col-inline-form', (e, xhr, settings) ->
59
- $table = $(e.target).closest('table')
60
-
61
- $params = $.param({_datatable_id: $table.attr('id'), _datatable_attributes: $table.data('attributes') })
62
- settings.url += (if settings.url.indexOf('?') == -1 then '?' else '&') + $params
63
-
64
- true
65
-
66
- # The inline form has been submitted successfully
67
- $(document).on 'effective-form:success', '.dataTables_wrapper .col-inline-form', (event, flash) ->
68
- $action = $(event.target)
69
-
70
- $tr = $action.closest('tr')
71
- $table = $tr.closest('table')
72
-
73
- if $tr.hasClass('effective-datatables-new-resource')
74
- $table.DataTable().flash(flash || 'Item created', 'success')
75
- $tr.fadeOut('slow')
76
-
77
- $actions = $table.children('thead').find('th.col-actions')
78
- $actions.children('svg').remove()
79
- $actions.children('a').fadeIn()
80
- else
81
- $table.DataTable().flash(flash || 'Item updated', 'success')
82
- $tr.fadeOut('slow')
83
-
84
- $table.DataTable().draw()
85
-
86
- beforeNew = ($action) ->
87
- $table = $action.closest('table')
88
- $th = $action.closest('th')
89
-
90
- # Hide New Button
91
- $th.children('a').hide()
92
-
93
- # Append spinner and show Processing
94
- $th.append($table.data('spinner'))
95
- $table.DataTable().flash()
96
- $table.one 'draw.dt', (event) ->
97
- $th.find('a').show().siblings('svg').remove() if event.target == event.currentTarget
98
-
99
- afterNew = ($action) ->
100
- $tr = $action.closest('tr')
101
- $table = $tr.closest('table')
102
- $action.siblings('svg').remove()
103
-
104
- html = buildRow($tr.children('th').length, EffectiveForm.remote_form_payload)
105
-
106
- $tr = $("<tr class='effective-datatables-inline-row effective-datatables-new-resource' role='row'>#{html}</tr>")
107
- $table.children('tbody').prepend($tr)
108
-
109
- expand($table)
110
- $tr.trigger('turbolinks:load')
111
- $tr.hide().fadeIn()
112
-
113
- beforeEdit = ($action) ->
114
- $table = $action.closest('table')
115
- $td = $action.closest('td')
116
-
117
- # Hide dropdown
118
- $td.find('.dropdown-toggle').dropdown('toggle')
119
- $td.children('.btn-group').hide()
120
- $td.children('a').hide()
121
-
122
- # Append spinner and show Processing
123
- $td.append($table.data('spinner'))
124
- $table.DataTable().flash()
125
-
126
- afterEdit = ($action) ->
127
- $tr = $action.closest('tr')
128
- $table = $tr.closest('table')
129
-
130
- html = buildRow($tr.children('td').length, EffectiveForm.remote_form_payload)
131
-
132
- $tr.data('inline-form-original-html', $tr.children().detach())
133
- $tr.html(html)
134
- $tr.addClass('effective-datatables-inline-row')
135
-
136
- expand($table)
137
- $tr.trigger('turbolinks:load')
138
- $tr.hide().fadeIn()
139
-
140
- # This is when one of the resource actions completes
141
- afterAction = ($action) ->
142
- $table = $action.closest('table')
143
-
144
- if EffectiveForm.remote_form_flash.length > 0
145
- flash = EffectiveForm.remote_form_flash[0]
146
- $table.DataTable().flash(flash[1], flash[0])
147
- else
148
- $table.DataTable().flash('Successfully ' + $action.attr('title'), 'success')
149
-
150
- $table.DataTable().draw()
151
-
152
- afterError = ($action) ->
153
- $table = $action.closest('table')
154
- $td = $action.closest('td')
155
-
156
- # Show dropdown
157
- $td.children('.btn-group').show()
158
-
159
- # Hide spinner
160
- $td.children('svg').hide()
161
-
162
- # Cancel
163
- cancel($table)
164
-
165
- # Don't redraw
166
- $table.DataTable().flash('unable to ' + ($action.attr('title') || 'complete action'), 'danger')
167
-
168
- buildRow = (length, payload) ->
169
- "<td class='col-inline-form' colspan='#{length-1}'><div class='container'>#{payload}</div></td>" +
170
- "<td class='col-actions col-actions-inline-form'>" +
171
- "<a href='#' class='btn btn-sm btn-outline-primary' title='Cancel' data-role='inline-form-cancel'>Cancel</a>" +
172
- "</td>"
173
-
174
- expand = ($table) ->
175
- $wrapper = $table.closest('.dataTables_wrapper').addClass('effective-datatables-inline-expanded')
176
- $table.on 'draw.dt', (event) ->
177
- $wrapper.removeClass('effective-datatables-inline-expanded') if event.target == event.currentTarget
178
-
179
- cancel = ($table) ->
180
- $wrapper = $table.closest('.dataTables_wrapper')
181
- if $wrapper.find('.effective-datatables-inline-row').length == 0
182
- $wrapper.removeClass('effective-datatables-inline-expanded')
183
-
184
- # Cancel button clicked. Blow away new tr, or restore edit tr
185
- # No data will have changed at this point
186
- $(document).on 'click', ".dataTables_wrapper a[data-role='inline-form-cancel']", (event) ->
187
- $tr = $(event.currentTarget).closest('tr')
188
-
189
- if $tr.hasClass('effective-datatables-new-resource')
190
- $tr.fadeOut('slow', ->
191
- $table = $(this).closest('table')
192
-
193
- $actions = $table.children('thead').find('th.col-actions')
194
- $actions.children('svg').remove()
195
- $actions.children('a').fadeIn()
196
-
197
- $(this).remove()
198
- cancel($table)
199
- )
200
- else
201
- $tr.fadeOut('slow', ->
202
- $table = $(this).closest('table')
203
- $tr.html($tr.data('inline-form-original-html'))
204
-
205
- $td = $tr.children('.col-actions').first()
206
- $td.children('svg').remove()
207
-
208
- $toggle = $td.find('.dropdown-toggle')
209
- $toggle.dropdown('toggle') if $toggle.parent().hasClass('show')
210
- $td.children('.btn-group').show()
211
- $td.children('a').show()
212
-
213
- $tr.removeClass('effective-datatables-inline-row').fadeIn()
214
- cancel($table)
215
- )
216
-
217
- false
@@ -1,7 +0,0 @@
1
- $.extend(true, $.fn.dataTable.Buttons.defaults, {
2
- dom: {
3
- button: {
4
- className: 'btn btn-link btn-sm'
5
- }
6
- }
7
- });