jquery-datatables 1.10.19.1 → 1.10.20
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/.gitattributes +1 -0
- data/README.md +28 -1
- data/app/assets/javascripts/datatables/dataTables.uikit.js +2 -2
- data/app/assets/javascripts/datatables/extensions/AutoFill/dataTables.autoFill.js +42 -29
- data/app/assets/javascripts/datatables/extensions/Buttons/buttons.bootstrap.js +1 -1
- data/app/assets/javascripts/datatables/extensions/Buttons/buttons.bootstrap4.js +8 -2
- data/app/assets/javascripts/datatables/extensions/Buttons/buttons.colVis.js +6 -3
- data/app/assets/javascripts/datatables/extensions/Buttons/buttons.foundation.js +5 -4
- data/app/assets/javascripts/datatables/extensions/Buttons/buttons.html5.js +58 -6
- data/app/assets/javascripts/datatables/extensions/Buttons/buttons.print.js +16 -5
- data/app/assets/javascripts/datatables/extensions/Buttons/buttons.semanticui.js +1 -1
- data/app/assets/javascripts/datatables/extensions/Buttons/dataTables.buttons.js +267 -152
- data/app/assets/javascripts/datatables/extensions/ColReorder/colReorder.foundation.js +1 -1
- data/app/assets/javascripts/datatables/extensions/ColReorder/dataTables.colReorder.js +121 -52
- data/app/assets/javascripts/datatables/extensions/FixedColumns/dataTables.fixedColumns.js +32 -5
- data/app/assets/javascripts/datatables/extensions/KeyTable/dataTables.keyTable.js +166 -63
- data/app/assets/javascripts/datatables/extensions/KeyTable/keyTable.foundation.js +1 -1
- data/app/assets/javascripts/datatables/extensions/RowGroup/dataTables.rowGroup.js +105 -53
- data/app/assets/javascripts/datatables/extensions/RowGroup/rowGroup.foundation.js +1 -1
- data/app/assets/javascripts/datatables/extensions/RowGroup/{rowGroup.semanicui.js → rowGroup.semanticui.js} +0 -0
- data/app/assets/javascripts/datatables/extensions/RowReorder/dataTables.rowReorder.js +10 -9
- data/app/assets/javascripts/datatables/extensions/RowReorder/rowReorder.foundation.js +1 -1
- data/app/assets/javascripts/datatables/extensions/Scroller/dataTables.scroller.js +519 -636
- data/app/assets/javascripts/datatables/extensions/Scroller/scroller.foundation.js +1 -1
- data/app/assets/javascripts/datatables/extensions/Select/dataTables.select.js +49 -18
- data/app/assets/javascripts/datatables/extensions/Select/select.foundation.js +1 -1
- data/app/assets/javascripts/datatables/jquery.dataTables.js +97 -60
- data/app/assets/javascripts/datatables/plugins/api/average.js +7 -6
- data/app/assets/javascripts/datatables/plugins/api/sum.js +7 -6
- data/app/assets/javascripts/datatables/plugins/pagination/ellipses.js +160 -0
- data/app/assets/javascripts/datatables/plugins/pagination/extjs.js +137 -0
- data/app/assets/javascripts/datatables/plugins/pagination/four_button.js +110 -0
- data/app/assets/javascripts/datatables/plugins/pagination/full_numbers_no_ellipses.js +59 -0
- data/app/assets/javascripts/datatables/plugins/pagination/input.js +22 -19
- data/app/assets/javascripts/datatables/plugins/pagination/scrolling.js +130 -0
- data/app/assets/javascripts/datatables/plugins/pagination/select.js +97 -0
- data/app/assets/javascripts/datatables/plugins/pagination/simple_incremental_bootstrap.js +154 -0
- data/app/assets/javascripts/datatables/plugins/pagination/simple_numbers_no_ellipses.js +59 -0
- data/app/assets/javascripts/datatables/plugins/search/dataTables.alphabetSearch.js +440 -399
- data/app/assets/javascripts/datatables/plugins/sorting/enum.js +51 -0
- data/app/assets/javascripts/datatables/plugins/type-detection/date-dd-MMM-yyyy.js +63 -0
- data/app/assets/javascripts/datatables/plugins/type-detection/date-de.js +125 -0
- data/app/assets/javascripts/datatables/plugins/type-detection/date-eu.js +64 -0
- data/app/assets/javascripts/datatables/plugins/type-detection/date-euro.js +48 -0
- data/app/assets/javascripts/datatables/plugins/type-detection/date-uk.js +35 -12
- data/app/assets/javascripts/datatables/plugins/type-detection/datetime-moment.js +74 -0
- data/app/assets/javascripts/datatables/plugins/type-detection/datetime-us.js +86 -0
- data/app/assets/javascripts/datatables/plugins/type-detection/file-size.js +37 -13
- data/app/assets/javascripts/datatables/plugins/type-detection/ip-address.js +113 -11
- data/app/assets/javascripts/datatables/plugins/type-detection/numString.js +63 -0
- data/app/assets/javascripts/datatables/plugins/type-detection/percent.js +34 -0
- data/app/assets/javascripts/datatables/plugins/type-detection/time-elapsed-dhms.js +42 -0
- data/app/assets/javascripts/datatables/plugins/type-detection/time.js +56 -0
- data/app/assets/javascripts/datatables/plugins/type-detection/title-numeric.js +40 -0
- data/app/assets/javascripts/datatables/plugins/type-detection/title-string.js +36 -0
- data/app/assets/stylesheets/datatables/extensions/AutoFill/autoFill.dataTables.scss +10 -3
- data/app/assets/stylesheets/datatables/extensions/Buttons/buttons.bootstrap.scss +12 -3
- data/app/assets/stylesheets/datatables/extensions/Buttons/buttons.bootstrap4.scss +13 -6
- data/app/assets/stylesheets/datatables/extensions/Buttons/buttons.dataTables.scss +2 -0
- data/app/assets/stylesheets/datatables/extensions/Buttons/buttons.foundation.scss +5 -1
- data/app/assets/stylesheets/datatables/extensions/Buttons/buttons.jqueryui.scss +1 -0
- data/app/assets/stylesheets/datatables/extensions/Buttons/buttons.semanticui.scss +2 -1
- data/app/assets/stylesheets/datatables/extensions/Buttons/common.scss +10 -0
- data/app/assets/stylesheets/datatables/extensions/Buttons/mixins.scss +42 -30
- data/app/assets/stylesheets/datatables/extensions/FixedColumns/fixedColumns.bootstrap.scss +11 -7
- data/app/assets/stylesheets/datatables/extensions/FixedColumns/fixedColumns.foundation.scss +1 -0
- data/app/assets/stylesheets/datatables/extensions/KeyTable/keyTable.dataTables.scss +13 -5
- data/app/assets/stylesheets/datatables/extensions/RowGroup/rowGroup.dataTables.scss +20 -2
- data/app/assets/stylesheets/datatables/extensions/Scroller/scroller.dataTables.scss +15 -2
- data/lib/jquery-datatables/version.rb +1 -1
- metadata +26 -12
- data/app/assets/javascripts/datatables/dataTables.bootstrap2.js +0 -162
- data/app/assets/javascripts/datatables/extensions/ColReorder/colReorder.semanicui.js +0 -38
- data/app/assets/javascripts/datatables/extensions/FixedColumns/fixedColumns.semanicui.js +0 -38
- data/app/assets/javascripts/datatables/extensions/FixedHeader/fixedHeader.semanicui.js +0 -38
- data/app/assets/javascripts/datatables/extensions/KeyTable/keyTable.semanicui.js +0 -38
- data/app/assets/javascripts/datatables/extensions/RowReorder/rowReorder.semanicui.js +0 -38
- data/app/assets/stylesheets/datatables/dataTables.bootstrap2.scss +0 -178
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f7a56fe04ecf89c43234bf967bc23952b91b99f00715c6d9f86bb19b7c70eaf7
|
4
|
+
data.tar.gz: b4de1b400a35c57b0e0ab3d209ba70428b9a60a3f6ee305376a14c6c4d6d0b39
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8447a4fc4bdcc44a3eb0e9aef4891e2bb135c4f0932b644bcb9f4358cb687d12562a67557c04e9901efca6dca4842c3167cbae0c082c6ffa14fdca5bfd090c1f
|
7
|
+
data.tar.gz: dc0d16e4518677b068d7fa84cc881de5a31d71779a806d8983b8735213c324b806ab17dca424b15321b70be9ccfb1c74742bd97c5ff963f31ad3b91167ce8b23
|
data/.gitattributes
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
app/assets/* linguist-vendored
|
data/README.md
CHANGED
@@ -7,8 +7,16 @@ Include [jQuery DataTables](http://www.datatables.net/) in your asset pipeline w
|
|
7
7
|
|
8
8
|
### Requirements
|
9
9
|
|
10
|
+
**Rails 6.0+**
|
11
|
+
Since Webpacker the default JavaScript compiler for Rails 6. you can install via yarn.
|
12
|
+
|
13
|
+
see this [official](https://datatables.net/download/index) pages for details.
|
14
|
+
|
15
|
+
However, if your app still using javascript with sprockets, this gem is still good to go.
|
16
|
+
|
17
|
+
|
10
18
|
**Rails 5.1+**
|
11
|
-
The Rails JavaScript helpers has been rewritten in a new gem called rails-ujs and they use vanilla JavaScript, so jQuery is not a dependency of Rails anymore. Since
|
19
|
+
The Rails JavaScript helpers has been rewritten in a new gem called rails-ujs and they use vanilla JavaScript, so jQuery is not a dependency of Rails anymore. Since Jquery datatables relies on it, install it with ```bin/yarn add jquery``` or via ```gem 'jquery-rails'``` and add ```//= require jquery``` to ```application.js```.
|
12
20
|
|
13
21
|
**NOTE:** Ensure that the `sass-rails` gem is presented in your Gemfile.
|
14
22
|
|
@@ -125,6 +133,25 @@ $(document).ready(function() {
|
|
125
133
|
});
|
126
134
|
```
|
127
135
|
|
136
|
+
And you will of course, need to have a html table (with a theader and tbody) with the id set to dttb. Here is an example:
|
137
|
+
|
138
|
+
```html
|
139
|
+
<table id="dttb" class="table table-hover">
|
140
|
+
<thead>
|
141
|
+
<tr>
|
142
|
+
<th> Panel No</th>
|
143
|
+
</tr>
|
144
|
+
</thead>
|
145
|
+
<tbody>
|
146
|
+
<% @panels.each do |panel| %>
|
147
|
+
<tr>
|
148
|
+
<td><%= link_to panel.no, panel %></td>
|
149
|
+
</tr>
|
150
|
+
<% end %>
|
151
|
+
</tbody>
|
152
|
+
</table>
|
153
|
+
```
|
154
|
+
|
128
155
|
### Server Side processing
|
129
156
|
|
130
157
|
Recommended use this gem
|
@@ -50,8 +50,8 @@ $.extend( true, DataTable.defaults, {
|
|
50
50
|
/* Default class modification */
|
51
51
|
$.extend( DataTable.ext.classes, {
|
52
52
|
sWrapper: "dataTables_wrapper uk-form dt-uikit",
|
53
|
-
sFilterInput: "uk-form-small",
|
54
|
-
sLengthSelect: "uk-form-small",
|
53
|
+
sFilterInput: "uk-form-small uk-input",
|
54
|
+
sLengthSelect: "uk-form-small uk-select",
|
55
55
|
sProcessing: "dataTables_processing uk-panel"
|
56
56
|
} );
|
57
57
|
|
@@ -1,15 +1,15 @@
|
|
1
|
-
/*! AutoFill 2.3.
|
2
|
-
* ©2008-
|
1
|
+
/*! AutoFill 2.3.4
|
2
|
+
* ©2008-2019 SpryMedia Ltd - datatables.net/license
|
3
3
|
*/
|
4
4
|
|
5
5
|
/**
|
6
6
|
* @summary AutoFill
|
7
7
|
* @description Add Excel like click and drag auto-fill options to DataTables
|
8
|
-
* @version 2.3.
|
8
|
+
* @version 2.3.4
|
9
9
|
* @file dataTables.autoFill.js
|
10
10
|
* @author SpryMedia Ltd (www.sprymedia.co.uk)
|
11
11
|
* @contact www.sprymedia.co.uk/contact
|
12
|
-
* @copyright Copyright 2010-
|
12
|
+
* @copyright Copyright 2010-2019 SpryMedia Ltd.
|
13
13
|
*
|
14
14
|
* This source file is free software, available under the following license:
|
15
15
|
* MIT license - http://datatables.net/license/mit
|
@@ -367,7 +367,8 @@ $.extend( AutoFill.prototype, {
|
|
367
367
|
start.column
|
368
368
|
};
|
369
369
|
var colIndx = dt.column.index( 'toData', end.column );
|
370
|
-
var
|
370
|
+
var endRow = dt.row( ':eq('+end.row+')', { page: 'current' } ); // Workaround for M581
|
371
|
+
var endCell = $( dt.cell( endRow.index(), colIndx ).node() );
|
371
372
|
|
372
373
|
// Be sure that is a DataTables controlled cell
|
373
374
|
if ( ! dt.cell( endCell ).any() ) {
|
@@ -388,10 +389,10 @@ $.extend( AutoFill.prototype, {
|
|
388
389
|
left = start.column < end.column ? startCell : endCell;
|
389
390
|
right = start.column < end.column ? endCell : startCell;
|
390
391
|
|
391
|
-
top = this._getPosition( top ).top;
|
392
|
-
left = this._getPosition( left ).left;
|
393
|
-
height = this._getPosition( bottom ).top + bottom.outerHeight() - top;
|
394
|
-
width = this._getPosition( right ).left + right.outerWidth() - left;
|
392
|
+
top = this._getPosition( top.get(0) ).top;
|
393
|
+
left = this._getPosition( left.get(0) ).left;
|
394
|
+
height = this._getPosition( bottom.get(0) ).top + bottom.outerHeight() - top;
|
395
|
+
width = this._getPosition( right.get(0) ).left + right.outerWidth() - left;
|
395
396
|
|
396
397
|
var select = this.dom.select;
|
397
398
|
select.top.css( {
|
@@ -584,9 +585,8 @@ $.extend( AutoFill.prototype, {
|
|
584
585
|
_getPosition: function ( node, targetParent )
|
585
586
|
{
|
586
587
|
var
|
587
|
-
currNode =
|
588
|
+
currNode = node,
|
588
589
|
currOffsetParent,
|
589
|
-
position,
|
590
590
|
top = 0,
|
591
591
|
left = 0;
|
592
592
|
|
@@ -595,23 +595,23 @@ $.extend( AutoFill.prototype, {
|
|
595
595
|
}
|
596
596
|
|
597
597
|
do {
|
598
|
-
|
598
|
+
// Don't use jQuery().position() the behaviour changes between 1.x and 3.x for
|
599
|
+
// tables
|
600
|
+
var positionTop = currNode.offsetTop;
|
601
|
+
var positionLeft = currNode.offsetLeft;
|
599
602
|
|
600
603
|
// jQuery doesn't give a `table` as the offset parent oddly, so use DOM directly
|
601
|
-
currOffsetParent = $( currNode
|
604
|
+
currOffsetParent = $( currNode.offsetParent );
|
602
605
|
|
603
|
-
top +=
|
604
|
-
left +=
|
605
|
-
|
606
|
-
top += parseInt( currOffsetParent.css('margin-top') ) * 1;
|
607
|
-
top += parseInt( currOffsetParent.css('border-top-width') ) * 1;
|
606
|
+
top += positionTop + parseInt( currOffsetParent.css('border-top-width') ) * 1;
|
607
|
+
left += positionLeft + parseInt( currOffsetParent.css('border-left-width') ) * 1;
|
608
608
|
|
609
609
|
// Emergency fall back. Shouldn't happen, but just in case!
|
610
|
-
if ( currNode.
|
610
|
+
if ( currNode.nodeName.toLowerCase() === 'body' ) {
|
611
611
|
break;
|
612
612
|
}
|
613
613
|
|
614
|
-
currNode = currOffsetParent; // for next loop
|
614
|
+
currNode = currOffsetParent.get(0); // for next loop
|
615
615
|
}
|
616
616
|
while ( currOffsetParent.get(0) !== targetParent.get(0) )
|
617
617
|
|
@@ -731,14 +731,18 @@ $.extend( AutoFill.prototype, {
|
|
731
731
|
var editor = dt.editor();
|
732
732
|
|
733
733
|
editor
|
734
|
-
.on( 'submitSuccess.
|
735
|
-
editor.off( '.
|
736
|
-
|
734
|
+
.on( 'submitSuccess.dtaf close.dtaf', function () {
|
735
|
+
editor.off( '.dtaf');
|
736
|
+
|
737
|
+
setTimeout( function () {
|
738
|
+
that._mouseup( e );
|
739
|
+
}, 100 );
|
737
740
|
} )
|
738
|
-
.on( 'submitComplete.
|
739
|
-
editor.off( '.
|
741
|
+
.on( 'submitComplete.dtaf preSubmitCancelled.dtaf close.dtaf', function () {
|
742
|
+
editor.off( '.dtaf');
|
740
743
|
} );
|
741
|
-
|
744
|
+
|
745
|
+
// Make the current input submit
|
742
746
|
editor.submit();
|
743
747
|
|
744
748
|
return;
|
@@ -750,6 +754,7 @@ $.extend( AutoFill.prototype, {
|
|
750
754
|
var selected = [];
|
751
755
|
var dtSettings = dt.settings()[0];
|
752
756
|
var dtColumns = dtSettings.aoColumns;
|
757
|
+
var enabledColumns = dt.columns( this.c.columns ).indexes();
|
753
758
|
|
754
759
|
// Can't use Array.prototype.map as IE8 doesn't support it
|
755
760
|
// Can't use $.map as jQuery flattens 2D arrays
|
@@ -757,7 +762,8 @@ $.extend( AutoFill.prototype, {
|
|
757
762
|
for ( var rowIdx=0 ; rowIdx<rows.length ; rowIdx++ ) {
|
758
763
|
selected.push(
|
759
764
|
$.map( columns, function (column) {
|
760
|
-
var
|
765
|
+
var row = dt.row( ':eq('+rows[rowIdx]+')', {page:'current'} ); // Workaround for M581
|
766
|
+
var cell = dt.cell( row.index(), column+':visible' );
|
761
767
|
var data = cell.data();
|
762
768
|
var cellIndex = cell.index();
|
763
769
|
var editField = dtColumns[ cellIndex.column ].editField;
|
@@ -766,6 +772,10 @@ $.extend( AutoFill.prototype, {
|
|
766
772
|
data = dtSettings.oApi._fnGetObjectDataFn( editField )( dt.row( cellIndex.row ).data() );
|
767
773
|
}
|
768
774
|
|
775
|
+
if ( enabledColumns.indexOf(cellIndex.column) === -1 ) {
|
776
|
+
return;
|
777
|
+
}
|
778
|
+
|
769
779
|
return {
|
770
780
|
cell: cell,
|
771
781
|
data: data,
|
@@ -938,6 +948,7 @@ $.extend( AutoFill.prototype, {
|
|
938
948
|
|
939
949
|
var dt = this.s.dt;
|
940
950
|
var cell;
|
951
|
+
var columns = dt.columns( this.c.columns ).indexes();
|
941
952
|
|
942
953
|
// Potentially allow modifications to the cells matrix
|
943
954
|
this._emitEvent( 'preAutoFill', [ dt, cells ] );
|
@@ -958,7 +969,9 @@ $.extend( AutoFill.prototype, {
|
|
958
969
|
for ( var j=0, jen=cells[i].length ; j<jen ; j++ ) {
|
959
970
|
cell = cells[i][j];
|
960
971
|
|
961
|
-
|
972
|
+
if ( columns.indexOf(cell.index.column) !== -1 ) {
|
973
|
+
cell.cell.data( cell.set );
|
974
|
+
}
|
962
975
|
}
|
963
976
|
}
|
964
977
|
|
@@ -1089,7 +1102,7 @@ AutoFill.actions = {
|
|
1089
1102
|
* @static
|
1090
1103
|
* @type String
|
1091
1104
|
*/
|
1092
|
-
AutoFill.version = '2.3.
|
1105
|
+
AutoFill.version = '2.3.4';
|
1093
1106
|
|
1094
1107
|
|
1095
1108
|
/**
|
@@ -38,14 +38,14 @@ var DataTable = $.fn.dataTable;
|
|
38
38
|
$.extend( true, DataTable.Buttons.defaults, {
|
39
39
|
dom: {
|
40
40
|
container: {
|
41
|
-
className: 'dt-buttons btn-group'
|
41
|
+
className: 'dt-buttons btn-group flex-wrap'
|
42
42
|
},
|
43
43
|
button: {
|
44
44
|
className: 'btn btn-secondary'
|
45
45
|
},
|
46
46
|
collection: {
|
47
47
|
tag: 'div',
|
48
|
-
className: '
|
48
|
+
className: 'dropdown-menu',
|
49
49
|
button: {
|
50
50
|
tag: 'a',
|
51
51
|
className: 'dt-button dropdown-item',
|
@@ -53,10 +53,16 @@ $.extend( true, DataTable.Buttons.defaults, {
|
|
53
53
|
disabled: 'disabled'
|
54
54
|
}
|
55
55
|
}
|
56
|
+
},
|
57
|
+
buttonCreated: function ( config, button ) {
|
58
|
+
return config.buttons ?
|
59
|
+
$('<div class="btn-group"/>').append(button) :
|
60
|
+
button;
|
56
61
|
}
|
57
62
|
} );
|
58
63
|
|
59
64
|
DataTable.ext.buttons.collection.className += ' dropdown-toggle';
|
65
|
+
DataTable.ext.buttons.collection.rightAlignClassName = 'dropdown-menu-right';
|
60
66
|
|
61
67
|
return DataTable.Buttons;
|
62
68
|
}));
|
@@ -108,6 +108,7 @@ $.extend( DataTable.ext.buttons, {
|
|
108
108
|
},
|
109
109
|
init: function ( dt, button, conf ) {
|
110
110
|
var that = this;
|
111
|
+
button.attr( 'data-cv-idx', conf.columns );
|
111
112
|
|
112
113
|
dt
|
113
114
|
.on( 'column-visibility.dt'+conf.namespace, function (e, settings) {
|
@@ -116,13 +117,15 @@ $.extend( DataTable.ext.buttons, {
|
|
116
117
|
}
|
117
118
|
} )
|
118
119
|
.on( 'column-reorder.dt'+conf.namespace, function (e, settings, details) {
|
119
|
-
// Don't rename buttons based on column name if the button
|
120
|
-
// controls more than one column!
|
121
120
|
if ( dt.columns( conf.columns ).count() !== 1 ) {
|
122
121
|
return;
|
123
122
|
}
|
124
123
|
|
125
|
-
|
124
|
+
// This button controls the same column index but the text for the column has
|
125
|
+
// changed
|
126
|
+
button.text( conf._columnText( dt, conf ) );
|
127
|
+
|
128
|
+
// Since its a different column, we need to check its visibility
|
126
129
|
that.active( dt.column( conf.columns ).visible() );
|
127
130
|
} );
|
128
131
|
|
@@ -42,11 +42,11 @@ var DataTable = $.fn.dataTable;
|
|
42
42
|
var collection = DataTable.ext.foundationVersion === 6 ?
|
43
43
|
{
|
44
44
|
tag: 'div',
|
45
|
-
className: '
|
45
|
+
className: 'dropdown-pane is-open button-group stacked'
|
46
46
|
} :
|
47
47
|
{
|
48
48
|
tag: 'ul',
|
49
|
-
className: '
|
49
|
+
className: 'f-dropdown open dropdown-pane is-open',
|
50
50
|
button: {
|
51
51
|
tag: 'li',
|
52
52
|
className: 'small',
|
@@ -70,7 +70,8 @@ $.extend( true, DataTable.Buttons.defaults, {
|
|
70
70
|
},
|
71
71
|
button: {
|
72
72
|
tag: 'a',
|
73
|
-
className: 'button small'
|
73
|
+
className: 'button small',
|
74
|
+
active: 'secondary'
|
74
75
|
},
|
75
76
|
buttonLiner: {
|
76
77
|
tag: null
|
@@ -80,7 +81,7 @@ $.extend( true, DataTable.Buttons.defaults, {
|
|
80
81
|
} );
|
81
82
|
|
82
83
|
|
83
|
-
DataTable.ext.buttons.collection.className = '
|
84
|
+
DataTable.ext.buttons.collection.className = 'dropdown';
|
84
85
|
|
85
86
|
|
86
87
|
return DataTable.Buttons;
|
@@ -48,6 +48,20 @@ function _pdfMake () {
|
|
48
48
|
return pdfmake || window.pdfMake;
|
49
49
|
}
|
50
50
|
|
51
|
+
DataTable.Buttons.pdfMake = function (_) {
|
52
|
+
if ( ! _ ) {
|
53
|
+
return _pdfMake();
|
54
|
+
}
|
55
|
+
pdfmake = m_ake;
|
56
|
+
}
|
57
|
+
|
58
|
+
DataTable.Buttons.jszip = function (_) {
|
59
|
+
if ( ! _ ) {
|
60
|
+
return _jsZip();
|
61
|
+
}
|
62
|
+
jszip = _;
|
63
|
+
}
|
64
|
+
|
51
65
|
|
52
66
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
53
67
|
* FileSaver.js dependency
|
@@ -422,6 +436,9 @@ function _addToZip( zip, obj ) {
|
|
422
436
|
|
423
437
|
// Return namespace attributes to being as such
|
424
438
|
str = str.replace( /_dt_b_namespace_token_/g, ':' );
|
439
|
+
|
440
|
+
// Remove testing name space that IE puts into the space preserve attr
|
441
|
+
str = str.replace( /xmlns:NS[\d]+="" NS[\d]+:/g, '' );
|
425
442
|
}
|
426
443
|
|
427
444
|
// Safari, IE and Edge will put empty name space attributes onto
|
@@ -505,11 +522,11 @@ function _excelColWidth( data, col ) {
|
|
505
522
|
|
506
523
|
// Max width rather than having potentially massive column widths
|
507
524
|
if ( max > 40 ) {
|
508
|
-
return
|
525
|
+
return 54; // 40 * 1.35
|
509
526
|
}
|
510
527
|
}
|
511
528
|
|
512
|
-
max *= 1.
|
529
|
+
max *= 1.35;
|
513
530
|
|
514
531
|
// And a min width
|
515
532
|
return max > 6 ? max : 6;
|
@@ -550,8 +567,9 @@ var excelStrings = {
|
|
550
567
|
'<workbookView xWindow="0" yWindow="0" windowWidth="25600" windowHeight="19020" tabRatio="500"/>'+
|
551
568
|
'</bookViews>'+
|
552
569
|
'<sheets>'+
|
553
|
-
'<sheet name="" sheetId="1" r:id="rId1"/>'+
|
570
|
+
'<sheet name="Sheet1" sheetId="1" r:id="rId1"/>'+
|
554
571
|
'</sheets>'+
|
572
|
+
'<definedNames/>'+
|
555
573
|
'</workbook>',
|
556
574
|
|
557
575
|
"xl/worksheets/sheet1.xml":
|
@@ -992,6 +1010,7 @@ DataTable.ext.buttons.excelHtml5 = {
|
|
992
1010
|
|
993
1011
|
var that = this;
|
994
1012
|
var rowPos = 0;
|
1013
|
+
var dataStartRow, dataEndRow;
|
995
1014
|
var getXml = function ( type ) {
|
996
1015
|
var str = excelStrings[ type ];
|
997
1016
|
|
@@ -1124,8 +1143,6 @@ DataTable.ext.buttons.excelHtml5 = {
|
|
1124
1143
|
rowPos++;
|
1125
1144
|
};
|
1126
1145
|
|
1127
|
-
$( 'sheets sheet', xlsx.xl['workbook.xml'] ).attr( 'name', _sheetname( config ) );
|
1128
|
-
|
1129
1146
|
if ( config.customizeData ) {
|
1130
1147
|
config.customizeData( data );
|
1131
1148
|
}
|
@@ -1154,15 +1171,20 @@ DataTable.ext.buttons.excelHtml5 = {
|
|
1154
1171
|
mergeCells( rowPos, data.header.length-1 );
|
1155
1172
|
}
|
1156
1173
|
|
1174
|
+
|
1157
1175
|
// Table itself
|
1158
1176
|
if ( config.header ) {
|
1159
1177
|
addRow( data.header, rowPos );
|
1160
1178
|
$('row:last c', rels).attr( 's', '2' ); // bold
|
1161
1179
|
}
|
1180
|
+
|
1181
|
+
dataStartRow = rowPos;
|
1162
1182
|
|
1163
1183
|
for ( var n=0, ie=data.body.length ; n<ie ; n++ ) {
|
1164
1184
|
addRow( data.body[n], rowPos );
|
1165
1185
|
}
|
1186
|
+
|
1187
|
+
dataEndRow = rowPos;
|
1166
1188
|
|
1167
1189
|
if ( config.footer && data.footer ) {
|
1168
1190
|
addRow( data.footer, rowPos);
|
@@ -1190,6 +1212,29 @@ DataTable.ext.buttons.excelHtml5 = {
|
|
1190
1212
|
} ) );
|
1191
1213
|
}
|
1192
1214
|
|
1215
|
+
// Workbook modifications
|
1216
|
+
var workbook = xlsx.xl['workbook.xml'];
|
1217
|
+
|
1218
|
+
$( 'sheets sheet', workbook ).attr( 'name', _sheetname( config ) );
|
1219
|
+
|
1220
|
+
// Auto filter for columns
|
1221
|
+
if ( config.autoFilter ) {
|
1222
|
+
$('mergeCells', rels).before( _createNode( rels, 'autoFilter', {
|
1223
|
+
attr: {
|
1224
|
+
ref: 'A'+dataStartRow+':'+createCellPos(data.header.length-1)+dataEndRow
|
1225
|
+
}
|
1226
|
+
} ) );
|
1227
|
+
|
1228
|
+
$('definedNames', workbook).append( _createNode( workbook, 'definedName', {
|
1229
|
+
attr: {
|
1230
|
+
name: '_xlnm._FilterDatabase',
|
1231
|
+
localSheetId: '0',
|
1232
|
+
hidden: 1
|
1233
|
+
},
|
1234
|
+
text: _sheetname(config)+'!$A$'+dataStartRow+':'+createCellPos(data.header.length-1)+dataEndRow
|
1235
|
+
} ) );
|
1236
|
+
}
|
1237
|
+
|
1193
1238
|
// Let the developer customise the document if they want to
|
1194
1239
|
if ( config.customize ) {
|
1195
1240
|
config.customize( xlsx, config, dt );
|
@@ -1244,7 +1289,11 @@ DataTable.ext.buttons.excelHtml5 = {
|
|
1244
1289
|
|
1245
1290
|
messageBottom: '*',
|
1246
1291
|
|
1247
|
-
createEmptyCells: false
|
1292
|
+
createEmptyCells: false,
|
1293
|
+
|
1294
|
+
autoFilter: false,
|
1295
|
+
|
1296
|
+
sheetName: ''
|
1248
1297
|
};
|
1249
1298
|
|
1250
1299
|
//
|
@@ -1280,6 +1329,9 @@ DataTable.ext.buttons.pdfHtml5 = {
|
|
1280
1329
|
|
1281
1330
|
for ( var i=0, ien=data.body.length ; i<ien ; i++ ) {
|
1282
1331
|
rows.push( $.map( data.body[i], function ( d ) {
|
1332
|
+
if ( d === null || d === undefined ) {
|
1333
|
+
d = '';
|
1334
|
+
}
|
1283
1335
|
return {
|
1284
1336
|
text: typeof d === 'string' ? d : d+'',
|
1285
1337
|
style: i % 2 ? 'tableBodyEven' : 'tableBodyOdd'
|