File "tribe-datatables.js"
Full Path: /home/londdqdw/public_html/06/wp-content/plugins/the-events-calendar/common/src/resources/js/tribe-datatables.js
File size: 6.07 KB
MIME-type: text/plain
Charset: utf-8
window.tribe_data_table = null;
( function( $ ) {
'use strict';
$.fn.tribeDataTable = function( options ) {
var settings = $.extend( {
language: {
lengthMenu : tribe_l10n_datatables.length_menu,
emptyTable : tribe_l10n_datatables.emptyTable,
info : tribe_l10n_datatables.info,
infoEmpty : tribe_l10n_datatables.info_empty,
infoFiltered : tribe_l10n_datatables.info_filtered,
zeroRecords : tribe_l10n_datatables.zero_records,
search : tribe_l10n_datatables.search,
paginate : {
next : tribe_l10n_datatables.pagination.next,
previous : tribe_l10n_datatables.pagination.previous,
},
aria : {
sortAscending : tribe_l10n_datatables.aria.sort_ascending,
sortDescending : tribe_l10n_datatables.aria.sort_descending
},
select: {
rows: {
'0': tribe_l10n_datatables.select.rows[0],
_: tribe_l10n_datatables.select.rows._,
'1': tribe_l10n_datatables.select.rows[1]
}
}
},
lengthMenu: [
[10, 25, 50, -1],
[10, 25, 50, tribe_l10n_datatables.pagination.all ]
],
}, options );
var only_data = false;
if ( this.is( '.dataTable' ) ) {
only_data = true;
}
var methods = {
setVisibleCheckboxes: function( $table, table, value ) {
var $thead = $table.find( 'thead' );
var $tfoot = $table.find( 'tfoot' );
var $header_checkbox = $thead.find( '.column-cb input:checkbox' );
var $footer_checkbox = $tfoot.find( '.column-cb input:checkbox' );
// Defaults to false
if ( 'undefined' === typeof value ) {
value = false;
}
$table.find( 'tbody .check-column input:checkbox' ).prop( 'checked', value );
$header_checkbox.prop( 'checked', value );
$footer_checkbox.prop( 'checked', value );
if ( value ) {
table.rows( { page: 'current' } ).select();
methods.addGlobalCheckboxLine( $table, table )
} else {
$table.find( '.tribe-datatables-all-pages-checkbox' ).remove();
table.rows().deselect();
}
},
addGlobalCheckboxLine: function( $table, table ) {
// Remove the Previous All Pages checkbox
$table.find( '.tribe-datatables-all-pages-checkbox' ).remove();
var $thead = $table.find( 'thead' );
var $link = $( '<a>' ).attr( 'href', '#select-all' ).text( tribe_l10n_datatables.select_all_link ); // eslint-disable-line max-len
var $text = $( '<div>' ).css( 'text-align', 'center' ).text( tribe_l10n_datatables.all_selected_text ).append( $link ); // eslint-disable-line max-len
var $column = $( '<th>' ).attr( 'colspan', table.columns()[0].length ).append( $text );
var $row = $( '<tr>' ).addClass( 'tribe-datatables-all-pages-checkbox' ).append( $column );
$link.one( 'click', function( event ) {
// Selects all items (even the not visible ones)
table.rows().select();
$link.text( tribe_l10n_datatables.clear_selection ).one( 'click', function() {
methods.setVisibleCheckboxes( $table, table, false );
event.preventDefault();
return false;
} );
event.preventDefault();
return false;
} );
$thead.append( $row );
},
togglePageCheckbox: function( $checkbox, table ) {
var $table = $checkbox.closest( '.dataTable' );
methods.setVisibleCheckboxes( $table, table, $checkbox.is( ':checked' ) );
},
toggleRowCheckbox: function( $checkbox, table ) {
var $row = $checkbox.closest( 'tr' );
if ( $checkbox.is( ':checked' ) ) {
table.row( $row ).select();
let $tableBody = $checkbox.closest( '.dataTable tbody' );
let $checkCells = $tableBody.find( ".check-column" );
for ( let checkCell of $checkCells ) { /* eslint-disable-line es5/no-for-of */
let checkboxInput = checkCell.querySelector( 'input' );
let thisRow = checkCell.closest( 'tr' );
if ( checkboxInput.checked ) {
table.row( thisRow ).select();
}
}
return;
}
table.row( $row ).deselect();
$checkbox
.closest( '.dataTable' )
.find( 'thead .column-cb input:checkbox, tfoot .column-cb input:checkbox' )
.prop( 'checked', false );
},
/**
* On ctrl/spacebar click to multi-select rows, run through all the rows and run select() on any that are checked.
* This happens on change event as click is too early and will not detect the entire interval of selected events.
*
* @since 4.15.1
*
* @param {jQuery} $checkbox The jQuery object of the checkbox.
* @param {DataTable} table The DataTable object.
*/
toggleMultipleRowCheckboxes: function( $checkbox, table ) {
const $tableBody = $checkbox.closest( '.dataTable tbody' );
const $checkCells = $tableBody.find( ".check-column" );
for ( let checkCell of $checkCells ) { /* eslint-disable-line es5/no-for-of */
const checkboxInput = checkCell.querySelector( 'input' );
const thisRow = checkCell.closest( 'tr' );
if ( checkboxInput.checked ) {
table.row( thisRow ).select();
}
}
}
};
return this.each( function() {
var $el = $( this );
var table;
if ( only_data ) {
table = $el.DataTable();
} else {
table = $el.DataTable( settings );
}
window.tribe_data_table = table;
if ( 'undefined' !== typeof settings.data ) {
table.clear().draw();
table.rows.add( settings.data );
table.draw();
}
var resetSelection = function ( event, settings ) { // eslint-disable-line no-unused-vars
methods.setVisibleCheckboxes( $el, table, false );
};
// If anything happens to the page, we reset the Checked ones
$el.on( {
'order.dt': resetSelection,
'search.dt': resetSelection,
'length.dt': resetSelection
} );
$el.on(
'click',
'thead .column-cb input:checkbox, tfoot .column-cb input:checkbox',
function() {
methods.togglePageCheckbox( $( this ), table );
}
);
$el.on(
'click',
'tbody .check-column input:checkbox',
function() {
methods.toggleRowCheckbox( $( this ), table );
}
);
$el.on(
'change',
'tbody .check-column input:checkbox',
function() {
methods.toggleMultipleRowCheckboxes( $( this ), table );
}
);
} );
};
} )( jQuery );