',
- confirmButtonText: 'Lovely!'
- })
- }
- })
-})
-
-$('.widget-content .dynamic-queue').on('click', function () {
- const ipAPI = 'https://api.ipify.org?format=json'
- swal.queue([{
- title: 'Your public IP',
- confirmButtonText: 'Show my public IP',
- text:
- 'Your public IP will be received ' +
- 'via AJAX request',
- showLoaderOnConfirm: true,
- preConfirm: function() {
- return fetch(ipAPI)
- .then(function (response) {
- return response.json();
- })
- .then(function(data) {
- return swal.insertQueueStep(data.ip)
- })
- .catch(function() {
- swal.insertQueueStep({
- type: 'error',
- title: 'Unable to get your public IP'
- })
- })
- }
- }])
-
-})
-
-$('.widget-content .footer').on('click', function () {
- swal({
- type: 'error',
- title: 'Oops...',
- text: 'Something went wrong!',
- footer: 'Why do I have this issue?',
- padding: '2em'
- })
-})
-
-$('.widget-content .RTL').on('click', function () {
- swal({
- title: 'هل تريد الاستمرار؟',
- confirmButtonText: 'نعم',
- cancelButtonText: 'لا',
- showCancelButton: true,
- showCloseButton: true,
- padding: '2em',
- target: document.getElementById('rtl-container')
- })
-
-})
-
-$('.widget-content .mixin').on('click', function () {
- const toast = swal.mixin({
- toast: true,
- position: 'top-end',
- showConfirmButton: false,
- timer: 3000,
- padding: '2em'
- });
- toast({
- type: 'success',
- title: 'Signed in successfully',
- padding: '2em',
- })
-
-})
\ No newline at end of file
diff --git a/static/plugins/table/datatable/custom_dt_custom.css b/static/plugins/table/datatable/custom_dt_custom.css
index d2582eb4..ac169542 100644
--- a/static/plugins/table/datatable/custom_dt_custom.css
+++ b/static/plugins/table/datatable/custom_dt_custom.css
@@ -1,122 +1,103 @@
/*
- ===============================
- @Import Function
- ===============================
+===============================
+@Import Function
+===============================
*/
/*
- ===============================
- @Import Mixins
- ===============================
+===============================
+@Import Mixins
+===============================
*/
.widget-content-area {
- box-shadow: none !important; }
+ box-shadow: none !important;
+}
table.dataTable {
- border-collapse: separate !important;
- border-spacing: 0 5px;
- margin-top: 50px !important;
- margin-bottom: 50px !important;
- border-collapse: collapse !important; }
+ border-collapse: separate !important;
+ border-spacing: 0 5px;
+ margin-top: 50px !important;
+ margin-bottom: 50px !important;
+ border-collapse: collapse !important;
+}
.table-hover:not(.table-dark) tbody tr td:first-child {
- border-left: none !important;
- border-left: none !important; }
+ border-left: none !important;
+ border-left: none !important;
+}
.table-hover:not(.table-dark) tbody tr:hover .new-control.new-checkbox .new-control-indicator {
- border: 2px solid #1b55e2; }
-
-/*Style. 1*/
-.style-1 .user-name {
- font-size: 15px;
- font-weight: 600;
- color: #e2a03f; }
-
-.style-1 .profile-img img {
- width: 50px;
- height: 50px;
- border: 2px solid #d3d3d3;
- border-radius: 6px;
- box-shadow: 0px 0px 14px 3px rgba(126, 142, 177, 0.24); }
+ border: 2px solid #1b55e2;
+}
/*Style. 2*/
.style-2 .new-control.new-checkbox .new-control-indicator {
- top: 1px; }
+ top: 1px;
+}
.style-2 .user-name {
- font-size: 15px;
- font-weight: 600;
- color: #e2a03f; }
+ font-size: 15px;
+ font-weight: 600;
+ color: #e2a03f;
+}
.style-2 img.profile-img {
- width: 50px;
- height: 50px;
- border: 2px solid #d3d3d3;
- box-shadow: 0px 0px 14px 3px rgba(126, 142, 177, 0.24); }
+ width: 50px;
+ height: 50px;
+ border: 2px solid #d3d3d3;
+ box-shadow: 0px 0px 14px 3px rgba(126, 142, 177, 0.24);
+}
.style-2 .badge {
- background: transparent;
- transform: none; }
+ background: transparent;
+ transform: none;
+}
.style-2 .badge-primary {
- color: #1b55e2;
- border: 2px dashed #1b55e2; }
+ color: #1b55e2;
+ border: 2px dashed #1b55e2;
+}
.style-2 .badge-warning {
- color: #e2a03f;
- border: 2px dashed #e2a03f; }
+ color: #e2a03f;
+ border: 2px dashed #e2a03f;
+}
.style-2 .badge-danger {
- color: #e7515a;
- border: 2px dashed #e7515a; }
+ color: #e7515a;
+ border: 2px dashed #e7515a;
+}
-/*Style. 3*/
-.style-3 .new-control.new-checkbox .new-control-indicator {
- top: 1px; }
+.table-scan {
+ color: #888ea8;
+ margin-right: 6px;
+ vertical-align: middle;
+ fill: rgba(0, 23, 55, 0.08);
+ cursor: pointer;
+}
-.style-3 .user-name {
- font-size: 15px;
- font-weight: 600;
- color: #e2a03f; }
+.table-hover:not(.table-dark) tbody tr:hover .table-scan {
+ color: #2962FF;
+}
-.style-3 img.profile-img {
- width: 50px;
- height: 50px;
- border: 2px solid #d3d3d3;
- border-radius: 6px;
- box-shadow: 0px 0px 14px 3px rgba(126, 142, 177, 0.24); }
+.table-edit {
+ color: #888ea8;
+ margin-right: 6px;
+ vertical-align: middle;
+ fill: rgba(0, 23, 55, 0.08);
+ cursor: pointer;
+}
-.style-3 .badge {
- background: transparent;
- transform: none; }
+.table-hover:not(.table-dark) tbody tr:hover .table-edit {
+ color: #FF6D00;
+}
+.table-delete {
+ color: #888ea8;
+ margin-right: 6px;
+ vertical-align: middle;
+ fill: rgba(0, 23, 55, 0.08);
+ cursor: pointer;
+}
-.style-3 .badge-primary {
- color: #1b55e2;
- border: 2px dashed #1b55e2; }
-
-.style-3 .badge-warning {
- color: #e2a03f;
- border: 2px dashed #e2a03f; }
-
-.style-3 .badge-danger {
- color: #e7515a;
- border: 2px dashed #e7515a; }
-
-.style-3 .table-controls {
- padding: 0; }
- .style-3 .table-controls li {
- list-style: none;
- display: inline; }
- .style-3 .table-controls li svg {
- color: #888ea8;
- vertical-align: middle;
- width: 28px;
- height: 28px;
- fill: rgba(0, 23, 55, 0.08);
- cursor: pointer; }
-
-.style-3.table-hover:not(.table-dark) tbody tr:hover .table-controls li svg {
- color: #e7515a;
- fill: rgba(231, 81, 90, 0.219608); }
-
-.style-3.table-hover:not(.table-dark) tbody tr:hover td:first-child {
- color: #1b55e2 !important; }
+.table-hover:not(.table-dark) tbody tr:hover .table-delete {
+ color: #e7515a;
+}
diff --git a/static/plugins/table/datatable/datatables.js b/static/plugins/table/datatable/datatables.js
index bc4dedea..f9c8b0b7 100644
--- a/static/plugins/table/datatable/datatables.js
+++ b/static/plugins/table/datatable/datatables.js
@@ -145,8 +145,8 @@
{
return this.api(true).$( sSelector, oOpts );
};
-
-
+
+
/**
* Almost identical to $ in operation, but in this case returns the data for the matched
* rows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes
@@ -199,8 +199,8 @@
{
return this.api(true).rows( sSelector, oOpts ).data();
};
-
-
+
+
/**
* Create a DataTables Api instance, with the currently selected tables for
* the Api's context.
@@ -218,8 +218,8 @@
) :
new _Api( this );
};
-
-
+
+
/**
* Add a single new row or multiple rows of data to the table. Please note
* that this is suitable for client-side processing only - if you are using
@@ -261,20 +261,20 @@
this.fnAddData = function( data, redraw )
{
var api = this.api( true );
-
+
/* Check if we want to add multiple rows or not */
var rows = $.isArray(data) && ( $.isArray(data[0]) || $.isPlainObject(data[0]) ) ?
api.rows.add( data ) :
api.row.add( data );
-
+
if ( redraw === undefined || redraw ) {
api.draw();
}
-
+
return rows.flatten().toArray();
};
-
-
+
+
/**
* This function will make DataTables recalculate the column sizes, based on the data
* contained in the table and the sizes applied to the columns (in the DOM, CSS or
@@ -301,7 +301,7 @@
var api = this.api( true ).columns.adjust();
var settings = api.settings()[0];
var scroll = settings.oScroll;
-
+
if ( bRedraw === undefined || bRedraw ) {
api.draw( false );
}
@@ -310,8 +310,8 @@
_fnScrollDraw( settings );
}
};
-
-
+
+
/**
* Quickly and simply clear a table
* @param {bool} [bRedraw=true] redraw the table or not
@@ -329,13 +329,13 @@
this.fnClearTable = function( bRedraw )
{
var api = this.api( true ).clear();
-
+
if ( bRedraw === undefined || bRedraw ) {
api.draw();
}
};
-
-
+
+
/**
* The exact opposite of 'opening' a row, this function will close any rows which
* are currently 'open'.
@@ -364,8 +364,8 @@
{
this.api( true ).row( nTr ).child.hide();
};
-
-
+
+
/**
* Remove a row for the table
* @param {mixed} target The index of the row from aoData to be deleted, or
@@ -390,21 +390,21 @@
var rows = api.rows( target );
var settings = rows.settings()[0];
var data = settings.aoData[ rows[0][0] ];
-
+
rows.remove();
-
+
if ( callback ) {
callback.call( this, settings, data );
}
-
+
if ( redraw === undefined || redraw ) {
api.draw();
}
-
+
return data;
};
-
-
+
+
/**
* Restore the table to it's original state in the DOM by removing all of DataTables
* enhancements, alterations to the DOM structure of the table and event listeners.
@@ -423,8 +423,8 @@
{
this.api( true ).destroy( remove );
};
-
-
+
+
/**
* Redraw the table
* @param {bool} [complete=true] Re-filter and resort (if enabled) the table before the draw.
@@ -445,8 +445,8 @@
// into account the new data, but can hold position.
this.api( true ).draw( complete );
};
-
-
+
+
/**
* Filter the input based on data
* @param {string} sInput String to filter the table on
@@ -469,18 +469,18 @@
this.fnFilter = function( sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive )
{
var api = this.api( true );
-
+
if ( iColumn === null || iColumn === undefined ) {
api.search( sInput, bRegex, bSmart, bCaseInsensitive );
}
else {
api.column( iColumn ).search( sInput, bRegex, bSmart, bCaseInsensitive );
}
-
+
api.draw();
};
-
-
+
+
/**
* Get the data for the whole table, an individual row or an individual cell based on the
* provided parameters.
@@ -521,19 +521,19 @@
this.fnGetData = function( src, col )
{
var api = this.api( true );
-
+
if ( src !== undefined ) {
var type = src.nodeName ? src.nodeName.toLowerCase() : '';
-
+
return col !== undefined || type == 'td' || type == 'th' ?
api.cell( src, col ).data() :
api.row( src ).data() || null;
}
-
+
return api.data().toArray();
};
-
-
+
+
/**
* Get an array of the TR nodes that are used in the table's body. Note that you will
* typically want to use the '$' API method in preference to this as it is more
@@ -555,13 +555,13 @@
this.fnGetNodes = function( iRow )
{
var api = this.api( true );
-
+
return iRow !== undefined ?
api.row( iRow ).node() :
api.rows().nodes().flatten().toArray();
};
-
-
+
+
/**
* Get the array indexes of a particular cell from it's DOM element
* and column index including hidden columns
@@ -594,13 +594,13 @@
{
var api = this.api( true );
var nodeName = node.nodeName.toUpperCase();
-
+
if ( nodeName == 'TR' ) {
return api.row( node ).index();
}
else if ( nodeName == 'TD' || nodeName == 'TH' ) {
var cell = api.cell( node ).index();
-
+
return [
cell.row,
cell.columnVisible,
@@ -609,8 +609,8 @@
}
return null;
};
-
-
+
+
/**
* Check to see if a row is 'open' or not.
* @param {node} nTr the table row to check
@@ -638,8 +638,8 @@
{
return this.api( true ).row( nTr ).child.isShown();
};
-
-
+
+
/**
* This function will place a new row directly after a row which is currently
* on display on the page, with the HTML contents that is passed into the
@@ -678,8 +678,8 @@
.show()
.child()[0];
};
-
-
+
+
/**
* Change the pagination - provides the internal logic for pagination in a simple API
* function. With this function you can have a DataTables table go to the next,
@@ -699,13 +699,13 @@
this.fnPageChange = function ( mAction, bRedraw )
{
var api = this.api( true ).page( mAction );
-
+
if ( bRedraw === undefined || bRedraw ) {
api.draw(false);
}
};
-
-
+
+
/**
* Show a particular column
* @param {int} iCol The column whose display should be changed
@@ -725,13 +725,13 @@
this.fnSetColumnVis = function ( iCol, bShow, bRedraw )
{
var api = this.api( true ).column( iCol ).visible( bShow );
-
+
if ( bRedraw === undefined || bRedraw ) {
api.columns.adjust().draw();
}
};
-
-
+
+
/**
* Get the settings for a particular table for external manipulation
* @returns {object} DataTables settings object. See
@@ -752,8 +752,8 @@
{
return _fnSettingsFromNode( this[_ext.iApiIndex] );
};
-
-
+
+
/**
* Sort the table by a particular column
* @param {int} iCol the data index to sort on. Note that this will not match the
@@ -773,8 +773,8 @@
{
this.api( true ).order( aaSort ).draw();
};
-
-
+
+
/**
* Attach a sort listener to an element for a given column
* @param {node} nNode the element to attach the sort listener to
@@ -795,8 +795,8 @@
{
this.api( true ).order.listener( nNode, iColumn, fnCallback );
};
-
-
+
+
/**
* Update a table cell or row - this method will accept either a single value to
* update the cell with, an array of values with one element for each column or
@@ -822,25 +822,25 @@
this.fnUpdate = function( mData, mRow, iColumn, bRedraw, bAction )
{
var api = this.api( true );
-
+
if ( iColumn === undefined || iColumn === null ) {
api.row( mRow ).data( mData );
}
else {
api.cell( mRow, iColumn ).data( mData );
}
-
+
if ( bAction === undefined || bAction ) {
api.columns.adjust();
}
-
+
if ( bRedraw === undefined || bRedraw ) {
api.draw();
}
return 0;
};
-
-
+
+
/**
* Provide a common method for plug-ins to check the version of DataTables being used, in order
* to ensure compatibility.
@@ -859,7 +859,7 @@
* } );
*/
this.fnVersionCheck = _ext.fnVersionCheck;
-
+
var _that = this;
var emptyInit = options === undefined;
@@ -892,40 +892,40 @@
var bInitHandedOff = false;
var defaults = DataTable.defaults;
var $this = $(this);
-
-
+
+
/* Sanity check */
if ( this.nodeName.toLowerCase() != 'table' )
{
_fnLog( null, 0, 'Non-table node initialisation ('+this.nodeName+')', 2 );
return;
}
-
+
/* Backwards compatibility for the defaults */
_fnCompatOpts( defaults );
_fnCompatCols( defaults.column );
-
+
/* Convert the camel-case defaults to Hungarian */
_fnCamelToHungarian( defaults, defaults, true );
_fnCamelToHungarian( defaults.column, defaults.column, true );
-
+
/* Setting up the initialisation object */
_fnCamelToHungarian( defaults, $.extend( oInit, $this.data() ) );
-
-
-
+
+
+
/* Check to see if we are re-initialising a table */
var allSettings = DataTable.settings;
for ( i=0, iLen=allSettings.length ; i').appendTo($this);
}
oSettings.nTHead = thead[0];
-
+
var tbody = $this.children('tbody');
if ( tbody.length === 0 ) {
tbody = $('').appendTo($this);
}
oSettings.nTBody = tbody[0];
-
+
var tfoot = $this.children('tfoot');
if ( tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "") ) {
// If we are a scrolling table, and no footer has been given, then we need to create
// a tfoot element for the caption element to be appended to
tfoot = $('').appendTo($this);
}
-
+
if ( tfoot.length === 0 || tfoot.children().length === 0 ) {
$this.addClass( oClasses.sNoFooter );
}
@@ -1279,7 +1279,7 @@
oSettings.nTFoot = tfoot[0];
_fnDetectHeader( oSettings.aoFooter, oSettings.nTFoot );
}
-
+
/* Check if there is data passing into the constructor */
if ( oInit.aaData ) {
for ( i=0 ; i/g;
-
+
// This is not strict ISO8601 - Date.parse() is quite lax, although
// implementations differ between browsers.
var _re_date = /^\d{2,4}[\.\/\-]\d{1,2}[\.\/\-]\d{1,2}([T ]{1}\d{1,2}[:\.]\d{2}([\.:]\d{2})?)?$/;
-
+
// Escape regular expression special characters
var _re_escape_regex = new RegExp( '(\\' + [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\', '$', '^', '-' ].join('|\\') + ')', 'g' );
-
+
// http://en.wikipedia.org/wiki/Foreign_exchange_market
// - \u20BD - Russian ruble.
// - \u20a9 - South Korean Won
@@ -1368,18 +1368,18 @@
// - \u2009 is thin space and \u202F is narrow no-break space, both used in many
// standards as thousands separators.
var _re_formatted_numeric = /[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi;
-
-
+
+
var _empty = function ( d ) {
return !d || d === true || d === '-' ? true : false;
};
-
-
+
+
var _intVal = function ( s ) {
var integer = parseInt( s, 10 );
return !isNaN(integer) && isFinite(s) ? integer : null;
};
-
+
// Convert from a formatted number with characters other than `.` as the
// decimal place, to a Javascript number
var _numToDecimal = function ( num, decimalPoint ) {
@@ -1391,41 +1391,41 @@
num.replace( /\./g, '' ).replace( _re_dic[ decimalPoint ], '.' ) :
num;
};
-
-
+
+
var _isNumber = function ( d, decimalPoint, formatted ) {
var strType = typeof d === 'string';
-
+
// If empty return immediately so there must be a number if it is a
// formatted string (this stops the string "k", or "kr", etc being detected
// as a formatted number for currency
if ( _empty( d ) ) {
return true;
}
-
+
if ( decimalPoint && strType ) {
d = _numToDecimal( d, decimalPoint );
}
-
+
if ( formatted && strType ) {
d = d.replace( _re_formatted_numeric, '' );
}
-
+
return !isNaN( parseFloat(d) ) && isFinite( d );
};
-
-
+
+
// A string without HTML in it can be considered to be HTML still
var _isHtml = function ( d ) {
return _empty( d ) || typeof d === 'string';
};
-
-
+
+
var _htmlNumeric = function ( d, decimalPoint, formatted ) {
if ( _empty( d ) ) {
return true;
}
-
+
var html = _isHtml( d );
return ! html ?
null :
@@ -1433,12 +1433,12 @@
true :
null;
};
-
-
+
+
var _pluck = function ( a, prop, prop2 ) {
var out = [];
var i=0, ien=a.length;
-
+
// Could have the test in the loop for slightly smaller code, but speed
// is essential here
if ( prop2 !== undefined ) {
@@ -1455,18 +1455,18 @@
}
}
}
-
+
return out;
};
-
-
+
+
// Basically the same as _pluck, but rather than looping over `a` we use `order`
// as the indexes to pick from `a`
var _pluck_order = function ( a, order, prop, prop2 )
{
var out = [];
var i=0, ien=order.length;
-
+
// Could have the test in the loop for slightly smaller code, but speed
// is essential here
if ( prop2 !== undefined ) {
@@ -1481,16 +1481,16 @@
out.push( a[ order[i] ][ prop ] );
}
}
-
+
return out;
};
-
-
+
+
var _range = function ( len, start )
{
var out = [];
var end;
-
+
if ( start === undefined ) {
start = 0;
end = len;
@@ -1499,34 +1499,34 @@
end = start;
start = len;
}
-
+
for ( var i=start ; i')
.css( {
@@ -1890,10 +1890,10 @@
)
)
.appendTo( 'body' );
-
+
var outer = n.children();
var inner = outer.children();
-
+
// Numbers below, in order, are:
// inner.offsetWidth, inner.clientWidth, outer.offsetWidth, outer.clientWidth
//
@@ -1903,30 +1903,30 @@
// Evergreen Windows: 83 83 100 83
// Evergreen Mac with scrollbars: 85 85 100 85
// Evergreen Mac without scrollbars: 100 100 100 100
-
+
// Get scrollbar width
browser.barWidth = outer[0].offsetWidth - outer[0].clientWidth;
-
+
// IE6/7 will oversize a width 100% element inside a scrolling element, to
// include the width of the scrollbar, while other browsers ensure the inner
// element is contained without forcing scrolling
browser.bScrollOversize = inner[0].offsetWidth === 100 && outer[0].clientWidth !== 100;
-
+
// In rtl text layout, some browsers (most, but not all) will place the
// scrollbar on the left, rather than the right.
browser.bScrollbarLeft = Math.round( inner.offset().left ) !== 1;
-
+
// IE8- don't provide height and width for getBoundingClientRect
browser.bBounding = n[0].getBoundingClientRect().width ? true : false;
-
+
n.remove();
}
-
+
$.extend( settings.oBrowser, DataTable.__browser );
settings.oScroll.iBarWidth = DataTable.__browser.barWidth;
}
-
-
+
+
/**
* Array.prototype reduce[Right] method, used for browsers which don't support
* JS 1.6. Done this way to reduce code size, since we iterate either way
@@ -1939,28 +1939,28 @@
i = start,
value,
isSet = false;
-
+
if ( init !== undefined ) {
value = init;
isSet = true;
}
-
+
while ( i !== end ) {
if ( ! that.hasOwnProperty(i) ) {
continue;
}
-
+
value = isSet ?
fn( value, that[i], i, that ) :
that[i];
-
+
isSet = true;
i += inc;
}
-
+
return value;
}
-
+
/**
* Add a column to the list used for the table with default values
* @param {object} oSettings dataTables settings object
@@ -1980,18 +1980,18 @@
idx: iCol
} );
oSettings.aoColumns.push( oCol );
-
+
// Add search object for column specific search. Note that the `searchCols[ iCol ]`
// passed into extend can be undefined. This allows the user to give a default
// with only some of the parameters defined, and also not give a default
var searchCols = oSettings.aoPreSearchCols;
searchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch, searchCols[ iCol ] );
-
+
// Use the default column options function to initialise classes etc
_fnColumnOptions( oSettings, iCol, $(nTh).data() );
}
-
-
+
+
/**
* Apply options for a column
* @param {object} oSettings dataTables settings object
@@ -2004,40 +2004,40 @@
var oCol = oSettings.aoColumns[ iCol ];
var oClasses = oSettings.oClasses;
var th = $(oCol.nTh);
-
+
// Try to get width information from the DOM. We can't get it from CSS
// as we'd need to parse the CSS stylesheet. `width` option can override
if ( ! oCol.sWidthOrig ) {
// Width attribute
oCol.sWidthOrig = th.attr('width') || null;
-
+
// Style attribute
var t = (th.attr('style') || '').match(/width:\s*(\d+[pxem%]+)/);
if ( t ) {
oCol.sWidthOrig = t[1];
}
}
-
+
/* User specified column options */
if ( oOptions !== undefined && oOptions !== null )
{
// Backwards compatibility
_fnCompatCols( oOptions );
-
+
// Map camel case parameters to their Hungarian counterparts
_fnCamelToHungarian( DataTable.defaults.column, oOptions );
-
+
/* Backwards compatibility for mDataProp */
if ( oOptions.mDataProp !== undefined && !oOptions.mData )
{
oOptions.mData = oOptions.mDataProp;
}
-
+
if ( oOptions.sType )
{
oCol._sManualType = oOptions.sType;
}
-
+
// `class` is a reserved word in Javascript, so we need to provide
// the ability to use a valid name for the camel case input
if ( oOptions.className && ! oOptions.sClass )
@@ -2047,10 +2047,10 @@
if ( oOptions.sClass ) {
th.addClass( oOptions.sClass );
}
-
+
$.extend( oCol, oOptions );
_fnMap( oCol, oOptions, "sWidth", "sWidthOrig" );
-
+
/* iDataSort to be applied (backwards compatibility), but aDataSort will take
* priority if defined
*/
@@ -2060,12 +2060,12 @@
}
_fnMap( oCol, oOptions, "aDataSort" );
}
-
+
/* Cache the data get and set functions for speed */
var mDataSrc = oCol.mData;
var mData = _fnGetObjectDataFn( mDataSrc );
var mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null;
-
+
var attrTest = function( src ) {
return typeof src === 'string' && src.indexOf('@') !== -1;
};
@@ -2073,10 +2073,10 @@
attrTest(mDataSrc.sort) || attrTest(mDataSrc.type) || attrTest(mDataSrc.filter)
);
oCol._setter = null;
-
+
oCol.fnGetData = function (rowData, type, meta) {
var innerData = mData( rowData, type, undefined, meta );
-
+
return mRender && type ?
mRender( innerData, type, rowData, meta ) :
innerData;
@@ -2084,20 +2084,20 @@
oCol.fnSetData = function ( rowData, val, meta ) {
return _fnSetObjectDataFn( mDataSrc )( rowData, val, meta );
};
-
+
// Indicate if DataTables should read DOM data as an object or array
// Used in _fnGetRowElements
if ( typeof mDataSrc !== 'number' ) {
oSettings._rowReadObject = true;
}
-
+
/* Feature sorting overrides column specific when off */
if ( !oSettings.oFeatures.bSort )
{
oCol.bSortable = false;
th.addClass( oClasses.sSortableNone ); // Have to add class here as order event isn't called
}
-
+
/* Check that the class assignment is correct for sorting */
var bAsc = $.inArray('asc', oCol.asSorting) !== -1;
var bDesc = $.inArray('desc', oCol.asSorting) !== -1;
@@ -2122,8 +2122,8 @@
oCol.sSortingClassJUI = oClasses.sSortJUI;
}
}
-
-
+
+
/**
* Adjust the table column widths for new data. Note: you would probably want to
* do a redraw after calling this function!
@@ -2136,24 +2136,24 @@
if ( settings.oFeatures.bAutoWidth !== false )
{
var columns = settings.aoColumns;
-
+
_fnCalculateColumnWidths( settings );
for ( var i=0 , iLen=columns.length ; i=0 ; i-- )
{
def = aoColDefs[i];
-
+
/* Each definition can target multiple columns, as it is an array */
var aTargets = def.targets !== undefined ?
def.targets :
def.aTargets;
-
+
if ( ! $.isArray( aTargets ) )
{
aTargets = [ aTargets ];
}
-
+
for ( j=0, jLen=aTargets.length ; j= 0 )
@@ -2340,7 +2340,7 @@
{
_fnAddColumn( oSettings );
}
-
+
/* Integer, basic index */
fn( aTargets[j], def );
}
@@ -2364,7 +2364,7 @@
}
}
}
-
+
// Statically defined columns array
if ( aoCols )
{
@@ -2374,7 +2374,7 @@
}
}
}
-
+
/**
* Add a data array to the table, creating DOM node etc. This is the parallel to
* _fnGatherData, but for adding rows from a Javascript source, rather than a
@@ -2396,38 +2396,38 @@
src: nTr ? 'dom' : 'data',
idx: iRow
} );
-
+
oData._aData = aDataIn;
oSettings.aoData.push( oData );
-
+
/* Create the cells */
var nTd, sThisType;
var columns = oSettings.aoColumns;
-
+
// Invalidate the column types as the new data needs to be revalidated
for ( var i=0, iLen=columns.length ; i').appendTo( thead );
}
-
+
for ( i=0, ien=columns.length ; itr').attr('role', 'row');
-
+
/* Deal with the footer - add classes if required */
$(thead).find('>tr>th, >tr>td').addClass( classes.sHeaderTH );
$(tfoot).find('>tr>th, >tr>td').addClass( classes.sFooterTH );
-
+
// Cache the footer cells. Note that we only take the cells from the first
// row in the footer. If there is more than one row the user wants to
// interact with, they need to use the table().foot() method. Note also this
// allows cells to be used for multiple columns using colspan
if ( tfoot !== null ) {
var cells = oSettings.aoFooter[0];
-
+
for ( i=0, ien=cells.length ; i=0 ; j-- )
{
@@ -3314,15 +3314,15 @@
aoLocal[i].splice( j, 1 );
}
}
-
+
/* Prep the applied array - it needs an element for each row */
aApplied.push( [] );
}
-
+
for ( i=0, iLen=aoLocal.length ; i= oSettings.fnRecordsDisplay() ?
0 :
iInitDisplayStart;
-
+
oSettings.iInitDisplayStart = -1;
}
-
+
var iDisplayStart = oSettings._iDisplayStart;
var iDisplayEnd = oSettings.fnDisplayEnd();
-
+
/* Server-side processing draw intercept */
if ( oSettings.bDeferLoading )
{
@@ -3433,12 +3433,12 @@
{
return;
}
-
+
if ( aiDisplay.length !== 0 )
{
var iStart = bServerSide ? 0 : iDisplayStart;
var iEnd = bServerSide ? oSettings.aoData.length : iDisplayEnd;
-
+
for ( var j=iStart ; j', { 'class': iStripes ? asStripeClasses[0] : '' } )
.append( $('
', {
'valign': 'top',
@@ -3491,29 +3491,29 @@
'class': oSettings.oClasses.sRowEmpty
} ).html( sZero ) )[0];
}
-
+
/* Header and footer callbacks */
_fnCallbackFire( oSettings, 'aoHeaderCallback', 'header', [ $(oSettings.nTHead).children('tr')[0],
_fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] );
-
+
_fnCallbackFire( oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0],
_fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] );
-
+
var body = $(oSettings.nTBody);
-
+
body.children().detach();
body.append( $(anRows) );
-
+
/* Call all required callback functions for the end of a draw */
_fnCallbackFire( oSettings, 'aoDrawCallback', 'draw', [oSettings] );
-
+
/* Draw is complete, sorting and filtering must be as well */
oSettings.bSorted = false;
oSettings.bFiltered = false;
oSettings.bDrawing = false;
}
-
-
+
+
/**
* Redraw the table - taking account of the various features which are enabled
* @param {object} oSettings dataTables settings object
@@ -3527,11 +3527,11 @@
features = settings.oFeatures,
sort = features.bSort,
filter = features.bFilter;
-
+
if ( sort ) {
_fnSort( settings );
}
-
+
if ( filter ) {
_fnFilterComplete( settings, settings.oPreviousSearch );
}
@@ -3539,21 +3539,21 @@
// No filtering, so we want to just use the display master
settings.aiDisplay = settings.aiDisplayMaster.slice();
}
-
+
if ( holdPosition !== true ) {
settings._iDisplayStart = 0;
}
-
+
// Let any modules know about the draw hold position state (used by
// scrolling internally)
settings._drawHold = holdPosition;
-
+
_fnDraw( settings );
-
+
settings._drawHold = false;
}
-
-
+
+
/**
* Add the options to the page HTML for the table
* @param {object} oSettings dataTables settings object
@@ -3565,17 +3565,17 @@
var table = $(oSettings.nTable);
var holding = $('').insertBefore( table ); // Holding element for speed
var features = oSettings.oFeatures;
-
+
// All DataTables are wrapped in a div
var insert = $('', {
id: oSettings.sTableId+'_wrapper',
'class': classes.sWrapper + (oSettings.nTFoot ? '' : ' '+classes.sNoFooter)
} );
-
+
oSettings.nHolding = holding[0];
oSettings.nTableWrapper = insert[0];
oSettings.nTableReinsertBefore = oSettings.nTable.nextSibling;
-
+
/* Loop over the user set positioning and place the elements as needed */
var aDom = oSettings.sDom.split('');
var featureNode, cOption, nNewNode, cNext, sAttr, j;
@@ -3583,12 +3583,12 @@
{
featureNode = null;
cOption = aDom[i];
-
+
if ( cOption == '<' )
{
/* New container div */
nNewNode = $('')[0];
-
+
/* Check to see if we should append an id and/or a class name to the container */
cNext = aDom[i+1];
if ( cNext == "'" || cNext == '"' )
@@ -3600,7 +3600,7 @@
sAttr += aDom[i+j];
j++;
}
-
+
/* Replace jQuery UI constants @todo depreciated */
if ( sAttr == "H" )
{
@@ -3610,7 +3610,7 @@
{
sAttr = classes.sJUIFooter;
}
-
+
/* The attribute can be in the format of "#id.class", "#id" or "class" This logic
* breaks the string into parts and applies them as needed
*/
@@ -3628,10 +3628,10 @@
{
nNewNode.className = sAttr;
}
-
+
i += j; /* Move along the position array */
}
-
+
insert.append( nNewNode );
insert = $(nNewNode);
}
@@ -3684,28 +3684,28 @@
}
}
}
-
+
/* Add to the 2D features array */
if ( featureNode )
{
var aanFeatures = oSettings.aanFeatures;
-
+
if ( ! aanFeatures[cOption] )
{
aanFeatures[cOption] = [];
}
-
+
aanFeatures[cOption].push( featureNode );
insert.append( featureNode );
}
}
-
+
/* Built our DOM structure - replace the holding div with what we want */
holding.replaceWith( insert );
oSettings.nHolding = null;
}
-
-
+
+
/**
* Use the DOM source to create up an array of header cells. The idea here is to
* create a layout grid (array) of rows x columns, which contains a reference
@@ -3728,21 +3728,21 @@
}
return j;
};
-
+
aLayout.splice( 0, aLayout.length );
-
+
/* We know how many rows there are in the layout - so prep it */
for ( i=0, iLen=nTrs.length ; i';
-
+
var str = language.sSearch;
str = str.match(/_INPUT_/) ?
str.replace('_INPUT_', input) :
str+input;
-
+
var filter = $('', {
'id': ! features.f ? tableId+'_filter' : null,
'class': classes.sFilter
} )
.append( $('' ).append( str ) );
-
+
var searchFn = function() {
/* Update all other filter input elements for the new display */
var n = features.f;
var val = !this.value ? "" : this.value; // mental IE8 fix :-(
-
+
/* Now do the filter */
if ( val != previousSearch.sSearch ) {
_fnFilterComplete( settings, {
@@ -4205,19 +4205,19 @@
"bSmart": previousSearch.bSmart ,
"bCaseInsensitive": previousSearch.bCaseInsensitive
} );
-
+
// Need to redraw, without resorting
settings._iDisplayStart = 0;
_fnDraw( settings );
}
};
-
+
var searchDelay = settings.searchDelay !== null ?
settings.searchDelay :
_fnDataSource( settings ) === 'ssp' ?
400 :
0;
-
+
var jqFilter = $('input', filter)
.val( previousSearch.sSearch )
.attr( 'placeholder', language.sSearchPlaceholder )
@@ -4234,7 +4234,7 @@
}
} )
.attr('aria-controls', tableId);
-
+
// Update the input elements whenever the table is filtered
$(settings.nTable).on( 'search.dt.DT', function ( ev, s ) {
if ( settings === s ) {
@@ -4248,11 +4248,11 @@
catch ( e ) {}
}
} );
-
+
return filter[0];
}
-
-
+
+
/**
* Filter the table using both the global filter and column based filtering
* @param {object} oSettings dataTables settings object
@@ -4275,25 +4275,25 @@
// Backwards compatibility with the bEscapeRegex option
return o.bEscapeRegex !== undefined ? !o.bEscapeRegex : o.bRegex;
};
-
+
// Resolve any column types that are unknown due to addition or invalidation
// @todo As per sort - can this be moved into an event handler?
_fnColumnTypes( oSettings );
-
+
/* In server-side processing all filtering is done by the server, so no point hanging around here */
if ( _fnDataSource( oSettings ) != 'ssp' )
{
/* Global filter */
_fnFilter( oSettings, oInput.sSearch, iForce, fnRegex(oInput), oInput.bSmart, oInput.bCaseInsensitive );
fnSaveFilter( oInput );
-
+
/* Now do the individual column filter */
for ( var i=0 ; i')[0];
var __filter_div_textContent = __filter_div.textContent !== undefined;
-
+
// Update the filtering data for each row if needed (by invalidation or first run)
function _fnFilterData ( settings )
{
@@ -4487,29 +4487,29 @@
var i, j, ien, jen, filterData, cellData, row;
var fomatters = DataTable.ext.type.search;
var wasInvalidated = false;
-
+
for ( i=0, ien=settings.aoData.length ; i', {
'name': tableId+'_length',
'aria-controls': tableId,
'class': classes.sLengthSelect
} );
-
+
for ( var i=0, ien=lengths.length ; i').addClass( classes.sLength );
if ( ! settings.aanFeatures.l ) {
div[0].id = tableId+'_length';
}
-
+
div.children().append(
settings.oLanguage.sLengthMenu.replace( '_MENU_', select[0].outerHTML )
);
-
+
// Can't use `select` variable as user might provide their own and the
// reference is broken by the use of outerHTML
$('select', div)
@@ -4846,24 +4846,24 @@
_fnLengthChange( settings, $(this).val() );
_fnDraw( settings );
} );
-
+
// Update node value whenever anything changes the table's length
$(settings.nTable).on( 'length.dt.DT', function (e, s, len) {
if ( settings === s ) {
$('select', div).val( len );
}
} );
-
+
return div[0];
}
-
-
-
+
+
+
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Note that most of the paging logic is done in
* DataTable.ext.pager
*/
-
+
/**
* Generate the node required for default pagination
* @param {object} oSettings dataTables settings object
@@ -4881,16 +4881,16 @@
},
node = $('').addClass( settings.oClasses.sPaging + type )[0],
features = settings.aanFeatures;
-
+
if ( ! modern ) {
plugin.fnInit( settings, node, redraw );
}
-
+
/* Add a draw callback for the pagination on first instance, to update the paging display */
if ( ! features.p )
{
node.id = settings.sTableId+'_paginate';
-
+
settings.aoDrawCallback.push( {
"fn": function( settings ) {
if ( modern ) {
@@ -4903,7 +4903,7 @@
pages = all ? 1 : Math.ceil( visRecords / len ),
buttons = plugin(page, pages),
i, ien;
-
+
for ( i=0, ien=features.p.length ; i records )
{
start = 0;
@@ -4960,7 +4960,7 @@
start = len >= 0 ?
start - len :
0;
-
+
if ( start < 0 )
{
start = 0;
@@ -4981,23 +4981,23 @@
{
_fnLog( settings, 0, "Unknown paging action: "+action, 5 );
}
-
+
var changed = settings._iDisplayStart !== start;
settings._iDisplayStart = start;
-
+
if ( changed ) {
_fnCallbackFire( settings, null, 'page', [settings] );
-
+
if ( redraw ) {
_fnDraw( settings );
}
}
-
+
return changed;
}
-
-
-
+
+
+
/**
* Generate the node required for the processing node
* @param {object} settings dataTables settings object
@@ -5013,8 +5013,8 @@
.html( settings.oLanguage.sProcessing )
.insertBefore( settings.nTable )[0];
}
-
-
+
+
/**
* Display or hide the processing indicator
* @param {object} settings dataTables settings object
@@ -5026,10 +5026,10 @@
if ( settings.oFeatures.bProcessing ) {
$(settings.aanFeatures.r).css( 'display', show ? 'block' : 'none' );
}
-
+
_fnCallbackFire( settings, null, 'processing', [settings, show] );
}
-
+
/**
* Add any control elements for the table - specifically scrolling
* @param {object} settings dataTables settings object
@@ -5039,17 +5039,17 @@
function _fnFeatureHtmlTable ( settings )
{
var table = $(settings.nTable);
-
+
// Add the ARIA grid role to the table
table.attr( 'role', 'grid' );
-
+
// Scrolling from here on in
var scroll = settings.oScroll;
-
+
if ( scroll.sX === '' && scroll.sY === '' ) {
return settings.nTable;
}
-
+
var scrollX = scroll.sX;
var scrollY = scroll.sY;
var classes = settings.oClasses;
@@ -5062,11 +5062,11 @@
var size = function ( s ) {
return !s ? null : _fnStringToCss( s );
};
-
+
if ( ! footer.length ) {
footer = null;
}
-
+
/*
* The HTML structure that we want to generate in this function is:
* div - scroller
@@ -5118,7 +5118,7 @@
} )
.append( table )
);
-
+
if ( footer ) {
scroller.append(
$(_div, { 'class': classes.sScrollFoot } )
@@ -5141,45 +5141,45 @@
)
);
}
-
+
var children = scroller.children();
var scrollHead = children[0];
var scrollBody = children[1];
var scrollFoot = footer ? children[2] : null;
-
+
// When the body is scrolled, then we also want to scroll the headers
if ( scrollX ) {
$(scrollBody).on( 'scroll.DT', function (e) {
var scrollLeft = this.scrollLeft;
-
+
scrollHead.scrollLeft = scrollLeft;
-
+
if ( footer ) {
scrollFoot.scrollLeft = scrollLeft;
}
} );
}
-
+
$(scrollBody).css(
- scrollY && scroll.bCollapse ? 'max-height' : 'height',
+ scrollY && scroll.bCollapse ? 'max-height' : 'height',
scrollY
);
-
+
settings.nScrollHead = scrollHead;
settings.nScrollBody = scrollBody;
settings.nScrollFoot = scrollFoot;
-
+
// On redraw - align columns
settings.aoDrawCallback.push( {
"fn": _fnScrollDraw,
"sName": "scrolling"
} );
-
+
return scroller[0];
}
-
-
-
+
+
+
/**
* Update the header, footer and body tables for resizing - i.e. column
* alignment.
@@ -5237,12 +5237,12 @@
style.borderBottomWidth = "0";
style.height = 0;
};
-
+
// If the scrollbar visibility has changed from the last draw, we need to
// adjust the column sizes as the table width will have changed to account
// for the scrollbar
var scrollBarVis = divBodyEl.scrollHeight > divBodyEl.clientHeight;
-
+
if ( settings.scrollBarVis !== scrollBarVis && settings.scrollBarVis !== undefined ) {
settings.scrollBarVis = scrollBarVis;
_fnAdjustColumnSizing( settings );
@@ -5251,31 +5251,31 @@
else {
settings.scrollBarVis = scrollBarVis;
}
-
+
/*
* 1. Re-create the table inside the scrolling div
*/
-
+
// Remove the old minimised thead and tfoot elements in the inner table
table.children('thead, tfoot').remove();
-
+
if ( footer ) {
footerCopy = footer.clone().prependTo( table );
footerTrgEls = footer.find('tr'); // the original tfoot is in its own table and must be sized
footerSrcEls = footerCopy.find('tr');
}
-
+
// Clone the current header and footer elements and then place it into the inner table
headerCopy = header.clone().prependTo( table );
headerTrgEls = header.find('tr'); // original header is in its own table
headerSrcEls = headerCopy.find('tr');
headerCopy.find('th, td').removeAttr('tabindex');
-
-
+
+
/*
* 2. Take live measurements from the DOM - do not alter the DOM itself!
*/
-
+
// Remove old sizing and apply the calculated column widths
// Get the unique column headers in the newly created (cloned) header. We want to apply the
// calculated sizes to this header
@@ -5284,24 +5284,24 @@
divBodyStyle.width = '100%';
divHeader[0].style.width = '100%';
}
-
+
$.each( _fnGetUniqueThs( settings, headerCopy ), function ( i, el ) {
idx = _fnVisibleToColumnIndex( settings, i );
el.style.width = settings.aoColumns[idx].sWidth;
} );
-
+
if ( footer ) {
_fnApplyToChildren( function(n) {
n.style.width = "";
}, footerSrcEls );
}
-
+
// Size the table as a whole
sanityWidth = table.outerWidth();
if ( scrollX === "" ) {
// No x scrolling
tableStyle.width = "100%";
-
+
// IE7 will make the width of the table when 100% include the scrollbar
// - which is shouldn't. When there is a scrollbar we need to take this
// into account.
@@ -5310,30 +5310,30 @@
) {
tableStyle.width = _fnStringToCss( table.outerWidth() - barWidth);
}
-
+
// Recalculate the sanity width
sanityWidth = table.outerWidth();
}
else if ( scrollXInner !== "" ) {
// legacy x scroll inner has been given - use it
tableStyle.width = _fnStringToCss(scrollXInner);
-
+
// Recalculate the sanity width
sanityWidth = table.outerWidth();
}
-
+
// Hidden header should have zero height, so remove padding and borders. Then
// set the width based on the real headers
-
+
// Apply all styles in one pass
_fnApplyToChildren( zeroOut, headerSrcEls );
-
+
// Read all widths in next pass
_fnApplyToChildren( function(nSizer) {
headerContent.push( nSizer.innerHTML );
headerWidths.push( _fnStringToCss( $(nSizer).css('width') ) );
}, headerSrcEls );
-
+
// Apply all widths in final pass
_fnApplyToChildren( function(nToSize, i) {
// Only apply widths to the DataTables detected header cells - this
@@ -5342,31 +5342,31 @@
nToSize.style.width = headerWidths[i];
}
}, headerTrgEls );
-
+
$(headerSrcEls).height(0);
-
+
/* Same again with the footer if we have one */
if ( footer )
{
_fnApplyToChildren( zeroOut, footerSrcEls );
-
+
_fnApplyToChildren( function(nSizer) {
footerContent.push( nSizer.innerHTML );
footerWidths.push( _fnStringToCss( $(nSizer).css('width') ) );
}, footerSrcEls );
-
+
_fnApplyToChildren( function(nToSize, i) {
nToSize.style.width = footerWidths[i];
}, footerTrgEls );
-
+
$(footerSrcEls).height(0);
}
-
-
+
+
/*
* 3. Apply the measurements
*/
-
+
// "Hide" the header and footer that we used for the sizing. We need to keep
// the content of the cell so that the width applied to the header and body
// both match, but we want to hide it completely. We want to also fix their
@@ -5375,7 +5375,7 @@
nSizer.innerHTML = '
'+headerContent[i]+'
';
nSizer.style.width = headerWidths[i];
}, headerSrcEls );
-
+
if ( footer )
{
_fnApplyToChildren( function(nSizer, i) {
@@ -5383,7 +5383,7 @@
nSizer.style.width = footerWidths[i];
}, footerSrcEls );
}
-
+
// Sanity check that the table is of a sensible width. If not then we are going to get
// misalignment - try to prevent this by not allowing the table to shrink below its min width
if ( table.outerWidth() < sanityWidth )
@@ -5393,14 +5393,14 @@
divBody.css('overflow-y') == "scroll")) ?
sanityWidth+barWidth :
sanityWidth;
-
+
// IE6/7 are a law unto themselves...
if ( ie67 && (divBodyEl.scrollHeight >
divBodyEl.offsetHeight || divBody.css('overflow-y') == "scroll")
) {
tableStyle.width = _fnStringToCss( correction-barWidth );
}
-
+
// And give the user a warning that we've stopped the table getting too small
if ( scrollX === "" || scrollXInner !== "" ) {
_fnLog( settings, 1, 'Possible column misalignment', 6 );
@@ -5410,16 +5410,16 @@
{
correction = '100%';
}
-
+
// Apply to the container elements
divBodyStyle.width = _fnStringToCss( correction );
divHeaderStyle.width = _fnStringToCss( correction );
-
+
if ( footer ) {
settings.nScrollFoot.style.width = _fnStringToCss( correction );
}
-
-
+
+
/*
* 4. Clean up
*/
@@ -5432,39 +5432,39 @@
divBodyStyle.height = _fnStringToCss( tableEl.offsetHeight+barWidth );
}
}
-
+
/* Finally set the width's of the header and footer tables */
var iOuterWidth = table.outerWidth();
divHeaderTable[0].style.width = _fnStringToCss( iOuterWidth );
divHeaderInnerStyle.width = _fnStringToCss( iOuterWidth );
-
+
// Figure out if there are scrollbar present - if so then we need a the header and footer to
// provide a bit more space to allow "overflow" scrolling (i.e. past the scrollbar)
var bScrolling = table.height() > divBodyEl.clientHeight || divBody.css('overflow-y') == "scroll";
var padding = 'padding' + (browser.bScrollbarLeft ? 'Left' : 'Right' );
divHeaderInnerStyle[ padding ] = bScrolling ? barWidth+"px" : "0px";
-
+
if ( footer ) {
divFooterTable[0].style.width = _fnStringToCss( iOuterWidth );
divFooterInner[0].style.width = _fnStringToCss( iOuterWidth );
divFooterInner[0].style[padding] = bScrolling ? barWidth+"px" : "0px";
}
-
+
// Correct DOM ordering for colgroup - comes before the thead
table.children('colgroup').insertBefore( table.children('thead') );
-
+
/* Adjust the position of the header in case we loose the y-scrollbar */
divBody.scroll();
-
+
// If sorting or filtering has occurred, jump the scrolling back to the top
// only if we aren't holding the position
if ( (settings.bSorted || settings.bFiltered) && ! settings._drawHold ) {
divBodyEl.scrollTop = 0;
}
}
-
-
-
+
+
+
/**
* Apply a given function to the display child nodes of an element array (typically
* TD children of TR rows
@@ -5477,11 +5477,11 @@
{
var index=0, i=0, iLen=an1.length;
var nNode1, nNode2;
-
+
while ( i < iLen ) {
nNode1 = an1[i].firstChild;
nNode2 = an2 ? an2[i].firstChild : null;
-
+
while ( nNode1 ) {
if ( nNode1.nodeType === 1 ) {
if ( an2 ) {
@@ -5490,23 +5490,23 @@
else {
fn( nNode1, index );
}
-
+
index++;
}
-
+
nNode1 = nNode1.nextSibling;
nNode2 = an2 ? nNode2.nextSibling : null;
}
-
+
i++;
}
}
-
-
-
+
+
+
var __re_html_remove = /<.*?>/g;
-
-
+
+
/**
* Calculate the width of columns for the table
* @param {object} oSettings dataTables settings object
@@ -5530,23 +5530,23 @@
i, column, columnIdx, width, outerWidth,
browser = oSettings.oBrowser,
ie67 = browser.bScrollOversize;
-
+
var styleWidth = table.style.width;
if ( styleWidth && styleWidth.indexOf('%') !== -1 ) {
tableWidthAttr = styleWidth;
}
-
+
/* Convert any user input sizes into pixel sizes */
for ( i=0 ; i').appendTo( tmpTable.find('tbody') );
-
+
// Clone the table header and footer - we can't use the header / footer
// from the cloned table, since if scrolling is active, the table's
// real header and footer are contained in different table tags
@@ -5585,20 +5585,20 @@
tmpTable
.append( $(oSettings.nTHead).clone() )
.append( $(oSettings.nTFoot).clone() );
-
+
// Remove any assigned widths from the footer (from scrolling)
tmpTable.find('tfoot th, tfoot td').css('width', '');
-
+
// Apply custom sizing to the cloned header
headerCells = _fnGetUniqueThs( oSettings, tmpTable.find('thead')[0] );
-
+
for ( i=0 ; i')
.css( 'width', _fnStringToCss( width ) )
.appendTo( parent || document.body );
-
+
var val = n[0].offsetWidth;
n.remove();
-
+
return val;
}
-
-
+
+
/**
* Get the widest node
* @param {object} settings dataTables settings object
@@ -5780,14 +5780,14 @@
if ( idx < 0 ) {
return null;
}
-
+
var data = settings.aoData[ idx ];
return ! data.nTr ? // Might not have been created when deferred rendering
$('
').html( _fnGetCellData( settings, idx, colIdx, 'display' ) )[0] :
data.anCells[ colIdx ];
}
-
-
+
+
/**
* Get the maximum strlen for each data column
* @param {object} settings dataTables settings object
@@ -5798,22 +5798,22 @@
function _fnGetMaxLenString( settings, colIdx )
{
var s, max=-1, maxIdx = -1;
-
+
for ( var i=0, ien=settings.aoData.length ; i max ) {
max = s.length;
maxIdx = i;
}
}
-
+
return maxIdx;
}
-
-
+
+
/**
* Append a CSS unit (only if required) to a string
* @param {string} value to css-ify
@@ -5825,21 +5825,21 @@
if ( s === null ) {
return '0px';
}
-
+
if ( typeof s == 'number' ) {
return s < 0 ?
'0px' :
s+'px';
}
-
+
// Check it has a unit character already
return s.match(/\d$/) ?
s+'px' :
s;
}
-
-
-
+
+
+
function _fnSortFlatten ( settings )
{
var
@@ -5861,37 +5861,37 @@
$.merge( nestedSort, a );
}
};
-
+
// Build the sort array, with pre-fix and post-fix options if they have been
// specified
if ( $.isArray( fixed ) ) {
add( fixed );
}
-
+
if ( fixedObj && fixed.pre ) {
add( fixed.pre );
}
-
+
add( settings.aaSorting );
-
+
if (fixedObj && fixed.post ) {
add( fixed.post );
}
-
+
for ( i=0 ; iy ? 1 : 0;
if ( test !== 0 ) {
return sort.dir === 'asc' ? test : -test;
}
}
-
+
x = aiOrig[a];
y = aiOrig[b];
return xy ? 1 : 0;
@@ -6012,32 +6012,32 @@
len=aSort.length,
dataA = aoData[a]._aSortData,
dataB = aoData[b]._aSortData;
-
+
for ( k=0 ; ky ? 1 : 0;
} );
}
}
-
+
/* Tell the draw function that we have sorted the data */
oSettings.bSorted = true;
}
-
-
+
+
function _fnSortAria ( settings )
{
var label;
@@ -6045,7 +6045,7 @@
var columns = settings.aoColumns;
var aSort = _fnSortFlatten( settings );
var oAria = settings.oLanguage.oAria;
-
+
// ARIA attributes - need to loop all columns, to update all (removing old
// attributes as needed)
for ( var i=0, iLen=columns.length ; i/g, "" );
var th = col.nTh;
-
+
// IE7 is throwing an error when setting these properties with jQuery's
// attr() and removeAttr() methods...
th.removeAttribute('aria-sort');
-
+
/* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */
if ( col.bSortable ) {
if ( aSort.length > 0 && aSort[0].col == i ) {
@@ -6068,7 +6068,7 @@
else {
nextSort = asSorting[0];
}
-
+
label = sTitle + ( nextSort === "asc" ?
oAria.sSortAscending :
oAria.sSortDescending
@@ -6077,12 +6077,12 @@
else {
label = sTitle;
}
-
+
th.setAttribute('aria-label', label);
}
}
-
-
+
+
/**
* Function to run on user sort request
* @param {object} settings dataTables settings object
@@ -6104,32 +6104,32 @@
if ( idx === undefined ) {
idx = $.inArray( a[1], asSorting );
}
-
+
return idx+1 < asSorting.length ?
idx+1 :
overflow ?
null :
0;
};
-
+
// Convert to 2D array if needed
if ( typeof sorting[0] === 'number' ) {
sorting = settings.aaSorting = [ sorting ];
}
-
+
// If appending the sort then we are multi-column sorting
if ( append && settings.oFeatures.bSortMulti ) {
// Are we already doing some kind of sort on this column?
var sortIdx = $.inArray( colIdx, _pluck(sorting, '0') );
-
+
if ( sortIdx !== -1 ) {
// Yes, modify the sort
nextSortIdx = next( sorting[sortIdx], true );
-
+
if ( nextSortIdx === null && sorting.length === 1 ) {
nextSortIdx = 0; // can't remove sorting completely
}
-
+
if ( nextSortIdx === null ) {
sorting.splice( sortIdx, 1 );
}
@@ -6147,7 +6147,7 @@
else if ( sorting.length && sorting[0][0] == colIdx ) {
// Single column - already sorting on this column, modify the sort
nextSortIdx = next( sorting[0] );
-
+
sorting.length = 1;
sorting[0][1] = asSorting[ nextSortIdx ];
sorting[0]._idx = nextSortIdx;
@@ -6158,17 +6158,17 @@
sorting.push( [ colIdx, asSorting[0] ] );
sorting[0]._idx = 0;
}
-
+
// Run the sort by calling a full redraw
_fnReDraw( settings );
-
+
// callback used for async user interaction
if ( typeof callback == 'function' ) {
callback( settings );
}
}
-
-
+
+
/**
* Attach a sort handler (click) to a node
* @param {object} settings dataTables settings object
@@ -6180,21 +6180,21 @@
function _fnSortAttachListener ( settings, attachTo, colIdx, callback )
{
var col = settings.aoColumns[ colIdx ];
-
+
_fnBindAction( attachTo, {}, function (e) {
/* If the column is not sortable - don't to anything */
if ( col.bSortable === false ) {
return;
}
-
+
// If processing is enabled use a timeout to allow the processing
// display to be shown - otherwise to it synchronously
if ( settings.oFeatures.bProcessing ) {
_fnProcessingDisplay( settings, true );
-
+
setTimeout( function() {
_fnSortListener( settings, colIdx, e.shiftKey, callback );
-
+
// In server-side processing, the draw callback will remove the
// processing display
if ( _fnDataSource( settings ) !== 'ssp' ) {
@@ -6207,8 +6207,8 @@
}
} );
}
-
-
+
+
/**
* Set the sorting classes on table's body, Note: it is safe to call this function
* when bSort and bSortClasses are false
@@ -6222,30 +6222,30 @@
var sort = _fnSortFlatten( settings );
var features = settings.oFeatures;
var i, ien, colIdx;
-
+
if ( features.bSort && features.bSortClasses ) {
// Remove old sorting classes
for ( i=0, ien=oldSort.length ; i 0 && s.time < +new Date() - (duration*1000) ) {
callback();
return;
}
-
+
// Number of columns have changed - all bets are off, no restore of settings
if ( s.columns && columns.length !== s.columns.length ) {
callback();
return;
}
-
+
// Store the saved state so it might be accessed at any time
settings.oLoadedState = $.extend( true, {}, s );
-
+
// Restore key features - todo - for 1.11 this needs to be done by
// subscribed events
if ( s.start !== undefined ) {
@@ -6370,7 +6370,7 @@
if ( s.length !== undefined ) {
settings._iDisplayLength = s.length;
}
-
+
// Order
if ( s.order !== undefined ) {
settings.aaSorting = [];
@@ -6381,48 +6381,48 @@
);
} );
}
-
+
// Search
if ( s.search !== undefined ) {
$.extend( settings.oPreviousSearch, _fnSearchToHung( s.search ) );
}
-
+
// Columns
//
if ( s.columns ) {
for ( i=0, ien=s.columns.length ; i= end )
{
start = end - len;
}
-
+
// Keep the start record on the current page
start -= (start % len);
-
+
if ( len === -1 || start < 0 )
{
start = 0;
}
-
+
settings._iDisplayStart = start;
}
-
-
+
+
function _fnRenderer( settings, type )
{
var renderer = settings.renderer;
var host = DataTable.ext.renderer[type];
-
+
if ( $.isPlainObject( renderer ) && renderer[type] ) {
// Specific renderer for this type. If available use it, otherwise use
// the default.
@@ -6686,12 +6686,12 @@
// otherwise use the default
return host[renderer] || host._;
}
-
+
// Use the default
return host._;
}
-
-
+
+
/**
* Detect the data source being used for the table. Used to simplify the code
* a little (ajax) and to make it compress a little smaller.
@@ -6710,10 +6710,10 @@
}
return 'dom';
}
-
-
-
+
+
+
/**
* Computed structure of the DataTables API, defined by the options passed to
* `DataTable.Api.register()` when building the API.
@@ -6751,8 +6751,8 @@
* @ignore
*/
var __apiStruct = [];
-
-
+
+
/**
* `Array.prototype` reference.
*
@@ -6760,8 +6760,8 @@
* @ignore
*/
var __arrayProto = Array.prototype;
-
-
+
+
/**
* Abstraction for `context` parameter of the `Api` constructor to allow it to
* take several different forms for ease of use.
@@ -6789,7 +6789,7 @@
var tables = $.map( settings, function (el, i) {
return el.nTable;
} );
-
+
if ( ! mixed ) {
return [];
}
@@ -6813,7 +6813,7 @@
// jQuery object (also DataTables instance)
jq = mixed;
}
-
+
if ( jq ) {
return jq.map( function(i) {
idx = $.inArray( this, tables );
@@ -6821,8 +6821,8 @@
} ).toArray();
}
};
-
-
+
+
/**
* DataTables API class - used to control and interface with one or more
* DataTables enhanced tables.
@@ -6882,7 +6882,7 @@
if ( ! (this instanceof _Api) ) {
return new _Api( context, data );
}
-
+
var settings = [];
var ctxSettings = function ( o ) {
var a = _toSettings( o );
@@ -6890,7 +6890,7 @@
settings = settings.concat( a );
}
};
-
+
if ( $.isArray( context ) ) {
for ( var i=0, ien=context.length ; i idx ?
new _Api( ctx[idx], this[idx] ) :
null;
},
-
-
+
+
filter: function ( fn )
{
var a = [];
-
+
if ( __arrayProto.filter ) {
a = __arrayProto.filter.call( this, fn, this );
}
@@ -6976,21 +6976,21 @@
}
}
}
-
+
return new _Api( this.context, a );
},
-
-
+
+
flatten: function ()
{
var a = [];
return new _Api( this.context, a.concat.apply( a, this.toArray() ) );
},
-
-
+
+
join: __arrayProto.join,
-
-
+
+
indexOf: __arrayProto.indexOf || function (obj, start)
{
for ( var i=(start || 0), ien=this.length ; i 0 ) {
return ctx[0].json;
}
-
+
// else return undefined;
} );
-
-
+
+
/**
* Get the data submitted in the last Ajax request
*/
_api_register( 'ajax.params()', function () {
var ctx = this.context;
-
+
if ( ctx.length > 0 ) {
return ctx[0].oAjaxData;
}
-
+
// else return undefined;
} );
-
-
+
+
/**
* Reload tables from the Ajax data source. Note that this function will
* automatically re-draw the table when the remote data has been loaded.
@@ -7635,8 +7635,8 @@
__reload( settings, resetPaging===false, callback );
} );
} );
-
-
+
+
/**
* Get the current Ajax URL. Note that this returns the URL from the first
* table in the current context.
@@ -7651,21 +7651,21 @@
*/
_api_register( 'ajax.url()', function ( url ) {
var ctx = this.context;
-
+
if ( url === undefined ) {
// get
if ( ctx.length === 0 ) {
return undefined;
}
ctx = ctx[0];
-
+
return ctx.ajax ?
$.isPlainObject( ctx.ajax ) ?
ctx.ajax.url :
ctx.ajax :
ctx.sAjaxSource;
}
-
+
// set
return this.iterator( 'table', function ( settings ) {
if ( $.isPlainObject( settings.ajax ) ) {
@@ -7679,8 +7679,8 @@
// value of `sAjaxSource` redundant.
} );
} );
-
-
+
+
/**
* Load data from the newly set Ajax URL. Note that this method is only
* available when `ajax.url()` is used to set a URL. Additionally, this method
@@ -7697,38 +7697,38 @@
__reload( ctx, resetPaging===false, callback );
} );
} );
-
-
-
-
+
+
+
+
var _selector_run = function ( type, selector, selectFn, settings, opts )
{
var
out = [], res,
a, i, ien, j, jen,
selectorType = typeof selector;
-
+
// Can't just check for isArray here, as an API or jQuery instance might be
// given with their array like look
if ( ! selector || selectorType === 'string' || selectorType === 'function' || selector.length === undefined ) {
selector = [ selector ];
}
-
+
for ( i=0, ien=selector.length ; i= 0 && search == 'applied') )
{
@@ -7837,11 +7837,11 @@
}
}
}
-
+
return a;
};
-
-
+
+
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Rows
*
@@ -7852,26 +7852,26 @@
* {array} - jQuery array of nodes, or simply an array of TR nodes
*
*/
-
-
+
+
var __row_selector = function ( settings, selector, opts )
{
var rows;
var run = function ( sel ) {
var selInt = _intVal( sel );
var i, ien;
-
+
// Short cut - selector is a number and no options provided (default is
// all records, so no need to check if the index is in there, since it
// must be - dev error if the index doesn't exist).
if ( selInt !== null && ! opts ) {
return [ selInt ];
}
-
+
if ( ! rows ) {
rows = _selector_row_indexes( settings, opts );
}
-
+
if ( selInt !== null && $.inArray( selInt, rows ) !== -1 ) {
// Selector - integer
return [ selInt ];
@@ -7880,7 +7880,7 @@
// Selector - none
return rows;
}
-
+
// Selector - function
if ( typeof sel === 'function' ) {
return $.map( rows, function (idx) {
@@ -7888,12 +7888,12 @@
return sel( idx, row._aData, row.nTr ) ? idx : null;
} );
}
-
+
// Get nodes in the order from the `rows` array with null values removed
var nodes = _removeEmpty(
_pluck_order( settings.aoData, rows, 'nTr' )
);
-
+
// Selector - node
if ( sel.nodeName ) {
if ( sel._DT_RowIndex !== undefined ) {
@@ -7909,7 +7909,7 @@
[];
}
}
-
+
// ID selector. Want to always be able to select rows by id, regardless
// of if the tr element has been created or not, so can't rely upon
// jQuery here - hence a custom implementation. This does not match
@@ -7925,11 +7925,11 @@
if ( rowObj !== undefined ) {
return [ rowObj.idx ];
}
-
+
// need to fall through to jQuery in case there is DOM id that
// matches
}
-
+
// Selector - jQuery selector string, array of nodes or jQuery object/
// As jQuery's .filter() allows jQuery objects to be passed in filter,
// it also allows arrays, so this will cope with all three options
@@ -7940,11 +7940,11 @@
} )
.toArray();
};
-
+
return _selector_run( 'row', selector, run, settings, opts );
};
-
-
+
+
_api_register( 'rows()', function ( selector, opts ) {
// argument shifting
if ( selector === undefined ) {
@@ -7954,55 +7954,55 @@
opts = selector;
selector = '';
}
-
+
opts = _selector_opts( opts );
-
+
var inst = this.iterator( 'table', function ( settings ) {
return __row_selector( settings, selector, opts );
}, 1 );
-
+
// Want argument shifting here and in __row_selector?
inst.selector.rows = selector;
inst.selector.opts = opts;
-
+
return inst;
} );
-
+
_api_register( 'rows().nodes()', function () {
return this.iterator( 'row', function ( settings, row ) {
return settings.aoData[ row ].nTr || undefined;
}, 1 );
} );
-
+
_api_register( 'rows().data()', function () {
return this.iterator( true, 'rows', function ( settings, rows ) {
return _pluck_order( settings.aoData, rows, '_aData' );
}, 1 );
} );
-
+
_api_registerPlural( 'rows().cache()', 'row().cache()', function ( type ) {
return this.iterator( 'row', function ( settings, row ) {
var r = settings.aoData[ row ];
return type === 'search' ? r._aFilterData : r._aSortData;
}, 1 );
} );
-
+
_api_registerPlural( 'rows().invalidate()', 'row().invalidate()', function ( src ) {
return this.iterator( 'row', function ( settings, row ) {
_fnInvalidate( settings, row, src );
} );
} );
-
+
_api_registerPlural( 'rows().indexes()', 'row().index()', function () {
return this.iterator( 'row', function ( settings, row ) {
return row;
}, 1 );
} );
-
+
_api_registerPlural( 'rows().ids()', 'row().id()', function ( hash ) {
var a = [];
var context = this.context;
-
+
// `iterator` will drop undefined values, but in this case we want them
for ( var i=0, ien=context.length ; i 0 ) {
settings._iRecordsDisplay--;
}
-
+
// Check for an 'overflow' they case for displaying the table
_fnLengthOverflow( settings );
-
+
// Remove the row's ID reference if there is one
var id = settings.rowIdFn( rowData._aData );
if ( id !== undefined ) {
delete settings.aIds[ id ];
}
} );
-
+
this.iterator( 'table', function ( settings ) {
for ( var i=0, ien=settings.aoData.length ; i 0 ) {
// On each draw, insert the required elements into the document
api.on( drawEvent, function ( e, ctx ) {
if ( settings !== ctx ) {
return;
}
-
+
api.rows( {page:'current'} ).eq(0).each( function (idx) {
// Internal data grab
var row = data[ idx ];
-
+
if ( row._detailsShow ) {
row._details.insertAfter( row.nTr );
}
} );
} );
-
+
// Column visibility change - update the colspan
api.on( colvisEvent, function ( e, ctx, idx, vis ) {
if ( settings !== ctx ) {
return;
}
-
+
// Update the colspan for the details rows (note, only if it already has
// a colspan)
var row, visible = _fnVisbleColumns( ctx );
-
+
for ( var i=0, ien=data.length ; i= 0 ?
@@ -8431,11 +8431,11 @@
columns.length + selInt // Count from right (+ because its a negative value)
];
}
-
+
// Selector = function
if ( typeof s === 'function' ) {
var rows = _selector_row_indexes( settings, opts );
-
+
return $.map( columns, function (col, idx) {
return s(
idx,
@@ -8444,12 +8444,12 @@
) ? idx : null;
} );
}
-
+
// jQuery or string selector
var match = typeof s === 'string' ?
s.match( __re_column_selector ) :
'';
-
+
if ( match ) {
switch( match[2] ) {
case 'visIdx':
@@ -8465,23 +8465,23 @@
}
// Counting from the left
return [ _fnVisibleToColumnIndex( settings, idx ) ];
-
+
case 'name':
// match by name. `names` is column index complete and in order
return $.map( names, function (name, i) {
return name === match[1] ? i : null;
} );
-
+
default:
return [];
}
}
-
+
// Cell in the table body
if ( s.nodeName && s._DT_CellIndex ) {
return [ s._DT_CellIndex.column ];
}
-
+
// jQuery selector on the TH elements for the columns
var jqResult = $( nodes )
.filter( s )
@@ -8489,11 +8489,11 @@
return $.inArray( this, nodes ); // `nodes` is column index complete and in order
} )
.toArray();
-
+
if ( jqResult.length || ! s.nodeName ) {
return jqResult;
}
-
+
// Otherwise a node which might have a `dt-column` data attribute, or be
// a child or such an element
var host = $(s).closest('*[data-dt-column]');
@@ -8501,38 +8501,38 @@
[ host.data('dt-column') ] :
[];
};
-
+
return _selector_run( 'column', selector, run, settings, opts );
};
-
-
+
+
var __setColumnVis = function ( settings, column, vis ) {
var
cols = settings.aoColumns,
col = cols[ column ],
data = settings.aoData,
row, cells, i, ien, tr;
-
+
// Get
if ( vis === undefined ) {
return col.bVisible;
}
-
+
// Set
// No change
if ( col.bVisible === vis ) {
return;
}
-
+
if ( vis ) {
// Insert column
// Need to decide if we should use appendChild or insertBefore
var insertBefore = $.inArray( true, _pluck(cols, 'bVisible'), column+1 );
-
+
for ( i=0, ien=data.length ; i iThat;
}
-
+
return true;
};
-
-
+
+
/**
* Check if a `
` node is a DataTable table already or not.
*
@@ -9141,24 +9141,24 @@
{
var t = $(table).get(0);
var is = false;
-
+
if ( table instanceof DataTable.Api ) {
return true;
}
-
+
$.each( DataTable.settings, function (i, o) {
var head = o.nScrollHead ? $('table', o.nScrollHead)[0] : null;
var foot = o.nScrollFoot ? $('table', o.nScrollFoot)[0] : null;
-
+
if ( o.nTable === t || head === t || foot === t ) {
is = true;
}
} );
-
+
return is;
};
-
-
+
+
/**
* Get all DataTable tables that have been initialised - optionally you can
* select to get only currently visible tables.
@@ -9178,24 +9178,24 @@
DataTable.tables = DataTable.fnTables = function ( visible )
{
var api = false;
-
+
if ( $.isPlainObject( visible ) ) {
api = visible.api;
visible = visible.visible;
}
-
+
var a = $.map( DataTable.settings, function (o) {
if ( !visible || (visible && $(o.nTable).is(':visible')) ) {
return o.nTable;
}
} );
-
+
return api ?
new _Api( a ) :
a;
};
-
-
+
+
/**
* Convert from camel case parameters to Hungarian notation. This is made public
* for the extensions to provide the same ability as DataTables core to accept
@@ -9210,9 +9210,9 @@
* won't be.
*/
DataTable.camelToHungarian = _fnCamelToHungarian;
-
-
-
+
+
+
/**
*
*/
@@ -9220,61 +9220,61 @@
var
rows = this.rows( opts ).nodes(), // Get all rows
jqRows = $(rows);
-
+
return $( [].concat(
jqRows.filter( selector ).toArray(),
jqRows.find( selector ).toArray()
) );
} );
-
-
+
+
// jQuery functions to operate on the tables
$.each( [ 'on', 'one', 'off' ], function (i, key) {
_api_register( key+'()', function ( /* event, handler */ ) {
var args = Array.prototype.slice.call(arguments);
-
+
// Add the `dt` namespace automatically if it isn't already present
args[0] = $.map( args[0].split( /\s/ ), function ( e ) {
return ! e.match(/\.dt\b/) ?
e+'.dt' :
e;
} ).join( ' ' );
-
+
var inst = $( this.tables().nodes() );
inst[key].apply( inst, args );
return this;
} );
} );
-
-
+
+
_api_register( 'clear()', function () {
return this.iterator( 'table', function ( settings ) {
_fnClearTable( settings );
} );
} );
-
-
+
+
_api_register( 'settings()', function () {
return new _Api( this.context, this.context );
} );
-
-
+
+
_api_register( 'init()', function () {
var ctx = this.context;
return ctx.length ? ctx[0].oInit : null;
} );
-
-
+
+
_api_register( 'data()', function () {
return this.iterator( 'table', function ( settings ) {
return _pluck( settings.aoData, '_aData' );
} ).flatten();
} );
-
-
+
+
_api_register( 'destroy()', function ( remove ) {
remove = remove || false;
-
+
return this.iterator( 'table', function ( settings ) {
var orig = settings.nTableWrapper.parentNode;
var classes = settings.oClasses;
@@ -9287,78 +9287,78 @@
var jqWrapper = $(settings.nTableWrapper);
var rows = $.map( settings.aoData, function (r) { return r.nTr; } );
var i, ien;
-
+
// Flag to note that the table is currently being destroyed - no action
// should be taken
settings.bDestroying = true;
-
+
// Fire off the destroy callbacks for plug-ins etc
_fnCallbackFire( settings, "aoDestroyCallback", "destroy", [settings] );
-
+
// If not being removed from the document, make all columns visible
if ( ! remove ) {
new _Api( settings ).columns().visible( true );
}
-
+
// Blitz all `DT` namespaced events (these are internal events, the
// lowercase, `dt` events are user subscribed and they are responsible
// for removing them
jqWrapper.off('.DT').find(':not(tbody *)').off('.DT');
$(window).off('.DT-'+settings.sInstance);
-
+
// When scrolling we had to break the table up - restore it
if ( table != thead.parentNode ) {
jqTable.children('thead').detach();
jqTable.append( thead );
}
-
+
if ( tfoot && table != tfoot.parentNode ) {
jqTable.children('tfoot').detach();
jqTable.append( tfoot );
}
-
+
settings.aaSorting = [];
settings.aaSortingFixed = [];
_fnSortingClasses( settings );
-
+
$( rows ).removeClass( settings.asStripeClasses.join(' ') );
-
+
$('th, td', thead).removeClass( classes.sSortable+' '+
classes.sSortableAsc+' '+classes.sSortableDesc+' '+classes.sSortableNone
);
-
+
// Add the TR elements back into the table in their original order
jqTbody.children().detach();
jqTbody.append( rows );
-
+
// Remove the DataTables generated nodes, events and classes
var removedMethod = remove ? 'remove' : 'detach';
jqTable[ removedMethod ]();
jqWrapper[ removedMethod ]();
-
+
// If we need to reattach the table to the document
if ( ! remove && orig ) {
// insertBefore acts like appendChild if !arg[1]
orig.insertBefore( table, settings.nTableReinsertBefore );
-
+
// Restore the width of the original table - was read from the style property,
// so we can restore directly to that
jqTable
.css( 'width', settings.sDestroyWidth )
.removeClass( classes.sTable );
-
+
// If the were originally stripe classes - then we add them back here.
// Note this is not fool proof (for example if not all rows had stripe
// classes - but it's a good effort without getting carried away
ien = settings.asDestroyStripes.length;
-
+
if ( ien ) {
jqTbody.children().each( function (i) {
$(this).addClass( settings.asDestroyStripes[i % ien] );
} );
}
}
-
+
/* Remove the settings object from the settings array */
var idx = $.inArray( settings, DataTable.settings );
if ( idx !== -1 ) {
@@ -9366,14 +9366,14 @@
}
} );
} );
-
-
+
+
// Add the `every()` method for rows, columns and cells in a compact form
$.each( [ 'column', 'row', 'cell' ], function ( i, type ) {
_api_register( type+'s().every()', function ( fn ) {
var opts = this.selector.opts;
var api = this;
-
+
return this.iterator( type, function ( settings, arg1, arg2, arg3, arg4 ) {
// Rows and columns:
// arg1 - index
@@ -9396,24 +9396,24 @@
} );
} );
} );
-
-
+
+
// i18n method for extensions to be able to use the language object from the
// DataTable
_api_register( 'i18n()', function ( token, def, plural ) {
var ctx = this.context[0];
var resolved = _fnGetObjectDataFn( token )( ctx.oLanguage );
-
+
if ( resolved === undefined ) {
resolved = def;
}
-
+
if ( plural !== undefined && $.isPlainObject( resolved ) ) {
resolved = resolved[ plural ] !== undefined ?
resolved[ plural ] :
resolved._;
}
-
+
return resolved.replace( '%d', plural ); // nb: plural might be undefined,
} );
@@ -9448,9 +9448,9 @@
* @namespace
*/
DataTable.models = {};
-
-
-
+
+
+
/**
* Template object for the way in which DataTables holds information about
* search information for the global filter and individual column filters.
@@ -9463,14 +9463,14 @@
* @default true
*/
"bCaseInsensitive": true,
-
+
/**
* Applied search term
* @type string
* @default Empty string
*/
"sSearch": "",
-
+
/**
* Flag to indicate if the search term should be interpreted as a
* regular expression (true) or not (false) and therefore and special
@@ -9479,7 +9479,7 @@
* @default false
*/
"bRegex": false,
-
+
/**
* Flag to indicate if DataTables is to use its smart filtering or not.
* @type boolean
@@ -9487,10 +9487,10 @@
*/
"bSmart": true
};
-
-
-
-
+
+
+
+
/**
* Template object for the way in which DataTables holds information about
* each individual row. This is the object format used for the settings
@@ -9504,7 +9504,7 @@
* @default null
*/
"nTr": null,
-
+
/**
* Array of TD elements for each row. This is null until the row has been
* created.
@@ -9512,7 +9512,7 @@
* @default []
*/
"anCells": null,
-
+
/**
* Data object from the original data source for the row. This is either
* an array if using the traditional form of DataTables, or an object if
@@ -9523,7 +9523,7 @@
* @default []
*/
"_aData": [],
-
+
/**
* Sorting data cache - this array is ostensibly the same length as the
* number of columns (although each index is generated only as it is
@@ -9537,7 +9537,7 @@
* @private
*/
"_aSortData": null,
-
+
/**
* Per cell filtering data cache. As per the sort data cache, used to
* increase the performance of the filtering in DataTables
@@ -9546,7 +9546,7 @@
* @private
*/
"_aFilterData": null,
-
+
/**
* Filtering data cache. This is the same as the cell filtering cache, but
* in this case a string rather than an array. This is easily computed with
@@ -9557,7 +9557,7 @@
* @private
*/
"_sFilterRow": null,
-
+
/**
* Cache of the class name that DataTables has applied to the row, so we
* can quickly look at this variable rather than needing to do a DOM check
@@ -9567,7 +9567,7 @@
* @private
*/
"_sRowStripe": "",
-
+
/**
* Denote if the original data source was from the DOM, or the data source
* object. This is used for invalidating data, so DataTables can
@@ -9578,7 +9578,7 @@
* @private
*/
"src": null,
-
+
/**
* Index in the aoData array. This saves an indexOf lookup when we have the
* object, but want to know the index
@@ -9588,8 +9588,8 @@
*/
"idx": -1
};
-
-
+
+
/**
* Template object for the column information object in DataTables. This object
* is held in the settings aoColumns array and contains all the information that
@@ -9609,7 +9609,7 @@
* @default null
*/
"idx": null,
-
+
/**
* A list of the columns that sorting should occur on when this column
* is sorted. That this property is an array allows multi-column sorting
@@ -9620,7 +9620,7 @@
* @type array
*/
"aDataSort": null,
-
+
/**
* Define the sorting directions that are applied to the column, in sequence
* as the column is repeatedly sorted upon - i.e. the first value is used
@@ -9630,26 +9630,26 @@
* @type array
*/
"asSorting": null,
-
+
/**
* Flag to indicate if the column is searchable, and thus should be included
* in the filtering or not.
* @type boolean
*/
"bSearchable": null,
-
+
/**
* Flag to indicate if the column is sortable or not.
* @type boolean
*/
"bSortable": null,
-
+
/**
* Flag to indicate if the column is currently visible in the table or not
* @type boolean
*/
"bVisible": null,
-
+
/**
* Store for manual type assignment using the `column.type` option. This
* is held in store so we can manipulate the column's `sType` property.
@@ -9658,7 +9658,7 @@
* @private
*/
"_sManualType": null,
-
+
/**
* Flag to indicate if HTML5 data attributes should be used as the data
* source for filtering or sorting. True is either are.
@@ -9667,7 +9667,7 @@
* @private
*/
"_bAttrSrc": false,
-
+
/**
* Developer definable function that is called whenever a cell is created (Ajax source,
* etc) or processed for input (DOM source). This can be used as a compliment to mRender
@@ -9681,7 +9681,7 @@
* @default null
*/
"fnCreatedCell": null,
-
+
/**
* Function to get data from a cell in a column. You should never
* access data directly through _aData internally in DataTables - always use
@@ -9697,7 +9697,7 @@
* @default null
*/
"fnGetData": null,
-
+
/**
* Function to set data for a cell in the column. You should never
* set the data directly to _aData internally in DataTables - always use
@@ -9710,7 +9710,7 @@
* @default null
*/
"fnSetData": null,
-
+
/**
* Property to read the value for the cells in the column from the data
* source array / object. If null, then the default content is used, if a
@@ -9719,7 +9719,7 @@
* @default null
*/
"mData": null,
-
+
/**
* Partner property to mData which is used (only when defined) to get
* the data - i.e. it is basically the same as mData, but without the
@@ -9729,7 +9729,7 @@
* @default null
*/
"mRender": null,
-
+
/**
* Unique header TH/TD element for this column - this is what the sorting
* listener is attached to (if sorting is enabled.)
@@ -9737,7 +9737,7 @@
* @default null
*/
"nTh": null,
-
+
/**
* Unique footer TH/TD element for this column (if there is one). Not used
* in DataTables as such, but can be used for plug-ins to reference the
@@ -9746,14 +9746,14 @@
* @default null
*/
"nTf": null,
-
+
/**
* The class to apply to all TD elements in the table's TBODY for the column
* @type string
* @default null
*/
"sClass": null,
-
+
/**
* When DataTables calculates the column widths to assign to each column,
* it finds the longest string in each column and then constructs a
@@ -9766,7 +9766,7 @@
* @type string
*/
"sContentPadding": null,
-
+
/**
* Allows a default value to be given for a column's data, and will be used
* whenever a null data source is encountered (this can be because mData
@@ -9775,14 +9775,14 @@
* @default null
*/
"sDefaultContent": null,
-
+
/**
* Name for the column, allowing reference to the column by name as well as
* by index (needs a lookup to work by name).
* @type string
*/
"sName": null,
-
+
/**
* Custom sorting data type - defines which of the available plug-ins in
* afnSortData the custom sorting will use - if any is defined.
@@ -9790,14 +9790,14 @@
* @default std
*/
"sSortDataType": 'std',
-
+
/**
* Class to be applied to the header element when sorting on this column
* @type string
* @default null
*/
"sSortingClass": null,
-
+
/**
* Class to be applied to the header element when sorting on this column -
* when jQuery UI theming is used.
@@ -9805,27 +9805,27 @@
* @default null
*/
"sSortingClassJUI": null,
-
+
/**
* Title of the column - what is seen in the TH element (nTh).
* @type string
*/
"sTitle": null,
-
+
/**
* Column sorting and filtering type
* @type string
* @default null
*/
"sType": null,
-
+
/**
* Width of the column
* @type string
* @default null
*/
"sWidth": null,
-
+
/**
* Width of the column when it was first "encountered"
* @type string
@@ -9833,8 +9833,8 @@
*/
"sWidthOrig": null
};
-
-
+
+
/*
* Developer note: The properties of the object below are given in Hungarian
* notation, that was used as the interface for DataTables prior to v1.10, however
@@ -9850,7 +9850,7 @@
* completely, but that is a massive amount of work and will break current
* installs (therefore is on-hold until v2).
*/
-
+
/**
* Initialisation options that can be given to DataTables at initialisation
* time.
@@ -9917,8 +9917,8 @@
* } );
*/
"aaData": null,
-
-
+
+
/**
* If ordering is enabled, then DataTables will perform a first pass sort on
* initialisation. You can define which column(s) the sort is performed
@@ -9947,8 +9947,8 @@
* } );
*/
"aaSorting": [[0,'asc']],
-
-
+
+
/**
* This parameter is basically identical to the `sorting` parameter, but
* cannot be overridden by user interaction with the table. What this means
@@ -9970,8 +9970,8 @@
* } )
*/
"aaSortingFixed": [],
-
-
+
+
/**
* DataTables can be instructed to load data to display in the table from a
* Ajax source. This option defines how that Ajax call is made and where to.
@@ -10127,8 +10127,8 @@
* } );
*/
"ajax": null,
-
-
+
+
/**
* This parameter allows you to readily specify the entries in the length drop
* down menu that DataTables shows when pagination is enabled. It can be
@@ -10153,8 +10153,8 @@
* } );
*/
"aLengthMenu": [ 10, 25, 50, 100 ],
-
-
+
+
/**
* The `columns` option in the initialisation parameter allows you to define
* details about the way individual columns behave. For a full list of
@@ -10168,7 +10168,7 @@
* @name DataTable.defaults.column
*/
"aoColumns": null,
-
+
/**
* Very similar to `columns`, `columnDefs` allows you to target a specific
* column, multiple columns, or all columns, using the `targets` property of
@@ -10189,8 +10189,8 @@
* @name DataTable.defaults.columnDefs
*/
"aoColumnDefs": null,
-
-
+
+
/**
* Basically the same as `search`, this parameter defines the individual column
* filtering state at initialisation time. The array must be of the same size
@@ -10216,8 +10216,8 @@
* } )
*/
"aoSearchCols": [],
-
-
+
+
/**
* An array of CSS classes that should be applied to displayed rows. This
* array may be of any length, and DataTables will apply each class
@@ -10237,8 +10237,8 @@
* } )
*/
"asStripeClasses": null,
-
-
+
+
/**
* Enable or disable automatic column width calculation. This can be disabled
* as an optimisation (it takes some time to calculate the widths) if the
@@ -10257,8 +10257,8 @@
* } );
*/
"bAutoWidth": true,
-
-
+
+
/**
* Deferred rendering can provide DataTables with a huge speed boost when you
* are using an Ajax or JS data source for the table. This option, when set to
@@ -10280,8 +10280,8 @@
* } );
*/
"bDeferRender": false,
-
-
+
+
/**
* Replace a DataTable which matches the given selector and replace it with
* one which has the properties of the new initialisation object passed. If no
@@ -10308,8 +10308,8 @@
* } );
*/
"bDestroy": false,
-
-
+
+
/**
* Enable or disable filtering of data. Filtering in DataTables is "smart" in
* that it allows the end user to input multiple words (space separated) and
@@ -10332,8 +10332,8 @@
* } );
*/
"bFilter": true,
-
-
+
+
/**
* Enable or disable the table information display. This shows information
* about the data that is currently visible on the page, including information
@@ -10352,8 +10352,8 @@
* } );
*/
"bInfo": true,
-
-
+
+
/**
* Allows the end user to select the size of a formatted page from a select
* menu (sizes are 10, 25, 50 and 100). Requires pagination (`paginate`).
@@ -10371,8 +10371,8 @@
* } );
*/
"bLengthChange": true,
-
-
+
+
/**
* Enable or disable pagination.
* @type boolean
@@ -10389,8 +10389,8 @@
* } );
*/
"bPaginate": true,
-
-
+
+
/**
* Enable or disable the display of a 'processing' indicator when the table is
* being processed (e.g. a sort). This is particularly useful for tables with
@@ -10410,8 +10410,8 @@
* } );
*/
"bProcessing": false,
-
-
+
+
/**
* Retrieve the DataTables object for the given selector. Note that if the
* table has already been initialised, this parameter will cause DataTables
@@ -10448,8 +10448,8 @@
* }
*/
"bRetrieve": false,
-
-
+
+
/**
* When vertical (y) scrolling is enabled, DataTables will force the height of
* the table's viewport to the given height at all times (useful for layout).
@@ -10472,8 +10472,8 @@
* } );
*/
"bScrollCollapse": false,
-
-
+
+
/**
* Configure DataTables to use server-side processing. Note that the
* `ajax` parameter must also be given in order to give DataTables a
@@ -10494,8 +10494,8 @@
* } );
*/
"bServerSide": false,
-
-
+
+
/**
* Enable or disable sorting of columns. Sorting of individual columns can be
* disabled by the `sortable` option for each column.
@@ -10513,8 +10513,8 @@
* } );
*/
"bSort": true,
-
-
+
+
/**
* Enable or display DataTables' ability to sort multiple columns at the
* same time (activated by shift-click by the user).
@@ -10533,8 +10533,8 @@
* } );
*/
"bSortMulti": true,
-
-
+
+
/**
* Allows control over whether DataTables should use the top (true) unique
* cell that is found for a single column, or the bottom (false - default).
@@ -10553,8 +10553,8 @@
* } );
*/
"bSortCellsTop": false,
-
-
+
+
/**
* Enable or disable the addition of the classes `sorting\_1`, `sorting\_2` and
* `sorting\_3` to the columns which are currently being sorted on. This is
@@ -10575,8 +10575,8 @@
* } );
*/
"bSortClasses": true,
-
-
+
+
/**
* Enable or disable state saving. When enabled HTML5 `localStorage` will be
* used to save table display information such as pagination information,
@@ -10600,8 +10600,8 @@
* } );
*/
"bStateSave": false,
-
-
+
+
/**
* This function is called when a TR element is created (and all TD child
* elements have been inserted), or registered if using a DOM source, allowing
@@ -10628,8 +10628,8 @@
* } );
*/
"fnCreatedRow": null,
-
-
+
+
/**
* This function is called on every 'draw' event, and allows you to
* dynamically modify any aspect you want about the created DOM.
@@ -10649,8 +10649,8 @@
* } );
*/
"fnDrawCallback": null,
-
-
+
+
/**
* Identical to fnHeaderCallback() but for the table footer this function
* allows you to modify the table footer on every 'draw' event.
@@ -10677,8 +10677,8 @@
* } )
*/
"fnFooterCallback": null,
-
-
+
+
/**
* When rendering large numbers in the information element for the table
* (i.e. "Showing 1 to 10 of 57 entries") DataTables will render large numbers
@@ -10712,8 +10712,8 @@
this.oLanguage.sThousands
);
},
-
-
+
+
/**
* This function is called on every 'draw' event, and allows you to
* dynamically modify the header row. This can be used to calculate and
@@ -10741,8 +10741,8 @@
* } )
*/
"fnHeaderCallback": null,
-
-
+
+
/**
* The information element can be used to convey information about the current
* state of the table. Although the internationalisation options presented by
@@ -10771,8 +10771,8 @@
* } );
*/
"fnInfoCallback": null,
-
-
+
+
/**
* Called when the table has been initialised. Normally DataTables will
* initialise sequentially and there will be no need for this function,
@@ -10796,8 +10796,8 @@
* } )
*/
"fnInitComplete": null,
-
-
+
+
/**
* Called at the very start of each table draw and can be used to cancel the
* draw by returning false, any other return (including undefined) results in
@@ -10822,8 +10822,8 @@
* } );
*/
"fnPreDrawCallback": null,
-
-
+
+
/**
* This function allows you to 'post process' each row after it have been
* generated for each table draw, but before it is rendered on screen. This
@@ -10851,8 +10851,8 @@
* } );
*/
"fnRowCallback": null,
-
-
+
+
/**
* __Deprecated__ The functionality provided by this parameter has now been
* superseded by that provided through `ajax`, which should be used instead.
@@ -10877,8 +10877,8 @@
* @deprecated 1.10. Please use `ajax` for this functionality now.
*/
"fnServerData": null,
-
-
+
+
/**
* __Deprecated__ The functionality provided by this parameter has now been
* superseded by that provided through `ajax`, which should be used instead.
@@ -10904,8 +10904,8 @@
* @deprecated 1.10. Please use `ajax` for this functionality now.
*/
"fnServerParams": null,
-
-
+
+
/**
* Load the table state. With this function you can define from where, and how, the
* state of a table is loaded. By default DataTables will load from `localStorage`
@@ -10945,8 +10945,8 @@
);
} catch (e) {}
},
-
-
+
+
/**
* Callback which allows modification of the saved state prior to loading that state.
* This callback is called when the table is loading state from the stored data, but
@@ -10983,8 +10983,8 @@
* } );
*/
"fnStateLoadParams": null,
-
-
+
+
/**
* Callback that is called when the state has been loaded from the state saving method
* and the DataTables settings object has been modified as a result of the loaded state.
@@ -11007,8 +11007,8 @@
* } );
*/
"fnStateLoaded": null,
-
-
+
+
/**
* Save the table state. This function allows you to define where and how the state
* information for the table is stored By default DataTables will use `localStorage`
@@ -11046,8 +11046,8 @@
);
} catch (e) {}
},
-
-
+
+
/**
* Callback which allows modification of the state to be saved. Called when the table
* has changed state a new state save is required. This method allows modification of
@@ -11073,8 +11073,8 @@
* } );
*/
"fnStateSaveParams": null,
-
-
+
+
/**
* Duration for which the saved state information is considered valid. After this period
* has elapsed the state will be returned to the default.
@@ -11093,8 +11093,8 @@
* } )
*/
"iStateDuration": 7200,
-
-
+
+
/**
* When enabled DataTables will not make a request to the server for the first
* page draw - rather it will use the data already on the page (no sorting etc
@@ -11137,8 +11137,8 @@
* } );
*/
"iDeferLoading": null,
-
-
+
+
/**
* Number of rows to display on a single page when using pagination. If
* feature enabled (`lengthChange`) then the end user will be able to override
@@ -11157,8 +11157,8 @@
* } )
*/
"iDisplayLength": 10,
-
-
+
+
/**
* Define the starting point for data display when using DataTables with
* pagination. Note that this parameter is the number of records, rather than
@@ -11178,8 +11178,8 @@
* } )
*/
"iDisplayStart": 0,
-
-
+
+
/**
* By default DataTables allows keyboard navigation of the table (sorting, paging,
* and filtering) by adding a `tabindex` attribute to the required elements. This
@@ -11201,8 +11201,8 @@
* } );
*/
"iTabIndex": 0,
-
-
+
+
/**
* Classes that DataTables assigns to the various components and features
* that it adds to the HTML table. This allows classes to be configured
@@ -11212,8 +11212,8 @@
* @name DataTable.defaults.classes
*/
"oClasses": {},
-
-
+
+
/**
* All strings that DataTables uses in the user interface that it creates
* are defined in this object, allowing you to modified them individually or
@@ -11252,7 +11252,7 @@
* } );
*/
"sSortAscending": ": activate to sort column ascending",
-
+
/**
* ARIA label that is added to the table headers when the column may be
* sorted descending by activing the column (click or return when focused).
@@ -11276,7 +11276,7 @@
*/
"sSortDescending": ": activate to sort column descending"
},
-
+
/**
* Pagination string used by DataTables for the built-in pagination
* control types.
@@ -11305,8 +11305,8 @@
* } );
*/
"sFirst": "First",
-
-
+
+
/**
* Text to use when using the 'full_numbers' type of pagination for the
* button to take the user to the last page.
@@ -11328,8 +11328,8 @@
* } );
*/
"sLast": "Last",
-
-
+
+
/**
* Text to use for the 'next' pagination button (to take the user to the
* next page).
@@ -11351,8 +11351,8 @@
* } );
*/
"sNext": "Next",
-
-
+
+
/**
* Text to use for the 'previous' pagination button (to take the user to
* the previous page).
@@ -11375,7 +11375,7 @@
*/
"sPrevious": "Previous"
},
-
+
/**
* This string is shown in preference to `zeroRecords` when the table is
* empty of data (regardless of filtering). Note that this is an optional
@@ -11397,8 +11397,8 @@
* } );
*/
"sEmptyTable": "No data available in table",
-
-
+
+
/**
* This string gives information to the end user about the information
* that is current on display on the page. The following tokens can be
@@ -11429,8 +11429,8 @@
* } );
*/
"sInfo": "Showing _START_ to _END_ of _TOTAL_ entries",
-
-
+
+
/**
* Display information string for when the table is empty. Typically the
* format of this string should match `info`.
@@ -11450,8 +11450,8 @@
* } );
*/
"sInfoEmpty": "Showing 0 to 0 of 0 entries",
-
-
+
+
/**
* When a user filters the information in a table, this string is appended
* to the information (`info`) to give an idea of how strong the filtering
@@ -11472,8 +11472,8 @@
* } );
*/
"sInfoFiltered": "(filtered from _MAX_ total entries)",
-
-
+
+
/**
* If can be useful to append extra information to the info string at times,
* and this variable does exactly that. This information will be appended to
@@ -11495,8 +11495,8 @@
* } );
*/
"sInfoPostFix": "",
-
-
+
+
/**
* This decimal place operator is a little different from the other
* language options since DataTables doesn't output floating point
@@ -11510,7 +11510,7 @@
* However, multiple different tables on the page can use different
* decimal place characters.
* @type string
- * @default
+ * @default
*
* @dtopt Language
* @name DataTable.defaults.language.decimal
@@ -11526,8 +11526,8 @@
* } );
*/
"sDecimal": "",
-
-
+
+
/**
* DataTables has a build in number formatter (`formatNumber`) which is
* used to format large numbers that are used in the table information.
@@ -11549,8 +11549,8 @@
* } );
*/
"sThousands": ",",
-
-
+
+
/**
* Detail the action that will be taken when the drop down menu for the
* pagination length option is changed. The '_MENU_' variable is replaced
@@ -11590,8 +11590,8 @@
* } );
*/
"sLengthMenu": "Show _MENU_ entries",
-
-
+
+
/**
* When using Ajax sourced data and during the first draw when DataTables is
* gathering the data, this message is shown in an empty row in the table to
@@ -11614,8 +11614,8 @@
* } );
*/
"sLoadingRecords": "Loading...",
-
-
+
+
/**
* Text which is displayed when the table is processing a user action
* (usually a sort command or similar).
@@ -11635,8 +11635,8 @@
* } );
*/
"sProcessing": "Processing...",
-
-
+
+
/**
* Details the actions that will be taken when the user types into the
* filtering input text box. The variable "_INPUT_", if used in the string,
@@ -11670,19 +11670,19 @@
* } );
*/
"sSearch": "Search:",
-
-
+
+
/**
* Assign a `placeholder` attribute to the search `input` element
* @type string
- * @default
+ * @default
*
* @dtopt Language
* @name DataTable.defaults.language.searchPlaceholder
*/
"sSearchPlaceholder": "",
-
-
+
+
/**
* All of the language information can be stored in a file on the
* server-side, which DataTables will look up if this parameter is passed.
@@ -11706,8 +11706,8 @@
* } );
*/
"sUrl": "",
-
-
+
+
/**
* Text shown inside the table records when the is no information to be
* displayed after filtering. `emptyTable` is shown when there is simply no
@@ -11729,8 +11729,8 @@
*/
"sZeroRecords": "No matching records found"
},
-
-
+
+
/**
* This parameter allows you to have define the global filtering state at
* initialisation time. As an object the `search` parameter must be
@@ -11753,8 +11753,8 @@
* } )
*/
"oSearch": $.extend( {}, DataTable.models.oSearch ),
-
-
+
+
/**
* __Deprecated__ The functionality provided by this parameter has now been
* superseded by that provided through `ajax`, which should be used instead.
@@ -11774,8 +11774,8 @@
* @deprecated 1.10. Please use `ajax` for this functionality now.
*/
"sAjaxDataProp": "data",
-
-
+
+
/**
* __Deprecated__ The functionality provided by this parameter has now been
* superseded by that provided through `ajax`, which should be used instead.
@@ -11793,8 +11793,8 @@
* @deprecated 1.10. Please use `ajax` for this functionality now.
*/
"sAjaxSource": null,
-
-
+
+
/**
* This initialisation variable allows you to specify exactly where in the
* DOM you want DataTables to inject the various controls it adds to the page
@@ -11847,8 +11847,8 @@
* } );
*/
"sDom": "lfrtip",
-
-
+
+
/**
* Search delay option. This will throttle full table searches that use the
* DataTables provided search input element (it does not effect calls to
@@ -11867,8 +11867,8 @@
* } )
*/
"searchDelay": null,
-
-
+
+
/**
* DataTables features six different built-in options for the buttons to
* display for pagination control:
@@ -11879,7 +11879,7 @@
* * `full` - 'First', 'Previous', 'Next' and 'Last' buttons
* * `full_numbers` - 'First', 'Previous', 'Next' and 'Last' buttons, plus page numbers
* * `first_last_numbers` - 'First' and 'Last' buttons, plus page numbers
- *
+ *
* Further methods can be added using {@link DataTable.ext.oPagination}.
* @type string
* @default simple_numbers
@@ -11895,8 +11895,8 @@
* } )
*/
"sPaginationType": "simple_numbers",
-
-
+
+
/**
* Enable horizontal scrolling. When a table is too wide to fit into a
* certain layout, or you have a large number of columns in the table, you
@@ -11920,8 +11920,8 @@
* } );
*/
"sScrollX": "",
-
-
+
+
/**
* This property can be used to force a DataTable to use more width than it
* might otherwise do when x-scrolling is enabled. For example if you have a
@@ -11944,8 +11944,8 @@
* } );
*/
"sScrollXInner": "",
-
-
+
+
/**
* Enable vertical scrolling. Vertical scrolling will constrain the DataTable
* to the given height, and enable scrolling for any data which overflows the
@@ -11968,8 +11968,8 @@
* } );
*/
"sScrollY": "",
-
-
+
+
/**
* __Deprecated__ The functionality provided by this parameter has now been
* superseded by that provided through `ajax`, which should be used instead.
@@ -11986,8 +11986,8 @@
* @deprecated 1.10. Please use `ajax` for this functionality now.
*/
"sServerMethod": "GET",
-
-
+
+
/**
* DataTables makes use of renderers when displaying HTML elements for
* a table. These renderers can be added or modified by plug-ins to
@@ -12004,8 +12004,8 @@
*
*/
"renderer": null,
-
-
+
+
/**
* Set the data property name that DataTables should use to get a row's id
* to set as the `id` property in the node.
@@ -12016,16 +12016,16 @@
*/
"rowId": "DT_RowId"
};
-
+
_fnHungarianMap( DataTable.defaults );
-
-
-
+
+
+
/*
* Developer note - See note in model.defaults.js about the use of Hungarian
* notation and camel case.
*/
-
+
/**
* Column options that can be given to DataTables at initialisation time.
* @namespace
@@ -12071,8 +12071,8 @@
*/
"aDataSort": null,
"iDataSort": -1,
-
-
+
+
/**
* You can control the default ordering direction, and even alter the
* behaviour of the sort handler (i.e. only allow ascending ordering etc)
@@ -12110,8 +12110,8 @@
* } );
*/
"asSorting": [ 'asc', 'desc' ],
-
-
+
+
/**
* Enable or disable filtering on the data in this column.
* @type boolean
@@ -12143,8 +12143,8 @@
* } );
*/
"bSearchable": true,
-
-
+
+
/**
* Enable or disable ordering on this column.
* @type boolean
@@ -12176,8 +12176,8 @@
* } );
*/
"bSortable": true,
-
-
+
+
/**
* Enable or disable the display of this column.
* @type boolean
@@ -12209,8 +12209,8 @@
* } );
*/
"bVisible": true,
-
-
+
+
/**
* Developer definable function that is called whenever a cell is created (Ajax source,
* etc) or processed for input (DOM source). This can be used as a compliment to mRender
@@ -12241,8 +12241,8 @@
* } );
*/
"fnCreatedCell": null,
-
-
+
+
/**
* This parameter has been replaced by `data` in DataTables to ensure naming
* consistency. `dataProp` can still be used, as there is backwards
@@ -12250,8 +12250,8 @@
* recommended that you use `data` in preference to `dataProp`.
* @name DataTable.defaults.column.dataProp
*/
-
-
+
+
/**
* This property can be used to read data from any data source property,
* including deeply nested objects / properties. `data` can be given in a
@@ -12422,8 +12422,8 @@
*
*/
"mData": null,
-
-
+
+
/**
* This property is the rendering partner to `data` and it is suggested that
* when you want to manipulate data for display (including filtering,
@@ -12544,8 +12544,8 @@
* } );
*/
"mRender": null,
-
-
+
+
/**
* Change the cell type created for the column - either TD cells or TH cells. This
* can be useful as TH cells have semantic meaning in the table body, allowing them
@@ -12568,8 +12568,8 @@
* } );
*/
"sCellType": "td",
-
-
+
+
/**
* Class to give to each cell in this column.
* @type string
@@ -12603,7 +12603,7 @@
* } );
*/
"sClass": "",
-
+
/**
* When DataTables calculates the column widths to assign to each column,
* it finds the longest string in each column and then constructs a
@@ -12636,8 +12636,8 @@
* } );
*/
"sContentPadding": "",
-
-
+
+
/**
* Allows a default value to be given for a column's data, and will be used
* whenever a null data source is encountered (this can be because `data`
@@ -12679,8 +12679,8 @@
* } );
*/
"sDefaultContent": null,
-
-
+
+
/**
* This parameter is only used in DataTables' server-side processing. It can
* be exceptionally useful to know what columns are being displayed on the
@@ -12723,8 +12723,8 @@
* } );
*/
"sName": "",
-
-
+
+
/**
* Defines a data source type for the ordering which can be used to read
* real-time information from the table (updating the internally cached
@@ -12765,8 +12765,8 @@
* } );
*/
"sSortDataType": "std",
-
-
+
+
/**
* The title of this column.
* @type string
@@ -12801,8 +12801,8 @@
* } );
*/
"sTitle": null,
-
-
+
+
/**
* The type allows you to specify how the data for this column will be
* ordered. Four types (string, numeric, date and html (which will strip
@@ -12842,8 +12842,8 @@
* } );
*/
"sType": null,
-
-
+
+
/**
* Defining the width of the column, this parameter may take any CSS value
* (3em, 20px etc). DataTables applies 'smart' widths to columns which have not
@@ -12881,11 +12881,11 @@
*/
"sWidth": null
};
-
+
_fnHungarianMap( DataTable.defaults.column );
-
-
-
+
+
+
/**
* DataTables settings object - this holds all the information needed for a
* given table, including configuration, data and current application of the
@@ -12914,7 +12914,7 @@
* @namespace
*/
"oFeatures": {
-
+
/**
* Flag to say if DataTables should automatically try to calculate the
* optimum table and columns widths (true) or not (false).
@@ -12923,7 +12923,7 @@
* @type boolean
*/
"bAutoWidth": null,
-
+
/**
* Delay the creation of TR and TD elements until they are actually
* needed by a driven page draw. This can give a significant speed
@@ -12934,7 +12934,7 @@
* @type boolean
*/
"bDeferRender": null,
-
+
/**
* Enable filtering on the table or not. Note that if this is disabled
* then there is no filtering at all on the table, including fnFilter.
@@ -12944,7 +12944,7 @@
* @type boolean
*/
"bFilter": null,
-
+
/**
* Table information element (the 'Showing x of y records' div) enable
* flag.
@@ -12953,7 +12953,7 @@
* @type boolean
*/
"bInfo": null,
-
+
/**
* Present a user control allowing the end user to change the page size
* when pagination is enabled.
@@ -12962,7 +12962,7 @@
* @type boolean
*/
"bLengthChange": null,
-
+
/**
* Pagination enabled or not. Note that if this is disabled then length
* changing must also be disabled.
@@ -12971,7 +12971,7 @@
* @type boolean
*/
"bPaginate": null,
-
+
/**
* Processing indicator enable flag whenever DataTables is enacting a
* user request - typically an Ajax request for server-side processing.
@@ -12980,7 +12980,7 @@
* @type boolean
*/
"bProcessing": null,
-
+
/**
* Server-side processing enabled flag - when enabled DataTables will
* get all data from the server for every draw - there is no filtering,
@@ -12990,7 +12990,7 @@
* @type boolean
*/
"bServerSide": null,
-
+
/**
* Sorting enablement flag.
* Note that this parameter will be set by the initialisation routine. To
@@ -12998,7 +12998,7 @@
* @type boolean
*/
"bSort": null,
-
+
/**
* Multi-column sorting
* Note that this parameter will be set by the initialisation routine. To
@@ -13006,7 +13006,7 @@
* @type boolean
*/
"bSortMulti": null,
-
+
/**
* Apply a class to the columns which are being sorted to provide a
* visual highlight or not. This can slow things down when enabled since
@@ -13016,7 +13016,7 @@
* @type boolean
*/
"bSortClasses": null,
-
+
/**
* State saving enablement flag.
* Note that this parameter will be set by the initialisation routine. To
@@ -13025,8 +13025,8 @@
*/
"bStateSave": null
},
-
-
+
+
/**
* Scrolling settings for a table.
* @namespace
@@ -13040,7 +13040,7 @@
* @type boolean
*/
"bCollapse": null,
-
+
/**
* Width of the scrollbar for the web-browser's platform. Calculated
* during table initialisation.
@@ -13048,7 +13048,7 @@
* @default 0
*/
"iBarWidth": 0,
-
+
/**
* Viewport width for horizontal scrolling. Horizontal scrolling is
* disabled if an empty string.
@@ -13057,7 +13057,7 @@
* @type string
*/
"sX": null,
-
+
/**
* Width to expand the table to when using x-scrolling. Typically you
* should not need to use this.
@@ -13067,7 +13067,7 @@
* @deprecated
*/
"sXInner": null,
-
+
/**
* Viewport height for vertical scrolling. Vertical scrolling is disabled
* if an empty string.
@@ -13077,7 +13077,7 @@
*/
"sY": null
},
-
+
/**
* Language information for the table.
* @namespace
@@ -13092,7 +13092,7 @@
*/
"fnInfoCallback": null
},
-
+
/**
* Browser support parameters
* @namespace
@@ -13105,7 +13105,7 @@
* @default false
*/
"bScrollOversize": false,
-
+
/**
* Determine if the vertical scrollbar is on the right or left of the
* scrolling container - needed for rtl language layout, although not
@@ -13114,14 +13114,14 @@
* @default false
*/
"bScrollbarLeft": false,
-
+
/**
* Flag for if `getBoundingClientRect` is fully supported or not
* @type boolean
* @default false
*/
"bBounding": false,
-
+
/**
* Browser scrollbar width
* @type integer
@@ -13129,11 +13129,11 @@
*/
"barWidth": 0
},
-
-
+
+
"ajax": null,
-
-
+
+
/**
* Array referencing the nodes which are used for the features. The
* parameters of this object match what is allowed by sDom - i.e.
@@ -13149,7 +13149,7 @@
* @default []
*/
"aanFeatures": [],
-
+
/**
* Store data information - see {@link DataTable.models.oRow} for detailed
* information.
@@ -13157,49 +13157,49 @@
* @default []
*/
"aoData": [],
-
+
/**
* Array of indexes which are in the current display (after filtering etc)
* @type array
* @default []
*/
"aiDisplay": [],
-
+
/**
* Array of indexes for display - no filtering
* @type array
* @default []
*/
"aiDisplayMaster": [],
-
+
/**
* Map of row ids to data indexes
* @type object
* @default {}
*/
"aIds": {},
-
+
/**
* Store information about each column that is in use
* @type array
* @default []
*/
"aoColumns": [],
-
+
/**
* Store information about the table's header
* @type array
* @default []
*/
"aoHeader": [],
-
+
/**
* Store information about the table's footer
* @type array
* @default []
*/
"aoFooter": [],
-
+
/**
* Store the applied global search information in case we want to force a
* research or compare the old search to a new one.
@@ -13209,7 +13209,7 @@
* @extends DataTable.models.oSearch
*/
"oPreviousSearch": {},
-
+
/**
* Store the applied search for each column - see
* {@link DataTable.models.oSearch} for the format that is used for the
@@ -13218,7 +13218,7 @@
* @default []
*/
"aoPreSearchCols": [],
-
+
/**
* Sorting that is applied to the table. Note that the inner arrays are
* used in the following manner:
@@ -13232,7 +13232,7 @@
* @todo These inner arrays should really be objects
*/
"aaSorting": null,
-
+
/**
* Sorting that is always applied to the table (i.e. prefixed in front of
* aaSorting).
@@ -13242,7 +13242,7 @@
* @default []
*/
"aaSortingFixed": [],
-
+
/**
* Classes to use for the striping of a table.
* Note that this parameter will be set by the initialisation routine. To
@@ -13251,56 +13251,56 @@
* @default []
*/
"asStripeClasses": null,
-
+
/**
* If restoring a table - we should restore its striping classes as well
* @type array
* @default []
*/
"asDestroyStripes": [],
-
+
/**
* If restoring a table - we should restore its width
* @type int
* @default 0
*/
"sDestroyWidth": 0,
-
+
/**
* Callback functions array for every time a row is inserted (i.e. on a draw).
* @type array
* @default []
*/
"aoRowCallback": [],
-
+
/**
* Callback functions for the header on each draw.
* @type array
* @default []
*/
"aoHeaderCallback": [],
-
+
/**
* Callback function for the footer on each draw.
* @type array
* @default []
*/
"aoFooterCallback": [],
-
+
/**
* Array of callback functions for draw callback functions
* @type array
* @default []
*/
"aoDrawCallback": [],
-
+
/**
* Array of callback functions for row created function
* @type array
* @default []
*/
"aoRowCreatedCallback": [],
-
+
/**
* Callback functions for just before the table is redrawn. A return of
* false will be used to cancel the draw.
@@ -13308,15 +13308,15 @@
* @default []
*/
"aoPreDrawCallback": [],
-
+
/**
* Callback functions for when the table has been initialised.
* @type array
* @default []
*/
"aoInitComplete": [],
-
-
+
+
/**
* Callbacks for modifying the settings to be stored for state saving, prior to
* saving state.
@@ -13324,7 +13324,7 @@
* @default []
*/
"aoStateSaveParams": [],
-
+
/**
* Callbacks for modifying the settings that have been stored for state saving
* prior to using the stored values to restore the state.
@@ -13332,7 +13332,7 @@
* @default []
*/
"aoStateLoadParams": [],
-
+
/**
* Callbacks for operating on the settings object once the saved state has been
* loaded
@@ -13340,49 +13340,49 @@
* @default []
*/
"aoStateLoaded": [],
-
+
/**
* Cache the table ID for quick access
* @type string
* @default Empty string
*/
"sTableId": "",
-
+
/**
* The TABLE node for the main table
* @type node
* @default null
*/
"nTable": null,
-
+
/**
* Permanent ref to the thead element
* @type node
* @default null
*/
"nTHead": null,
-
+
/**
* Permanent ref to the tfoot element - if it exists
* @type node
* @default null
*/
"nTFoot": null,
-
+
/**
* Permanent ref to the tbody element
* @type node
* @default null
*/
"nTBody": null,
-
+
/**
* Cache the wrapper node (contains all DataTables controlled elements)
* @type node
* @default null
*/
"nTableWrapper": null,
-
+
/**
* Indicate if when using server-side processing the loading of data
* should be deferred until the second draw.
@@ -13392,14 +13392,14 @@
* @default false
*/
"bDeferLoading": false,
-
+
/**
* Indicate if all required information has been read in
* @type boolean
* @default false
*/
"bInitialised": false,
-
+
/**
* Information about open rows. Each object in the array has the parameters
* 'nTr' and 'nParent'
@@ -13407,7 +13407,7 @@
* @default []
*/
"aoOpenRows": [],
-
+
/**
* Dictate the positioning of DataTables' control elements - see
* {@link DataTable.model.oInit.sDom}.
@@ -13417,14 +13417,14 @@
* @default null
*/
"sDom": null,
-
+
/**
* Search delay (in mS)
* @type integer
* @default null
*/
"searchDelay": null,
-
+
/**
* Which type of pagination should be used.
* Note that this parameter will be set by the initialisation routine. To
@@ -13433,7 +13433,7 @@
* @default two_button
*/
"sPaginationType": "two_button",
-
+
/**
* The state duration (for `stateSave`) in seconds.
* Note that this parameter will be set by the initialisation routine. To
@@ -13442,7 +13442,7 @@
* @default 0
*/
"iStateDuration": 0,
-
+
/**
* Array of callback functions for state saving. Each array element is an
* object with the following parameters:
@@ -13457,7 +13457,7 @@
* @default []
*/
"aoStateSave": [],
-
+
/**
* Array of callback functions for state loading. Each array element is an
* object with the following parameters:
@@ -13470,21 +13470,21 @@
* @default []
*/
"aoStateLoad": [],
-
+
/**
* State that was saved. Useful for back reference
* @type object
* @default null
*/
"oSavedState": null,
-
+
/**
* State that was loaded. Useful for back reference
* @type object
* @default null
*/
"oLoadedState": null,
-
+
/**
* Source url for AJAX data for the table.
* Note that this parameter will be set by the initialisation routine. To
@@ -13493,7 +13493,7 @@
* @default null
*/
"sAjaxSource": null,
-
+
/**
* Property from a given object from which to read the table data from. This
* can be an empty string (when not server-side processing), in which case
@@ -13503,14 +13503,14 @@
* @type string
*/
"sAjaxDataProp": null,
-
+
/**
* Note if draw should be blocked while getting data
* @type boolean
* @default true
*/
"bAjaxDataGet": true,
-
+
/**
* The last jQuery XHR object that was used for server-side data gathering.
* This can be used for working with the XHR information in one of the
@@ -13519,21 +13519,21 @@
* @default null
*/
"jqXHR": null,
-
+
/**
* JSON returned from the server in the last Ajax request
* @type object
* @default undefined
*/
"json": undefined,
-
+
/**
* Data submitted as part of the last Ajax request
* @type object
* @default undefined
*/
"oAjaxData": undefined,
-
+
/**
* Function to get the server-side data.
* Note that this parameter will be set by the initialisation routine. To
@@ -13541,7 +13541,7 @@
* @type function
*/
"fnServerData": null,
-
+
/**
* Functions which are called prior to sending an Ajax request so extra
* parameters can easily be sent to the server
@@ -13549,7 +13549,7 @@
* @default []
*/
"aoServerParams": [],
-
+
/**
* Send the XHR HTTP method - GET or POST (could be PUT or DELETE if
* required).
@@ -13558,7 +13558,7 @@
* @type string
*/
"sServerMethod": null,
-
+
/**
* Format numbers for display.
* Note that this parameter will be set by the initialisation routine. To
@@ -13566,7 +13566,7 @@
* @type function
*/
"fnFormatNumber": null,
-
+
/**
* List of options that can be used for the user selectable length menu.
* Note that this parameter will be set by the initialisation routine. To
@@ -13575,7 +13575,7 @@
* @default []
*/
"aLengthMenu": null,
-
+
/**
* Counter for the draws that the table does. Also used as a tracker for
* server-side processing
@@ -13583,35 +13583,35 @@
* @default 0
*/
"iDraw": 0,
-
+
/**
* Indicate if a redraw is being done - useful for Ajax
* @type boolean
* @default false
*/
"bDrawing": false,
-
+
/**
* Draw index (iDraw) of the last error when parsing the returned data
* @type int
* @default -1
*/
"iDrawError": -1,
-
+
/**
* Paging display length
* @type int
* @default 10
*/
"_iDisplayLength": 10,
-
+
/**
* Paging start point - aiDisplay index
* @type int
* @default 0
*/
"_iDisplayStart": 0,
-
+
/**
* Server-side processing - number of records in the result set
* (i.e. before filtering), Use fnRecordsTotal rather than
@@ -13622,7 +13622,7 @@
* @private
*/
"_iRecordsTotal": 0,
-
+
/**
* Server-side processing - number of records in the current display set
* (i.e. after filtering). Use fnRecordsDisplay rather than
@@ -13633,14 +13633,14 @@
* @private
*/
"_iRecordsDisplay": 0,
-
+
/**
* The classes to use for the table
* @type object
* @default {}
*/
"oClasses": {},
-
+
/**
* Flag attached to the settings object so you can check in the draw
* callback if filtering has been done in the draw. Deprecated in favour of
@@ -13650,7 +13650,7 @@
* @deprecated
*/
"bFiltered": false,
-
+
/**
* Flag attached to the settings object so you can check in the draw
* callback if sorting has been done in the draw. Deprecated in favour of
@@ -13660,7 +13660,7 @@
* @deprecated
*/
"bSorted": false,
-
+
/**
* Indicate that if multiple rows are in the header and there is more than
* one unique cell per column, if the top one (true) or bottom one (false)
@@ -13670,14 +13670,14 @@
* @type boolean
*/
"bSortCellsTop": null,
-
+
/**
* Initialisation object that is used for the table
* @type object
* @default null
*/
"oInit": null,
-
+
/**
* Destroy callback functions - for plug-ins to attach themselves to the
* destroy so they can clean up markup and events.
@@ -13685,8 +13685,8 @@
* @default []
*/
"aoDestroyCallback": [],
-
-
+
+
/**
* Get the number of records in the current record set, before filtering
* @type function
@@ -13697,7 +13697,7 @@
this._iRecordsTotal * 1 :
this.aiDisplayMaster.length;
},
-
+
/**
* Get the number of records in the current record set, after filtering
* @type function
@@ -13708,7 +13708,7 @@
this._iRecordsDisplay * 1 :
this.aiDisplay.length;
},
-
+
/**
* Get the display end point - aiDisplay index
* @type function
@@ -13722,7 +13722,7 @@
records = this.aiDisplay.length,
features = this.oFeatures,
paginate = features.bPaginate;
-
+
if ( features.bServerSide ) {
return paginate === false || len === -1 ?
start + records :
@@ -13734,14 +13734,14 @@
calc;
}
},
-
+
/**
* The DataTables object for this table
* @type object
* @default null
*/
"oInstance": null,
-
+
/**
* Unique identifier for each instance of the DataTables object. If there
* is an ID on the table node, then it takes that value, otherwise an
@@ -13750,44 +13750,44 @@
* @default null
*/
"sInstance": null,
-
+
/**
* tabindex attribute value that is added to DataTables control elements, allowing
* keyboard navigation of the table and its controls.
*/
"iTabIndex": 0,
-
+
/**
* DIV container for the footer scrolling table if scrolling
*/
"nScrollHead": null,
-
+
/**
* DIV container for the footer scrolling table if scrolling
*/
"nScrollFoot": null,
-
+
/**
* Last applied sort
* @type array
* @default []
*/
"aLastSort": [],
-
+
/**
* Stored plug-in instances
* @type object
* @default {}
*/
"oPlugins": {},
-
+
/**
* Function used to get a row's id from the row's data
* @type function
* @default null
*/
"rowIdFn": null,
-
+
/**
* Data location where to store a row's id
* @type string
@@ -13806,11 +13806,11 @@
* @namespace
* @extends DataTable.models.ext
*/
-
-
+
+
/**
* DataTables extensions
- *
+ *
* This namespace acts as a collection area for plug-ins that can be used to
* extend DataTables capabilities. Indeed many of the build in methods
* use this method to provide their own capabilities (sorting methods for
@@ -13831,8 +13831,8 @@
* @default {}
*/
buttons: {},
-
-
+
+
/**
* Element class names
*
@@ -13840,19 +13840,19 @@
* @default {}
*/
classes: {},
-
-
+
+
/**
* DataTables build type (expanded by the download builder)
*
* @type string
*/
build:"bs4/dt-1.10.16",
-
-
+
+
/**
* Error reporting.
- *
+ *
* How should DataTables report an error. Can take the value 'alert',
* 'throw', 'none' or a function.
*
@@ -13860,18 +13860,18 @@
* @default alert
*/
errMode: "alert",
-
-
+
+
/**
* Feature plug-ins.
- *
+ *
* This is an array of objects which describe the feature plug-ins that are
* available to DataTables. These feature plug-ins are then available for
* use through the `dom` initialisation option.
- *
+ *
* Each feature plug-in is described by an object which must have the
* following properties:
- *
+ *
* * `fnInit` - function that is used to initialise the plug-in,
* * `cFeature` - a character so the feature can be enabled by the `dom`
* instillation option. This is case sensitive.
@@ -13882,7 +13882,7 @@
* {@link DataTable.models.oSettings}
*
* And the following return is expected:
- *
+ *
* * {node|null} The element which contains your feature. Note that the
* return may also be void if your plug-in does not require to inject any
* DOM elements into DataTables control (`dom`) - for example this might
@@ -13900,11 +13900,11 @@
* } );
*/
feature: [],
-
-
+
+
/**
* Row searching.
- *
+ *
* This method of searching is complimentary to the default type based
* searching, and a lot more comprehensive as it allows you complete control
* over the searching logic. Each element in this array is a function
@@ -13961,8 +13961,8 @@
* );
*/
search: [],
-
-
+
+
/**
* Selector extensions
*
@@ -13992,11 +13992,11 @@
column: [],
row: []
},
-
-
+
+
/**
* Internal functions, exposed for used in plug-ins.
- *
+ *
* Please note that you should not need to use the internal methods for
* anything other than a plug-in (and even then, try to avoid if possible).
* The internal function may change between releases.
@@ -14005,8 +14005,8 @@
* @default {}
*/
internal: {},
-
-
+
+
/**
* Legacy configuration options. Enable and disable legacy options that
* are available in DataTables.
@@ -14023,11 +14023,11 @@
*/
ajax: null
},
-
-
+
+
/**
* Pagination plug-in methods.
- *
+ *
* Each entry in this object is a function and defines which buttons should
* be shown by the pagination rendering method that is used for the table:
* {@link DataTable.ext.renderer.pageButton}. The renderer addresses how the
@@ -14071,26 +14071,26 @@
* };
*/
pager: {},
-
-
+
+
renderer: {
pageButton: {},
header: {}
},
-
-
+
+
/**
* Ordering plug-ins - custom data source
- *
+ *
* The extension options for ordering of data available here is complimentary
* to the default type based ordering that DataTables typically uses. It
* allows much greater control over the the data that is being used to
* order a column, but is necessarily therefore more complex.
- *
+ *
* This type of ordering is useful if you want to do ordering based on data
* live from the DOM (for example the contents of an 'input' element) rather
* than just the static string that DataTables knows of.
- *
+ *
* The way these plug-ins work is that you create an array of the values you
* wish to be ordering for the column in question and then return that
* array. The data in the array much be in the index order of the rows in
@@ -14120,8 +14120,8 @@
* }
*/
order: {},
-
-
+
+
/**
* Type based plug-ins.
*
@@ -14174,8 +14174,8 @@
* );
*/
detect: [],
-
-
+
+
/**
* Type based search formatting.
*
@@ -14185,7 +14185,7 @@
*
* Note that is a search is not defined for a column of a given type,
* no search formatting will be performed.
- *
+ *
* Pre-processing of searching data plug-ins - When you assign the sType
* for a column (or have it automatically detected for you by DataTables
* or a type detection plug-in), you will typically be using this for
@@ -14213,8 +14213,8 @@
* }
*/
search: {},
-
-
+
+
/**
* Type based ordering.
*
@@ -14255,7 +14255,7 @@
* than the second parameter, ===0 if the two parameters are equal and
* >0 if the first parameter should be sorted height than the second
* parameter.
- *
+ *
* @type object
* @default {}
*
@@ -14281,7 +14281,7 @@
*/
order: {}
},
-
+
/**
* Unique DataTables instance counter
*
@@ -14289,39 +14289,39 @@
* @private
*/
_unique: 0,
-
-
+
+
//
// Depreciated
// The following properties are retained for backwards compatiblity only.
// The should not be used in new projects and will be removed in a future
// version
//
-
+
/**
* Version check function.
* @type function
* @depreciated Since 1.10
*/
fnVersionCheck: DataTable.fnVersionCheck,
-
-
+
+
/**
* Index for what 'this' index API functions should use
* @type int
* @deprecated Since v1.10
*/
iApiIndex: 0,
-
-
+
+
/**
* jQuery UI class container
* @type object
* @deprecated Since v1.10
*/
oJUIClasses: {},
-
-
+
+
/**
* Software version
* @type string
@@ -14329,8 +14329,8 @@
*/
sVersion: DataTable.version
};
-
-
+
+
//
// Backwards compatibility. Alias to pre 1.10 Hungarian notation counter parts
//
@@ -14345,24 +14345,24 @@
oStdClasses: _ext.classes,
oPagination: _ext.pager
} );
-
-
+
+
$.extend( DataTable.ext.classes, {
"sTable": "dataTable",
"sNoFooter": "no-footer",
-
+
/* Paging buttons */
"sPageButton": "paginate_button",
"sPageButtonActive": "current",
"sPageButtonDisabled": "disabled",
-
+
/* Striping classes */
"sStripeOdd": "odd",
"sStripeEven": "even",
-
+
/* Empty row */
"sRowEmpty": "dataTables_empty",
-
+
/* Features */
"sWrapper": "dataTables_wrapper",
"sFilter": "dataTables_filter",
@@ -14370,7 +14370,7 @@
"sPaging": "dataTables_paginate paging_", /* Note that the type is postfixed */
"sLength": "dataTables_length",
"sProcessing": "dataTables_processing",
-
+
/* Sorting */
"sSortAsc": "sorting_asc",
"sSortDesc": "sorting_desc",
@@ -14379,13 +14379,13 @@
"sSortableDesc": "sorting_desc_disabled",
"sSortableNone": "sorting_disabled",
"sSortColumn": "sorting_", /* Note that an int is postfixed for the sorting order */
-
+
/* Filtering */
"sFilterInput": "",
-
+
/* Page length */
"sLengthSelect": "",
-
+
/* Scrolling */
"sScrollWrapper": "dataTables_scroll",
"sScrollHead": "dataTables_scrollHead",
@@ -14393,11 +14393,11 @@
"sScrollBody": "dataTables_scrollBody",
"sScrollFoot": "dataTables_scrollFoot",
"sScrollFootInner": "dataTables_scrollFootInner",
-
+
/* Misc */
"sHeaderTH": "",
"sFooterTH": "",
-
+
// Deprecated
"sSortJUIAsc": "",
"sSortJUIDesc": "",
@@ -14409,17 +14409,17 @@
"sJUIHeader": "",
"sJUIFooter": ""
} );
-
-
+
+
var extPagination = DataTable.ext.pager;
-
+
function _numbers ( page, pages ) {
var
numbers = [],
buttons = extPagination.numbers_length,
half = Math.floor( buttons / 2 ),
i = 1;
-
+
if ( pages <= buttons ) {
numbers = _range( 0, pages );
}
@@ -14440,45 +14440,45 @@
numbers.splice( 0, 0, 'ellipsis' );
numbers.splice( 0, 0, 0 );
}
-
+
numbers.DT_el = 'span';
return numbers;
}
-
-
+
+
$.extend( extPagination, {
simple: function ( page, pages ) {
return [ 'previous', 'next' ];
},
-
+
full: function ( page, pages ) {
return [ 'first', 'previous', 'next', 'last' ];
},
-
+
numbers: function ( page, pages ) {
return [ _numbers(page, pages) ];
},
-
+
simple_numbers: function ( page, pages ) {
return [ 'previous', _numbers(page, pages), 'next' ];
},
-
+
full_numbers: function ( page, pages ) {
return [ 'first', 'previous', _numbers(page, pages), 'next', 'last' ];
},
-
+
first_last_numbers: function (page, pages) {
return ['first', _numbers(page, pages), 'last'];
},
-
+
// For testing and plug-ins to use
_numbers: _numbers,
-
+
// Number of number buttons (including ellipsis) to show. _Must be odd!_
numbers_length: 7
} );
-
-
+
+
$.extend( true, DataTable.ext.renderer, {
pageButton: {
_: function ( settings, host, idx, buttons, page, pages ) {
@@ -14486,16 +14486,16 @@
var lang = settings.oLanguage.oPaginate;
var aria = settings.oLanguage.oAria.paginate || {};
var btnDisplay, btnClass, counter=0;
-
+
var attach = function( container, buttons ) {
var i, ien, node, button;
var clickHandler = function ( e ) {
_fnPageChange( settings, e.data.action, true );
};
-
+
for ( i=0, ien=buttons.length ; i' )
.appendTo( container );
@@ -14504,43 +14504,43 @@
else {
btnDisplay = null;
btnClass = '';
-
+
switch ( button ) {
case 'ellipsis':
container.append('…');
break;
-
+
case 'first':
btnDisplay = lang.sFirst;
btnClass = button + (page > 0 ?
'' : ' '+classes.sPageButtonDisabled);
break;
-
+
case 'previous':
btnDisplay = lang.sPrevious;
btnClass = button + (page > 0 ?
'' : ' '+classes.sPageButtonDisabled);
break;
-
+
case 'next':
btnDisplay = lang.sNext;
btnClass = button + (page < pages-1 ?
'' : ' '+classes.sPageButtonDisabled);
break;
-
+
case 'last':
btnDisplay = lang.sLast;
btnClass = button + (page < pages-1 ?
'' : ' '+classes.sPageButtonDisabled);
break;
-
+
default:
btnDisplay = button + 1;
btnClass = page === button ?
classes.sPageButtonActive : '';
break;
}
-
+
if ( btnDisplay !== null ) {
node = $('', {
'class': classes.sPageButton+' '+btnClass,
@@ -14554,22 +14554,22 @@
} )
.html( btnDisplay )
.appendTo( container );
-
+
_fnBindAction(
node, {action: button}, clickHandler
);
-
+
counter++;
}
}
}
};
-
+
// IE9 throws an 'unknown error' if document.activeElement is used
// inside an iframe or frame. Try / catch the error. Not good for
// accessibility, but neither are frames.
var activeEl;
-
+
try {
// Because this approach is destroying and recreating the paging
// elements, focus is lost on the select button which is bad for
@@ -14578,18 +14578,18 @@
activeEl = $(host).find(document.activeElement).data('dt-idx');
}
catch (e) {}
-
+
attach( $(host).empty(), buttons );
-
+
if ( activeEl !== undefined ) {
$(host).find( '[data-dt-idx='+activeEl+']' ).focus();
}
}
}
} );
-
-
-
+
+
+
// Built in type detection. See model.ext.aTypes for information about
// what is required from this methods.
$.extend( DataTable.ext.type.detect, [
@@ -14600,7 +14600,7 @@
var decimal = settings.oLanguage.sDecimal;
return _isNumber( d, decimal ) ? 'num'+decimal : null;
},
-
+
// Dates (only those recognised by the browser's Date.parse)
function ( d, settings )
{
@@ -14613,28 +14613,28 @@
var parsed = Date.parse(d);
return (parsed !== null && !isNaN(parsed)) || _empty(d) ? 'date' : null;
},
-
+
// Formatted numbers
function ( d, settings )
{
var decimal = settings.oLanguage.sDecimal;
return _isNumber( d, decimal, true ) ? 'num-fmt'+decimal : null;
},
-
+
// HTML numeric
function ( d, settings )
{
var decimal = settings.oLanguage.sDecimal;
return _htmlNumeric( d, decimal ) ? 'html-num'+decimal : null;
},
-
+
// HTML numeric, formatted
function ( d, settings )
{
var decimal = settings.oLanguage.sDecimal;
return _htmlNumeric( d, decimal, true ) ? 'html-num-fmt'+decimal : null;
},
-
+
// HTML (this is strict checking - there must be html)
function ( d, settings )
{
@@ -14642,17 +14642,17 @@
'html' : null;
}
] );
-
-
-
+
+
+
// Filter formatting functions. See model.ext.ofnSearch for information about
// what is required from these methods.
- //
+ //
// Note that additional search methods are added for the html numbers and
// html formatted numbers by `_addNumericSort()` when we know what the decimal
// place is
-
-
+
+
$.extend( DataTable.ext.type.search, {
html: function ( data ) {
return _empty(data) ?
@@ -14663,7 +14663,7 @@
.replace( _re_html, "" ) :
'';
},
-
+
string: function ( data ) {
return _empty(data) ?
data :
@@ -14672,35 +14672,35 @@
data;
}
} );
-
-
-
+
+
+
var __numericReplace = function ( d, decimalPlace, re1, re2 ) {
if ( d !== 0 && (!d || d === '-') ) {
return -Infinity;
}
-
+
// If a decimal place other than `.` is used, it needs to be given to the
// function so we can detect it and replace with a `.` which is the only
// decimal place Javascript recognises - it is not locale aware.
if ( decimalPlace ) {
d = _numToDecimal( d, decimalPlace );
}
-
+
if ( d.replace ) {
if ( re1 ) {
d = d.replace( re1, '' );
}
-
+
if ( re2 ) {
d = d.replace( re2, '' );
}
}
-
+
return d * 1;
};
-
-
+
+
// Add the numeric 'deformatting' functions for sorting and search. This is done
// in a function to provide an easy ability for the language options to add
// additional methods if a non-period decimal place is used.
@@ -14711,17 +14711,17 @@
"num": function ( d ) {
return __numericReplace( d, decimalPlace );
},
-
+
// Formatted numbers
"num-fmt": function ( d ) {
return __numericReplace( d, decimalPlace, _re_formatted_numeric );
},
-
+
// HTML numeric
"html-num": function ( d ) {
return __numericReplace( d, decimalPlace, _re_html );
},
-
+
// HTML numeric, formatted
"html-num-fmt": function ( d ) {
return __numericReplace( d, decimalPlace, _re_html, _re_formatted_numeric );
@@ -14730,7 +14730,7 @@
function ( key, fn ) {
// Add the ordering method
_ext.type.order[ key+decimalPlace+'-pre' ] = fn;
-
+
// For HTML types add a search formatter that will strip the HTML
if ( key.match(/^html\-/) ) {
_ext.type.search[ key+decimalPlace ] = _ext.type.search.html;
@@ -14738,15 +14738,15 @@
}
);
}
-
-
+
+
// Default sort methods
$.extend( _ext.type.order, {
// Dates
"date-pre": function ( d ) {
return Date.parse( d ) || -Infinity;
},
-
+
// html
"html-pre": function ( a ) {
return _empty(a) ?
@@ -14755,7 +14755,7 @@
a.replace( /<.*?>/g, "" ).toLowerCase() :
a+'';
},
-
+
// string
"string-pre": function ( a ) {
// This is a little complex, but faster than always calling toString,
@@ -14768,23 +14768,23 @@
'' :
a.toString();
},
-
+
// string-asc and -desc are retained only for compatibility with the old
// sort methods
"string-asc": function ( x, y ) {
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
},
-
+
"string-desc": function ( x, y ) {
return ((x < y) ? 1 : ((x > y) ? -1 : 0));
}
} );
-
-
+
+
// Numeric sorting types - order doesn't matter here
_addNumericSort( '' );
-
-
+
+
$.extend( true, DataTable.ext.renderer, {
header: {
_: function ( settings, cell, column, classes ) {
@@ -14797,9 +14797,9 @@
if ( settings !== ctx ) { // need to check this this is the host
return; // table, not a nested one
}
-
+
var colIdx = column.idx;
-
+
cell
.removeClass(
column.sSortingClass +' '+
@@ -14813,7 +14813,7 @@
);
} );
},
-
+
jqueryui: function ( settings, cell, column, classes ) {
$('')
.addClass( classes.sSortJUIWrapper )
@@ -14822,15 +14822,15 @@
.addClass( classes.sSortIcon+' '+column.sSortingClassJUI )
)
.appendTo( cell );
-
+
// Attach a sort listener to update on sort
$(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) {
if ( settings !== ctx ) {
return;
}
-
+
var colIdx = column.idx;
-
+
cell
.removeClass( classes.sSortAsc +" "+classes.sSortDesc )
.addClass( columns[ colIdx ] == 'asc' ?
@@ -14838,7 +14838,7 @@
classes.sSortDesc :
column.sSortingClass
);
-
+
cell
.find( 'span.'+classes.sSortIcon )
.removeClass(
@@ -14857,20 +14857,20 @@
}
}
} );
-
+
/*
* Public helper functions. These aren't used internally by DataTables, or
* called by any of the options passed into DataTables, but they can be used
* externally by developers working with DataTables. They are helper functions
* to make working with DataTables a little bit easier.
*/
-
+
var __htmlEscapeEntities = function ( d ) {
return typeof d === 'string' ?
d.replace(//g, '>').replace(/"/g, '"') :
d;
};
-
+
/**
* Helpers for `columns.render`.
*
@@ -14904,25 +14904,25 @@
if ( typeof d !== 'number' && typeof d !== 'string' ) {
return d;
}
-
+
var negative = d < 0 ? '-' : '';
var flo = parseFloat( d );
-
+
// If NaN then there isn't much formatting that we can do - just
// return immediately, escaping any HTML (this was supposed to
// be a number after all)
if ( isNaN( flo ) ) {
return __htmlEscapeEntities( d );
}
-
+
flo = flo.toFixed( precision );
d = Math.abs( flo );
-
+
var intPart = parseInt( d, 10 );
var floatPart = precision ?
decimal+(d - intPart).toFixed( precision ).substring( 2 ):
'';
-
+
return negative + (prefix||'') +
intPart.toString().replace(
/\B(?=(\d{3})+(?!\d))/g, thousands
@@ -14932,21 +14932,21 @@
}
};
},
-
+
text: function () {
return {
display: __htmlEscapeEntities
};
}
};
-
-
+
+
/*
* This is really a good bit rubbish this method of exposing the internal methods
* publicly... - To be fixed in 2.0 using methods on the prototype
*/
-
-
+
+
/**
* Create a wrapper function for exporting an internal functions to an external API.
* @param {string} fn API function name
@@ -14962,8 +14962,8 @@
return DataTable.ext.internal[fn].apply( this, args );
};
}
-
-
+
+
/**
* Reference to internal functions for use by plug-in developers. Note that
* these methods are references to internal functions and are considered to be
@@ -15064,7 +15064,7 @@
// in 1.10, so this dead-end function is
// added to prevent errors
} );
-
+
// jQuery access
$.fn.dataTable = DataTable;
@@ -15414,7 +15414,7 @@ DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, bu
};
// IE9 throws an 'unknown error' if document.activeElement is used
- // inside an iframe or frame.
+ // inside an iframe or frame.
var activeEl;
try {
@@ -15439,5 +15439,3 @@ DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, bu
return DataTable;
}));
-
-
diff --git a/static/plugins/table/datatable/dt-global_style-dark.css b/static/plugins/table/datatable/dt-global_style-dark.css
deleted file mode 100644
index de43887c..00000000
--- a/static/plugins/table/datatable/dt-global_style-dark.css
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- ===============================
- @Import Function
- ===============================
-*/
-/*
- ===============================
- @Import Mixins
- ===============================
-*/
-.widget-content-area {
- background-color: #3b3f5c;
- -webkit-box-shadow: 0 4px 6px 0 rgba(85, 85, 85, 0.0901961), 0 1px 20px 0 rgba(0, 0, 0, 0.08), 0px 1px 11px 0px rgba(0, 0, 0, 0.06);
- -moz-box-shadow: 0 4px 6px 0 rgba(85, 85, 85, 0.0901961), 0 1px 20px 0 rgba(0, 0, 0, 0.08), 0px 1px 11px 0px rgba(0, 0, 0, 0.06);
- box-shadow: 0 4px 6px 0 rgba(85, 85, 85, 0.0901961), 0 1px 20px 0 rgba(0, 0, 0, 0.08), 0px 1px 11px 0px rgba(0, 0, 0, 0.06); }
-
-.no-content:before, .no-content:after {
- display: none !important; }
-
-.new-control.new-checkbox .new-control-indicator {
- top: 4px;
- height: 22px;
- width: 22px;
- border-radius: 50%; }
-
-.table > thead {
- border-top: 1px solid rgba(136, 142, 168, 0.313725);
- border-bottom: 1px solid rgba(136, 142, 168, 0.313725); }
-
-table.dataTable {
- border-collapse: separate;
- border-spacing: 0 5px;
- margin-top: 8px !important;
- margin-bottom: 50px !important;
- border-collapse: collapse !important; }
- table.dataTable thead .sorting:before, table.dataTable thead .sorting:after {
- opacity: 1;
- color: #d3d3d3; }
- table.dataTable thead .sorting_asc:before, table.dataTable thead .sorting_asc:after {
- opacity: 1;
- color: #d3d3d3; }
- table.dataTable thead .sorting_desc:before, table.dataTable thead .sorting_desc:after {
- opacity: 1;
- color: #d3d3d3; }
- table.dataTable thead .sorting_asc_disabled:before, table.dataTable thead .sorting_asc_disabled:after {
- opacity: 1;
- color: #d3d3d3; }
- table.dataTable thead .sorting_desc_disabled:before, table.dataTable thead .sorting_desc_disabled:after {
- opacity: 1;
- color: #d3d3d3; }
- table.dataTable thead .sorting_asc:before, table.dataTable thead .sorting_desc:after {
- color: #ffff; }
-
-.table > tbody:before {
- line-height: 1em;
- content: "_";
- color: #3b3f5c;
- display: block; }
-
-.table > tbody tr {
- border-radius: 4px;
- -webkit-transition: all 0.1s ease;
- transition: all 0.1s ease;
- border-bottom: 1px solid rgba(136, 142, 168, 0.313725); }
-
-.table > thead > tr > th {
- color: #fff;
- font-weight: 600;
- font-size: 13px;
- border: none;
- letter-spacing: 1px;
- text-transform: uppercase; }
-
-.table > tbody > tr > td {
- border: none;
- color: #d3d3d3;
- font-size: 13px;
- letter-spacing: 1px; }
-
-.table-striped tbody tr:nth-of-type(odd) {
- background-color: transparent !important; }
-
-.table > tfoot > tr > th {
- border: none; }
-
-.table-hover:not(.table-dark) tbody tr:hover {
- background-color: transparent !important;
- -webkit-transform: translateY(-1px) scale(1.01);
- transform: translateY(-1px) scale(1.01); }
-
-.table-hover.non-hover:not(.table-dark) tbody tr:hover {
- -webkit-transform: none;
- transform: none; }
-
-div.dataTables_wrapper div.dataTables_info {
- padding-top: 0.85em;
- white-space: normal;
- color: #acb0c3;
- font-weight: 600;
- border: 1px solid rgba(136, 142, 168, 0.313725);
- display: inline-block;
- padding: 10px 16px;
- border-radius: 6px;
- font-size: 13px; }
-
-div.dataTables_wrapper div.dataTables_filter label {
- position: relative; }
-
-div.dataTables_wrapper div.dataTables_filter svg {
- position: absolute;
- top: 12px;
- right: 14px;
- width: 20px;
- color: #d3d3d3; }
-
-.dataTables_wrapper .form-control {
- background: #3b3f5c;
- border: none;
- margin-top: 5px;
- -webkit-box-shadow: 2px 5px 17px 0 rgba(31, 45, 61, 0.1);
- box-shadow: 2px 5px 17px 0 rgba(31, 45, 61, 0.1);
- border-radius: 6px;
- border: 1px solid rgba(136, 142, 168, 0.313725);
- padding: 8px 30px 8px 14px;
- color: #f1f2f3; }
-
-div.dataTables_wrapper div.dataTables_filter input {
- width: 150px; }
-
-.dataTables_wrapper .dataTables_length select.form-control {
- padding: 8px 17px 8px 14px;
- -moz-appearance: none;
- /* Firefox */
- -webkit-appearance: none;
- /* Safari and Chrome */
- appearance: none;
- background: #3b3f5c url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23d3d3d3' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-chevron-down'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e") 50px 9px no-repeat; }
-
-div.dataTables_wrapper div.dataTables_paginate {
- margin: 0;
- white-space: nowrap;
- text-align: right;
- display: inline-block; }
-
-.page-link {
- margin-right: 5px;
- border-radius: 50%;
- padding: 8px 12px;
- background: rgba(0, 23, 55, 0.08);
- border: none;
- color: #888ea8; }
- .page-link:focus {
- box-shadow: none; }
-
-div.dataTables_wrapper div.dataTables_paginate ul.pagination {
- margin: 3px 0; }
-
-.page-item.disabled .page-link {
- background: #acb0c3; }
- .page-item.disabled .page-link svg {
- color: #3b3f5c; }
-
-.page-item:first-child .page-link, .page-item:last-child .page-link {
- border-radius: 50%;
- padding: 5px 9px; }
- .page-item:first-child .page-link:hover, .page-item:last-child .page-link:hover {
- border-radius: 50%;
- padding: 5px 9px;
- background: #acb0c3;
- color: #3b3f5c; }
- .page-item:first-child .page-link svg, .page-item:last-child .page-link svg {
- width: 17px; }
-
-.page-item.active .page-link {
- background-color: #ebedf2;
- color: #3b3f5c; }
-
-#alter_pagination_next a, #alter_pagination_previous a {
- border-radius: 50%;
- padding: 5px 9px; }
-
-#alter_pagination_next a svg, #alter_pagination_previous a svg {
- width: 17px; }
-
-.table-cancel {
- color: #888ea8;
- margin-right: 6px;
- vertical-align: middle;
- fill: rgba(0, 23, 55, 0.08);
- cursor: pointer; }
-
-.table-hover:not(.table-dark) tbody tr:hover .table-cancel {
- color: #e7515a; }
-
-@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
- /* IE10+ CSS styles go here */
- .dataTables_wrapper .dataTables_length select.form-control {
- background: transparent;
- padding: 8px 10px 8px 14px; } }
-
-@media (max-width: 767px) {
- div.dataTables_wrapper div.dataTables_info {
- margin-bottom: 40px; } }
diff --git a/static/plugins/table/datatable/dt-global_style.css b/static/plugins/table/datatable/dt-global_style.css
index aeeb8276..99aec966 100644
--- a/static/plugins/table/datatable/dt-global_style.css
+++ b/static/plugins/table/datatable/dt-global_style.css
@@ -179,11 +179,14 @@ div.dataTables_wrapper div.dataTables_paginate ul.pagination {
margin-right: 6px;
vertical-align: middle;
fill: rgba(0, 23, 55, 0.08);
- cursor: pointer; }
+ cursor: pointer;
+}
.table-hover:not(.table-dark) tbody tr:hover .table-cancel {
color: #e7515a; }
+
+
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
/* IE10+ CSS styles go here */
.dataTables_wrapper .dataTables_length select.form-control {
diff --git a/targetApp/templates/target/list.html b/targetApp/templates/target/list.html
index 0c6a11fe..5d24266e 100644
--- a/targetApp/templates/target/list.html
+++ b/targetApp/templates/target/list.html
@@ -10,6 +10,10 @@ List all targets
+
+
+
+
{% endblock custom_js_css_link %}
{% block breadcrumb_title %}