effective_datatables 3.7.10 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
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
- });