datatables.net-select 1.7.1 → 2.0.1
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.
- package/js/dataTables.select.js +293 -94
- package/js/dataTables.select.min.js +2 -2
- package/js/dataTables.select.min.mjs +2 -2
- package/js/dataTables.select.mjs +292 -93
- package/package.json +2 -2
- package/types/types.d.ts +4 -4
package/js/dataTables.select.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! Select for DataTables
|
|
1
|
+
/*! Select for DataTables 2.0.1
|
|
2
2
|
* © SpryMedia Ltd - datatables.net/license/mit
|
|
3
3
|
*/
|
|
4
4
|
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
// Browser
|
|
44
44
|
factory( jQuery, window, document );
|
|
45
45
|
}
|
|
46
|
-
}(function( $, window, document
|
|
46
|
+
}(function( $, window, document ) {
|
|
47
47
|
'use strict';
|
|
48
48
|
var DataTable = $.fn.dataTable;
|
|
49
49
|
|
|
@@ -52,11 +52,15 @@ var DataTable = $.fn.dataTable;
|
|
|
52
52
|
// Version information for debugger
|
|
53
53
|
DataTable.select = {};
|
|
54
54
|
|
|
55
|
-
DataTable.select.version = '
|
|
55
|
+
DataTable.select.version = '2.0.1';
|
|
56
56
|
|
|
57
57
|
DataTable.select.init = function (dt) {
|
|
58
58
|
var ctx = dt.settings()[0];
|
|
59
59
|
|
|
60
|
+
if (!DataTable.versionCheck('2')) {
|
|
61
|
+
throw 'Warning: Select requires DataTables 2 or newer';
|
|
62
|
+
}
|
|
63
|
+
|
|
60
64
|
if (ctx._select) {
|
|
61
65
|
return;
|
|
62
66
|
}
|
|
@@ -121,9 +125,12 @@ DataTable.select.init = function (dt) {
|
|
|
121
125
|
var info = true;
|
|
122
126
|
var selector = 'td, th';
|
|
123
127
|
var className = 'selected';
|
|
128
|
+
var headerCheckbox = true;
|
|
124
129
|
var setStyle = false;
|
|
125
130
|
|
|
126
|
-
ctx._select = {
|
|
131
|
+
ctx._select = {
|
|
132
|
+
infoEls: []
|
|
133
|
+
};
|
|
127
134
|
|
|
128
135
|
// Initialisation customisations
|
|
129
136
|
if (opts === true) {
|
|
@@ -167,6 +174,10 @@ DataTable.select.init = function (dt) {
|
|
|
167
174
|
if (opts.className !== undefined) {
|
|
168
175
|
className = opts.className;
|
|
169
176
|
}
|
|
177
|
+
|
|
178
|
+
if (opts.headerCheckbox !== undefined) {
|
|
179
|
+
headerCheckbox = opts.headerCheckbox;
|
|
180
|
+
}
|
|
170
181
|
}
|
|
171
182
|
|
|
172
183
|
dt.select.selector(selector);
|
|
@@ -177,27 +188,21 @@ DataTable.select.init = function (dt) {
|
|
|
177
188
|
dt.select.info(info);
|
|
178
189
|
ctx._select.className = className;
|
|
179
190
|
|
|
180
|
-
// Sort table based on selected rows. Requires Select Datatables extension
|
|
181
|
-
$.fn.dataTable.ext.order['select-checkbox'] = function (settings, col) {
|
|
182
|
-
return this.api()
|
|
183
|
-
.column(col, { order: 'index' })
|
|
184
|
-
.nodes()
|
|
185
|
-
.map(function (td) {
|
|
186
|
-
if (settings._select.items === 'row') {
|
|
187
|
-
return $(td).parent().hasClass(settings._select.className);
|
|
188
|
-
}
|
|
189
|
-
else if (settings._select.items === 'cell') {
|
|
190
|
-
return $(td).hasClass(settings._select.className);
|
|
191
|
-
}
|
|
192
|
-
return false;
|
|
193
|
-
});
|
|
194
|
-
};
|
|
195
|
-
|
|
196
191
|
// If the init options haven't enabled select, but there is a selectable
|
|
197
192
|
// class name, then enable
|
|
198
193
|
if (!setStyle && $(dt.table().node()).hasClass('selectable')) {
|
|
199
194
|
dt.select.style('os');
|
|
200
195
|
}
|
|
196
|
+
|
|
197
|
+
// Insert a checkbox into the header if needed - might need to wait
|
|
198
|
+
// for init complete, or it might already be done
|
|
199
|
+
if (headerCheckbox) {
|
|
200
|
+
initCheckboxHeader(dt);
|
|
201
|
+
|
|
202
|
+
dt.on('init', function () {
|
|
203
|
+
initCheckboxHeader(dt);
|
|
204
|
+
});
|
|
205
|
+
}
|
|
201
206
|
};
|
|
202
207
|
|
|
203
208
|
/*
|
|
@@ -249,6 +254,7 @@ The `_select` object contains the following properties:
|
|
|
249
254
|
on the row
|
|
250
255
|
info:boolean - If the selection summary should be shown in the table
|
|
251
256
|
information elements
|
|
257
|
+
infoEls:element[] - List of HTML elements with info elements for a table
|
|
252
258
|
}
|
|
253
259
|
```
|
|
254
260
|
|
|
@@ -433,10 +439,10 @@ function enableMouseSelection(dt) {
|
|
|
433
439
|
}
|
|
434
440
|
|
|
435
441
|
var ctx = dt.settings()[0];
|
|
436
|
-
var
|
|
442
|
+
var container = dt.table().container();
|
|
437
443
|
|
|
438
444
|
// Ignore clicks inside a sub-table
|
|
439
|
-
if ($(e.target).closest('div.'
|
|
445
|
+
if ($(e.target).closest('div.dt-container')[0] != container) {
|
|
440
446
|
return;
|
|
441
447
|
}
|
|
442
448
|
|
|
@@ -534,14 +540,8 @@ function eventTrigger(api, type, args, any) {
|
|
|
534
540
|
* @param {DataTable.Api} api DataTable to update
|
|
535
541
|
* @private
|
|
536
542
|
*/
|
|
537
|
-
function info(api) {
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
if (!ctx._select.info || !ctx.aanFeatures.i) {
|
|
541
|
-
return;
|
|
542
|
-
}
|
|
543
|
-
|
|
544
|
-
if (api.select.style() === 'api') {
|
|
543
|
+
function info(api, node) {
|
|
544
|
+
if (api.select.style() === 'api' || api.select.info() === false) {
|
|
545
545
|
return;
|
|
546
546
|
}
|
|
547
547
|
|
|
@@ -561,22 +561,81 @@ function info(api) {
|
|
|
561
561
|
);
|
|
562
562
|
};
|
|
563
563
|
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
el = $(el);
|
|
564
|
+
var el = $(node);
|
|
565
|
+
var output = $('<span class="select-info"/>');
|
|
567
566
|
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
add(output, 'cell', cells);
|
|
567
|
+
add(output, 'row', rows);
|
|
568
|
+
add(output, 'column', columns);
|
|
569
|
+
add(output, 'cell', cells);
|
|
572
570
|
|
|
573
|
-
|
|
574
|
-
if (exisiting.length) {
|
|
575
|
-
exisiting.remove();
|
|
576
|
-
}
|
|
571
|
+
var existing = el.children('span.select-info');
|
|
577
572
|
|
|
578
|
-
|
|
579
|
-
|
|
573
|
+
if (existing.length) {
|
|
574
|
+
existing.remove();
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
if (output.text() !== '') {
|
|
578
|
+
el.append(output);
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
/**
|
|
583
|
+
* Add a checkbox to the header for checkbox columns, allowing all rows to
|
|
584
|
+
* be selected, deselected or just to show the state.
|
|
585
|
+
*
|
|
586
|
+
* @param {*} dt API
|
|
587
|
+
*/
|
|
588
|
+
function initCheckboxHeader( dt ) {
|
|
589
|
+
// Find any checkbox column(s)
|
|
590
|
+
dt.columns('.dt-select').every(function () {
|
|
591
|
+
var header = this.header();
|
|
592
|
+
|
|
593
|
+
if (! $('input', header).length) {
|
|
594
|
+
// If no checkbox yet, insert one
|
|
595
|
+
var input = $('<input>')
|
|
596
|
+
.attr({
|
|
597
|
+
class: 'dt-select-checkbox',
|
|
598
|
+
type: 'checkbox',
|
|
599
|
+
'aria-label': dt.i18n('select.aria.headerCheckbox') || 'Select all rows'
|
|
600
|
+
})
|
|
601
|
+
.appendTo(header)
|
|
602
|
+
.on('change', function () {
|
|
603
|
+
if (this.checked) {
|
|
604
|
+
dt.rows({search: 'applied'}).select();
|
|
605
|
+
}
|
|
606
|
+
else {
|
|
607
|
+
dt.rows({selected: true}).deselect();
|
|
608
|
+
}
|
|
609
|
+
})
|
|
610
|
+
.on('click', function (e) {
|
|
611
|
+
e.stopPropagation();
|
|
612
|
+
});
|
|
613
|
+
|
|
614
|
+
// Update the header checkbox's state when the selection in the
|
|
615
|
+
// table changes
|
|
616
|
+
dt.on('draw select deselect', function (e, pass, type) {
|
|
617
|
+
if (type === 'row' || ! type) {
|
|
618
|
+
var count = dt.rows({selected: true}).count();
|
|
619
|
+
var search = dt.rows({search: 'applied', selected: true}).count();
|
|
620
|
+
var available = dt.rows({search: 'applied'}).count();
|
|
621
|
+
|
|
622
|
+
if (search && search <= count && search === available) {
|
|
623
|
+
input
|
|
624
|
+
.prop('checked', true)
|
|
625
|
+
.prop('indeterminate', false);
|
|
626
|
+
}
|
|
627
|
+
else if (search === 0 && count === 0) {
|
|
628
|
+
input
|
|
629
|
+
.prop('checked', false)
|
|
630
|
+
.prop('indeterminate', false);
|
|
631
|
+
}
|
|
632
|
+
else {
|
|
633
|
+
input
|
|
634
|
+
.prop('checked', false)
|
|
635
|
+
.prop('indeterminate', true);
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
});
|
|
580
639
|
}
|
|
581
640
|
});
|
|
582
641
|
}
|
|
@@ -602,14 +661,15 @@ function init(ctx) {
|
|
|
602
661
|
// This method of attaching to `aoRowCreatedCallback` is a hack until
|
|
603
662
|
// DataTables has proper events for row manipulation If you are reviewing
|
|
604
663
|
// this code to create your own plug-ins, please do not do this!
|
|
605
|
-
ctx.aoRowCreatedCallback.push({
|
|
606
|
-
fn: function (row, data, index) {
|
|
664
|
+
ctx.aoRowCreatedCallback.push(function (row, data, index) {
|
|
607
665
|
var i, ien;
|
|
608
666
|
var d = ctx.aoData[index];
|
|
609
667
|
|
|
610
668
|
// Row
|
|
611
669
|
if (d._select_selected) {
|
|
612
|
-
$(row)
|
|
670
|
+
$(row)
|
|
671
|
+
.addClass(ctx._select.className)
|
|
672
|
+
.find('input.dt-select-checkbox').prop('checked', true);
|
|
613
673
|
}
|
|
614
674
|
|
|
615
675
|
// Cells and columns - if separated out, we would need to do two
|
|
@@ -619,12 +679,11 @@ function init(ctx) {
|
|
|
619
679
|
ctx.aoColumns[i]._select_selected ||
|
|
620
680
|
(d._selected_cells && d._selected_cells[i])
|
|
621
681
|
) {
|
|
622
|
-
$(d.anCells[i]).addClass(ctx._select.className)
|
|
682
|
+
$(d.anCells[i]).addClass(ctx._select.className)
|
|
623
683
|
}
|
|
624
684
|
}
|
|
625
|
-
}
|
|
626
|
-
|
|
627
|
-
});
|
|
685
|
+
}
|
|
686
|
+
);
|
|
628
687
|
|
|
629
688
|
// On Ajax reload we want to reselect all rows which are currently selected,
|
|
630
689
|
// if there is an rowId (i.e. a unique value to identify each row with)
|
|
@@ -668,8 +727,20 @@ function init(ctx) {
|
|
|
668
727
|
});
|
|
669
728
|
|
|
670
729
|
// Update the table information element with selected item summary
|
|
671
|
-
api.on('
|
|
672
|
-
info
|
|
730
|
+
api.on('info.dt', function (e, ctx, node) {
|
|
731
|
+
// Store the info node for updating on select / deselect
|
|
732
|
+
if (!ctx._select.infoEls.includes(node)) {
|
|
733
|
+
ctx._select.infoEls.push(node);
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
info(api, node);
|
|
737
|
+
});
|
|
738
|
+
|
|
739
|
+
api.on('select.dtSelect.dt deselect.dtSelect.dt', function () {
|
|
740
|
+
ctx._select.infoEls.forEach(function (el) {
|
|
741
|
+
info(api, el);
|
|
742
|
+
});
|
|
743
|
+
|
|
673
744
|
api.state.save();
|
|
674
745
|
});
|
|
675
746
|
|
|
@@ -697,13 +768,13 @@ function init(ctx) {
|
|
|
697
768
|
function rowColumnRange(dt, type, idx, last) {
|
|
698
769
|
// Add a range of rows from the last selected row to this one
|
|
699
770
|
var indexes = dt[type + 's']({ search: 'applied' }).indexes();
|
|
700
|
-
var idx1 =
|
|
701
|
-
var idx2 =
|
|
771
|
+
var idx1 = indexes.indexOf(last);
|
|
772
|
+
var idx2 = indexes.indexOf(idx);
|
|
702
773
|
|
|
703
774
|
if (!dt[type + 's']({ selected: true }).any() && idx1 === -1) {
|
|
704
775
|
// select from top to here - slightly odd, but both Windows and Mac OS
|
|
705
776
|
// do this
|
|
706
|
-
indexes.splice(
|
|
777
|
+
indexes.splice(indexes.indexOf(idx) + 1, indexes.length);
|
|
707
778
|
}
|
|
708
779
|
else {
|
|
709
780
|
// reverse so we can shift click 'up' as well as down
|
|
@@ -723,7 +794,7 @@ function rowColumnRange(dt, type, idx, last) {
|
|
|
723
794
|
}
|
|
724
795
|
else {
|
|
725
796
|
// Deselect range - need to keep the clicked on row selected
|
|
726
|
-
indexes.splice(
|
|
797
|
+
indexes.splice(indexes.indexOf(idx), 1);
|
|
727
798
|
dt[type + 's'](indexes).deselect();
|
|
728
799
|
}
|
|
729
800
|
}
|
|
@@ -850,8 +921,10 @@ $.each(
|
|
|
850
921
|
data = settings[o.prop][indexes[i]];
|
|
851
922
|
|
|
852
923
|
if (
|
|
853
|
-
|
|
854
|
-
|
|
924
|
+
data && (
|
|
925
|
+
(selected === true && data._select_selected === true) ||
|
|
926
|
+
(selected === false && !data._select_selected)
|
|
927
|
+
)
|
|
855
928
|
) {
|
|
856
929
|
out.push(indexes[i]);
|
|
857
930
|
}
|
|
@@ -875,11 +948,13 @@ DataTable.ext.selector.cell.push(function (settings, opts, cells) {
|
|
|
875
948
|
rowData = settings.aoData[cells[i].row];
|
|
876
949
|
|
|
877
950
|
if (
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
(
|
|
951
|
+
rowData && (
|
|
952
|
+
(selected === true &&
|
|
953
|
+
rowData._selected_cells &&
|
|
954
|
+
rowData._selected_cells[cells[i].column] === true) ||
|
|
955
|
+
(selected === false &&
|
|
956
|
+
(!rowData._selected_cells || !rowData._selected_cells[cells[i].column]))
|
|
957
|
+
)
|
|
883
958
|
) {
|
|
884
959
|
out.push(cells[i]);
|
|
885
960
|
}
|
|
@@ -994,6 +1069,17 @@ apiRegister('select.selector()', function (selector) {
|
|
|
994
1069
|
});
|
|
995
1070
|
});
|
|
996
1071
|
|
|
1072
|
+
apiRegister('select.last()', function (set) {
|
|
1073
|
+
let ctx = this.context[0];
|
|
1074
|
+
|
|
1075
|
+
if (set) {
|
|
1076
|
+
ctx._select_lastCell = set;
|
|
1077
|
+
return this;
|
|
1078
|
+
}
|
|
1079
|
+
|
|
1080
|
+
return ctx._select_lastCell;
|
|
1081
|
+
});
|
|
1082
|
+
|
|
997
1083
|
apiRegisterPlural('rows().select()', 'row().select()', function (select) {
|
|
998
1084
|
var api = this;
|
|
999
1085
|
|
|
@@ -1004,8 +1090,37 @@ apiRegisterPlural('rows().select()', 'row().select()', function (select) {
|
|
|
1004
1090
|
this.iterator('row', function (ctx, idx) {
|
|
1005
1091
|
clear(ctx);
|
|
1006
1092
|
|
|
1007
|
-
|
|
1008
|
-
|
|
1093
|
+
// There is a good amount of knowledge of DataTables internals in
|
|
1094
|
+
// this function. It _could_ be done without that, but it would hurt
|
|
1095
|
+
// performance (or DT would need new APIs for this work)
|
|
1096
|
+
var dtData = ctx.aoData[idx];
|
|
1097
|
+
var dtColumns = ctx.aoColumns;
|
|
1098
|
+
|
|
1099
|
+
$(dtData.nTr).addClass(ctx._select.className);
|
|
1100
|
+
dtData._select_selected = true;
|
|
1101
|
+
|
|
1102
|
+
for (var i=0 ; i<dtColumns.length ; i++) {
|
|
1103
|
+
var col = dtColumns[i];
|
|
1104
|
+
|
|
1105
|
+
// Regenerate the column type if not present
|
|
1106
|
+
if (col.sType === null) {
|
|
1107
|
+
api.columns().types()
|
|
1108
|
+
}
|
|
1109
|
+
|
|
1110
|
+
if (col.sType === 'select-checkbox') {
|
|
1111
|
+
var cells = dtData.anCells;
|
|
1112
|
+
|
|
1113
|
+
// Make sure the checkbox shows the right state
|
|
1114
|
+
if (cells && cells[i]) {
|
|
1115
|
+
$('input.dt-select-checkbox', cells[i]).prop('checked', true);
|
|
1116
|
+
}
|
|
1117
|
+
|
|
1118
|
+
// Invalidate the sort data for this column, if not already done
|
|
1119
|
+
if (dtData._aSortData !== null) {
|
|
1120
|
+
dtData._aSortData[i] = null;
|
|
1121
|
+
}
|
|
1122
|
+
}
|
|
1123
|
+
}
|
|
1009
1124
|
});
|
|
1010
1125
|
|
|
1011
1126
|
this.iterator('table', function (ctx, i) {
|
|
@@ -1110,9 +1225,36 @@ apiRegisterPlural('rows().deselect()', 'row().deselect()', function () {
|
|
|
1110
1225
|
var api = this;
|
|
1111
1226
|
|
|
1112
1227
|
this.iterator('row', function (ctx, idx) {
|
|
1113
|
-
|
|
1228
|
+
// Like the select action, this has a lot of knowledge about DT internally
|
|
1229
|
+
var dtData = ctx.aoData[idx];
|
|
1230
|
+
var dtColumns = ctx.aoColumns;
|
|
1231
|
+
|
|
1232
|
+
$(dtData.nTr).removeClass(ctx._select.className);
|
|
1233
|
+
dtData._select_selected = false;
|
|
1114
1234
|
ctx._select_lastCell = null;
|
|
1115
|
-
|
|
1235
|
+
|
|
1236
|
+
for (var i=0 ; i<dtColumns.length ; i++) {
|
|
1237
|
+
var col = dtColumns[i];
|
|
1238
|
+
|
|
1239
|
+
// Regenerate the column type if not present
|
|
1240
|
+
if (col.sType === null) {
|
|
1241
|
+
api.columns().types()
|
|
1242
|
+
}
|
|
1243
|
+
|
|
1244
|
+
if (col.sType === 'select-checkbox') {
|
|
1245
|
+
var cells = dtData.anCells;
|
|
1246
|
+
|
|
1247
|
+
// Make sure the checkbox shows the right state
|
|
1248
|
+
if (cells && cells[i]) {
|
|
1249
|
+
$('input.dt-select-checkbox', dtData.anCells[i]).prop('checked', false);
|
|
1250
|
+
}
|
|
1251
|
+
|
|
1252
|
+
// Invalidate the sort data for this column, if not already done
|
|
1253
|
+
if (dtData._aSortData !== null) {
|
|
1254
|
+
dtData._aSortData[i] = null;
|
|
1255
|
+
}
|
|
1256
|
+
}
|
|
1257
|
+
}
|
|
1116
1258
|
});
|
|
1117
1259
|
|
|
1118
1260
|
this.iterator('table', function (ctx, i) {
|
|
@@ -1198,15 +1340,15 @@ function namespacedEvents(config) {
|
|
|
1198
1340
|
}
|
|
1199
1341
|
|
|
1200
1342
|
function enabled(dt, config) {
|
|
1201
|
-
if (
|
|
1343
|
+
if (config.limitTo.indexOf('rows') !== -1 && dt.rows({ selected: true }).any()) {
|
|
1202
1344
|
return true;
|
|
1203
1345
|
}
|
|
1204
1346
|
|
|
1205
|
-
if (
|
|
1347
|
+
if (config.limitTo.indexOf('columns') !== -1 && dt.columns({ selected: true }).any()) {
|
|
1206
1348
|
return true;
|
|
1207
1349
|
}
|
|
1208
1350
|
|
|
1209
|
-
if (
|
|
1351
|
+
if (config.limitTo.indexOf('cells') !== -1 && dt.cells({ selected: true }).any()) {
|
|
1210
1352
|
return true;
|
|
1211
1353
|
}
|
|
1212
1354
|
|
|
@@ -1306,34 +1448,23 @@ $.extend(DataTable.ext.buttons, {
|
|
|
1306
1448
|
showSelected: {
|
|
1307
1449
|
text: i18n('showSelected', 'Show only selected'),
|
|
1308
1450
|
className: 'buttons-show-selected',
|
|
1309
|
-
action: function (e, dt
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
if (conf._filter) {
|
|
1314
|
-
var idx = DataTable.ext.search.indexOf(conf._filter);
|
|
1315
|
-
|
|
1316
|
-
if (idx !== -1) {
|
|
1317
|
-
DataTable.ext.search.splice(idx, 1);
|
|
1318
|
-
conf._filter = null;
|
|
1319
|
-
}
|
|
1451
|
+
action: function (e, dt) {
|
|
1452
|
+
if (dt.search.fixed('dt-select')) {
|
|
1453
|
+
// Remove existing function
|
|
1454
|
+
dt.search.fixed('dt-select', null);
|
|
1320
1455
|
|
|
1321
1456
|
this.active(false);
|
|
1322
1457
|
}
|
|
1323
1458
|
else {
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
};
|
|
1334
|
-
|
|
1335
|
-
conf._filter = fn;
|
|
1336
|
-
DataTable.ext.search.push(fn);
|
|
1459
|
+
// Use a fixed filtering function to match on selected rows
|
|
1460
|
+
// This needs to reference the internal aoData since that is
|
|
1461
|
+
// where Select stores its reference for the selected state
|
|
1462
|
+
var dataSrc = dt.settings()[0].aoData;
|
|
1463
|
+
|
|
1464
|
+
dt.search.fixed('dt-select', function (text, data, idx) {
|
|
1465
|
+
// _select_selected is set by Select on the data object for the row
|
|
1466
|
+
return dataSrc[idx]._select_selected;
|
|
1467
|
+
});
|
|
1337
1468
|
|
|
1338
1469
|
this.active(true);
|
|
1339
1470
|
}
|
|
@@ -1362,6 +1493,74 @@ $.each(['Row', 'Column', 'Cell'], function (i, item) {
|
|
|
1362
1493
|
};
|
|
1363
1494
|
});
|
|
1364
1495
|
|
|
1496
|
+
DataTable.type('select-checkbox', {
|
|
1497
|
+
className: 'dt-select',
|
|
1498
|
+
detect: function (data) {
|
|
1499
|
+
// Rendering function will tell us if it is a checkbox type
|
|
1500
|
+
return data === 'select-checkbox' ? data : false;
|
|
1501
|
+
},
|
|
1502
|
+
order: {
|
|
1503
|
+
pre: function (d) {
|
|
1504
|
+
return d === 'X' ? -1 : 0;
|
|
1505
|
+
}
|
|
1506
|
+
}
|
|
1507
|
+
});
|
|
1508
|
+
|
|
1509
|
+
$.extend(true, DataTable.defaults.oLanguage, {
|
|
1510
|
+
select: {
|
|
1511
|
+
aria: {
|
|
1512
|
+
rowCheckbox: 'Select row'
|
|
1513
|
+
}
|
|
1514
|
+
}
|
|
1515
|
+
});
|
|
1516
|
+
|
|
1517
|
+
DataTable.render.select = function (valueProp, nameProp) {
|
|
1518
|
+
var valueFn = valueProp ? DataTable.util.get(valueProp) : null;
|
|
1519
|
+
var nameFn = nameProp ? DataTable.util.get(nameProp) : null;
|
|
1520
|
+
|
|
1521
|
+
return function (data, type, row, meta) {
|
|
1522
|
+
var dtRow = meta.settings.aoData[meta.row];
|
|
1523
|
+
var selected = dtRow._select_selected;
|
|
1524
|
+
var ariaLabel = meta.settings.oLanguage.select.aria.rowCheckbox;
|
|
1525
|
+
|
|
1526
|
+
if (type === 'display') {
|
|
1527
|
+
return $('<input>')
|
|
1528
|
+
.attr({
|
|
1529
|
+
'aria-label': ariaLabel,
|
|
1530
|
+
class: 'dt-select-checkbox',
|
|
1531
|
+
name: nameFn ? nameFn(row) : null,
|
|
1532
|
+
type: 'checkbox',
|
|
1533
|
+
value: valueFn ? valueFn(row) : null,
|
|
1534
|
+
checked: selected
|
|
1535
|
+
})[0];
|
|
1536
|
+
}
|
|
1537
|
+
else if (type === 'type') {
|
|
1538
|
+
return 'select-checkbox';
|
|
1539
|
+
}
|
|
1540
|
+
else if (type === 'filter') {
|
|
1541
|
+
return '';
|
|
1542
|
+
}
|
|
1543
|
+
|
|
1544
|
+
return selected ? 'X' : '';
|
|
1545
|
+
}
|
|
1546
|
+
}
|
|
1547
|
+
|
|
1548
|
+
// Legacy checkbox ordering
|
|
1549
|
+
DataTable.ext.order['select-checkbox'] = function (settings, col) {
|
|
1550
|
+
return this.api()
|
|
1551
|
+
.column(col, { order: 'index' })
|
|
1552
|
+
.nodes()
|
|
1553
|
+
.map(function (td) {
|
|
1554
|
+
if (settings._select.items === 'row') {
|
|
1555
|
+
return $(td).parent().hasClass(settings._select.className);
|
|
1556
|
+
}
|
|
1557
|
+
else if (settings._select.items === 'cell') {
|
|
1558
|
+
return $(td).hasClass(settings._select.className);
|
|
1559
|
+
}
|
|
1560
|
+
return false;
|
|
1561
|
+
});
|
|
1562
|
+
};
|
|
1563
|
+
|
|
1365
1564
|
$.fn.DataTable.select = DataTable.select;
|
|
1366
1565
|
|
|
1367
1566
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! Select for DataTables
|
|
1
|
+
/*! Select for DataTables 2.0.1
|
|
2
2
|
* © SpryMedia Ltd - datatables.net/license/mit
|
|
3
3
|
*/
|
|
4
|
-
!function(l){var s,c;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(e){return l(e,window,document)}):"object"==typeof exports?(s=require("jquery"),c=function(e,t){t.fn.dataTable||require("datatables.net")(e,t)},"undefined"==typeof window?module.exports=function(e,t){return e=e||window,t=t||s(e),c(e,t),l(t,e,e.document)}:(c(window,s),module.exports=l(s,window,window.document))):l(jQuery,window,document)}(function(m,i,e,h){"use strict";var _=m.fn.dataTable;function r(n,e,t){function l(t,l){l<t&&(e=l,l=t,t=e);var e,s=!1;return n.columns(":visible").indexes().filter(function(e){return e===t&&(s=!0),e===l?!(s=!1):s})}function s(t,l){var e,s=n.rows({search:"applied"}).indexes(),c=(s.indexOf(t)>s.indexOf(l)&&(e=l,l=t,t=e),!1);return s.filter(function(e){return e===t&&(c=!0),e===l?!(c=!1):c})}var c,t=n.cells({selected:!0}).any()||t?(c=l(t.column,e.column),s(t.row,e.row)):(c=l(0,e.column),s(0,e.row)),t=n.cells(t,c).flatten();n.cells(e,{selected:!0}).any()?n.cells(t).deselect():n.cells(t).select()}function s(e){var t=e.settings()[0]._select.selector;m(e.table().container()).off("mousedown.dtSelect",t).off("mouseup.dtSelect",t).off("click.dtSelect",t),m("body").off("click.dtSelect"+p(e.table().node()))}function c(o){var a,t=m(o.table().container()),l=o.settings()[0],s=l._select.selector;t.on("mousedown.dtSelect",s,function(e){(e.shiftKey||e.metaKey||e.ctrlKey)&&t.css("-moz-user-select","none").one("selectstart.dtSelect",s,function(){return!1}),i.getSelection&&(a=i.getSelection())}).on("mouseup.dtSelect",s,function(){t.css("-moz-user-select","")}).on("click.dtSelect",s,function(e){var t,l=o.select.items();if(a){var s=i.getSelection();if((!s.anchorNode||m(s.anchorNode).closest("table")[0]===o.table().node())&&s!==a)return}var c,s=o.settings()[0],n=o.settings()[0].oClasses.sWrapper.trim().replace(/ +/g,".");m(e.target).closest("div."+n)[0]==o.table().container()&&(n=o.cell(m(e.target).closest("td, th"))).any()&&(c=m.Event("user-select.dt"),u(o,c,[l,n,e]),c.isDefaultPrevented()||(c=n.index(),"row"===l?(t=c.row,w(e,o,s,"row",t)):"column"===l?(t=n.index().column,w(e,o,s,"column",t)):"cell"===l&&(t=n.index(),w(e,o,s,"cell",t)),s._select_lastCell=c))}),m("body").on("click.dtSelect"+p(o.table().node()),function(e){var t;!l._select.blurable||m(e.target).parents().filter(o.table().container()).length||0===m(e.target).parents("html").length||m(e.target).parents("div.DTE").length||(t=m.Event("select-blur.dt"),u(o,t,[e.target,e]),t.isDefaultPrevented()||f(l,!0))})}function u(e,t,l,s){s&&!e.flatten().length||("string"==typeof t&&(t+=".dt"),l.unshift(e),m(e.table().node()).trigger(t,l))}function n(o){var i=new _.Api(o);o._select_init=!0,o.aoRowCreatedCallback.push({fn:function(e,t,l){var s,c,n=o.aoData[l];for(n._select_selected&&m(e).addClass(o._select.className),s=0,c=o.aoColumns.length;s<c;s++)(o.aoColumns[s]._select_selected||n._selected_cells&&n._selected_cells[s])&&m(n.anCells[s]).addClass(o._select.className)},sName:"select-deferRender"}),i.on("preXhr.dt.dtSelect",function(e,t){var l,s;t===i.settings()[0]&&(l=i.rows({selected:!0}).ids(!0).filter(function(e){return e!==h}),s=i.cells({selected:!0}).eq(0).map(function(e){var t=i.row(e.row).id(!0);return t?{row:t,column:e.column}:h}).filter(function(e){return e!==h}),i.one("draw.dt.dtSelect",function(){i.rows(l).select(),s.any()&&s.each(function(e){i.cells(e.row,e.column).select()})}))}),i.on("draw.dtSelect.dt select.dtSelect.dt deselect.dtSelect.dt info.dt",function(){var s,c,n,o,a,e;(e=(s=i).settings()[0])._select.info&&e.aanFeatures.i&&"api"!==s.select.style()&&(c=s.rows({selected:!0}).flatten().length,n=s.columns({selected:!0}).flatten().length,o=s.cells({selected:!0}).flatten().length,a=function(e,t,l){e.append(m('<span class="select-item"/>').append(s.i18n("select."+t+"s",{_:"%d "+t+"s selected",0:"",1:"1 "+t+" selected"},l)))},m.each(e.aanFeatures.i,function(e,t){t=m(t);var l=m('<span class="select-info"/>'),s=(a(l,"row",c),a(l,"column",n),a(l,"cell",o),t.children("span.select-info"));s.length&&s.remove(),""!==l.text()&&t.append(l)})),i.state.save()}),i.on("destroy.dtSelect",function(){m(i.rows({selected:!0}).nodes()).removeClass(i.settings()[0]._select.className),s(i),i.off(".dtSelect"),m("body").off(".dtSelect"+p(i.table().node()))})}function d(e,t,l,s){var c,n=e[t+"s"]({search:"applied"}).indexes(),s=m.inArray(s,n),o=m.inArray(l,n);e[t+"s"]({selected:!0}).any()||-1!==s?(o<s&&(c=o,o=s,s=c),n.splice(o+1,n.length),n.splice(0,s)):n.splice(m.inArray(l,n)+1,n.length),e[t](l,{selected:!0}).any()?(n.splice(m.inArray(l,n),1),e[t+"s"](n).deselect()):e[t+"s"](n).select()}function f(e,t){!t&&"single"!==e._select.style||((t=new _.Api(e)).rows({selected:!0}).deselect(),t.columns({selected:!0}).deselect(),t.cells({selected:!0}).deselect())}function w(e,t,l,s,c){var n=t.select.style(),o=t.select.toggleable(),a=t[s](c,{selected:!0}).any();a&&!o||("os"===n?e.ctrlKey||e.metaKey?t[s](c).select(!a):e.shiftKey?"cell"===s?r(t,c,l._select_lastCell||null):d(t,s,c,l._select_lastCell?l._select_lastCell[s]:null):(o=t[s+"s"]({selected:!0}),a&&1===o.flatten().length?t[s](c).deselect():(o.deselect(),t[s](c).select())):"multi+shift"==n&&e.shiftKey?"cell"===s?r(t,c,l._select_lastCell||null):d(t,s,c,l._select_lastCell?l._select_lastCell[s]:null):t[s](c).select(!a))}function p(e){return e.id.replace(/[^a-zA-Z0-9\-\_]/g,"-")}_.select={},_.select.version="1.7.0-dev",_.select.init=function(c){var e,t,l,s,n,o,a,i,r,u,d,f=c.settings()[0];f._select||(e=c.state.loaded(),t=function(e,t,l){if(null!==l&&l.select!==h){if(c.rows({selected:!0}).any()&&c.rows().deselect(),l.select.rows!==h&&c.rows(l.select.rows).select(),c.columns({selected:!0}).any()&&c.columns().deselect(),l.select.columns!==h&&c.columns(l.select.columns).select(),c.cells({selected:!0}).any()&&c.cells().deselect(),l.select.cells!==h)for(var s=0;s<l.select.cells.length;s++)c.cell(l.select.cells[s].row,l.select.cells[s].column).select();c.state.save()}},c.on("stateSaveParams",function(e,t,l){l.select={},l.select.rows=c.rows({selected:!0}).ids(!0).toArray(),l.select.columns=c.columns({selected:!0})[0],l.select.cells=c.cells({selected:!0})[0].map(function(e){return{row:c.row(e.row).id(!0),column:e.column}})}).on("stateLoadParams",t).one("init",function(){t(0,0,e)}),s=f.oInit.select,l=_.defaults.select,l=s===h?l:s,s="row",i=a=!(o=!(n="api")),r="td, th",d=!(u="selected"),f._select={},!0===l?(n="os",d=!0):"string"==typeof l?(n=l,d=!0):m.isPlainObject(l)&&(l.blurable!==h&&(o=l.blurable),l.toggleable!==h&&(a=l.toggleable),l.info!==h&&(i=l.info),l.items!==h&&(s=l.items),d=(n=l.style!==h?l.style:"os",!0),l.selector!==h&&(r=l.selector),l.className!==h&&(u=l.className)),c.select.selector(r),c.select.items(s),c.select.style(n),c.select.blurable(o),c.select.toggleable(a),c.select.info(i),f._select.className=u,m.fn.dataTable.ext.order["select-checkbox"]=function(t,e){return this.api().column(e,{order:"index"}).nodes().map(function(e){return"row"===t._select.items?m(e).parent().hasClass(t._select.className):"cell"===t._select.items&&m(e).hasClass(t._select.className)})},!d&&m(c.table().node()).hasClass("selectable")&&c.select.style("os"))},m.each([{type:"row",prop:"aoData"},{type:"column",prop:"aoColumns"}],function(e,i){_.ext.selector[i.type].push(function(e,t,l){var s,c=t.selected,n=[];if(!0!==c&&!1!==c)return l;for(var o=0,a=l.length;o<a;o++)s=e[i.prop][l[o]],(!0===c&&!0===s._select_selected||!1===c&&!s._select_selected)&&n.push(l[o]);return n})}),_.ext.selector.cell.push(function(e,t,l){var s,c=t.selected,n=[];if(c===h)return l;for(var o=0,a=l.length;o<a;o++)s=e.aoData[l[o].row],(!0!==c||!s._selected_cells||!0!==s._selected_cells[l[o].column])&&(!1!==c||s._selected_cells&&s._selected_cells[l[o].column])||n.push(l[o]);return n});var t=_.Api.register,l=_.Api.registerPlural;function o(t,l){return function(e){return e.i18n("buttons."+t,l)}}function a(e){e=e._eventNamespace;return"draw.dt.DT"+e+" select.dt.DT"+e+" deselect.dt.DT"+e}t("select()",function(){return this.iterator("table",function(e){_.select.init(new _.Api(e))})}),t("select.blurable()",function(t){return t===h?this.context[0]._select.blurable:this.iterator("table",function(e){e._select.blurable=t})}),t("select.toggleable()",function(t){return t===h?this.context[0]._select.toggleable:this.iterator("table",function(e){e._select.toggleable=t})}),t("select.info()",function(t){return t===h?this.context[0]._select.info:this.iterator("table",function(e){e._select.info=t})}),t("select.items()",function(t){return t===h?this.context[0]._select.items:this.iterator("table",function(e){e._select.items=t,u(new _.Api(e),"selectItems",[t])})}),t("select.style()",function(l){return l===h?this.context[0]._select.style:this.iterator("table",function(e){e._select||_.select.init(new _.Api(e)),e._select_init||n(e),e._select.style=l;var t=new _.Api(e);s(t),"api"!==l&&c(t),u(new _.Api(e),"selectStyle",[l])})}),t("select.selector()",function(t){return t===h?this.context[0]._select.selector:this.iterator("table",function(e){s(new _.Api(e)),e._select.selector=t,"api"!==e._select.style&&c(new _.Api(e))})}),l("rows().select()","row().select()",function(e){var l=this;return!1===e?this.deselect():(this.iterator("row",function(e,t){f(e),e.aoData[t]._select_selected=!0,m(e.aoData[t].nTr).addClass(e._select.className)}),this.iterator("table",function(e,t){u(l,"select",["row",l[t]],!0)}),this)}),t("row().selected()",function(){var e=this.context[0];return!!(e&&this.length&&e.aoData[this[0]]&&e.aoData[this[0]]._select_selected)}),l("columns().select()","column().select()",function(e){var l=this;return!1===e?this.deselect():(this.iterator("column",function(e,t){f(e),e.aoColumns[t]._select_selected=!0;t=new _.Api(e).column(t);m(t.header()).addClass(e._select.className),m(t.footer()).addClass(e._select.className),t.nodes().to$().addClass(e._select.className)}),this.iterator("table",function(e,t){u(l,"select",["column",l[t]],!0)}),this)}),t("column().selected()",function(){var e=this.context[0];return!!(e&&this.length&&e.aoColumns[this[0]]&&e.aoColumns[this[0]]._select_selected)}),l("cells().select()","cell().select()",function(e){var l=this;return!1===e?this.deselect():(this.iterator("cell",function(e,t,l){f(e);t=e.aoData[t];t._selected_cells===h&&(t._selected_cells=[]),t._selected_cells[l]=!0,t.anCells&&m(t.anCells[l]).addClass(e._select.className)}),this.iterator("table",function(e,t){u(l,"select",["cell",l.cells(l[t]).indexes().toArray()],!0)}),this)}),t("cell().selected()",function(){var e=this.context[0];if(e&&this.length){e=e.aoData[this[0][0].row];if(e&&e._selected_cells&&e._selected_cells[this[0][0].column])return!0}return!1}),l("rows().deselect()","row().deselect()",function(){var l=this;return this.iterator("row",function(e,t){e.aoData[t]._select_selected=!1,e._select_lastCell=null,m(e.aoData[t].nTr).removeClass(e._select.className)}),this.iterator("table",function(e,t){u(l,"deselect",["row",l[t]],!0)}),this}),l("columns().deselect()","column().deselect()",function(){var l=this;return this.iterator("column",function(s,e){s.aoColumns[e]._select_selected=!1;var t=new _.Api(s),l=t.column(e);m(l.header()).removeClass(s._select.className),m(l.footer()).removeClass(s._select.className),t.cells(null,e).indexes().each(function(e){var t=s.aoData[e.row],l=t._selected_cells;!t.anCells||l&&l[e.column]||m(t.anCells[e.column]).removeClass(s._select.className)})}),this.iterator("table",function(e,t){u(l,"deselect",["column",l[t]],!0)}),this}),l("cells().deselect()","cell().deselect()",function(){var l=this;return this.iterator("cell",function(e,t,l){t=e.aoData[t];t._selected_cells!==h&&(t._selected_cells[l]=!1),t.anCells&&!e.aoColumns[l]._select_selected&&m(t.anCells[l]).removeClass(e._select.className)}),this.iterator("table",function(e,t){u(l,"deselect",["cell",l[t]],!0)}),this});var v=0;return m.extend(_.ext.buttons,{selected:{text:o("selected","Selected"),className:"buttons-selected",limitTo:["rows","columns","cells"],init:function(l,e,s){var c=this;s._eventNamespace=".select"+v++,l.on(a(s),function(){var e,t;c.enable((e=l,t=s,!(-1===m.inArray("rows",t.limitTo)||!e.rows({selected:!0}).any())||(!(-1===m.inArray("columns",t.limitTo)||!e.columns({selected:!0}).any())||!(-1===m.inArray("cells",t.limitTo)||!e.cells({selected:!0}).any()))))}),this.disable()},destroy:function(e,t,l){e.off(l._eventNamespace)}},selectedSingle:{text:o("selectedSingle","Selected single"),className:"buttons-selected-single",init:function(t,e,l){var s=this;l._eventNamespace=".select"+v++,t.on(a(l),function(){var e=t.rows({selected:!0}).flatten().length+t.columns({selected:!0}).flatten().length+t.cells({selected:!0}).flatten().length;s.enable(1===e)}),this.disable()},destroy:function(e,t,l){e.off(l._eventNamespace)}},selectAll:{text:o("selectAll","Select all"),className:"buttons-select-all",action:function(e,t,l,s){var c=this.select.items(),n=s.selectorModifier;(n?("function"==typeof n&&(n=n.call(t,e,t,l,s)),this[c+"s"](n)):this[c+"s"]()).select()}},selectNone:{text:o("selectNone","Deselect all"),className:"buttons-select-none",action:function(){f(this.settings()[0],!0)},init:function(t,e,l){var s=this;l._eventNamespace=".select"+v++,t.on(a(l),function(){var e=t.rows({selected:!0}).flatten().length+t.columns({selected:!0}).flatten().length+t.cells({selected:!0}).flatten().length;s.enable(0<e)}),this.disable()},destroy:function(e,t,l){e.off(l._eventNamespace)}},showSelected:{text:o("showSelected","Show only selected"),className:"buttons-show-selected",action:function(e,s,t,l){var c;l._filter?(-1!==(c=_.ext.search.indexOf(l._filter))&&(_.ext.search.splice(c,1),l._filter=null),this.active(!1)):(l._filter=c=function(e,t,l){return e!==s.settings()[0]||e.aoData[l]._select_selected},_.ext.search.push(c),this.active(!0)),s.draw()}}}),m.each(["Row","Column","Cell"],function(e,t){var c=t.toLowerCase();_.ext.buttons["select"+t+"s"]={text:o("select"+t+"s","Select "+c+"s"),className:"buttons-select-"+c+"s",action:function(){this.select.items(c)},init:function(e){var s=this;e.on("selectItems.dt.DT",function(e,t,l){s.active(l===c)})}}}),m.fn.DataTable.select=_.select,m(e).on("preInit.dt.dtSelect",function(e,t){"dt"===e.namespace&&_.select.init(new _.Api(t))}),_});
|
|
4
|
+
!function(l){var s,c;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(e){return l(e,window,document)}):"object"==typeof exports?(s=require("jquery"),c=function(e,t){t.fn.dataTable||require("datatables.net")(e,t)},"undefined"==typeof window?module.exports=function(e,t){return e=e||window,t=t||s(e),c(e,t),l(t,e,e.document)}:(c(window,s),module.exports=l(s,window,window.document))):l(jQuery,window,document)}(function(m,i,e){"use strict";var _=m.fn.dataTable;function r(n,e,t){function l(t,l){l<t&&(e=l,l=t,t=e);var e,s=!1;return n.columns(":visible").indexes().filter(function(e){return e===t&&(s=!0),e===l?!(s=!1):s})}function s(t,l){var e,s=n.rows({search:"applied"}).indexes(),c=(s.indexOf(t)>s.indexOf(l)&&(e=l,l=t,t=e),!1);return s.filter(function(e){return e===t&&(c=!0),e===l?!(c=!1):c})}var c,t=n.cells({selected:!0}).any()||t?(c=l(t.column,e.column),s(t.row,e.row)):(c=l(0,e.column),s(0,e.row)),t=n.cells(t,c).flatten();n.cells(e,{selected:!0}).any()?n.cells(t).deselect():n.cells(t).select()}function s(e){var t=e.settings()[0]._select.selector;m(e.table().container()).off("mousedown.dtSelect",t).off("mouseup.dtSelect",t).off("click.dtSelect",t),m("body").off("click.dtSelect"+v(e.table().node()))}function n(o){var a,t=m(o.table().container()),l=o.settings()[0],s=l._select.selector;t.on("mousedown.dtSelect",s,function(e){(e.shiftKey||e.metaKey||e.ctrlKey)&&t.css("-moz-user-select","none").one("selectstart.dtSelect",s,function(){return!1}),i.getSelection&&(a=i.getSelection())}).on("mouseup.dtSelect",s,function(){t.css("-moz-user-select","")}).on("click.dtSelect",s,function(e){var t,l=o.select.items();if(a){var s=i.getSelection();if((!s.anchorNode||m(s.anchorNode).closest("table")[0]===o.table().node())&&s!==a)return}var c,s=o.settings()[0],n=o.table().container();m(e.target).closest("div.dt-container")[0]==n&&(n=o.cell(m(e.target).closest("td, th"))).any()&&(c=m.Event("user-select.dt"),d(o,c,[l,n,e]),c.isDefaultPrevented()||(c=n.index(),"row"===l?(t=c.row,h(e,o,s,"row",t)):"column"===l?(t=n.index().column,h(e,o,s,"column",t)):"cell"===l&&(t=n.index(),h(e,o,s,"cell",t)),s._select_lastCell=c))}),m("body").on("click.dtSelect"+v(o.table().node()),function(e){var t;!l._select.blurable||m(e.target).parents().filter(o.table().container()).length||0===m(e.target).parents("html").length||m(e.target).parents("div.DTE").length||(t=m.Event("select-blur.dt"),d(o,t,[e.target,e]),t.isDefaultPrevented())||f(l,!0)})}function d(e,t,l,s){s&&!e.flatten().length||("string"==typeof t&&(t+=".dt"),l.unshift(e),m(e.table().node()).trigger(t,l))}function a(s,e){var t,l,c,n,o;"api"!==s.select.style()&&!1!==s.select.info()&&(o=s.rows({selected:!0}).flatten().length,t=s.columns({selected:!0}).flatten().length,l=s.cells({selected:!0}).flatten().length,c=function(e,t,l){e.append(m('<span class="select-item"/>').append(s.i18n("select."+t+"s",{_:"%d "+t+"s selected",0:"",1:"1 "+t+" selected"},l)))},e=m(e),c(n=m('<span class="select-info"/>'),"row",o),c(n,"column",t),c(n,"cell",l),(o=e.children("span.select-info")).length&&o.remove(),""!==n.text())&&e.append(n)}function p(o){o.columns(".dt-select").every(function(){var n,e=this.header();m("input",e).length||(n=m("<input>").attr({class:"dt-select-checkbox",type:"checkbox","aria-label":o.i18n("select.aria.headerCheckbox")||"Select all rows"}).appendTo(e).on("change",function(){this.checked?o.rows({search:"applied"}).select():o.rows({selected:!0}).deselect()}).on("click",function(e){e.stopPropagation()}),o.on("draw select deselect",function(e,t,l){var s,c;"row"!==l&&l||(l=o.rows({selected:!0}).count(),s=o.rows({search:"applied",selected:!0}).count(),c=o.rows({search:"applied"}).count(),s&&s<=l&&s===c?n.prop("checked",!0).prop("indeterminate",!1):0===s&&0===l?n.prop("checked",!1).prop("indeterminate",!1):n.prop("checked",!1).prop("indeterminate",!0))}))})}function u(e,t,l,s){var c,n=e[t+"s"]({search:"applied"}).indexes(),s=n.indexOf(s),o=n.indexOf(l);e[t+"s"]({selected:!0}).any()||-1!==s?(o<s&&(c=o,o=s,s=c),n.splice(o+1,n.length),n.splice(0,s)):n.splice(n.indexOf(l)+1,n.length),e[t](l,{selected:!0}).any()?(n.splice(n.indexOf(l),1),e[t+"s"](n).deselect()):e[t+"s"](n).select()}function f(e,t){!t&&"single"!==e._select.style||((t=new _.Api(e)).rows({selected:!0}).deselect(),t.columns({selected:!0}).deselect(),t.cells({selected:!0}).deselect())}function h(e,t,l,s,c){var n=t.select.style(),o=t.select.toggleable(),a=t[s](c,{selected:!0}).any();a&&!o||("os"===n?e.ctrlKey||e.metaKey?t[s](c).select(!a):e.shiftKey?"cell"===s?r(t,c,l._select_lastCell||null):u(t,s,c,l._select_lastCell?l._select_lastCell[s]:null):(o=t[s+"s"]({selected:!0}),a&&1===o.flatten().length?t[s](c).deselect():(o.deselect(),t[s](c).select())):"multi+shift"==n&&e.shiftKey?"cell"===s?r(t,c,l._select_lastCell||null):u(t,s,c,l._select_lastCell?l._select_lastCell[s]:null):t[s](c).select(!a))}function v(e){return e.id.replace(/[^a-zA-Z0-9\-\_]/g,"-")}_.select={},_.select.version="2.0.1",_.select.init=function(c){var e,t,l,s,n,o,a,i,r,d,u,f,h=c.settings()[0];if(!_.versionCheck("2"))throw"Warning: Select requires DataTables 2 or newer";h._select||(e=c.state.loaded(),t=function(e,t,l){if(null!==l&&void 0!==l.select){if(c.rows({selected:!0}).any()&&c.rows().deselect(),void 0!==l.select.rows&&c.rows(l.select.rows).select(),c.columns({selected:!0}).any()&&c.columns().deselect(),void 0!==l.select.columns&&c.columns(l.select.columns).select(),c.cells({selected:!0}).any()&&c.cells().deselect(),void 0!==l.select.cells)for(var s=0;s<l.select.cells.length;s++)c.cell(l.select.cells[s].row,l.select.cells[s].column).select();c.state.save()}},c.on("stateSaveParams",function(e,t,l){l.select={},l.select.rows=c.rows({selected:!0}).ids(!0).toArray(),l.select.columns=c.columns({selected:!0})[0],l.select.cells=c.cells({selected:!0})[0].map(function(e){return{row:c.row(e.row).id(!0),column:e.column}})}).on("stateLoadParams",t).one("init",function(){t(0,0,e)}),s=h.oInit.select,l=_.defaults.select,l=void 0===s?l:s,s="row",r="td, th",d="selected",f=!(u=i=a=!(o=!(n="api"))),h._select={infoEls:[]},!0===l?(n="os",f=!0):"string"==typeof l?(n=l,f=!0):m.isPlainObject(l)&&(void 0!==l.blurable&&(o=l.blurable),void 0!==l.toggleable&&(a=l.toggleable),void 0!==l.info&&(i=l.info),void 0!==l.items&&(s=l.items),f=(n=void 0!==l.style?l.style:"os",!0),void 0!==l.selector&&(r=l.selector),void 0!==l.className&&(d=l.className),void 0!==l.headerCheckbox)&&(u=l.headerCheckbox),c.select.selector(r),c.select.items(s),c.select.style(n),c.select.blurable(o),c.select.toggleable(a),c.select.info(i),h._select.className=d,!f&&m(c.table().node()).hasClass("selectable")&&c.select.style("os"),u&&(p(c),c.on("init",function(){p(c)})))},m.each([{type:"row",prop:"aoData"},{type:"column",prop:"aoColumns"}],function(e,i){_.ext.selector[i.type].push(function(e,t,l){var s,c=t.selected,n=[];if(!0!==c&&!1!==c)return l;for(var o=0,a=l.length;o<a;o++)(s=e[i.prop][l[o]])&&(!0===c&&!0===s._select_selected||!1===c&&!s._select_selected)&&n.push(l[o]);return n})}),_.ext.selector.cell.push(function(e,t,l){var s,c=t.selected,n=[];if(void 0===c)return l;for(var o=0,a=l.length;o<a;o++)(s=e.aoData[l[o].row])&&(!0===c&&s._selected_cells&&!0===s._selected_cells[l[o].column]||!1===c&&(!s._selected_cells||!s._selected_cells[l[o].column]))&&n.push(l[o]);return n});var t=_.Api.register,l=_.Api.registerPlural;function o(t,l){return function(e){return e.i18n("buttons."+t,l)}}function w(e){e=e._eventNamespace;return"draw.dt.DT"+e+" select.dt.DT"+e+" deselect.dt.DT"+e}t("select()",function(){return this.iterator("table",function(e){_.select.init(new _.Api(e))})}),t("select.blurable()",function(t){return void 0===t?this.context[0]._select.blurable:this.iterator("table",function(e){e._select.blurable=t})}),t("select.toggleable()",function(t){return void 0===t?this.context[0]._select.toggleable:this.iterator("table",function(e){e._select.toggleable=t})}),t("select.info()",function(t){return void 0===t?this.context[0]._select.info:this.iterator("table",function(e){e._select.info=t})}),t("select.items()",function(t){return void 0===t?this.context[0]._select.items:this.iterator("table",function(e){e._select.items=t,d(new _.Api(e),"selectItems",[t])})}),t("select.style()",function(l){return void 0===l?this.context[0]._select.style:this.iterator("table",function(e){e._select||_.select.init(new _.Api(e)),e._select_init||(o=e,c=new _.Api(o),o._select_init=!0,o.aoRowCreatedCallback.push(function(e,t,l){var s,c,n=o.aoData[l];for(n._select_selected&&m(e).addClass(o._select.className).find("input.dt-select-checkbox").prop("checked",!0),s=0,c=o.aoColumns.length;s<c;s++)(o.aoColumns[s]._select_selected||n._selected_cells&&n._selected_cells[s])&&m(n.anCells[s]).addClass(o._select.className)}),c.on("preXhr.dt.dtSelect",function(e,t){var l,s;t===c.settings()[0]&&(l=c.rows({selected:!0}).ids(!0).filter(function(e){return void 0!==e}),s=c.cells({selected:!0}).eq(0).map(function(e){var t=c.row(e.row).id(!0);return t?{row:t,column:e.column}:void 0}).filter(function(e){return void 0!==e}),c.one("draw.dt.dtSelect",function(){c.rows(l).select(),s.any()&&s.each(function(e){c.cells(e.row,e.column).select()})}))}),c.on("info.dt",function(e,t,l){t._select.infoEls.includes(l)||t._select.infoEls.push(l),a(c,l)}),c.on("select.dtSelect.dt deselect.dtSelect.dt",function(){o._select.infoEls.forEach(function(e){a(c,e)}),c.state.save()}),c.on("destroy.dtSelect",function(){m(c.rows({selected:!0}).nodes()).removeClass(c.settings()[0]._select.className),s(c),c.off(".dtSelect"),m("body").off(".dtSelect"+v(c.table().node()))})),e._select.style=l;var o,c,t=new _.Api(e);s(t),"api"!==l&&n(t),d(new _.Api(e),"selectStyle",[l])})}),t("select.selector()",function(t){return void 0===t?this.context[0]._select.selector:this.iterator("table",function(e){s(new _.Api(e)),e._select.selector=t,"api"!==e._select.style&&n(new _.Api(e))})}),t("select.last()",function(e){var t=this.context[0];return e?(t._select_lastCell=e,this):t._select_lastCell}),l("rows().select()","row().select()",function(e){var o=this;return!1===e?this.deselect():(this.iterator("row",function(e,t){f(e);var l=e.aoData[t],s=e.aoColumns;m(l.nTr).addClass(e._select.className),l._select_selected=!0;for(var c=0;c<s.length;c++){var n=s[c];null===n.sType&&o.columns().types(),"select-checkbox"===n.sType&&((n=l.anCells)&&n[c]&&m("input.dt-select-checkbox",n[c]).prop("checked",!0),null!==l._aSortData)&&(l._aSortData[c]=null)}}),this.iterator("table",function(e,t){d(o,"select",["row",o[t]],!0)}),this)}),t("row().selected()",function(){var e=this.context[0];return!!(e&&this.length&&e.aoData[this[0]]&&e.aoData[this[0]]._select_selected)}),l("columns().select()","column().select()",function(e){var l=this;return!1===e?this.deselect():(this.iterator("column",function(e,t){f(e),e.aoColumns[t]._select_selected=!0;t=new _.Api(e).column(t);m(t.header()).addClass(e._select.className),m(t.footer()).addClass(e._select.className),t.nodes().to$().addClass(e._select.className)}),this.iterator("table",function(e,t){d(l,"select",["column",l[t]],!0)}),this)}),t("column().selected()",function(){var e=this.context[0];return!!(e&&this.length&&e.aoColumns[this[0]]&&e.aoColumns[this[0]]._select_selected)}),l("cells().select()","cell().select()",function(e){var l=this;return!1===e?this.deselect():(this.iterator("cell",function(e,t,l){f(e);t=e.aoData[t];void 0===t._selected_cells&&(t._selected_cells=[]),t._selected_cells[l]=!0,t.anCells&&m(t.anCells[l]).addClass(e._select.className)}),this.iterator("table",function(e,t){d(l,"select",["cell",l.cells(l[t]).indexes().toArray()],!0)}),this)}),t("cell().selected()",function(){var e=this.context[0];if(e&&this.length){e=e.aoData[this[0][0].row];if(e&&e._selected_cells&&e._selected_cells[this[0][0].column])return!0}return!1}),l("rows().deselect()","row().deselect()",function(){var o=this;return this.iterator("row",function(e,t){var l=e.aoData[t],s=e.aoColumns;m(l.nTr).removeClass(e._select.className),l._select_selected=!1,e._select_lastCell=null;for(var c=0;c<s.length;c++){var n=s[c];null===n.sType&&o.columns().types(),"select-checkbox"===n.sType&&((n=l.anCells)&&n[c]&&m("input.dt-select-checkbox",l.anCells[c]).prop("checked",!1),null!==l._aSortData)&&(l._aSortData[c]=null)}}),this.iterator("table",function(e,t){d(o,"deselect",["row",o[t]],!0)}),this}),l("columns().deselect()","column().deselect()",function(){var l=this;return this.iterator("column",function(s,e){s.aoColumns[e]._select_selected=!1;var t=new _.Api(s),l=t.column(e);m(l.header()).removeClass(s._select.className),m(l.footer()).removeClass(s._select.className),t.cells(null,e).indexes().each(function(e){var t=s.aoData[e.row],l=t._selected_cells;!t.anCells||l&&l[e.column]||m(t.anCells[e.column]).removeClass(s._select.className)})}),this.iterator("table",function(e,t){d(l,"deselect",["column",l[t]],!0)}),this}),l("cells().deselect()","cell().deselect()",function(){var l=this;return this.iterator("cell",function(e,t,l){t=e.aoData[t];void 0!==t._selected_cells&&(t._selected_cells[l]=!1),t.anCells&&!e.aoColumns[l]._select_selected&&m(t.anCells[l]).removeClass(e._select.className)}),this.iterator("table",function(e,t){d(l,"deselect",["cell",l[t]],!0)}),this});var b=0;return m.extend(_.ext.buttons,{selected:{text:o("selected","Selected"),className:"buttons-selected",limitTo:["rows","columns","cells"],init:function(l,e,s){var c=this;s._eventNamespace=".select"+b++,l.on(w(s),function(){var e,t;c.enable((e=l,!(-1===(t=s).limitTo.indexOf("rows")||!e.rows({selected:!0}).any())||!(-1===t.limitTo.indexOf("columns")||!e.columns({selected:!0}).any())||!(-1===t.limitTo.indexOf("cells")||!e.cells({selected:!0}).any())))}),this.disable()},destroy:function(e,t,l){e.off(l._eventNamespace)}},selectedSingle:{text:o("selectedSingle","Selected single"),className:"buttons-selected-single",init:function(t,e,l){var s=this;l._eventNamespace=".select"+b++,t.on(w(l),function(){var e=t.rows({selected:!0}).flatten().length+t.columns({selected:!0}).flatten().length+t.cells({selected:!0}).flatten().length;s.enable(1===e)}),this.disable()},destroy:function(e,t,l){e.off(l._eventNamespace)}},selectAll:{text:o("selectAll","Select all"),className:"buttons-select-all",action:function(e,t,l,s){var c=this.select.items(),n=s.selectorModifier;(n?("function"==typeof n&&(n=n.call(t,e,t,l,s)),this[c+"s"](n)):this[c+"s"]()).select()}},selectNone:{text:o("selectNone","Deselect all"),className:"buttons-select-none",action:function(){f(this.settings()[0],!0)},init:function(t,e,l){var s=this;l._eventNamespace=".select"+b++,t.on(w(l),function(){var e=t.rows({selected:!0}).flatten().length+t.columns({selected:!0}).flatten().length+t.cells({selected:!0}).flatten().length;s.enable(0<e)}),this.disable()},destroy:function(e,t,l){e.off(l._eventNamespace)}},showSelected:{text:o("showSelected","Show only selected"),className:"buttons-show-selected",action:function(e,t){var s;t.search.fixed("dt-select")?(t.search.fixed("dt-select",null),this.active(!1)):(s=t.settings()[0].aoData,t.search.fixed("dt-select",function(e,t,l){return s[l]._select_selected}),this.active(!0)),t.draw()}}}),m.each(["Row","Column","Cell"],function(e,t){var c=t.toLowerCase();_.ext.buttons["select"+t+"s"]={text:o("select"+t+"s","Select "+c+"s"),className:"buttons-select-"+c+"s",action:function(){this.select.items(c)},init:function(e){var s=this;e.on("selectItems.dt.DT",function(e,t,l){s.active(l===c)})}}}),_.type("select-checkbox",{className:"dt-select",detect:function(e){return"select-checkbox"===e&&e},order:{pre:function(e){return"X"===e?-1:0}}}),m.extend(!0,_.defaults.oLanguage,{select:{aria:{rowCheckbox:"Select row"}}}),_.render.select=function(e,t){var n=e?_.util.get(e):null,o=t?_.util.get(t):null;return function(e,t,l,s){var c=s.settings.aoData[s.row]._select_selected,s=s.settings.oLanguage.select.aria.rowCheckbox;return"display"===t?m("<input>").attr({"aria-label":s,class:"dt-select-checkbox",name:o?o(l):null,type:"checkbox",value:n?n(l):null,checked:c})[0]:"type"===t?"select-checkbox":"filter"!==t&&c?"X":""}},_.ext.order["select-checkbox"]=function(t,e){return this.api().column(e,{order:"index"}).nodes().map(function(e){return"row"===t._select.items?m(e).parent().hasClass(t._select.className):"cell"===t._select.items&&m(e).hasClass(t._select.className)})},m.fn.DataTable.select=_.select,m(e).on("preInit.dt.dtSelect",function(e,t){"dt"===e.namespace&&_.select.init(new _.Api(t))}),_});
|