effective_datatables 4.17.4 → 4.19.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 (24) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +21 -0
  3. data/app/assets/javascripts/dataTables/UPGRADE.md +17 -0
  4. data/app/assets/javascripts/dataTables/buttons/buttons.bootstrap4.js +73 -19
  5. data/app/assets/javascripts/dataTables/buttons/buttons.colVis.js +166 -120
  6. data/app/assets/javascripts/dataTables/buttons/buttons.html5.js +749 -667
  7. data/app/assets/javascripts/dataTables/buttons/buttons.print.js +96 -64
  8. data/app/assets/javascripts/dataTables/buttons/dataTables.buttons.js +1568 -909
  9. data/app/assets/javascripts/dataTables/dataTables.bootstrap4.js +172 -154
  10. data/app/assets/javascripts/dataTables/jquery.dataTables.js +3119 -2704
  11. data/app/assets/javascripts/dataTables/responsive/dataTables.responsive.js +707 -531
  12. data/app/assets/javascripts/dataTables/responsive/responsive.bootstrap4.js +61 -33
  13. data/app/assets/javascripts/dataTables/rowReorder/dataTables.rowReorder.js +961 -740
  14. data/app/assets/javascripts/dataTables/rowReorder/rowReorder.bootstrap4.js +50 -30
  15. data/app/assets/javascripts/effective_datatables/filters.js.coffee +88 -0
  16. data/app/assets/stylesheets/dataTables/buttons/buttons.bootstrap4.scss +178 -151
  17. data/app/assets/stylesheets/dataTables/dataTables.bootstrap4.scss +300 -81
  18. data/app/assets/stylesheets/dataTables/responsive/responsive.bootstrap4.scss +54 -71
  19. data/app/assets/stylesheets/dataTables/rowReorder/rowReorder.bootstrap4.scss +23 -4
  20. data/app/assets/stylesheets/effective_datatables/_overrides.bootstrap4.scss +81 -39
  21. data/app/views/effective/datatables/_filter_date_range.html.haml +37 -9
  22. data/app/views/effective/datatables/_filters.html.haml +1 -1
  23. data/lib/effective_datatables/version.rb +1 -1
  24. metadata +3 -2
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * Print button for Buttons and DataTables.
3
- * 2016 SpryMedia Ltd - datatables.net/license
3
+ * © SpryMedia Ltd - datatables.net/license
4
4
  */
5
5
 
6
6
  (function( factory ){
@@ -12,21 +12,37 @@
12
12
  }
13
13
  else if ( typeof exports === 'object' ) {
14
14
  // CommonJS
15
- module.exports = function (root, $) {
16
- if ( ! root ) {
17
- root = window;
18
- }
19
-
20
- if ( ! $ || ! $.fn.dataTable ) {
21
- $ = require('datatables.net')(root, $).$;
15
+ var jq = require('jquery');
16
+ var cjsRequires = function (root, $) {
17
+ if ( ! $.fn.dataTable ) {
18
+ require('datatables.net')(root, $);
22
19
  }
23
20
 
24
21
  if ( ! $.fn.dataTable.Buttons ) {
25
22
  require('datatables.net-buttons')(root, $);
26
23
  }
27
-
28
- return factory( $, root, root.document );
29
24
  };
25
+
26
+ if (typeof window === 'undefined') {
27
+ module.exports = function (root, $) {
28
+ if ( ! root ) {
29
+ // CommonJS environments without a window global must pass a
30
+ // root. This will give an error otherwise
31
+ root = window;
32
+ }
33
+
34
+ if ( ! $ ) {
35
+ $ = jq( root );
36
+ }
37
+
38
+ cjsRequires( root, $ );
39
+ return factory( $, root, root.document );
40
+ };
41
+ }
42
+ else {
43
+ cjsRequires( window, jq );
44
+ module.exports = factory( jq, window, window.document );
45
+ }
30
46
  }
31
47
  else {
32
48
  // Browser
@@ -37,7 +53,8 @@
37
53
  var DataTable = $.fn.dataTable;
38
54
 
39
55
 
40
- var _link = document.createElement( 'a' );
56
+
57
+ var _link = document.createElement('a');
41
58
 
42
59
  /**
43
60
  * Clone link and style tags, taking into account the need to change the source
@@ -45,13 +62,13 @@ var _link = document.createElement( 'a' );
45
62
  *
46
63
  * @param {node} el Element to convert
47
64
  */
48
- var _styleToAbs = function( el ) {
65
+ var _styleToAbs = function (el) {
49
66
  var url;
50
67
  var clone = $(el).clone()[0];
51
68
  var linkHost;
52
69
 
53
- if ( clone.nodeName.toLowerCase() === 'link' ) {
54
- clone.href = _relToAbs( clone.href );
70
+ if (clone.nodeName.toLowerCase() === 'link') {
71
+ clone.href = _relToAbs(clone.href);
55
72
  }
56
73
 
57
74
  return clone.outerHTML;
@@ -63,7 +80,7 @@ var _styleToAbs = function( el ) {
63
80
  *
64
81
  * @param {string} href URL
65
82
  */
66
- var _relToAbs = function( href ) {
83
+ var _relToAbs = function (href) {
67
84
  // Assign to a link on the original page so the browser will do all the
68
85
  // hard work of figuring out where the file actually is
69
86
  _link.href = href;
@@ -71,120 +88,135 @@ var _relToAbs = function( href ) {
71
88
 
72
89
  // IE doesn't have a trailing slash on the host
73
90
  // Chrome has it on the pathname
74
- if ( linkHost.indexOf('/') === -1 && _link.pathname.indexOf('/') !== 0) {
91
+ if (linkHost.indexOf('/') === -1 && _link.pathname.indexOf('/') !== 0) {
75
92
  linkHost += '/';
76
93
  }
77
94
 
78
- return _link.protocol+"//"+linkHost+_link.pathname+_link.search;
95
+ return _link.protocol + '//' + linkHost + _link.pathname + _link.search;
79
96
  };
80
97
 
81
-
82
98
  DataTable.ext.buttons.print = {
83
99
  className: 'buttons-print',
84
100
 
85
- text: function ( dt ) {
86
- return dt.i18n( 'buttons.print', 'Print' );
101
+ text: function (dt) {
102
+ return dt.i18n('buttons.print', 'Print');
87
103
  },
88
104
 
89
- action: function ( e, dt, button, config ) {
105
+ action: function (e, dt, button, config) {
90
106
  var data = dt.buttons.exportData(
91
- $.extend( {decodeEntities: false}, config.exportOptions ) // XSS protection
107
+ $.extend({ decodeEntities: false }, config.exportOptions) // XSS protection
92
108
  );
93
- var exportInfo = dt.buttons.exportInfo( config );
109
+ var exportInfo = dt.buttons.exportInfo(config);
94
110
  var columnClasses = dt
95
- .columns( config.exportOptions.columns )
111
+ .columns(config.exportOptions.columns)
96
112
  .flatten()
97
- .map( function (idx) {
113
+ .map(function (idx) {
98
114
  return dt.settings()[0].aoColumns[dt.column(idx).index()].sClass;
99
- } )
115
+ })
100
116
  .toArray();
101
117
 
102
- var addRow = function ( d, tag ) {
118
+ var addRow = function (d, tag) {
103
119
  var str = '<tr>';
104
120
 
105
- for ( var i=0, ien=d.length ; i<ien ; i++ ) {
121
+ for (var i = 0, ien = d.length; i < ien; i++) {
106
122
  // null and undefined aren't useful in the print output
107
- var dataOut = d[i] === null || d[i] === undefined ?
108
- '' :
109
- d[i];
110
- var classAttr = columnClasses[i] ?
111
- 'class="'+columnClasses[i]+'"' :
112
- '';
113
-
114
- str += '<'+tag+' '+classAttr+'>'+dataOut+'</'+tag+'>';
123
+ var dataOut = d[i] === null || d[i] === undefined ? '' : d[i];
124
+ var classAttr = columnClasses[i] ? 'class="' + columnClasses[i] + '"' : '';
125
+
126
+ str += '<' + tag + ' ' + classAttr + '>' + dataOut + '</' + tag + '>';
115
127
  }
116
128
 
117
129
  return str + '</tr>';
118
130
  };
119
131
 
120
132
  // Construct a table for printing
121
- var html = '<table class="'+dt.table().node().className+'">';
133
+ var html = '<table class="' + dt.table().node().className + '">';
122
134
 
123
- if ( config.header ) {
124
- html += '<thead>'+ addRow( data.header, 'th' ) +'</thead>';
135
+ if (config.header) {
136
+ html += '<thead>' + addRow(data.header, 'th') + '</thead>';
125
137
  }
126
138
 
127
139
  html += '<tbody>';
128
- for ( var i=0, ien=data.body.length ; i<ien ; i++ ) {
129
- html += addRow( data.body[i], 'td' );
140
+ for (var i = 0, ien = data.body.length; i < ien; i++) {
141
+ html += addRow(data.body[i], 'td');
130
142
  }
131
143
  html += '</tbody>';
132
144
 
133
- if ( config.footer && data.footer ) {
134
- html += '<tfoot>'+ addRow( data.footer, 'th' ) +'</tfoot>';
145
+ if (config.footer && data.footer) {
146
+ html += '<tfoot>' + addRow(data.footer, 'th') + '</tfoot>';
135
147
  }
136
148
  html += '</table>';
137
149
 
138
150
  // Open a new window for the printable table
139
- var win = window.open( '', '' );
151
+ var win = window.open('', '');
152
+
153
+ if (!win) {
154
+ dt.buttons.info(
155
+ dt.i18n('buttons.printErrorTitle', 'Unable to open print view'),
156
+ dt.i18n(
157
+ 'buttons.printErrorMsg',
158
+ 'Please allow popups in your browser for this site to be able to view the print view.'
159
+ ),
160
+ 5000
161
+ );
162
+
163
+ return;
164
+ }
165
+
140
166
  win.document.close();
141
167
 
142
168
  // Inject the title and also a copy of the style and link tags from this
143
169
  // document so the table can retain its base styling. Note that we have
144
170
  // to use string manipulation as IE won't allow elements to be created
145
171
  // in the host document and then appended to the new window.
146
- var head = '<title>'+exportInfo.title+'</title>';
147
- $('style, link').each( function () {
148
- head += _styleToAbs( this );
149
- } );
172
+ var head = '<title>' + exportInfo.title + '</title>';
173
+ $('style, link').each(function () {
174
+ head += _styleToAbs(this);
175
+ });
150
176
 
151
177
  try {
152
178
  win.document.head.innerHTML = head; // Work around for Edge
153
- }
154
- catch (e) {
155
- $(win.document.head).html( head ); // Old IE
179
+ } catch (e) {
180
+ $(win.document.head).html(head); // Old IE
156
181
  }
157
182
 
158
183
  // Inject the table and other surrounding information
159
184
  win.document.body.innerHTML =
160
- '<h1>'+exportInfo.title+'</h1>'+
161
- '<div>'+(exportInfo.messageTop || '')+'</div>'+
162
- html+
163
- '<div>'+(exportInfo.messageBottom || '')+'</div>';
185
+ '<h1>' +
186
+ exportInfo.title +
187
+ '</h1>' +
188
+ '<div>' +
189
+ (exportInfo.messageTop || '') +
190
+ '</div>' +
191
+ html +
192
+ '<div>' +
193
+ (exportInfo.messageBottom || '') +
194
+ '</div>';
164
195
 
165
196
  $(win.document.body).addClass('dt-print-view');
166
197
 
167
- $('img', win.document.body).each( function ( i, img ) {
168
- img.setAttribute( 'src', _relToAbs( img.getAttribute('src') ) );
169
- } );
198
+ $('img', win.document.body).each(function (i, img) {
199
+ img.setAttribute('src', _relToAbs(img.getAttribute('src')));
200
+ });
170
201
 
171
- if ( config.customize ) {
172
- config.customize( win, config, dt );
202
+ if (config.customize) {
203
+ config.customize(win, config, dt);
173
204
  }
174
205
 
175
206
  // Allow stylesheets time to load
176
207
  var autoPrint = function () {
177
- if ( config.autoPrint ) {
208
+ if (config.autoPrint) {
178
209
  win.print(); // blocking - so close will not
179
210
  win.close(); // execute until this is done
180
211
  }
181
212
  };
182
213
 
183
- if ( navigator.userAgent.match(/Trident\/\d.\d/) ) { // IE needs to call this without a setTimeout
214
+ if (navigator.userAgent.match(/Trident\/\d.\d/)) {
215
+ // IE needs to call this without a setTimeout
184
216
  autoPrint();
185
217
  }
186
218
  else {
187
- win.setTimeout( autoPrint, 1000 );
219
+ win.setTimeout(autoPrint, 1000);
188
220
  }
189
221
  },
190
222
 
@@ -206,5 +238,5 @@ DataTable.ext.buttons.print = {
206
238
  };
207
239
 
208
240
 
209
- return DataTable.Buttons;
241
+ return DataTable;
210
242
  }));