New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

jquery-datatables-checkboxes

Package Overview
Dependencies
Maintainers
1
Versions
22
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

jquery-datatables-checkboxes - npm Package Compare versions

Comparing version 1.2.9 to 1.2.10

.eslintignore

1743

js/dataTables.checkboxes.js

@@ -1,2 +0,2 @@

/*! Checkboxes 1.2.9
/*! Checkboxes 1.2.10
* Copyright (c) Gyrocode (www.gyrocode.com)

@@ -9,3 +9,3 @@ * License: MIT License

* @description Checkboxes extension for jQuery DataTables
* @version 1.2.9
* @version 1.2.10
* @file dataTables.checkboxes.js

@@ -19,2 +19,3 @@ * @author Gyrocode (http://www.gyrocode.com/projects/jquery-datatables-checkboxes/)

(function( factory ){
/* eslint-disable */
if ( typeof define === 'function' && define.amd ) {

@@ -44,938 +45,949 @@ // AMD

}
}(function( $, window, document, undefined ) {
'use strict';
var DataTable = $.fn.dataTable;
/* eslint-enable */
}(function( $, window, document ) {
'use strict';
var DataTable = $.fn.dataTable;
/**
* Checkboxes is an extension for the jQuery DataTables library that provides
* universal solution for working with checkboxes in a table.
*
* @class
* @param {object} settings DataTables settings object for the host table
* @requires jQuery 1.7+
* @requires DataTables 1.10.8+
*
* @example
* $('#example').DataTable({
* 'columnDefs': [
* {
* 'targets': 0,
* 'checkboxes': true
* }
* ]
* });
*/
var Checkboxes = function ( settings ) {
// Sanity check that we are using DataTables 1.10.8 or newer
if ( ! DataTable.versionCheck || ! DataTable.versionCheck( '1.10.8' ) ) {
throw 'DataTables Checkboxes requires DataTables 1.10.8 or newer';
}
/**
* Checkboxes is an extension for the jQuery DataTables library that provides
* universal solution for working with checkboxes in a table.
*
* @class
* @param {object} settings DataTables settings object for the host table
* @requires jQuery 1.7+
* @requires DataTables 1.10.8+
*
* @example
* $('#example').DataTable({
* 'columnDefs': [
* {
* 'targets': 0,
* 'checkboxes': true
* }
* ]
* });
*/
var Checkboxes = function ( settings ) {
// Sanity check that we are using DataTables 1.10.8 or newer
if ( ! DataTable.versionCheck || ! DataTable.versionCheck( '1.10.8' ) ) {
throw 'DataTables Checkboxes requires DataTables 1.10.8 or newer';
}
this.s = {
dt: new DataTable.Api( settings ),
columns: [],
data: {},
dataDisabled: {},
ignoreSelect: false
};
this.s = {
dt: new DataTable.Api( settings ),
columns: [],
data: [],
dataDisabled: [],
ignoreSelect: false
};
// Get settings object
this.s.ctx = this.s.dt.settings()[0];
// Get settings object
this.s.ctx = this.s.dt.settings()[0];
// Check if checkboxes have already been initialised on this table
if ( this.s.ctx.checkboxes ) {
return;
}
// Check if checkboxes have already been initialised on this table
if ( this.s.ctx.checkboxes ) {
return;
}
settings.checkboxes = this;
settings.checkboxes = this;
this._constructor();
};
this._constructor();
};
Checkboxes.prototype = {
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Constructor
*/
Checkboxes.prototype = {
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Constructor
*/
/**
* Initialise the Checkboxes instance
*
* @private
*/
_constructor: function ()
{
var self = this;
var dt = self.s.dt;
var ctx = self.s.ctx;
var hasCheckboxes = false;
var hasCheckboxesSelectRow = false;
/**
* Initialise the Checkboxes instance
*
* @private
*/
_constructor: function ()
{
var self = this;
var dt = self.s.dt;
var ctx = self.s.ctx;
var hasCheckboxes = false;
var hasCheckboxesSelectRow = false;
// Retrieve stored state
var state = dt.state.loaded();
// Retrieve stored state
var state = dt.state.loaded();
for(var i = 0; i < ctx.aoColumns.length; i++){
if (ctx.aoColumns[i].checkboxes){
var $colHeader = $(dt.column(i).header());
for(var i = 0; i < ctx.aoColumns.length; i++){
if (ctx.aoColumns[i].checkboxes){
var $colHeader = $(dt.column(i).header());
//
// INITIALIZATION
//
//
// INITIALIZATION
//
hasCheckboxes = true;
hasCheckboxes = true;
if(!$.isPlainObject(ctx.aoColumns[i].checkboxes)){
ctx.aoColumns[i].checkboxes = {};
}
if(!$.isPlainObject(ctx.aoColumns[i].checkboxes)){
ctx.aoColumns[i].checkboxes = {};
}
ctx.aoColumns[i].checkboxes = $.extend(
{}, Checkboxes.defaults, ctx.aoColumns[i].checkboxes
);
ctx.aoColumns[i].checkboxes = $.extend(
{}, Checkboxes.defaults, ctx.aoColumns[i].checkboxes
);
//
// OPTIONS
//
//
// OPTIONS
//
var colOptions = {
'searchable': false,
'orderable': false
};
var colOptions = {
'searchable': false,
'orderable': false
};
if(ctx.aoColumns[i].sClass === ''){
colOptions['className'] = 'dt-checkboxes-cell';
} else {
colOptions['className'] = ctx.aoColumns[i].sClass + ' dt-checkboxes-cell';
}
if(ctx.aoColumns[i].sClass === ''){
colOptions['className'] = 'dt-checkboxes-cell';
} else {
colOptions['className'] = ctx.aoColumns[i].sClass + ' dt-checkboxes-cell';
}
if(ctx.aoColumns[i].sWidthOrig === null){
colOptions['width'] = '1%';
}
if(ctx.aoColumns[i].sWidthOrig === null){
colOptions['width'] = '1%';
}
if(ctx.aoColumns[i].mRender === null){
colOptions['render'] = function(){
return '<input type="checkbox" class="dt-checkboxes">';
};
}
if(ctx.aoColumns[i].mRender === null){
colOptions['render'] = function(){
return '<input type="checkbox" class="dt-checkboxes">';
};
}
DataTable.ext.internal._fnColumnOptions(ctx, i, colOptions);
DataTable.ext.internal._fnColumnOptions(ctx, i, colOptions);
// WORKAROUND: Remove "sorting" class
$colHeader.removeClass('sorting');
// WORKAROUND: Remove "sorting" class
$colHeader.removeClass('sorting');
// WORKAROUND: Detach all event handlers for this column
$colHeader.off('.dt');
// WORKAROUND: Detach all event handlers for this column
$colHeader.off('.dt');
// If table has data source other than Ajax
if(ctx.sAjaxSource === null){
// WORKAROUND: Invalidate column data
var cells = dt.cells('tr', i);
cells.invalidate('data');
// If table has data source other than Ajax
if(ctx.sAjaxSource === null){
// WORKAROUND: Invalidate column data
var cells = dt.cells('tr', i);
cells.invalidate('data');
// WORKAROUND: Add required class to existing cells
$(cells.nodes()).addClass(colOptions['className']);
}
// WORKAROUND: Add required class to existing cells
$(cells.nodes()).addClass(colOptions['className']);
}
//
// DATA
//
//
// DATA
//
// Initialize object holding data for selected checkboxes
self.s.data[i] = {};
self.s.dataDisabled[i] = {};
// Initialize object holding data for selected checkboxes
self.s.data[i] = {};
self.s.dataDisabled[i] = {};
// If state is loaded and contains data for this column
if(state && state.checkboxes && state.checkboxes.hasOwnProperty(i)){
// Load previous state
self.s.data[i] = state.checkboxes[i];
}
// If state is loaded and contains data for this column
if(state && state.checkboxes && state.checkboxes.hasOwnProperty(i)){
// If checkbox state saving is enabled
if(ctx.aoColumns[i].checkboxes.stateSave){
// Load previous state
self.s.data[i] = state.checkboxes[i];
}
}
// Store column index for easy column selection later
self.s.columns.push(i);
// Store column index for easy column selection later
self.s.columns.push(i);
//
// CLASSES
//
//
// CLASSES
//
// If row selection is enabled for this column
if(ctx.aoColumns[i].checkboxes.selectRow){
// If row selection is enabled for this column
if(ctx.aoColumns[i].checkboxes.selectRow){
// If Select extension is enabled
if(ctx._select){
hasCheckboxesSelectRow = true;
// If Select extension is enabled
if(ctx._select){
hasCheckboxesSelectRow = true;
// Otherwise, if Select extension is not enabled
} else {
// Disable row selection for this column
ctx.aoColumns[i].checkboxes.selectRow = false;
// Otherwise, if Select extension is not enabled
} else {
// Disable row selection for this column
ctx.aoColumns[i].checkboxes.selectRow = false;
}
}
}
if(ctx.aoColumns[i].checkboxes.selectAll){
// Save previous HTML content
$colHeader.data('html', $colHeader.html());
if(ctx.aoColumns[i].checkboxes.selectAll){
// Save previous HTML content
$colHeader.data('html', $colHeader.html());
// If "Select all" control markup is provided
if(ctx.aoColumns[i].checkboxes.selectAllRender !== null){
var selectAllHtml = '';
// If "Select all" control markup is provided
if(ctx.aoColumns[i].checkboxes.selectAllRender !== null){
var selectAllHtml = '';
// If "selectAllRender" option is a function
if($.isFunction(ctx.aoColumns[i].checkboxes.selectAllRender)){
selectAllHtml = ctx.aoColumns[i].checkboxes.selectAllRender();
// If "selectAllRender" option is a function
if($.isFunction(ctx.aoColumns[i].checkboxes.selectAllRender)){
selectAllHtml = ctx.aoColumns[i].checkboxes.selectAllRender();
// Otherwise, if "selectAllRender" option is a string
} else if(typeof ctx.aoColumns[i].checkboxes.selectAllRender === 'string'){
selectAllHtml = ctx.aoColumns[i].checkboxes.selectAllRender;
// Otherwise, if "selectAllRender" option is a string
} else if(typeof ctx.aoColumns[i].checkboxes.selectAllRender === 'string'){
selectAllHtml = ctx.aoColumns[i].checkboxes.selectAllRender;
}
$colHeader
.html(selectAllHtml)
.addClass('dt-checkboxes-select-all')
.attr('data-col', i);
}
$colHeader
.html(selectAllHtml)
.addClass('dt-checkboxes-select-all')
.attr('data-col', i);
}
}
}
}
// If table has at least one checkbox
if(hasCheckboxes){
// If table has at least one checkbox
if(hasCheckboxes){
//
// EVENT HANDLERS
//
//
// EVENT HANDLERS
//
var $table = $(dt.table().node());
var $tableBody = $(dt.table().body());
var $tableContainer = $(dt.table().container());
var $table = $(dt.table().node());
var $tableBody = $(dt.table().body());
var $tableContainer = $(dt.table().container());
// If there is at least one column that has row selection enabled
if(hasCheckboxesSelectRow){
$table.addClass('dt-checkboxes-select');
// If there is at least one column that has row selection enabled
if(hasCheckboxesSelectRow){
$table.addClass('dt-checkboxes-select');
// Handle event before row is selected/deselected
$table.on('user-select.dt.dtCheckboxes', function ( e, dt, type, cell, originalEvent ){
var cellIdx = cell.index();
var rowIdx = cellIdx.row;
var colIdx = self.getSelectRowColIndex();
var cellData = dt.cell({ row: rowIdx, column: colIdx }).data();
// Handle event before row is selected/deselected
$table.on('user-select.dt.dtCheckboxes', function ( e, dt, type, cell /*, originalEvent*/ ){
var cellIdx = cell.index();
var rowIdx = cellIdx.row;
var colIdx = self.getSelectRowColIndex();
var cellData = dt.cell({ row: rowIdx, column: colIdx }).data();
// If checkbox in the cell cannot be checked
if(!self.isCellSelectable(colIdx, cellData)){
// Prevent row selection
e.preventDefault();
}
});
// If checkbox in the cell cannot be checked
if(!self.isCellSelectable(colIdx, cellData)){
// Prevent row selection
e.preventDefault();
}
});
// Handle row select/deselect event
$table.on('select.dt.dtCheckboxes deselect.dt.dtCheckboxes', function(e, api, type, indexes){
self.onSelect(e, type, indexes);
});
// Handle row select/deselect event
$table.on('select.dt.dtCheckboxes deselect.dt.dtCheckboxes', function(e, api, type, indexes){
self.onSelect(e, type, indexes);
});
// Disable Select extension information display
dt.select.info(false);
// Disable Select extension information display
dt.select.info(false);
// Update the table information element with selected item summary
//
// NOTE: Needed to display correct count of selected rows
// when using server-side processing mode
$table.on('draw.dt.dtCheckboxes select.dt.dtCheckboxes deselect.dt.dtCheckboxes', function(){
self.showInfoSelected();
// Update the table information element with selected item summary
//
// NOTE: Needed to display correct count of selected rows
// when using server-side processing mode
$table.on('draw.dt.dtCheckboxes select.dt.dtCheckboxes deselect.dt.dtCheckboxes', function(){
self.showInfoSelected();
});
}
// Handle table draw event
$table.on('draw.dt.dtCheckboxes', function(e){
self.onDraw(e);
});
}
// Handle table draw event
$table.on('draw.dt.dtCheckboxes', function(e){
self.onDraw(e);
});
// Handle checkbox click event
$tableBody.on('click.dtCheckboxes', 'input.dt-checkboxes', function(e){
self.onClick(e, this);
});
// Handle checkbox click event
$tableBody.on('click.dtCheckboxes', 'input.dt-checkboxes', function(e){
self.onClick(e, this);
});
// Handle click on "Select all" control
$tableContainer.on('click.dtCheckboxes', 'thead th.dt-checkboxes-select-all input[type="checkbox"]', function(e){
self.onClickSelectAll(e, this);
});
// Handle click on "Select all" control
$tableContainer.on('click.dtCheckboxes', 'thead th.dt-checkboxes-select-all input[type="checkbox"]', function(e){
self.onClickSelectAll(e, this);
});
// Handle click on heading containing "Select all" control
$tableContainer.on('click.dtCheckboxes', 'thead th.dt-checkboxes-select-all', function(e) {
$('input[type="checkbox"]', this).not(':disabled').trigger('click');
});
// If row selection is disabled
if(!hasCheckboxesSelectRow){
// Handle click on cell containing checkbox
$tableContainer.on('click.dtCheckboxes', 'tbody td.dt-checkboxes-cell', function(e) {
// Handle click on heading containing "Select all" control
$tableContainer.on('click.dtCheckboxes', 'thead th.dt-checkboxes-select-all', function() {
$('input[type="checkbox"]', this).not(':disabled').trigger('click');
});
}
// Handle click on label node in heading containing "Select all" control
// and in cell containing checkbox
$tableContainer.on('click.dtCheckboxes', 'thead th.dt-checkboxes-select-all label, tbody td.dt-checkboxes-cell label', function(e) {
// Prevent default behavior
e.preventDefault();
});
// Handle click on "Select all" control in floating fixed header
$(document).on('click.dtCheckboxes', '.fixedHeader-floating thead th.dt-checkboxes-select-all input[type="checkbox"]', function(e){
// If FixedHeader is enabled in this instance
if(ctx._fixedHeader){
// If header is floating in this instance
if(ctx._fixedHeader.dom['header'].floating){
self.onClickSelectAll(e, this);
}
// If row selection is disabled
if(!hasCheckboxesSelectRow){
// Handle click on cell containing checkbox
$tableContainer.on('click.dtCheckboxes', 'tbody td.dt-checkboxes-cell', function() {
$('input[type="checkbox"]', this).not(':disabled').trigger('click');
});
}
});
// Handle click on heading containing "Select all" control in floating fixed header
$(document).on('click.dtCheckboxes', '.fixedHeader-floating thead th.dt-checkboxes-select-all', function(e) {
// If FixedHeader is enabled in this instance
if(ctx._fixedHeader){
// If header is floating in this instance
if(ctx._fixedHeader.dom['header'].floating){
$('input[type="checkbox"]', this).trigger('click');
// Handle click on label node in heading containing "Select all" control
// and in cell containing checkbox
$tableContainer.on('click.dtCheckboxes', 'thead th.dt-checkboxes-select-all label, tbody td.dt-checkboxes-cell label', function(e) {
// Prevent default behavior
e.preventDefault();
});
// Handle click on "Select all" control in floating fixed header
$(document).on('click.dtCheckboxes', '.fixedHeader-floating thead th.dt-checkboxes-select-all input[type="checkbox"]', function(e){
// If FixedHeader is enabled in this instance
if(ctx._fixedHeader){
// If header is floating in this instance
if(ctx._fixedHeader.dom['header'].floating){
self.onClickSelectAll(e, this);
}
}
}
});
});
// Handle table initialization event
$table.on('init.dt.dtCheckboxes', function(){
// If server-side processing mode is not enabled
// NOTE: Needed to avoid duplicate call to updateStateCheckboxes() in onDraw()
if(!ctx.oFeatures.bServerSide){
// If state saving is enabled
if(ctx.oFeatures.bStateSave){
self.updateState();
// Handle click on heading containing "Select all" control in floating fixed header
$(document).on('click.dtCheckboxes', '.fixedHeader-floating thead th.dt-checkboxes-select-all', function() {
// If FixedHeader is enabled in this instance
if(ctx._fixedHeader){
// If header is floating in this instance
if(ctx._fixedHeader.dom['header'].floating){
$('input[type="checkbox"]', this).trigger('click');
}
}
});
// Handle Ajax request completion event
// NOTE: Needed to update table state
// if table is reloaded via ajax.reload() API method
$table.on('xhr.dt', function ( e, settings, json, xhr ) {
// For every column where checkboxes are enabled
$.each(self.s.columns, function(index, colIdx){
// Clear data
self.s.data[colIdx] = {};
});
// Handle table initialization event
$table.on('init.dt.dtCheckboxes', function(){
// If server-side processing mode is not enabled
// NOTE: Needed to avoid duplicate call to updateStateCheckboxes() in onDraw()
if(!ctx.oFeatures.bServerSide){
// If state saving is enabled
if(ctx.oFeatures.bStateSave){
// Retrieve stored state
var state = dt.state.loaded();
self.updateState();
}
// Handle Ajax request completion event
// NOTE: Needed to update table state
// if table is reloaded via ajax.reload() API method
$table.on('xhr.dt.dtCheckboxes', function ( /* e, settings , json, xhr */ ) {
// For every column where checkboxes are enabled
$.each(self.s.columns, function(index, colIdx){
// If state is loaded and contains data for this column
if(state && state.checkboxes && state.checkboxes.hasOwnProperty(colIdx)){
// Load previous state
self.s.data[colIdx] = state.checkboxes[colIdx];
// Clear data
self.s.data[colIdx] = {};
self.s.dataDisabled[colIdx] = {};
});
// If state saving is enabled
if(ctx.oFeatures.bStateSave){
// Retrieve stored state
var state = dt.state.loaded();
// For every column where checkboxes are enabled
$.each(self.s.columns, function(index, colIdx){
// If state is loaded and contains data for this column
if(state && state.checkboxes && state.checkboxes.hasOwnProperty(colIdx)){
// If checkbox state saving is enabled
if(ctx.aoColumns[colIdx].checkboxes.stateSave){
// Load previous state
self.s.data[colIdx] = state.checkboxes[colIdx];
}
}
});
// Update table state on next redraw
$table.one('draw.dt.dtCheckboxes', function(){
self.updateState();
});
}
});
}
// If state saving is enabled
if(ctx.oFeatures.bStateSave){
// Handle state saving event
$table.on('stateSaveParams.dt.dtCheckboxes', function (e, settings, data){
// Initialize array holding checkbox state for each column
data.checkboxes = [];
// For every column where checkboxes are enabled
$.each(self.s.columns, function(index, colIdx){
// If checkbox state saving is enabled
if(ctx.aoColumns[colIdx].checkboxes.stateSave){
// Store data associated with this plug-in
data.checkboxes[colIdx] = self.s.data[colIdx];
}
});
});
}
});
// Update table state on next redraw
$table.one('draw.dt.dtCheckboxes', function(e){
self.updateState();
});
}
// Handle table destroy event
$table.one('destroy.dt.dtCheckboxes', function(){
// Detach event handlers
$(document).off('click.dtCheckboxes');
$tableContainer.on('.dtCheckboxes');
$tableBody.off('.dtCheckboxes');
$table.off('.dtCheckboxes');
// Clear data
//
// NOTE: Needed only to reduce memory footprint
// in case user saves instance of DataTable object.
self.s.data = {};
self.s.dataDisabled = {};
// Remove added elements
$('.dt-checkboxes-select-all', $table).each(function(index, el){
$(el)
.html($(el).data('html'))
.removeClass('dt-checkboxes-select-all');
});
}
});
}
},
// Updates array holding data for selected checkboxes
updateData: function(cells, colIdx, isSelected){
var self = this;
var dt = self.s.dt;
var ctx = self.s.ctx;
// If Checkboxes extension is enabled for this column
if(ctx.aoColumns[colIdx].checkboxes){
var cellsData = cells.data();
cellsData.each(function(cellData){
// If checkbox is checked
if(isSelected){
ctx.checkboxes.s.data[colIdx][cellData] = 1;
// Otherwise, if checkbox is not checked
} else {
delete ctx.checkboxes.s.data[colIdx][cellData];
}
});
// If state saving is enabled
if(ctx.oFeatures.bStateSave){
// Handle state saving event
$table.on('stateSaveParams.dt.dtCheckboxes', function (e, settings, data){
// Store data associated with this plug-in
data.checkboxes = self.s.data;
});
// If checkbox state saving is enabled
if(ctx.aoColumns[colIdx].checkboxes.stateSave){
// Save state
dt.state.save();
}
}
});
}
},
// Handle table destroy event
$table.one('destroy.dt.dtCheckboxes', function(e, settings){
// Detach event handlers
$(document).off('click.dtCheckboxes');
$tableContainer.on('.dtCheckboxes');
$tableBody.off('.dtCheckboxes');
$table.off('.dtCheckboxes');
// Updates row selection
updateSelect: function(selector, isSelected){
var self = this;
var dt = self.s.dt;
var ctx = self.s.ctx;
// Clear data
//
// NOTE: Needed only to reduce memory footprint
// in case user saves instance of DataTable object.
self.s.data = {};
// If Select extension is enabled
if(ctx._select){
// Disable select event hanlder temporarily
self.s.ignoreSelect = true;
// Remove added elements
$('.dt-checkboxes-select-all', $table).each(function(index, el){
$(el)
.html($(el).data('html'))
.removeClass('dt-checkboxes-select-all');
});
});
}
},
// Updates array holding data for selected checkboxes
updateData: function(cells, colIdx, isSelected){
var self = this;
var dt = self.s.dt;
var ctx = self.s.ctx;
// If Checkboxes extension is enabled for this column
if(ctx.aoColumns[colIdx].checkboxes){
var cellsData = cells.data();
cellsData.each(function(cellData, index){
// If checkbox is checked
if(isSelected){
ctx.checkboxes.s.data[colIdx][cellData] = 1;
// Otherwise, if checkbox is not checked
dt.rows(selector).select();
} else {
delete ctx.checkboxes.s.data[colIdx][cellData];
dt.rows(selector).deselect();
}
});
// If state saving is enabled
if(ctx.oFeatures.bStateSave){
// Save state
dt.state.save();
// Re-enable select event handler
self.s.ignoreSelect = false;
}
}
},
},
// Updates row selection
updateSelect: function(selector, isSelected){
var self = this;
var dt = self.s.dt;
var ctx = self.s.ctx;
// Updates state of single checkbox
updateCheckbox: function(cells, colIdx, isSelected){
var self = this;
var ctx = self.s.ctx;
// If Select extension is enabled
if(ctx._select){
// Disable select event hanlder temporarily
self.s.ignoreSelect = true;
var cellNodes = cells.nodes();
if(cellNodes.length){
$('input.dt-checkboxes', cellNodes).not(':disabled').prop('checked', isSelected);
if(isSelected){
dt.rows(selector).select();
} else {
dt.rows(selector).deselect();
// If selectCallback is a function
if($.isFunction(ctx.aoColumns[colIdx].checkboxes.selectCallback)){
ctx.aoColumns[colIdx].checkboxes.selectCallback(cellNodes, isSelected);
}
}
},
// Re-enable select event handler
self.s.ignoreSelect = false;
}
},
// Update table state
updateState: function(){
var self = this;
// Updates state of single checkbox
updateCheckbox: function(cells, colIdx, isSelected){
var self = this;
var dt = self.s.dt;
var ctx = self.s.ctx;
self.updateStateCheckboxes({ page: 'all', search: 'none' });
var cellNodes = cells.nodes();
if(cellNodes.length){
$('input.dt-checkboxes', cellNodes).not(':disabled').prop('checked', isSelected);
$.each(self.s.columns, function(index, colIdx){
self.updateSelectAll(colIdx);
});
},
// If selectCallback is a function
if($.isFunction(ctx.aoColumns[colIdx].checkboxes.selectCallback)){
ctx.aoColumns[colIdx].checkboxes.selectCallback(cellNodes, isSelected);
}
}
},
// Updates state of multiple checkboxes
updateStateCheckboxes: function(opts){
var self = this;
var dt = self.s.dt;
var ctx = self.s.ctx;
// Update table state
updateState: function(){
var self = this;
var dt = self.s.dt;
var ctx = self.s.ctx;
// Enumerate all cells
dt.cells('tr', self.s.columns, opts).every(function(rowIdx, colIdx){
// Get cell data
var cellData = this.data();
self.updateStateCheckboxes({ page: 'all', search: 'none' });
// Determine if checkbox in the cell can be selected
var isCellSelectable = self.isCellSelectable(colIdx, cellData);
$.each(self.s.columns, function(index, colIdx){
self.updateSelectAll(colIdx);
});
},
// If checkbox is checked
if(ctx.checkboxes.s.data[colIdx].hasOwnProperty(cellData)){
self.updateCheckbox(this, colIdx, true);
// Updates state of multiple checkboxes
updateStateCheckboxes: function(opts){
var self = this;
var dt = self.s.dt;
var ctx = self.s.ctx;
// If row selection is enabled
// and checkbox can be checked
if(ctx.aoColumns[colIdx].checkboxes.selectRow && isCellSelectable){
self.updateSelect(rowIdx, true);
}
}
// Enumerate all cells
dt.cells('tr', self.s.columns, opts).every(function(rowIdx, colIdx){
// Get cell data
var cellData = this.data();
// If checkbox is disabled
if(!isCellSelectable){
$('input.dt-checkboxes', this.node()).prop('disabled', true);
}
});
},
// Determine if checkbox in the cell can be checked
var isCellSelectable = self.isCellSelectable(colIdx, cellData);
// Handles checkbox click event
onClick: function(e, ctrl){
var self = this;
var dt = self.s.dt;
var ctx = self.s.ctx;
// If checkbox is selected
if(ctx.checkboxes.s.data[colIdx].hasOwnProperty(cellData)){
self.updateCheckbox(this, colIdx, true);
var cellSelector;
// If row selection is enabled
// and checkbox can be checked
if(ctx.aoColumns[colIdx].checkboxes.selectRow && isCellSelectable){
self.updateSelect(rowIdx, true);
}
}
// Get cell
var $cell = $(ctrl).closest('td');
// If checkbox is disabled
if(!isCellSelectable){
$('input.dt-checkboxes', this.node()).prop('disabled', true);
// If cell is in a fixed column using FixedColumns extension
if($cell.parents('.DTFC_Cloned').length){
cellSelector = dt.fixedColumns().cellIndex($cell);
} else {
cellSelector = $cell;
}
});
},
// Handles checkbox click event
onClick: function(e, ctrl){
var self = this;
var dt = self.s.dt;
var ctx = self.s.ctx;
var cell = dt.cell(cellSelector);
var cellIdx = cell.index();
var colIdx = cellIdx.column;
var cellSelector;
// If row selection is not enabled
// NOTE: if row selection is enabled, checkbox selection/deselection
// would be handled by onSelect event instead
if(!ctx.aoColumns[colIdx].checkboxes.selectRow){
cell.checkboxes.select(ctrl.checked);
// Get cell
var $cell = $(ctrl).closest('td');
// Prevent click event from propagating to parent
e.stopPropagation();
// If cell is in a fixed column using FixedColumns extension
if($cell.parents('.DTFC_Cloned').length){
cellSelector = dt.fixedColumns().cellIndex($cell);
} else {
// WORKAROUND:
// Select extension may keep the row selected
// when checkbox is unchecked with SHIFT key.
//
// We need to update the state of the checkbox AFTER handling
// select/deselect event from Select extension.
//
// Call to setTimeout is needed to let select/deselect event handler
// update the data first.
setTimeout(function(){
// Get cell data
var cellData = cell.data();
} else {
cellSelector = $cell;
}
// Determine whether data is in the list
var hasData = self.s.data[colIdx].hasOwnProperty(cellData);
var cell = dt.cell(cellSelector);
var cellIdx = cell.index();
var colIdx = cellIdx.column;
// If state of the checkbox needs to be updated
if(hasData !== ctrl.checked){
self.updateCheckbox(cell, colIdx, hasData);
self.updateSelectAll(colIdx);
}
}, 0);
}
},
// If row selection is not enabled
// NOTE: if row selection is enabled, checkbox selection/deselection
// would be handled by onSelect event instead
if(!ctx.aoColumns[colIdx].checkboxes.selectRow){
cell.checkboxes.select(ctrl.checked);
// Handles row select/deselect event
onSelect: function(e, type, indexes){
var self = this;
var dt = self.s.dt;
// Prevent click event from propagating to parent
e.stopPropagation();
if(self.s.ignoreSelect){ return; }
} else {
// WORKAROUND:
// Select extension may keep the row selected
// when checkbox is unchecked with SHIFT key.
//
// We need to update the state of the checkbox AFTER handling
// select/deselect event from Select extension.
//
// Call to setTimeout is needed to let select/deselect event handler
// update the data first.
setTimeout(function(){
// Get cell data
var cellData = cell.data();
if(type === 'row'){
// Get index of the first column that has checkbox and row selection enabled
var colIdx = self.getSelectRowColIndex();
if(colIdx !== null){
var cells = dt.cells(indexes, colIdx);
// Determine whether data is in the list
var hasData = self.s.data[colIdx].hasOwnProperty(cellData);
// If state of the checkbox needs to be updated
if(hasData !== ctrl.checked){
self.updateCheckbox(cell, colIdx, hasData);
self.updateData(cells, colIdx, (e.type === 'select') ? true : false);
self.updateCheckbox(cells, colIdx, (e.type === 'select') ? true : false);
self.updateSelectAll(colIdx);
}
}, 0);
}
},
}
},
// Handles row select/deselect event
onSelect: function(e, type, indexes){
var self = this;
var dt = self.s.dt;
var ctx = self.s.ctx;
// Handles checkbox click event
onClickSelectAll: function(e, ctrl){
var self = this;
var dt = self.s.dt;
var ctx = self.s.ctx;
if(self.s.ignoreSelect){ return; }
// Calculate column index
var colIdx = null;
var $th = $(ctrl).closest('th');
if(type === 'row'){
// Get index of the first column that has checkbox and row selection enabled
var colIdx = self.getSelectRowColIndex();
if(colIdx !== null){
var cells = dt.cells(indexes, colIdx);
self.updateData(cells, colIdx, (e.type === 'select') ? true : false);
self.updateCheckbox(cells, colIdx, (e.type === 'select') ? true : false);
self.updateSelectAll(colIdx);
// If column is fixed using FixedColumns extension
if($th.parents('.DTFC_Cloned').length){
var cellIdx = dt.fixedColumns().cellIndex($th);
colIdx = cellIdx.column;
} else {
colIdx = dt.column($th).index();
}
}
},
// Handles checkbox click event
onClickSelectAll: function(e, ctrl){
var self = this;
var dt = self.s.dt;
var ctx = self.s.ctx;
// Indicate that state of "Select all" control has been changed
$(ctrl).data('is-changed', true);
// Calculate column index
var colIdx = null;
var $th = $(ctrl).closest('th');
dt.column(colIdx, {
page: (
(ctx.aoColumns[colIdx].checkboxes && ctx.aoColumns[colIdx].checkboxes.selectAllPages)
? 'all'
: 'current'
),
search: 'applied'
}).checkboxes.select(ctrl.checked);
// If column is fixed using FixedColumns extension
if($th.parents('.DTFC_Cloned').length){
var cellIdx = dt.fixedColumns().cellIndex($th);
colIdx = cellIdx.column;
} else {
colIdx = dt.column($th).index();
}
// Prevent click event from propagating to parent
e.stopPropagation();
},
dt.column(colIdx, {
page: (
(ctx.aoColumns[colIdx].checkboxes && ctx.aoColumns[colIdx].checkboxes.selectAllPages)
? 'all'
: 'current'
),
search: 'applied'
}).checkboxes.select(ctrl.checked);
// Handles table draw event
onDraw: function(){
var self = this;
var ctx = self.s.ctx;
// Prevent click event from propagating to parent
e.stopPropagation();
},
// If server-side processing is enabled
// or deferred render is enabled
//
// TODO: it's not optimal to update state of checkboxes
// for already created rows in deferred rendering mode
if(ctx.oFeatures.bServerSide || ctx.oFeatures.bDeferRender){
self.updateStateCheckboxes({ page: 'current', search: 'none' });
}
// Handles table draw event
onDraw: function(e){
var self = this;
var dt = self.s.dt;
var ctx = self.s.ctx;
$.each(self.s.columns, function(index, colIdx){
self.updateSelectAll(colIdx);
});
},
// If server-side processing is enabled
// or deferred render is enabled
//
// TODO: it's not optimal to update state of checkboxes
// for already created rows in deferred rendering mode
if(ctx.oFeatures.bServerSide || ctx.oFeatures.bDeferRender){
self.updateStateCheckboxes({ page: 'current', search: 'none' });
}
// Updates state of the "Select all" controls
updateSelectAll: function(colIdx){
var self = this;
var dt = self.s.dt;
var ctx = self.s.ctx;
$.each(self.s.columns, function(index, colIdx){
self.updateSelectAll(colIdx);
});
},
// If Checkboxes extension is enabled for this column
// and "Select all" control is enabled for this column
if(ctx.aoColumns[colIdx].checkboxes && ctx.aoColumns[colIdx].checkboxes.selectAll){
var cells = dt.cells('tr', colIdx, {
page: (
(ctx.aoColumns[colIdx].checkboxes.selectAllPages)
? 'all'
: 'current'
),
search: 'applied'
});
// Updates state of the "Select all" controls
updateSelectAll: function(colIdx){
var self = this;
var dt = self.s.dt;
var ctx = self.s.ctx;
var $tableContainer = dt.table().container();
var $checkboxesSelectAll = $('.dt-checkboxes-select-all[data-col="' + colIdx + '"] input[type="checkbox"]', $tableContainer);
// If Checkboxes extension is enabled for this column
// and "Select all" control is enabled for this column
if(ctx.aoColumns[colIdx].checkboxes && ctx.aoColumns[colIdx].checkboxes.selectAll){
var cells = dt.cells('tr', colIdx, {
page: (
(ctx.aoColumns[colIdx].checkboxes.selectAllPages)
? 'all'
: 'current'
),
search: 'applied'
});
var countChecked = 0;
var countDisabled = 0;
var cellsData = cells.data();
$.each(cellsData, function(index, cellData){
// If checkbox is not disabled
if(self.isCellSelectable(colIdx, cellData)){
if(self.s.data[colIdx].hasOwnProperty(cellData)){ countChecked++; }
var $tableContainer = dt.table().container();
var $checkboxesSelectAll = $('.dt-checkboxes-select-all[data-col="' + colIdx + '"] input[type="checkbox"]', $tableContainer);
// Otherwise, if checkbox is disabled
} else {
countDisabled++;
}
});
var countChecked = 0;
var cellsData = cells.data();
$.each(cellsData, function(index, cellData){
if(self.s.data[colIdx].hasOwnProperty(cellData)){ countChecked++; }
});
// If FixedHeader is enabled in this instance
if(ctx._fixedHeader){
// If header is floating in this instance
if(ctx._fixedHeader.dom['header'].floating){
$checkboxesSelectAll = $('.fixedHeader-floating .dt-checkboxes-select-all[data-col="' + colIdx + '"] input[type="checkbox"]');
// If FixedHeader is enabled in this instance
if(ctx._fixedHeader){
// If header is floating in this instance
if(ctx._fixedHeader.dom['header'].floating){
$checkboxesSelectAll = $('.fixedHeader-floating .dt-checkboxes-select-all[data-col="' + colIdx + '"] input[type="checkbox"]');
}
}
}
var isSelected;
var isIndeterminate;
var isSelected;
var isIndeterminate;
// If none of the checkboxes are checked
if (countChecked === 0) {
isSelected = false;
isIndeterminate = false;
// If none of the checkboxes are checked
if (countChecked === 0){
isSelected = false;
isIndeterminate = false;
// If all of the checkboxes are checked
} else if (countChecked === cellsData.length) {
isSelected = true;
isIndeterminate = false;
// If all of the checkboxes are checked
} else if ((countChecked + countDisabled) === cellsData.length){
isSelected = true;
isIndeterminate = false;
// If some of the checkboxes are checked
} else {
isSelected = true;
isIndeterminate = true;
}
// If some of the checkboxes are checked
} else {
isSelected = true;
isIndeterminate = true;
}
$checkboxesSelectAll.prop({
'checked': isSelected,
'indeterminate': isIndeterminate
});
var isChanged = $checkboxesSelectAll.data('is-changed');
var isSelectedNow = $checkboxesSelectAll.prop('checked');
var isIndeterminateNow = $checkboxesSelectAll.prop('indeterminate');
// If selectAllCallback is a function
if($.isFunction(ctx.aoColumns[colIdx].checkboxes.selectAllCallback)){
ctx.aoColumns[colIdx].checkboxes.selectAllCallback($checkboxesSelectAll.closest('th').get(0), isSelected, isIndeterminate);
}
}
},
// If state of "Select all" control has been changed
if(isChanged || isSelectedNow !== isSelected || isIndeterminateNow !== isIndeterminate){
// Reset "Select all" control state flag
$checkboxesSelectAll.data('is-changed', false);
// Updates the information element of the DataTable showing information about the
// items selected. Based on info() method of Select extension.
showInfoSelected: function(){
var self = this;
var dt = self.s.dt;
var ctx = self.s.ctx;
$checkboxesSelectAll.prop({
'checked': isSelected,
'indeterminate': isIndeterminate
});
if ( ! ctx.aanFeatures.i ) {
return;
}
// If selectAllCallback is a function
if($.isFunction(ctx.aoColumns[colIdx].checkboxes.selectAllCallback)){
ctx.aoColumns[colIdx].checkboxes.selectAllCallback($checkboxesSelectAll.closest('th').get(0), isSelected, isIndeterminate);
}
}
}
},
var $output = $('<span class="select-info"/>');
var add = function(name, num){
$output.append( $('<span class="select-item"/>').append( dt.i18n(
'select.'+name+'s',
{ _: '%d '+name+'s selected', 0: '', 1: '1 '+name+' selected' },
num
) ) );
};
// Updates the information element of the DataTable showing information about the
// items selected. Based on info() method of Select extension.
showInfoSelected: function(){
var self = this;
var dt = self.s.dt;
var ctx = self.s.ctx;
// Get index of the first column that has checkbox and row selection enabled
var colIdx = self.getSelectRowColIndex();
// If there is a column that has checkbox and row selection enabled
if(colIdx !== null){
// Count number of selected rows
var countRows = 0;
for (var cellData in ctx.checkboxes.s.data[colIdx]){
if (ctx.checkboxes.s.data[colIdx].hasOwnProperty(cellData)){
countRows++;
}
if ( ! ctx.aanFeatures.i ) {
return;
}
add('row', countRows);
var $output = $('<span class="select-info"/>');
var add = function(name, num){
$output.append( $('<span class="select-item"/>').append( dt.i18n(
'select.'+name+'s',
{ _: '%d '+name+'s selected', 0: '', 1: '1 '+name+' selected' },
num
) ) );
};
// Internal knowledge of DataTables to loop over all information elements
$.each( ctx.aanFeatures.i, function ( i, el ) {
var $el = $(el);
// Get index of the first column that has checkbox and row selection enabled
var colIdx = self.getSelectRowColIndex();
var $existing = $el.children('span.select-info');
if($existing.length){
$existing.remove();
// If there is a column that has checkbox and row selection enabled
if(colIdx !== null){
// Count number of selected rows
var countRows = 0;
for (var cellData in ctx.checkboxes.s.data[colIdx]){
if (ctx.checkboxes.s.data[colIdx].hasOwnProperty(cellData)){
countRows++;
}
}
if($output.text() !== ''){
$el.append($output);
}
});
}
},
add('row', countRows);
// Determines whether checkbox in the cell can be checked
isCellSelectable: function(colIdx, cellData){
var self = this;
var dt = self.s.dt;
var ctx = self.s.ctx;
// Internal knowledge of DataTables to loop over all information elements
$.each( ctx.aanFeatures.i, function ( i, el ) {
var $el = $(el);
// If data is in the list of disabled elements
if(ctx.checkboxes.s.dataDisabled[colIdx].hasOwnProperty(cellData)){
return false;
var $existing = $el.children('span.select-info');
if($existing.length){
$existing.remove();
}
// Otherwise, if checkbox can be selected
} else {
return true;
}
},
if($output.text() !== ''){
$el.append($output);
}
});
}
},
// Gets cell index
getCellIndex: function(cell){
var self = this;
var dt = self.s.dt;
var ctx = self.s.ctx;
// Determines whether checkbox in the cell can be checked
isCellSelectable: function(colIdx, cellData){
var self = this;
var ctx = self.s.ctx;
// If FixedColumns extension is available
if(ctx._oFixedColumns){
return dt.fixedColumns().cellIndex(cell);
// If data is in the list of disabled elements
if(ctx.checkboxes.s.dataDisabled[colIdx].hasOwnProperty(cellData)){
return false;
} else {
return dt.cell(cell).index();
}
},
// Otherwise, if checkbox can be selected
} else {
return true;
}
},
// Gets index of the first column that has checkbox and row selection enabled
getSelectRowColIndex: function(){
var self = this;
var dt = self.s.dt;
var ctx = self.s.ctx;
// Gets cell index
getCellIndex: function(cell){
var self = this;
var dt = self.s.dt;
var ctx = self.s.ctx;
var colIdx = null;
// If FixedColumns extension is available
if(ctx._oFixedColumns){
return dt.fixedColumns().cellIndex(cell);
for(var i = 0; i < ctx.aoColumns.length; i++){
// If Checkboxes extension is enabled
// and row selection is enabled for this column
if(ctx.aoColumns[i].checkboxes && ctx.aoColumns[i].checkboxes.selectRow){
colIdx = i;
break;
} else {
return dt.cell(cell).index();
}
}
},
return colIdx;
},
// Gets index of the first column that has checkbox and row selection enabled
getSelectRowColIndex: function(){
var self = this;
var ctx = self.s.ctx;
// Updates fixed column if FixedColumns extension is enabled
// and given column is inside a fixed column
updateFixedColumn: function(colIdx){
var self = this;
var dt = self.s.dt;
var ctx = self.s.ctx;
var colIdx = null;
// If FixedColumns extension is enabled
if(ctx._oFixedColumns){
var leftCols = ctx._oFixedColumns.s.iLeftColumns;
var rightCols = ctx.aoColumns.length - ctx._oFixedColumns.s.iRightColumns - 1;
if (colIdx < leftCols || colIdx > rightCols){
dt.fixedColumns().update();
}
}
}
};
for(var i = 0; i < ctx.aoColumns.length; i++){
// If Checkboxes extension is enabled
// and row selection is enabled for this column
if(ctx.aoColumns[i].checkboxes && ctx.aoColumns[i].checkboxes.selectRow){
colIdx = i;
break;
}
}
return colIdx;
},
/**
* Checkboxes default settings for initialisation
*
* @namespace
* @name Checkboxes.defaults
* @static
*/
Checkboxes.defaults = {
/**
* Enable / disable row selection
*
* @type {Boolean}
* @default `false`
*/
selectRow: false,
// Updates fixed column if FixedColumns extension is enabled
// and given column is inside a fixed column
updateFixedColumn: function(colIdx){
var self = this;
var dt = self.s.dt;
var ctx = self.s.ctx;
/**
* Enable / disable "select all" control in the header
*
* @type {Boolean}
* @default `true`
*/
selectAll: true,
// If FixedColumns extension is enabled
if(ctx._oFixedColumns){
var leftCols = ctx._oFixedColumns.s.iLeftColumns;
var rightCols = ctx.aoColumns.length - ctx._oFixedColumns.s.iRightColumns - 1;
if (colIdx < leftCols || colIdx > rightCols){
dt.fixedColumns().update();
}
}
}
};
/**
* Enable / disable ability to select checkboxes from all pages
*
* @type {Boolean}
* @default `true`
*/
selectAllPages: true,
/**
* Checkbox select/deselect callback
*
* @type {Function}
* @default `null`
*/
selectCallback: null,
* Checkboxes default settings for initialisation
*
* @namespace
* @name Checkboxes.defaults
* @static
*/
Checkboxes.defaults = {
/**
* Enable / disable checkbox state loading/saving if state saving is enabled globally
*
* @type {Boolean}
* @default `true`
*/
stateSave: true,
/**
* "Select all" control select/deselect callback
*
* @type {Function}
* @default `null`
*/
selectAllCallback: null,
/**
* Enable / disable row selection
*
* @type {Boolean}
* @default `false`
*/
selectRow: false,
/**
* "Select all" control markup
*
* @type {mixed}
* @default `<input type="checkbox">`
*/
selectAllRender: '<input type="checkbox">'
};
/**
* Enable / disable "select all" control in the header
*
* @type {Boolean}
* @default `true`
*/
selectAll: true,
/**
* Enable / disable ability to select checkboxes from all pages
*
* @type {Boolean}
* @default `true`
*/
selectAllPages: true,
/*
* API
*/
var Api = $.fn.dataTable.Api;
/**
* Checkbox select/deselect callback
*
* @type {Function}
* @default `null`
*/
selectCallback: null,
// Doesn't do anything - work around for a bug in DT... Not documented
Api.register( 'checkboxes()', function () {
return this;
} );
/**
* "Select all" control select/deselect callback
*
* @type {Function}
* @default `null`
*/
selectAllCallback: null,
Api.registerPlural( 'columns().checkboxes.select()', 'column().checkboxes.select()', function ( state ) {
if(typeof state === 'undefined'){ state = true; }
/**
* "Select all" control markup
*
* @type {mixed}
* @default `<input type="checkbox">`
*/
selectAllRender: '<input type="checkbox">'
};
return this.iterator( 'column-rows', function ( ctx, colIdx, i, j, rowsIdx ) {
if(ctx.checkboxes){
// Prepare a list of all cells
var selector = [];
$.each(rowsIdx, function(index, rowIdx){
selector.push({ row: rowIdx, column: colIdx });
});
var cells = this.cells(selector);
var cellsData = cells.data();
/*
* API
*/
var Api = $.fn.dataTable.Api;
// Prepare a list of cells that contain checkboxes that can be selected
var rowsSelectableIdx = [];
selector = [];
$.each(cellsData, function(index, cellData){
// If checkbox in the cell can be checked
if(ctx.checkboxes.isCellSelectable(colIdx, cellData)){
selector.push({ row: rowsIdx[index], column: colIdx });
rowsSelectableIdx.push(rowsIdx[index]);
}
});
// Doesn't do anything - work around for a bug in DT... Not documented
Api.register( 'checkboxes()', function () {
return this;
} );
cells = this.cells(selector);
Api.registerPlural( 'columns().checkboxes.select()', 'column().checkboxes.select()', function ( state ) {
if(typeof state === 'undefined'){ state = true; }
ctx.checkboxes.updateData(cells, colIdx, state);
ctx.checkboxes.updateCheckbox(cells, colIdx, state);
return this.iterator( 'column-rows', function ( ctx, colIdx, i, j, rowsIdx ) {
// If Checkboxes extension is enabled for this column
if(ctx.aoColumns[colIdx].checkboxes){
// Prepare a list of all cells
var selector = [];
$.each(rowsIdx, function(index, rowIdx){
selector.push({ row: rowIdx, column: colIdx });
});
// If row selection is enabled
if(ctx.aoColumns[colIdx].checkboxes.selectRow){
ctx.checkboxes.updateSelect(rowsSelectableIdx, state);
}
var cells = this.cells(selector);
var cellsData = cells.data();
// If FixedColumns extension is enabled
if(ctx._oFixedColumns){
// Use timeout to let FixedColumns construct the header
// before we update the "Select all" checkbox
setTimeout(function(){ ctx.checkboxes.updateSelectAll(colIdx); }, 0);
// Prepare a list of cells that contain checkboxes that can be selected
var rowsSelectableIdx = [];
selector = [];
$.each(cellsData, function(index, cellData){
// If checkbox in the cell can be selected
if(ctx.checkboxes.isCellSelectable(colIdx, cellData)){
selector.push({ row: rowsIdx[index], column: colIdx });
rowsSelectableIdx.push(rowsIdx[index]);
}
});
} else {
ctx.checkboxes.updateSelectAll(colIdx);
}
cells = this.cells(selector);
ctx.checkboxes.updateFixedColumn(colIdx);
}
}, 1 );
} );
Api.registerPlural( 'cells().checkboxes.select()', 'cell().checkboxes.select()', function ( state ) {
if(typeof state === 'undefined'){ state = true; }
return this.iterator( 'cell', function ( ctx, rowIdx, colIdx ) {
if(ctx.checkboxes){
var cells = this.cells([{ row: rowIdx, column: colIdx }]);
var cellData = this.cell({ row: rowIdx, column: colIdx }).data();
// If checkbox in the cell can be checked
if(ctx.checkboxes.isCellSelectable(colIdx, cellData)){
ctx.checkboxes.updateData(cells, colIdx, state);

@@ -986,3 +998,3 @@ ctx.checkboxes.updateCheckbox(cells, colIdx, state);

if(ctx.aoColumns[colIdx].checkboxes.selectRow){
ctx.checkboxes.updateSelect(rowIdx, state);
ctx.checkboxes.updateSelect(rowsSelectableIdx, state);
}

@@ -1002,119 +1014,170 @@

}
}
}, 1 );
} );
}, 1 );
} );
Api.registerPlural( 'cells().checkboxes.enable()', 'cell().checkboxes.enable()', function ( state ) {
if(typeof state === 'undefined'){ state = true; }
Api.registerPlural( 'cells().checkboxes.select()', 'cell().checkboxes.select()', function ( state ) {
if(typeof state === 'undefined'){ state = true; }
return this.iterator( 'cell', function ( ctx, rowIdx, colIdx ) {
if(ctx.checkboxes){
var cell = this.cell({ row: rowIdx, column: colIdx });
return this.iterator( 'cell', function ( ctx, rowIdx, colIdx ) {
// If Checkboxes extension is enabled for this column
if(ctx.aoColumns[colIdx].checkboxes){
var cells = this.cells([{ row: rowIdx, column: colIdx }]);
var cellData = this.cell({ row: rowIdx, column: colIdx }).data();
// Get cell data
var cellData = cell.data();
// If checkbox in the cell can be selected
if(ctx.checkboxes.isCellSelectable(colIdx, cellData)){
ctx.checkboxes.updateData(cells, colIdx, state);
ctx.checkboxes.updateCheckbox(cells, colIdx, state);
// If checkbox should be enabled
if(state){
delete ctx.checkboxes.s.dataDisabled[colIdx][cellData];
// If row selection is enabled
if(ctx.aoColumns[colIdx].checkboxes.selectRow){
ctx.checkboxes.updateSelect(rowIdx, state);
}
// Otherwise, if checkbox should be disabled
} else {
ctx.checkboxes.s.dataDisabled[colIdx][cellData] = 1;
}
// If FixedColumns extension is enabled
if(ctx._oFixedColumns){
// Use timeout to let FixedColumns construct the header
// before we update the "Select all" checkbox
setTimeout(function(){ ctx.checkboxes.updateSelectAll(colIdx); }, 0);
// Determine if cell node is available
// (deferRender is not enabled or cell has been already created)
var cellNode = cell.node();
if(cellNode){
$('input.dt-checkboxes', cellNode).prop('disabled', !state);
}
} else {
ctx.checkboxes.updateSelectAll(colIdx);
}
// If row selection is enabled
// and checkbox can be checked
if(ctx.aoColumns[colIdx].checkboxes.selectRow){
// If data is in the list
if(ctx.checkboxes.s.data[colIdx].hasOwnProperty(cellData)){
// Update selection based on current state:
// if checkbox is enabled then select row;
// otherwise, deselect row
ctx.checkboxes.updateSelect(rowIdx, state);
ctx.checkboxes.updateFixedColumn(colIdx);
}
}
}
}, 1 );
} );
}, 1 );
} );
Api.registerPlural( 'cells().checkboxes.disable()', 'cell().checkboxes.disable()', function ( state ) {
if(typeof state === 'undefined'){ state = true; }
return this.checkboxes.enable(!state);
} );
Api.registerPlural( 'cells().checkboxes.enable()', 'cell().checkboxes.enable()', function ( state ) {
if(typeof state === 'undefined'){ state = true; }
Api.registerPlural( 'columns().checkboxes.deselect()', 'column().checkboxes.deselect()', function ( state ) {
if(typeof state === 'undefined'){ state = true; }
return this.checkboxes.select(!state);
} );
return this.iterator( 'cell', function ( ctx, rowIdx, colIdx ) {
// If Checkboxes extension is enabled for this column
if(ctx.aoColumns[colIdx].checkboxes){
var cell = this.cell({ row: rowIdx, column: colIdx });
Api.registerPlural( 'cells().checkboxes.deselect()', 'cell().checkboxes.deselect()', function ( state ) {
if(typeof state === 'undefined'){ state = true; }
return this.checkboxes.select(!state);
} );
// Get cell data
var cellData = cell.data();
Api.registerPlural( 'columns().checkboxes.deselectAll()', 'column().checkboxes.deselectAll()', function () {
return this.iterator( 'column', function (ctx, colIdx){
// If Checkboxes extension is enabled for this column
if(ctx.aoColumns[colIdx].checkboxes){
ctx.checkboxes.s.data[colIdx] = {};
// If checkbox should be enabled
if(state){
delete ctx.checkboxes.s.dataDisabled[colIdx][cellData];
this.column(colIdx).checkboxes.select(false);
}
}, 1 );
} );
// Otherwise, if checkbox should be disabled
} else {
ctx.checkboxes.s.dataDisabled[colIdx][cellData] = 1;
}
Api.registerPlural( 'columns().checkboxes.selected()', 'column().checkboxes.selected()', function () {
return this.iterator( 'column', function (ctx, colIdx){
if(ctx.aoColumns[colIdx].checkboxes){
var data = [];
// Determine if cell node is available
// (deferRender is not enabled or cell has been already created)
var cellNode = cell.node();
if(cellNode){
$('input.dt-checkboxes', cellNode).prop('disabled', !state);
}
$.each(ctx.checkboxes.s.data[colIdx], function(cellData, countRows){
// If checkbox in the cell can be checked
if(ctx.checkboxes.isCellSelectable(colIdx, cellData)){
data.push(cellData);
// If row selection is enabled
// and checkbox can be checked
if(ctx.aoColumns[colIdx].checkboxes.selectRow){
// If data is in the list
if(ctx.checkboxes.s.data[colIdx].hasOwnProperty(cellData)){
// Update selection based on current state:
// if checkbox is enabled then select row;
// otherwise, deselect row
ctx.checkboxes.updateSelect(rowIdx, state);
}
}
});
}
}, 1 );
} );
return data;
} else {
return [];
}
}, 1 );
} );
Api.registerPlural( 'cells().checkboxes.disable()', 'cell().checkboxes.disable()', function ( state ) {
if(typeof state === 'undefined'){ state = true; }
return this.checkboxes.enable(!state);
} );
Api.registerPlural( 'columns().checkboxes.deselect()', 'column().checkboxes.deselect()', function ( state ) {
if(typeof state === 'undefined'){ state = true; }
return this.checkboxes.select(!state);
} );
/**
* Version information
*
* @name Checkboxes.version
* @static
*/
Checkboxes.version = '1.2.9';
Api.registerPlural( 'cells().checkboxes.deselect()', 'cell().checkboxes.deselect()', function ( state ) {
if(typeof state === 'undefined'){ state = true; }
return this.checkboxes.select(!state);
} );
Api.registerPlural( 'columns().checkboxes.deselectAll()', 'column().checkboxes.deselectAll()', function () {
return this.iterator( 'column', function (ctx, colIdx){
// If Checkboxes extension is enabled for this column
if(ctx.aoColumns[colIdx].checkboxes){
ctx.checkboxes.s.data[colIdx] = {};
this.column(colIdx).checkboxes.select(false);
}
}, 1 );
} );
$.fn.DataTable.Checkboxes = Checkboxes;
$.fn.dataTable.Checkboxes = Checkboxes;
Api.registerPlural( 'columns().checkboxes.selected()', 'column().checkboxes.selected()', function () {
return this.iterator( 'column-rows', function ( ctx, colIdx, i, j, rowsIdx ) {
// If Checkboxes extension is enabled for this column
if(ctx.aoColumns[colIdx].checkboxes){
// Prepare a list of all cells
var selector = [];
$.each(rowsIdx, function(index, rowIdx){
selector.push({ row: rowIdx, column: colIdx });
});
// Get all cells data
var cells = this.cells(selector);
var cellsData = cells.data();
// Attach a listener to the document which listens for DataTables initialisation
// events so we can automatically initialise
$(document).on( 'preInit.dt.dtCheckboxes', function (e, settings, json) {
if ( e.namespace !== 'dt' ) {
return;
}
var data = [];
new Checkboxes( settings );
} );
// Enumerate all cells data
$.each(cellsData, function(index, cellData){
// If checkbox is checked
if(ctx.checkboxes.s.data[colIdx].hasOwnProperty(cellData)){
// If checkbox in the cell can be selected
if(ctx.checkboxes.isCellSelectable(colIdx, cellData)){
data.push(cellData);
}
}
});
return data;
return Checkboxes;
} else {
return [];
}
}, 1 );
} );
/**
* Version information
*
* @name Checkboxes.version
* @static
*/
Checkboxes.version = '1.2.10';
$.fn.DataTable.Checkboxes = Checkboxes;
$.fn.dataTable.Checkboxes = Checkboxes;
// Attach a listener to the document which listens for DataTables initialisation
// events so we can automatically initialise
$(document).on( 'preInit.dt.dtCheckboxes', function (e, settings /*, json */ ) {
if ( e.namespace !== 'dt' ) {
return;
}
new Checkboxes( settings );
} );
return Checkboxes;
}));

@@ -1,5 +0,5 @@

/*! Checkboxes 1.2.9
/*! Checkboxes 1.2.10
* Copyright (c) Gyrocode (www.gyrocode.com)
* License: MIT License
*/
(function(factory){if(typeof define==="function"&&define.amd){define(["jquery","datatables.net"],function($){return factory($,window,document);});}else{if(typeof exports==="object"){module.exports=function(root,$){if(!root){root=window;}if(!$||!$.fn.dataTable){$=require("datatables.net")(root,$).$;}return factory($,root,root.document);};}else{factory(jQuery,window,document);}}}(function($,window,document,undefined){var DataTable=$.fn.dataTable;var Checkboxes=function(settings){if(!DataTable.versionCheck||!DataTable.versionCheck("1.10.8")){throw"DataTables Checkboxes requires DataTables 1.10.8 or newer";}this.s={dt:new DataTable.Api(settings),columns:[],data:{},dataDisabled:{},ignoreSelect:false};this.s.ctx=this.s.dt.settings()[0];if(this.s.ctx.checkboxes){return;}settings.checkboxes=this;this._constructor();};Checkboxes.prototype={_constructor:function(){var self=this;var dt=self.s.dt;var ctx=self.s.ctx;var hasCheckboxes=false;var hasCheckboxesSelectRow=false;var state=dt.state.loaded();for(var i=0;i<ctx.aoColumns.length;i++){if(ctx.aoColumns[i].checkboxes){var $colHeader=$(dt.column(i).header());hasCheckboxes=true;if(!$.isPlainObject(ctx.aoColumns[i].checkboxes)){ctx.aoColumns[i].checkboxes={};}ctx.aoColumns[i].checkboxes=$.extend({},Checkboxes.defaults,ctx.aoColumns[i].checkboxes);var colOptions={"searchable":false,"orderable":false};if(ctx.aoColumns[i].sClass===""){colOptions["className"]="dt-checkboxes-cell";}else{colOptions["className"]=ctx.aoColumns[i].sClass+" dt-checkboxes-cell";}if(ctx.aoColumns[i].sWidthOrig===null){colOptions["width"]="1%";}if(ctx.aoColumns[i].mRender===null){colOptions["render"]=function(){return'<input type="checkbox" class="dt-checkboxes">';};}DataTable.ext.internal._fnColumnOptions(ctx,i,colOptions);$colHeader.removeClass("sorting");$colHeader.off(".dt");if(ctx.sAjaxSource===null){var cells=dt.cells("tr",i);cells.invalidate("data");$(cells.nodes()).addClass(colOptions["className"]);}self.s.data[i]={};self.s.dataDisabled[i]={};if(state&&state.checkboxes&&state.checkboxes.hasOwnProperty(i)){self.s.data[i]=state.checkboxes[i];}self.s.columns.push(i);if(ctx.aoColumns[i].checkboxes.selectRow){if(ctx._select){hasCheckboxesSelectRow=true;}else{ctx.aoColumns[i].checkboxes.selectRow=false;}}if(ctx.aoColumns[i].checkboxes.selectAll){$colHeader.data("html",$colHeader.html());if(ctx.aoColumns[i].checkboxes.selectAllRender!==null){var selectAllHtml="";if($.isFunction(ctx.aoColumns[i].checkboxes.selectAllRender)){selectAllHtml=ctx.aoColumns[i].checkboxes.selectAllRender();}else{if(typeof ctx.aoColumns[i].checkboxes.selectAllRender==="string"){selectAllHtml=ctx.aoColumns[i].checkboxes.selectAllRender;}}$colHeader.html(selectAllHtml).addClass("dt-checkboxes-select-all").attr("data-col",i);}}}}if(hasCheckboxes){var $table=$(dt.table().node());var $tableBody=$(dt.table().body());var $tableContainer=$(dt.table().container());if(hasCheckboxesSelectRow){$table.addClass("dt-checkboxes-select");$table.on("user-select.dt.dtCheckboxes",function(e,dt,type,cell,originalEvent){var cellIdx=cell.index();var rowIdx=cellIdx.row;var colIdx=self.getSelectRowColIndex();var cellData=dt.cell({row:rowIdx,column:colIdx}).data();if(!self.isCellSelectable(colIdx,cellData)){e.preventDefault();}});$table.on("select.dt.dtCheckboxes deselect.dt.dtCheckboxes",function(e,api,type,indexes){self.onSelect(e,type,indexes);});dt.select.info(false);$table.on("draw.dt.dtCheckboxes select.dt.dtCheckboxes deselect.dt.dtCheckboxes",function(){self.showInfoSelected();});}$table.on("draw.dt.dtCheckboxes",function(e){self.onDraw(e);});$tableBody.on("click.dtCheckboxes","input.dt-checkboxes",function(e){self.onClick(e,this);});$tableContainer.on("click.dtCheckboxes",'thead th.dt-checkboxes-select-all input[type="checkbox"]',function(e){self.onClickSelectAll(e,this);});$tableContainer.on("click.dtCheckboxes","thead th.dt-checkboxes-select-all",function(e){$('input[type="checkbox"]',this).not(":disabled").trigger("click");});if(!hasCheckboxesSelectRow){$tableContainer.on("click.dtCheckboxes","tbody td.dt-checkboxes-cell",function(e){$('input[type="checkbox"]',this).not(":disabled").trigger("click");});}$tableContainer.on("click.dtCheckboxes","thead th.dt-checkboxes-select-all label, tbody td.dt-checkboxes-cell label",function(e){e.preventDefault();});$(document).on("click.dtCheckboxes",'.fixedHeader-floating thead th.dt-checkboxes-select-all input[type="checkbox"]',function(e){if(ctx._fixedHeader){if(ctx._fixedHeader.dom["header"].floating){self.onClickSelectAll(e,this);}}});$(document).on("click.dtCheckboxes",".fixedHeader-floating thead th.dt-checkboxes-select-all",function(e){if(ctx._fixedHeader){if(ctx._fixedHeader.dom["header"].floating){$('input[type="checkbox"]',this).trigger("click");}}});$table.on("init.dt.dtCheckboxes",function(){if(!ctx.oFeatures.bServerSide){if(ctx.oFeatures.bStateSave){self.updateState();}$table.on("xhr.dt",function(e,settings,json,xhr){$.each(self.s.columns,function(index,colIdx){self.s.data[colIdx]={};});if(ctx.oFeatures.bStateSave){var state=dt.state.loaded();$.each(self.s.columns,function(index,colIdx){if(state&&state.checkboxes&&state.checkboxes.hasOwnProperty(colIdx)){self.s.data[colIdx]=state.checkboxes[colIdx];}});$table.one("draw.dt.dtCheckboxes",function(e){self.updateState();});}});}if(ctx.oFeatures.bStateSave){$table.on("stateSaveParams.dt.dtCheckboxes",function(e,settings,data){data.checkboxes=self.s.data;});}});$table.one("destroy.dt.dtCheckboxes",function(e,settings){$(document).off("click.dtCheckboxes");$tableContainer.on(".dtCheckboxes");$tableBody.off(".dtCheckboxes");$table.off(".dtCheckboxes");self.s.data={};$(".dt-checkboxes-select-all",$table).each(function(index,el){$(el).html($(el).data("html")).removeClass("dt-checkboxes-select-all");});});}},updateData:function(cells,colIdx,isSelected){var self=this;var dt=self.s.dt;var ctx=self.s.ctx;if(ctx.aoColumns[colIdx].checkboxes){var cellsData=cells.data();cellsData.each(function(cellData,index){if(isSelected){ctx.checkboxes.s.data[colIdx][cellData]=1;}else{delete ctx.checkboxes.s.data[colIdx][cellData];}});if(ctx.oFeatures.bStateSave){dt.state.save();}}},updateSelect:function(selector,isSelected){var self=this;var dt=self.s.dt;var ctx=self.s.ctx;if(ctx._select){self.s.ignoreSelect=true;if(isSelected){dt.rows(selector).select();}else{dt.rows(selector).deselect();}self.s.ignoreSelect=false;}},updateCheckbox:function(cells,colIdx,isSelected){var self=this;var dt=self.s.dt;var ctx=self.s.ctx;var cellNodes=cells.nodes();if(cellNodes.length){$("input.dt-checkboxes",cellNodes).not(":disabled").prop("checked",isSelected);if($.isFunction(ctx.aoColumns[colIdx].checkboxes.selectCallback)){ctx.aoColumns[colIdx].checkboxes.selectCallback(cellNodes,isSelected);}}},updateState:function(){var self=this;var dt=self.s.dt;var ctx=self.s.ctx;self.updateStateCheckboxes({page:"all",search:"none"});$.each(self.s.columns,function(index,colIdx){self.updateSelectAll(colIdx);});},updateStateCheckboxes:function(opts){var self=this;var dt=self.s.dt;var ctx=self.s.ctx;dt.cells("tr",self.s.columns,opts).every(function(rowIdx,colIdx){var cellData=this.data();var isCellSelectable=self.isCellSelectable(colIdx,cellData);if(ctx.checkboxes.s.data[colIdx].hasOwnProperty(cellData)){self.updateCheckbox(this,colIdx,true);if(ctx.aoColumns[colIdx].checkboxes.selectRow&&isCellSelectable){self.updateSelect(rowIdx,true);}}if(!isCellSelectable){$("input.dt-checkboxes",this.node()).prop("disabled",true);}});},onClick:function(e,ctrl){var self=this;var dt=self.s.dt;var ctx=self.s.ctx;var cellSelector;var $cell=$(ctrl).closest("td");if($cell.parents(".DTFC_Cloned").length){cellSelector=dt.fixedColumns().cellIndex($cell);}else{cellSelector=$cell;}var cell=dt.cell(cellSelector);var cellIdx=cell.index();var colIdx=cellIdx.column;if(!ctx.aoColumns[colIdx].checkboxes.selectRow){cell.checkboxes.select(ctrl.checked);e.stopPropagation();}else{setTimeout(function(){var cellData=cell.data();var hasData=self.s.data[colIdx].hasOwnProperty(cellData);if(hasData!==ctrl.checked){self.updateCheckbox(cell,colIdx,hasData);self.updateSelectAll(colIdx);}},0);}},onSelect:function(e,type,indexes){var self=this;var dt=self.s.dt;var ctx=self.s.ctx;if(self.s.ignoreSelect){return;}if(type==="row"){var colIdx=self.getSelectRowColIndex();if(colIdx!==null){var cells=dt.cells(indexes,colIdx);self.updateData(cells,colIdx,(e.type==="select")?true:false);self.updateCheckbox(cells,colIdx,(e.type==="select")?true:false);self.updateSelectAll(colIdx);}}},onClickSelectAll:function(e,ctrl){var self=this;var dt=self.s.dt;var ctx=self.s.ctx;var colIdx=null;var $th=$(ctrl).closest("th");if($th.parents(".DTFC_Cloned").length){var cellIdx=dt.fixedColumns().cellIndex($th);colIdx=cellIdx.column;}else{colIdx=dt.column($th).index();}dt.column(colIdx,{page:((ctx.aoColumns[colIdx].checkboxes&&ctx.aoColumns[colIdx].checkboxes.selectAllPages)?"all":"current"),search:"applied"}).checkboxes.select(ctrl.checked);e.stopPropagation();},onDraw:function(e){var self=this;var dt=self.s.dt;var ctx=self.s.ctx;if(ctx.oFeatures.bServerSide||ctx.oFeatures.bDeferRender){self.updateStateCheckboxes({page:"current",search:"none"});}$.each(self.s.columns,function(index,colIdx){self.updateSelectAll(colIdx);});},updateSelectAll:function(colIdx){var self=this;var dt=self.s.dt;var ctx=self.s.ctx;if(ctx.aoColumns[colIdx].checkboxes&&ctx.aoColumns[colIdx].checkboxes.selectAll){var cells=dt.cells("tr",colIdx,{page:((ctx.aoColumns[colIdx].checkboxes.selectAllPages)?"all":"current"),search:"applied"});var $tableContainer=dt.table().container();var $checkboxesSelectAll=$('.dt-checkboxes-select-all[data-col="'+colIdx+'"] input[type="checkbox"]',$tableContainer);var countChecked=0;var cellsData=cells.data();$.each(cellsData,function(index,cellData){if(self.s.data[colIdx].hasOwnProperty(cellData)){countChecked++;}});if(ctx._fixedHeader){if(ctx._fixedHeader.dom["header"].floating){$checkboxesSelectAll=$('.fixedHeader-floating .dt-checkboxes-select-all[data-col="'+colIdx+'"] input[type="checkbox"]');}}var isSelected;var isIndeterminate;if(countChecked===0){isSelected=false;isIndeterminate=false;}else{if(countChecked===cellsData.length){isSelected=true;isIndeterminate=false;}else{isSelected=true;isIndeterminate=true;}}$checkboxesSelectAll.prop({"checked":isSelected,"indeterminate":isIndeterminate});if($.isFunction(ctx.aoColumns[colIdx].checkboxes.selectAllCallback)){ctx.aoColumns[colIdx].checkboxes.selectAllCallback($checkboxesSelectAll.closest("th").get(0),isSelected,isIndeterminate);}}},showInfoSelected:function(){var self=this;var dt=self.s.dt;var ctx=self.s.ctx;if(!ctx.aanFeatures.i){return;}var $output=$('<span class="select-info"/>');var add=function(name,num){$output.append($('<span class="select-item"/>').append(dt.i18n("select."+name+"s",{_:"%d "+name+"s selected",0:"",1:"1 "+name+" selected"},num)));};var colIdx=self.getSelectRowColIndex();if(colIdx!==null){var countRows=0;for(var cellData in ctx.checkboxes.s.data[colIdx]){if(ctx.checkboxes.s.data[colIdx].hasOwnProperty(cellData)){countRows++;}}add("row",countRows);$.each(ctx.aanFeatures.i,function(i,el){var $el=$(el);var $existing=$el.children("span.select-info");if($existing.length){$existing.remove();}if($output.text()!==""){$el.append($output);}});}},isCellSelectable:function(colIdx,cellData){var self=this;var dt=self.s.dt;var ctx=self.s.ctx;if(ctx.checkboxes.s.dataDisabled[colIdx].hasOwnProperty(cellData)){return false;}else{return true;}},getCellIndex:function(cell){var self=this;var dt=self.s.dt;var ctx=self.s.ctx;if(ctx._oFixedColumns){return dt.fixedColumns().cellIndex(cell);}else{return dt.cell(cell).index();}},getSelectRowColIndex:function(){var self=this;var dt=self.s.dt;var ctx=self.s.ctx;var colIdx=null;for(var i=0;i<ctx.aoColumns.length;i++){if(ctx.aoColumns[i].checkboxes&&ctx.aoColumns[i].checkboxes.selectRow){colIdx=i;break;}}return colIdx;},updateFixedColumn:function(colIdx){var self=this;var dt=self.s.dt;var ctx=self.s.ctx;if(ctx._oFixedColumns){var leftCols=ctx._oFixedColumns.s.iLeftColumns;var rightCols=ctx.aoColumns.length-ctx._oFixedColumns.s.iRightColumns-1;if(colIdx<leftCols||colIdx>rightCols){dt.fixedColumns().update();}}}};Checkboxes.defaults={selectRow:false,selectAll:true,selectAllPages:true,selectCallback:null,selectAllCallback:null,selectAllRender:'<input type="checkbox">'};var Api=$.fn.dataTable.Api;Api.register("checkboxes()",function(){return this;});Api.registerPlural("columns().checkboxes.select()","column().checkboxes.select()",function(state){if(typeof state==="undefined"){state=true;}return this.iterator("column-rows",function(ctx,colIdx,i,j,rowsIdx){if(ctx.checkboxes){var selector=[];$.each(rowsIdx,function(index,rowIdx){selector.push({row:rowIdx,column:colIdx});});var cells=this.cells(selector);var cellsData=cells.data();var rowsSelectableIdx=[];selector=[];$.each(cellsData,function(index,cellData){if(ctx.checkboxes.isCellSelectable(colIdx,cellData)){selector.push({row:rowsIdx[index],column:colIdx});rowsSelectableIdx.push(rowsIdx[index]);}});cells=this.cells(selector);ctx.checkboxes.updateData(cells,colIdx,state);ctx.checkboxes.updateCheckbox(cells,colIdx,state);if(ctx.aoColumns[colIdx].checkboxes.selectRow){ctx.checkboxes.updateSelect(rowsSelectableIdx,state);}if(ctx._oFixedColumns){setTimeout(function(){ctx.checkboxes.updateSelectAll(colIdx);},0);}else{ctx.checkboxes.updateSelectAll(colIdx);}ctx.checkboxes.updateFixedColumn(colIdx);}},1);});Api.registerPlural("cells().checkboxes.select()","cell().checkboxes.select()",function(state){if(typeof state==="undefined"){state=true;}return this.iterator("cell",function(ctx,rowIdx,colIdx){if(ctx.checkboxes){var cells=this.cells([{row:rowIdx,column:colIdx}]);var cellData=this.cell({row:rowIdx,column:colIdx}).data();if(ctx.checkboxes.isCellSelectable(colIdx,cellData)){ctx.checkboxes.updateData(cells,colIdx,state);ctx.checkboxes.updateCheckbox(cells,colIdx,state);if(ctx.aoColumns[colIdx].checkboxes.selectRow){ctx.checkboxes.updateSelect(rowIdx,state);}if(ctx._oFixedColumns){setTimeout(function(){ctx.checkboxes.updateSelectAll(colIdx);},0);}else{ctx.checkboxes.updateSelectAll(colIdx);}ctx.checkboxes.updateFixedColumn(colIdx);}}},1);});Api.registerPlural("cells().checkboxes.enable()","cell().checkboxes.enable()",function(state){if(typeof state==="undefined"){state=true;}return this.iterator("cell",function(ctx,rowIdx,colIdx){if(ctx.checkboxes){var cell=this.cell({row:rowIdx,column:colIdx});var cellData=cell.data();if(state){delete ctx.checkboxes.s.dataDisabled[colIdx][cellData];}else{ctx.checkboxes.s.dataDisabled[colIdx][cellData]=1;}var cellNode=cell.node();if(cellNode){$("input.dt-checkboxes",cellNode).prop("disabled",!state);}if(ctx.aoColumns[colIdx].checkboxes.selectRow){if(ctx.checkboxes.s.data[colIdx].hasOwnProperty(cellData)){ctx.checkboxes.updateSelect(rowIdx,state);}}}},1);});Api.registerPlural("cells().checkboxes.disable()","cell().checkboxes.disable()",function(state){if(typeof state==="undefined"){state=true;}return this.checkboxes.enable(!state);});Api.registerPlural("columns().checkboxes.deselect()","column().checkboxes.deselect()",function(state){if(typeof state==="undefined"){state=true;}return this.checkboxes.select(!state);});Api.registerPlural("cells().checkboxes.deselect()","cell().checkboxes.deselect()",function(state){if(typeof state==="undefined"){state=true;}return this.checkboxes.select(!state);});Api.registerPlural("columns().checkboxes.deselectAll()","column().checkboxes.deselectAll()",function(){return this.iterator("column",function(ctx,colIdx){if(ctx.aoColumns[colIdx].checkboxes){ctx.checkboxes.s.data[colIdx]={};this.column(colIdx).checkboxes.select(false);}},1);});Api.registerPlural("columns().checkboxes.selected()","column().checkboxes.selected()",function(){return this.iterator("column",function(ctx,colIdx){if(ctx.aoColumns[colIdx].checkboxes){var data=[];$.each(ctx.checkboxes.s.data[colIdx],function(cellData,countRows){if(ctx.checkboxes.isCellSelectable(colIdx,cellData)){data.push(cellData);}});return data;}else{return[];}},1);});Checkboxes.version="1.2.9";$.fn.DataTable.Checkboxes=Checkboxes;$.fn.dataTable.Checkboxes=Checkboxes;$(document).on("preInit.dt.dtCheckboxes",function(e,settings,json){if(e.namespace!=="dt"){return;}new Checkboxes(settings);});return Checkboxes;}));
(function(factory){if(typeof define==="function"&&define.amd){define(["jquery","datatables.net"],function($){return factory($,window,document);});}else{if(typeof exports==="object"){module.exports=function(root,$){if(!root){root=window;}if(!$||!$.fn.dataTable){$=require("datatables.net")(root,$).$;}return factory($,root,root.document);};}else{factory(jQuery,window,document);}}}(function($,window,document){var DataTable=$.fn.dataTable;var Checkboxes=function(settings){if(!DataTable.versionCheck||!DataTable.versionCheck("1.10.8")){throw"DataTables Checkboxes requires DataTables 1.10.8 or newer";}this.s={dt:new DataTable.Api(settings),columns:[],data:[],dataDisabled:[],ignoreSelect:false};this.s.ctx=this.s.dt.settings()[0];if(this.s.ctx.checkboxes){return;}settings.checkboxes=this;this._constructor();};Checkboxes.prototype={_constructor:function(){var self=this;var dt=self.s.dt;var ctx=self.s.ctx;var hasCheckboxes=false;var hasCheckboxesSelectRow=false;var state=dt.state.loaded();for(var i=0;i<ctx.aoColumns.length;i++){if(ctx.aoColumns[i].checkboxes){var $colHeader=$(dt.column(i).header());hasCheckboxes=true;if(!$.isPlainObject(ctx.aoColumns[i].checkboxes)){ctx.aoColumns[i].checkboxes={};}ctx.aoColumns[i].checkboxes=$.extend({},Checkboxes.defaults,ctx.aoColumns[i].checkboxes);var colOptions={"searchable":false,"orderable":false};if(ctx.aoColumns[i].sClass===""){colOptions["className"]="dt-checkboxes-cell";}else{colOptions["className"]=ctx.aoColumns[i].sClass+" dt-checkboxes-cell";}if(ctx.aoColumns[i].sWidthOrig===null){colOptions["width"]="1%";}if(ctx.aoColumns[i].mRender===null){colOptions["render"]=function(){return'<input type="checkbox" class="dt-checkboxes">';};}DataTable.ext.internal._fnColumnOptions(ctx,i,colOptions);$colHeader.removeClass("sorting");$colHeader.off(".dt");if(ctx.sAjaxSource===null){var cells=dt.cells("tr",i);cells.invalidate("data");$(cells.nodes()).addClass(colOptions["className"]);}self.s.data[i]={};self.s.dataDisabled[i]={};if(state&&state.checkboxes&&state.checkboxes.hasOwnProperty(i)){if(ctx.aoColumns[i].checkboxes.stateSave){self.s.data[i]=state.checkboxes[i];}}self.s.columns.push(i);if(ctx.aoColumns[i].checkboxes.selectRow){if(ctx._select){hasCheckboxesSelectRow=true;}else{ctx.aoColumns[i].checkboxes.selectRow=false;}}if(ctx.aoColumns[i].checkboxes.selectAll){$colHeader.data("html",$colHeader.html());if(ctx.aoColumns[i].checkboxes.selectAllRender!==null){var selectAllHtml="";if($.isFunction(ctx.aoColumns[i].checkboxes.selectAllRender)){selectAllHtml=ctx.aoColumns[i].checkboxes.selectAllRender();}else{if(typeof ctx.aoColumns[i].checkboxes.selectAllRender==="string"){selectAllHtml=ctx.aoColumns[i].checkboxes.selectAllRender;}}$colHeader.html(selectAllHtml).addClass("dt-checkboxes-select-all").attr("data-col",i);}}}}if(hasCheckboxes){var $table=$(dt.table().node());var $tableBody=$(dt.table().body());var $tableContainer=$(dt.table().container());if(hasCheckboxesSelectRow){$table.addClass("dt-checkboxes-select");$table.on("user-select.dt.dtCheckboxes",function(e,dt,type,cell){var cellIdx=cell.index();var rowIdx=cellIdx.row;var colIdx=self.getSelectRowColIndex();var cellData=dt.cell({row:rowIdx,column:colIdx}).data();if(!self.isCellSelectable(colIdx,cellData)){e.preventDefault();}});$table.on("select.dt.dtCheckboxes deselect.dt.dtCheckboxes",function(e,api,type,indexes){self.onSelect(e,type,indexes);});dt.select.info(false);$table.on("draw.dt.dtCheckboxes select.dt.dtCheckboxes deselect.dt.dtCheckboxes",function(){self.showInfoSelected();});}$table.on("draw.dt.dtCheckboxes",function(e){self.onDraw(e);});$tableBody.on("click.dtCheckboxes","input.dt-checkboxes",function(e){self.onClick(e,this);});$tableContainer.on("click.dtCheckboxes",'thead th.dt-checkboxes-select-all input[type="checkbox"]',function(e){self.onClickSelectAll(e,this);});$tableContainer.on("click.dtCheckboxes","thead th.dt-checkboxes-select-all",function(){$('input[type="checkbox"]',this).not(":disabled").trigger("click");});if(!hasCheckboxesSelectRow){$tableContainer.on("click.dtCheckboxes","tbody td.dt-checkboxes-cell",function(){$('input[type="checkbox"]',this).not(":disabled").trigger("click");});}$tableContainer.on("click.dtCheckboxes","thead th.dt-checkboxes-select-all label, tbody td.dt-checkboxes-cell label",function(e){e.preventDefault();});$(document).on("click.dtCheckboxes",'.fixedHeader-floating thead th.dt-checkboxes-select-all input[type="checkbox"]',function(e){if(ctx._fixedHeader){if(ctx._fixedHeader.dom["header"].floating){self.onClickSelectAll(e,this);}}});$(document).on("click.dtCheckboxes",".fixedHeader-floating thead th.dt-checkboxes-select-all",function(){if(ctx._fixedHeader){if(ctx._fixedHeader.dom["header"].floating){$('input[type="checkbox"]',this).trigger("click");}}});$table.on("init.dt.dtCheckboxes",function(){if(!ctx.oFeatures.bServerSide){if(ctx.oFeatures.bStateSave){self.updateState();}$table.on("xhr.dt.dtCheckboxes",function(){$.each(self.s.columns,function(index,colIdx){self.s.data[colIdx]={};self.s.dataDisabled[colIdx]={};});if(ctx.oFeatures.bStateSave){var state=dt.state.loaded();$.each(self.s.columns,function(index,colIdx){if(state&&state.checkboxes&&state.checkboxes.hasOwnProperty(colIdx)){if(ctx.aoColumns[colIdx].checkboxes.stateSave){self.s.data[colIdx]=state.checkboxes[colIdx];}}});$table.one("draw.dt.dtCheckboxes",function(){self.updateState();});}});}if(ctx.oFeatures.bStateSave){$table.on("stateSaveParams.dt.dtCheckboxes",function(e,settings,data){data.checkboxes=[];$.each(self.s.columns,function(index,colIdx){if(ctx.aoColumns[colIdx].checkboxes.stateSave){data.checkboxes[colIdx]=self.s.data[colIdx];}});});}});$table.one("destroy.dt.dtCheckboxes",function(){$(document).off("click.dtCheckboxes");$tableContainer.on(".dtCheckboxes");$tableBody.off(".dtCheckboxes");$table.off(".dtCheckboxes");self.s.data={};self.s.dataDisabled={};$(".dt-checkboxes-select-all",$table).each(function(index,el){$(el).html($(el).data("html")).removeClass("dt-checkboxes-select-all");});});}},updateData:function(cells,colIdx,isSelected){var self=this;var dt=self.s.dt;var ctx=self.s.ctx;if(ctx.aoColumns[colIdx].checkboxes){var cellsData=cells.data();cellsData.each(function(cellData){if(isSelected){ctx.checkboxes.s.data[colIdx][cellData]=1;}else{delete ctx.checkboxes.s.data[colIdx][cellData];}});if(ctx.oFeatures.bStateSave){if(ctx.aoColumns[colIdx].checkboxes.stateSave){dt.state.save();}}}},updateSelect:function(selector,isSelected){var self=this;var dt=self.s.dt;var ctx=self.s.ctx;if(ctx._select){self.s.ignoreSelect=true;if(isSelected){dt.rows(selector).select();}else{dt.rows(selector).deselect();}self.s.ignoreSelect=false;}},updateCheckbox:function(cells,colIdx,isSelected){var self=this;var ctx=self.s.ctx;var cellNodes=cells.nodes();if(cellNodes.length){$("input.dt-checkboxes",cellNodes).not(":disabled").prop("checked",isSelected);if($.isFunction(ctx.aoColumns[colIdx].checkboxes.selectCallback)){ctx.aoColumns[colIdx].checkboxes.selectCallback(cellNodes,isSelected);}}},updateState:function(){var self=this;self.updateStateCheckboxes({page:"all",search:"none"});$.each(self.s.columns,function(index,colIdx){self.updateSelectAll(colIdx);});},updateStateCheckboxes:function(opts){var self=this;var dt=self.s.dt;var ctx=self.s.ctx;dt.cells("tr",self.s.columns,opts).every(function(rowIdx,colIdx){var cellData=this.data();var isCellSelectable=self.isCellSelectable(colIdx,cellData);if(ctx.checkboxes.s.data[colIdx].hasOwnProperty(cellData)){self.updateCheckbox(this,colIdx,true);if(ctx.aoColumns[colIdx].checkboxes.selectRow&&isCellSelectable){self.updateSelect(rowIdx,true);}}if(!isCellSelectable){$("input.dt-checkboxes",this.node()).prop("disabled",true);}});},onClick:function(e,ctrl){var self=this;var dt=self.s.dt;var ctx=self.s.ctx;var cellSelector;var $cell=$(ctrl).closest("td");if($cell.parents(".DTFC_Cloned").length){cellSelector=dt.fixedColumns().cellIndex($cell);}else{cellSelector=$cell;}var cell=dt.cell(cellSelector);var cellIdx=cell.index();var colIdx=cellIdx.column;if(!ctx.aoColumns[colIdx].checkboxes.selectRow){cell.checkboxes.select(ctrl.checked);e.stopPropagation();}else{setTimeout(function(){var cellData=cell.data();var hasData=self.s.data[colIdx].hasOwnProperty(cellData);if(hasData!==ctrl.checked){self.updateCheckbox(cell,colIdx,hasData);self.updateSelectAll(colIdx);}},0);}},onSelect:function(e,type,indexes){var self=this;var dt=self.s.dt;if(self.s.ignoreSelect){return;}if(type==="row"){var colIdx=self.getSelectRowColIndex();if(colIdx!==null){var cells=dt.cells(indexes,colIdx);self.updateData(cells,colIdx,(e.type==="select")?true:false);self.updateCheckbox(cells,colIdx,(e.type==="select")?true:false);self.updateSelectAll(colIdx);}}},onClickSelectAll:function(e,ctrl){var self=this;var dt=self.s.dt;var ctx=self.s.ctx;var colIdx=null;var $th=$(ctrl).closest("th");if($th.parents(".DTFC_Cloned").length){var cellIdx=dt.fixedColumns().cellIndex($th);colIdx=cellIdx.column;}else{colIdx=dt.column($th).index();}$(ctrl).data("is-changed",true);dt.column(colIdx,{page:((ctx.aoColumns[colIdx].checkboxes&&ctx.aoColumns[colIdx].checkboxes.selectAllPages)?"all":"current"),search:"applied"}).checkboxes.select(ctrl.checked);e.stopPropagation();},onDraw:function(){var self=this;var ctx=self.s.ctx;if(ctx.oFeatures.bServerSide||ctx.oFeatures.bDeferRender){self.updateStateCheckboxes({page:"current",search:"none"});}$.each(self.s.columns,function(index,colIdx){self.updateSelectAll(colIdx);});},updateSelectAll:function(colIdx){var self=this;var dt=self.s.dt;var ctx=self.s.ctx;if(ctx.aoColumns[colIdx].checkboxes&&ctx.aoColumns[colIdx].checkboxes.selectAll){var cells=dt.cells("tr",colIdx,{page:((ctx.aoColumns[colIdx].checkboxes.selectAllPages)?"all":"current"),search:"applied"});var $tableContainer=dt.table().container();var $checkboxesSelectAll=$('.dt-checkboxes-select-all[data-col="'+colIdx+'"] input[type="checkbox"]',$tableContainer);var countChecked=0;var countDisabled=0;var cellsData=cells.data();$.each(cellsData,function(index,cellData){if(self.isCellSelectable(colIdx,cellData)){if(self.s.data[colIdx].hasOwnProperty(cellData)){countChecked++;}}else{countDisabled++;}});if(ctx._fixedHeader){if(ctx._fixedHeader.dom["header"].floating){$checkboxesSelectAll=$('.fixedHeader-floating .dt-checkboxes-select-all[data-col="'+colIdx+'"] input[type="checkbox"]');}}var isSelected;var isIndeterminate;if(countChecked===0){isSelected=false;isIndeterminate=false;}else{if((countChecked+countDisabled)===cellsData.length){isSelected=true;isIndeterminate=false;}else{isSelected=true;isIndeterminate=true;}}var isChanged=$checkboxesSelectAll.data("is-changed");var isSelectedNow=$checkboxesSelectAll.prop("checked");var isIndeterminateNow=$checkboxesSelectAll.prop("indeterminate");if(isChanged||isSelectedNow!==isSelected||isIndeterminateNow!==isIndeterminate){$checkboxesSelectAll.data("is-changed",false);$checkboxesSelectAll.prop({"checked":isSelected,"indeterminate":isIndeterminate});if($.isFunction(ctx.aoColumns[colIdx].checkboxes.selectAllCallback)){ctx.aoColumns[colIdx].checkboxes.selectAllCallback($checkboxesSelectAll.closest("th").get(0),isSelected,isIndeterminate);}}}},showInfoSelected:function(){var self=this;var dt=self.s.dt;var ctx=self.s.ctx;if(!ctx.aanFeatures.i){return;}var $output=$('<span class="select-info"/>');var add=function(name,num){$output.append($('<span class="select-item"/>').append(dt.i18n("select."+name+"s",{_:"%d "+name+"s selected",0:"",1:"1 "+name+" selected"},num)));};var colIdx=self.getSelectRowColIndex();if(colIdx!==null){var countRows=0;for(var cellData in ctx.checkboxes.s.data[colIdx]){if(ctx.checkboxes.s.data[colIdx].hasOwnProperty(cellData)){countRows++;}}add("row",countRows);$.each(ctx.aanFeatures.i,function(i,el){var $el=$(el);var $existing=$el.children("span.select-info");if($existing.length){$existing.remove();}if($output.text()!==""){$el.append($output);}});}},isCellSelectable:function(colIdx,cellData){var self=this;var ctx=self.s.ctx;if(ctx.checkboxes.s.dataDisabled[colIdx].hasOwnProperty(cellData)){return false;}else{return true;}},getCellIndex:function(cell){var self=this;var dt=self.s.dt;var ctx=self.s.ctx;if(ctx._oFixedColumns){return dt.fixedColumns().cellIndex(cell);}else{return dt.cell(cell).index();}},getSelectRowColIndex:function(){var self=this;var ctx=self.s.ctx;var colIdx=null;for(var i=0;i<ctx.aoColumns.length;i++){if(ctx.aoColumns[i].checkboxes&&ctx.aoColumns[i].checkboxes.selectRow){colIdx=i;break;}}return colIdx;},updateFixedColumn:function(colIdx){var self=this;var dt=self.s.dt;var ctx=self.s.ctx;if(ctx._oFixedColumns){var leftCols=ctx._oFixedColumns.s.iLeftColumns;var rightCols=ctx.aoColumns.length-ctx._oFixedColumns.s.iRightColumns-1;if(colIdx<leftCols||colIdx>rightCols){dt.fixedColumns().update();}}}};Checkboxes.defaults={stateSave:true,selectRow:false,selectAll:true,selectAllPages:true,selectCallback:null,selectAllCallback:null,selectAllRender:'<input type="checkbox">'};var Api=$.fn.dataTable.Api;Api.register("checkboxes()",function(){return this;});Api.registerPlural("columns().checkboxes.select()","column().checkboxes.select()",function(state){if(typeof state==="undefined"){state=true;}return this.iterator("column-rows",function(ctx,colIdx,i,j,rowsIdx){if(ctx.aoColumns[colIdx].checkboxes){var selector=[];$.each(rowsIdx,function(index,rowIdx){selector.push({row:rowIdx,column:colIdx});});var cells=this.cells(selector);var cellsData=cells.data();var rowsSelectableIdx=[];selector=[];$.each(cellsData,function(index,cellData){if(ctx.checkboxes.isCellSelectable(colIdx,cellData)){selector.push({row:rowsIdx[index],column:colIdx});rowsSelectableIdx.push(rowsIdx[index]);}});cells=this.cells(selector);ctx.checkboxes.updateData(cells,colIdx,state);ctx.checkboxes.updateCheckbox(cells,colIdx,state);if(ctx.aoColumns[colIdx].checkboxes.selectRow){ctx.checkboxes.updateSelect(rowsSelectableIdx,state);}if(ctx._oFixedColumns){setTimeout(function(){ctx.checkboxes.updateSelectAll(colIdx);},0);}else{ctx.checkboxes.updateSelectAll(colIdx);}ctx.checkboxes.updateFixedColumn(colIdx);}},1);});Api.registerPlural("cells().checkboxes.select()","cell().checkboxes.select()",function(state){if(typeof state==="undefined"){state=true;}return this.iterator("cell",function(ctx,rowIdx,colIdx){if(ctx.aoColumns[colIdx].checkboxes){var cells=this.cells([{row:rowIdx,column:colIdx}]);var cellData=this.cell({row:rowIdx,column:colIdx}).data();if(ctx.checkboxes.isCellSelectable(colIdx,cellData)){ctx.checkboxes.updateData(cells,colIdx,state);ctx.checkboxes.updateCheckbox(cells,colIdx,state);if(ctx.aoColumns[colIdx].checkboxes.selectRow){ctx.checkboxes.updateSelect(rowIdx,state);}if(ctx._oFixedColumns){setTimeout(function(){ctx.checkboxes.updateSelectAll(colIdx);},0);}else{ctx.checkboxes.updateSelectAll(colIdx);}ctx.checkboxes.updateFixedColumn(colIdx);}}},1);});Api.registerPlural("cells().checkboxes.enable()","cell().checkboxes.enable()",function(state){if(typeof state==="undefined"){state=true;}return this.iterator("cell",function(ctx,rowIdx,colIdx){if(ctx.aoColumns[colIdx].checkboxes){var cell=this.cell({row:rowIdx,column:colIdx});var cellData=cell.data();if(state){delete ctx.checkboxes.s.dataDisabled[colIdx][cellData];}else{ctx.checkboxes.s.dataDisabled[colIdx][cellData]=1;}var cellNode=cell.node();if(cellNode){$("input.dt-checkboxes",cellNode).prop("disabled",!state);}if(ctx.aoColumns[colIdx].checkboxes.selectRow){if(ctx.checkboxes.s.data[colIdx].hasOwnProperty(cellData)){ctx.checkboxes.updateSelect(rowIdx,state);}}}},1);});Api.registerPlural("cells().checkboxes.disable()","cell().checkboxes.disable()",function(state){if(typeof state==="undefined"){state=true;}return this.checkboxes.enable(!state);});Api.registerPlural("columns().checkboxes.deselect()","column().checkboxes.deselect()",function(state){if(typeof state==="undefined"){state=true;}return this.checkboxes.select(!state);});Api.registerPlural("cells().checkboxes.deselect()","cell().checkboxes.deselect()",function(state){if(typeof state==="undefined"){state=true;}return this.checkboxes.select(!state);});Api.registerPlural("columns().checkboxes.deselectAll()","column().checkboxes.deselectAll()",function(){return this.iterator("column",function(ctx,colIdx){if(ctx.aoColumns[colIdx].checkboxes){ctx.checkboxes.s.data[colIdx]={};this.column(colIdx).checkboxes.select(false);}},1);});Api.registerPlural("columns().checkboxes.selected()","column().checkboxes.selected()",function(){return this.iterator("column-rows",function(ctx,colIdx,i,j,rowsIdx){if(ctx.aoColumns[colIdx].checkboxes){var selector=[];$.each(rowsIdx,function(index,rowIdx){selector.push({row:rowIdx,column:colIdx});});var cells=this.cells(selector);var cellsData=cells.data();var data=[];$.each(cellsData,function(index,cellData){if(ctx.checkboxes.s.data[colIdx].hasOwnProperty(cellData)){if(ctx.checkboxes.isCellSelectable(colIdx,cellData)){data.push(cellData);}}});return data;}else{return[];}},1);});Checkboxes.version="1.2.10";$.fn.DataTable.Checkboxes=Checkboxes;$.fn.dataTable.Checkboxes=Checkboxes;$(document).on("preInit.dt.dtCheckboxes",function(e,settings){if(e.namespace!=="dt"){return;}new Checkboxes(settings);});return Checkboxes;}));
{
"name": "jquery-datatables-checkboxes",
"version": "1.2.9",
"version": "1.2.10",
"description": "Checkboxes is an extension for the jQuery DataTables library that provides universal solution for working with checkboxes in a table.",

@@ -5,0 +5,0 @@ "main": "./js/dataTables.checkboxes.js",

@@ -0,0 +0,0 @@ jQuery DataTables Checkboxes

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc