git version 1.9.1 & version 2.1.2
I had some changes in a tracked file that I wanted to discard.
Instead of using checkout, I instead used `git reset --hard HEAD` to reset.
Git returned the message `HEAD is now at <sha> <commit-message>`
I then went `git status` and it showed me that I still have changes to commit
I expected there to be no changes in my working directory as a result of
doing a `git reset --hard`
I did a little more fiddling around and still yielded the same results.
- `$ touch file.md`
- `$ git add file.md`
- `$ git commit -m 'empty file'`
- `$ echo 'text' > file.md`
At this point git reported that I had uncommited changes for both file.md and
the troublesome file in question (jquery.datatables.js)
`$ git reset --hard HEAD`
Git now no longer reports and untracked changes for file.md but still
for jquery.datatables.js
`$ git reset --hard HEAD~1`
Git still reports untracked changes for jquery.datatables.js
I have included a copy of the diff of the jquery.datatables.js
diff --git a/vendor/assets/javascripts/jquery.datatables.js
b/vendor/assets/javascripts/jquery.datatables.js
index b9044f1..4aab04b 100644
--- a/vendor/assets/javascripts/jquery.datatables.js
+++ b/vendor/assets/javascripts/jquery.datatables.js
@@ -1,11 +1,11 @@
-/*! DataTables 1.10.1
- * ©2008-2014 SpryMedia Ltd - datatables.net/license
+/*! DataTables 1.10.3
+ * ©2008-2014 SpryMedia Ltd - datatables.net/license
*/
/**
* @summary DataTables
* @description Paginate, search and order HTML tables
- * @version 1.10.1
+ * @version 1.10.3
* @file jquery.dataTables.js
* @author SpryMedia Ltd (www.sprymedia.co.uk)
* @contact www.sprymedia.co.uk/contact
@@ -113,7 +113,7 @@
// U+2009 is thin space and U+202F is narrow no-break space, both used
in many
// standards as thousands separators
- var _re_formatted_numeric = /[',$£€¥%\u2009\u202F]/g;
+ var _re_formatted_numeric = /[',$£€¥%\u2009\u202F]/g;
var _empty = function ( d ) {
@@ -133,7 +133,7 @@
if ( ! _re_dic[ decimalPoint ] ) {
_re_dic[ decimalPoint ] = new RegExp( _fnEscapeRegex(
decimalPoint ), 'g' );
}
- return typeof num === 'string' ?
+ return typeof num === 'string' && decimalPoint !== '.' ?
num.replace( /\./g, '' ).replace( _re_dic[ decimalPoint
], '.' ) :
num;
};
@@ -310,7 +310,6 @@
newKey = key.replace( match[0],
match[2].toLowerCase() );
map[ newKey ] = key;
- //console.log( key, match );
if ( match[1] === 'o' )
{
_fnHungarianMap( o[key] );
@@ -673,6 +672,12 @@
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 )
{
@@ -1498,19 +1503,22 @@
function _fnGetRowElements( settings, row )
{
var
- d = [],
tds = [],
td = row.firstChild,
name, col, o, i=0, contents,
- columns = settings.aoColumns;
+ columns = settings.aoColumns,
+ objectRead = settings._rowReadObject;
- var attr = function ( str, data, td ) {
+ var d = objectRead ? {} : [];
+
+ var attr = function ( str, td ) {
if ( typeof str === 'string' ) {
var idx = str.indexOf('@');
if ( idx !== -1 ) {
- var src = str.substring( idx+1 );
- o[ '@'+src ] = td.getAttribute( src );
+ var attr = str.substring( idx+1 );
+ var setter = _fnSetObjectDataFn( str );
+ setter( d, td.getAttribute( attr ) );
}
}
};
@@ -1520,18 +1528,26 @@
contents = $.trim(cell.innerHTML);
if ( col && col._bAttrSrc ) {
- o = {
- display: contents
- };
+ var setter = _fnSetObjectDataFn( col.mData._ );
+ setter( d, contents );
- attr( col.mData.sort, o, cell );
- attr( col.mData.type, o, cell );
- attr( col.mData.filter, o, cell );
-
- d.push( o );
+ attr( col.mData.sort, cell );
+ attr( col.mData.type, cell );
+ attr( col.mData.filter, cell );
}
else {
- d.push( contents );
+ // Depending on the `data` option for the
columns the data can be
+ // read to either an object or an array.
+ if ( objectRead ) {
+ if ( ! col._setter ) {
+ // Cache the setter function
+ col._setter =
_fnSetObjectDataFn( col.mData );
+ }
+ col._setter( d, contents );
+ }
+ else {
+ d.push( contents );
+ }
}
i++;
@@ -1950,7 +1966,9 @@
}
}
- /* Row callback functions - might want to
manipulate the row */
+ // Row callback functions - might want to
manipulate the row
+ // iRowCount and j are not currently
documented. Are they at all
+ // useful?
_fnCallbackFire( oSettings, 'aoRowCallback',
null,
[nRow, aoData._aData, iRowCount, j] );
@@ -2695,13 +2713,20 @@
_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 )
.bind(
'keyup.DT search.DT input.DT paste.DT cut.DT',
- _fnDataSource( settings ) === 'ssp' ?
- _fnThrottle( searchFn, 400 ):
+ searchDelay ?
+ _fnThrottle( searchFn, searchDelay ) :
searchFn
)
.bind( 'keypress.DT', function(e) {
@@ -2924,9 +2949,12 @@
* ^(?=.*?\bone\b)(?=.*?\btwo three\b)(?=.*?\bfour\b).*$
*/
var a = $.map( search.match( /"[^"]+"|[^ ]+/g ) || '',
function ( word ) {
- return word.charAt(0) === '"' ?
- word.match( /^"(.*)"$/ )[1] :
- word;
+ if ( word.charAt(0) === '"' ) {
+ var m = word.match( /^"(.*)"$/ );
+ word = m ? m[1] : word;
+ }
+
+ return word.replace('"', '');
} );
search = '^(?=.*?'+a.join( ')(?=.*?' )+').*$';
@@ -2973,34 +3001,40 @@
if ( column.bSearchable ) {
cellData = _fnGetCellData(
settings, i, j, 'filter' );
- cellData = fomatters[
column.sType ] ?
- fomatters[ column.sType
]( cellData ) :
- cellData !== null ?
- cellData :
- '';
+ if ( fomatters[ column.sType ]
) {
+ cellData = fomatters[
column.sType ]( cellData );
+ }
+
+ // Search in DataTables 1.10 is
string based. In 1.11 this
+ // should be altered to also
allow strict type checking.
+ if ( cellData === null ) {
+ cellData = '';
+ }
+
+ if ( typeof cellData !==
'string' && cellData.toString ) {
+ cellData =
cellData.toString();
+ }
}
else {
cellData = '';
}
- if ( cellData ) {
- // If it looks like there is an
HTML entity in the string,
- // attempt to decode it so
sorting works as expected. Note that
- // we could use a single line
of jQuery to do this, but the DOM
- // method used here is much
faster http://jsperf.com/html-decode
- if ( cellData.indexOf &&
cellData.indexOf('&') !== -1 ) {
- __filter_div.innerHTML
= cellData;
- cellData =
__filter_div_textContent ?
-
__filter_div.textContent :
-
__filter_div.innerText;
- }
-
- if ( cellData.replace ) {
- cellData =
cellData.replace(/[\r\n]/g, '');
- }
+ // If it looks like there is an HTML
entity in the string,
+ // attempt to decode it so sorting
works as expected. Note that
+ // we could use a single line of jQuery
to do this, but the DOM
+ // method used here is much faster
http://jsperf.com/html-decode
+ if ( cellData.indexOf &&
cellData.indexOf('&') !== -1 ) {
+ __filter_div.innerHTML =
cellData;
+ cellData =
__filter_div_textContent ?
+
__filter_div.textContent :
+ __filter_div.innerText;
+ }
- filterData.push( cellData );
+ if ( cellData.replace ) {
+ cellData =
cellData.replace(/[\r\n]/g, '');
}
+
+ filterData.push( cellData );
}
row._aFilterData = filterData;
@@ -4162,7 +4196,7 @@
*/
function _fnThrottle( fn, freq ) {
var
- frequency = freq || 200,
+ frequency = freq !== undefined ? freq : 200,
last,
timer;
@@ -4403,11 +4437,15 @@
iCol = aDataSort[k];
sType = aoColumns[ iCol ].sType || 'string';
+ if ( nestedSort[i]._idx === undefined ) {
+ nestedSort[i]._idx = $.inArray(
nestedSort[i][1], aoColumns[iCol].asSorting );
+ }
+
aSort.push( {
src: srcCol,
col: iCol,
dir: nestedSort[i][1],
- index: nestedSort[i][2],
+ index: nestedSort[i]._idx,
type: sType,
formatter: DataTable.ext.type.order[
sType+"-pre" ]
} );
@@ -4610,13 +4648,17 @@
var sorting = settings.aaSorting;
var asSorting = col.asSorting;
var nextSortIdx;
- var next = function ( a ) {
+ var next = function ( a, overflow ) {
var idx = a._idx;
if ( idx === undefined ) {
idx = $.inArray( a[1], asSorting );
}
- return idx+1 >= asSorting.length ? 0 : idx+1;
+ return idx+1 < asSorting.length ?
+ idx+1 :
+ overflow ?
+ null :
+ 0;
};
// Convert to 2D array if needed
@@ -4631,10 +4673,15 @@
if ( sortIdx !== -1 ) {
// Yes, modify the sort
- nextSortIdx = next( sorting[sortIdx] );
+ nextSortIdx = next( sorting[sortIdx], true );
- sorting[sortIdx][1] = asSorting[ nextSortIdx ];
- sorting[sortIdx]._idx = nextSortIdx;
+ if ( nextSortIdx === null ) {
+ sorting.splice( sortIdx, 1 );
+ }
+ else {
+ sorting[sortIdx][1] = asSorting[
nextSortIdx ];
+ sorting[sortIdx]._idx = nextSortIdx;
+ }
}
else {
// No sort on this column yet
@@ -5113,7 +5160,7 @@
len = settings._iDisplayLength;
/* If we have space to show extra rows (backing up from the end
point - then do so */
- if ( end === settings.fnRecordsDisplay() )
+ if (start >= end)
{
start = end - len;
}
@@ -6089,6 +6136,7 @@
"fnStateLoadCallback",
"fnStateSaveCallback",
"renderer",
+ "searchDelay",
[ "iCookieDuration", "iStateDuration" ], //
backwards compat
[ "oSearch", "oPreviousSearch" ],
[ "aoSearchCols", "aoPreSearchCols" ],
@@ -6719,8 +6767,10 @@
}
for ( i=0, ien=context.length ; i<ien ; i++ ) {
+ var apiInst = new _Api( context[i] );
+
if ( type === 'table' ) {
- ret = fn( context[i], i );
+ ret = fn.call( apiInst, context[i], i );
if ( ret !== undefined ) {
a.push( ret );
@@ -6728,7 +6778,7 @@
}
else if ( type === 'columns' || type === 'rows'
) {
// this has same length as context -
one entry for each table
- ret = fn( context[i], this[i], i );
+ ret = fn.call( apiInst, context[i],
this[i], i );
if ( ret !== undefined ) {
a.push( ret );
@@ -6747,10 +6797,10 @@
item = items[j];
if ( type === 'cell' ) {
- ret = fn( context[i],
item.row, item.column, i, j );
+ ret = fn.call( apiInst,
context[i], item.row, item.column, i, j );
}
else {
- ret = fn( context[i],
item, i, j, rows );
+ ret = fn.call( apiInst,
context[i], item, i, j, rows );
}
if ( ret !== undefined ) {
@@ -7387,11 +7437,12 @@
{
var
out = [], res,
- a, i, ien, j, jen;
+ 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 || typeof selector === 'string' ||
selector.length === undefined ) {
+ if ( ! selector || selectorType === 'string' || selectorType
=== 'function' || selector.length === undefined ) {
selector = [ selector ];
}
@@ -7529,6 +7580,7 @@
{
return _selector_run( selector, 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
@@ -7548,14 +7600,19 @@
return rows;
}
- // Get nodes in the order from the `rows` array (can't
use `pluck`) @todo - use pluck_order
- var nodes = [];
- for ( var i=0, ien=rows.length ; i<ien ; i++ ) {
- nodes.push( settings.aoData[ rows[i] ].nTr );
+ // Get nodes in the order from the `rows` array
+ var nodes = _pluck_order( settings.aoData, rows, 'nTr'
);
+
+ // Selector - function
+ if ( typeof sel === 'function' ) {
+ return $.map( rows, function (idx) {
+ var row = settings.aoData[ idx ];
+ return sel( idx, row._aData, row.nTr )
? idx : null;
+ } );
}
+ // Selector - node
if ( sel.nodeName ) {
- // Selector - node
if ( $.inArray( sel, nodes ) !== -1 ) {
return [ sel._DT_RowIndex ];// sel is a
TR node that is in the table
// and DataTables adds a prop for fast lookup
@@ -7794,12 +7851,12 @@
};
- var __details_remove = function ( api )
+ var __details_remove = function ( api, idx )
{
var ctx = api.context;
- if ( ctx.length && api.length ) {
- var row = ctx[0].aoData[ api[0] ];
+ if ( ctx.length ) {
+ var row = ctx[0].aoData[ idx !== undefined ? idx :
api[0] ];
if ( row._details ) {
row._details.remove();
@@ -7888,7 +7945,7 @@
for ( var i=0, ien=data.length ; i<ien ; i++ ) {
if ( data[i]._details ) {
- __details_remove( data[i] );
+ __details_remove( api, i );
}
}
} );
@@ -7983,7 +8040,19 @@
// can be an array of these items, comma separated list, or an array of
comma
// separated lists
- var __re_column_selector = /^(.*):(name|visIdx|visible)$/;
+ var __re_column_selector = /^(.+):(name|visIdx|visible)$/;
+
+
+ // r1 and r2 are redundant - but it means that the parameters match for
the
+ // iterator callback in columns().data()
+ var __columnData = function ( settings, column, r1, r2, rows ) {
+ var a = [];
+ for ( var row=0, ien=rows.length ; row<ien ; row++ ) {
+ a.push( _fnGetCellData( settings, rows[row], column ) );
+ }
+ return a;
+ };
+
var __column_selector = function ( settings, selector, opts )
{
@@ -7995,63 +8064,74 @@
return _selector_run( selector, function ( s ) {
var selInt = _intVal( s );
+ // Selector - all
if ( s === '' ) {
- // All columns
return _range( columns.length );
}
- else if ( selInt !== null ) {
- // Integer selector
+
+ // Selector - index
+ if ( selInt !== null ) {
return [ selInt >= 0 ?
selInt : // Count from left
columns.length + selInt // Count from
right (+ because its a negative value)
];
}
- else {
- var match = typeof s === 'string' ?
- s.match( __re_column_selector ) :
- '';
-
- if ( match ) {
- switch( match[2] ) {
- case 'visIdx':
- case 'visible':
- var idx = parseInt(
match[1], 10 );
- // Visible index given,
convert to column index
- if ( idx < 0 ) {
- // Counting
from the right
- var visColumns
= $.map( columns, function (col,i) {
- return
col.bVisible ? i : null;
- } );
- return [
visColumns[ visColumns.length + idx ] ];
- }
- // Counting from the
left
- return [
_fnVisibleToColumnIndex( settings, idx ) ];
+
+ // Selector = function
+ if ( typeof s === 'function' ) {
+ var rows = _selector_row_indexes( settings,
opts );
+
+ return $.map( columns, function (col, idx) {
+ return s(
+ idx,
+ __columnData( settings,
idx, 0, 0, rows ),
+ nodes[ idx ]
+ ) ? idx : null;
+ } );
+ }
- 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;
+ // jQuery or string selector
+ var match = typeof s === 'string' ?
+ s.match( __re_column_selector ) :
+ '';
+
+ if ( match ) {
+ switch( match[2] ) {
+ case 'visIdx':
+ case 'visible':
+ var idx = parseInt( match[1],
10 );
+ // Visible index given, convert
to column index
+ if ( idx < 0 ) {
+ // Counting from the
right
+ var visColumns = $.map(
columns, function (col,i) {
+ return
col.bVisible ? i : null;
} );
- }
- }
- else {
- // jQuery selector on the TH elements
for the columns
- return $( nodes )
- .filter( s )
- .map( function () {
- return $.inArray( this,
nodes ); // `nodes` is column index complete and in order
- } )
- .toArray();
+ return [ visColumns[
visColumns.length + idx ] ];
+ }
+ // 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;
+ } );
}
}
+ else {
+ // jQuery selector on the TH elements for the
columns
+ return $( nodes )
+ .filter( s )
+ .map( function () {
+ return $.inArray( this, nodes
); // `nodes` is column index complete and in order
+ } )
+ .toArray();
+ }
} );
};
-
-
-
- var __setColumnVis = function ( settings, column, vis ) {
+ var __setColumnVis = function ( settings, column, vis, recalc ) {
var
cols = settings.aoColumns,
col = cols[ column ],
@@ -8094,12 +8174,14 @@
_fnDrawHead( settings, settings.aoHeader );
_fnDrawHead( settings, settings.aoFooter );
- // Automatically adjust column sizing
- _fnAdjustColumnSizing( settings );
+ if ( recalc === undefined || recalc ) {
+ // Automatically adjust column sizing
+ _fnAdjustColumnSizing( settings );
- // Realign columns for scrolling
- if ( settings.oScroll.sX || settings.oScroll.sY ) {
- _fnScrollDraw( settings );
+ // Realign columns for scrolling
+ if ( settings.oScroll.sX || settings.oScroll.sY ) {
+ _fnScrollDraw( settings );
+ }
}
_fnCallbackFire( settings, null, 'column-visibility',
[settings, column, vis] );
@@ -8159,12 +8241,13 @@
*
*/
_api_registerPlural( 'columns().data()', 'column().data()', function ()
{
- return this.iterator( 'column-rows', function ( settings,
column, i, j, rows ) {
- var a = [];
- for ( var row=0, ien=rows.length ; row<ien ; row++ ) {
- a.push( _fnGetCellData( settings, rows[row],
column, '' ) );
- }
- return a;
+ return this.iterator( 'column-rows', __columnData );
+ } );
+
+
+ _api_registerPlural( 'columns().dataSrc()', 'column().dataSrc()',
function () {
+ return this.iterator( 'column', function ( settings, column ) {
+ return settings.aoColumns[column].mData;
} );
} );
@@ -8186,11 +8269,11 @@
- _api_registerPlural( 'columns().visible()', 'column().visible()',
function ( vis ) {
+ _api_registerPlural( 'columns().visible()', 'column().visible()',
function ( vis, calc ) {
return this.iterator( 'column', function ( settings, column ) {
return vis === undefined ?
settings.aoColumns[ column ].bVisible :
- __setColumnVis( settings, column, vis );
+ __setColumnVis( settings, column, vis, calc );
} );
} );
@@ -8255,31 +8338,48 @@
var allCells = $( [].concat.apply([], cells) );
var row;
var columns = settings.aoColumns.length;
- var a, i, ien, j;
+ var a, i, ien, j, o, host;
return _selector_run( selector, function ( s ) {
- if ( s === null || s === undefined ) {
- // All cells
+ var fnSelector = typeof s === 'function';
+
+ if ( s === null || s === undefined || fnSelector ) {
+ // All cells and function selectors
a = [];
for ( i=0, ien=rows.length ; i<ien ; i++ ) {
row = rows[i];
for ( j=0 ; j<columns ; j++ ) {
- a.push( {
+ o = {
row: row,
column: j
- } );
+ };
+
+ if ( fnSelector ) {
+ // Selector - function
+ host = settings.aoData[
row ];
+
+ if ( s( o,
_fnGetCellData(settings, row, j), host.anCells[j] ) ) {
+ a.push( o );
+ }
+ }
+ else {
+ // Selector - all
+ a.push( o );
+ }
}
}
return a;
}
- else if ( $.isPlainObject( s ) ) {
+
+ // Selector - index
+ if ( $.isPlainObject( s ) ) {
return [s];
}
- // jQuery filtered cells
+ // Selector - jQuery filtered cells
return allCells
.filter( s )
.map( function (i, el) {
@@ -8375,6 +8475,13 @@
} );
+ _api_registerPlural( 'cells().render()', 'cell().render()', function (
type ) {
+ return this.iterator( 'cell', function ( settings, row, column
) {
+ return _fnGetCellData( settings, row, column, type );
+ } );
+ } );
+
+
_api_registerPlural( 'cells().indexes()', 'cell().index()', function ()
{
return this.iterator( 'cell', function ( settings, row, column
) {
return {
@@ -8547,33 +8654,34 @@
} );
- _api_register( [
+ _api_registerPlural(
'columns().search()',
- 'column().search()'
- ], function ( input, regex, smart, caseInsen ) {
- return this.iterator( 'column', function ( settings, column ) {
- var preSearch = settings.aoPreSearchCols;
+ 'column().search()',
+ function ( input, regex, smart, caseInsen ) {
+ return this.iterator( 'column', function ( settings,
column ) {
+ var preSearch = settings.aoPreSearchCols;
+
+ if ( input === undefined ) {
+ // get
+ return preSearch[ column ].sSearch;
+ }
- if ( input === undefined ) {
- // get
- return preSearch[ column ].sSearch;
- }
+ // set
+ if ( ! settings.oFeatures.bFilter ) {
+ return;
+ }
- // set
- if ( ! settings.oFeatures.bFilter ) {
- return;
- }
+ $.extend( preSearch[ column ], {
+ "sSearch": input+"",
+ "bRegex": regex === null ? false :
regex,
+ "bSmart": smart === null ? true :
smart,
+ "bCaseInsensitive": caseInsen === null
? true : caseInsen
+ } );
- $.extend( preSearch[ column ], {
- "sSearch": input+"",
- "bRegex": regex === null ? false : regex,
- "bSmart": smart === null ? true : smart,
- "bCaseInsensitive": caseInsen === null ? true :
caseInsen
+ _fnFilterComplete( settings,
settings.oPreviousSearch, 1 );
} );
-
- _fnFilterComplete( settings, settings.oPreviousSearch,
1 );
- } );
- } );
+ }
+ );
/*
* State API methods
@@ -8704,6 +8812,29 @@
/**
+ * DataTables utility methods
+ *
+ * This namespace provides helper methods that DataTables uses
internally to
+ * create a DataTable, but which are not exclusively used only for
DataTables.
+ * These methods can be used by extension authors to save the
duplication of
+ * code.
+ *
+ * @namespace
+ */
+ DataTable.util = {
+ /**
+ * Throttle the calls to a function. Arguments and context are
maintained
+ * for the throttled function.
+ *
+ * @param {function} fn Function to be called
+ * @param {integer} freq Call frequency in mS
+ * @return {function} Wrapped function
+ */
+ throttle: _fnThrottle
+ };
+
+
+ /**
* 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
* either the 1.9 style Hungarian notation, or the 1.10+ style camelCase
@@ -8882,7 +9013,7 @@
* @type string
* @default Version number
*/
- DataTable.version = "1.10.1";
+ DataTable.version = "1.10.3";
/**
* Private data store, containing all of the settings objects that are
@@ -11323,6 +11454,26 @@
/**
+ * Search delay option. This will throttle full table searches
that use the
+ * DataTables provided search input element (it does not effect
calls to
+ * `dt-api search()`, providing a delay before the search is
made.
+ * @type integer
+ * @default 0
+ *
+ * @dtopt Options
+ * @name DataTable.defaults.searchDelay
+ *
+ * @example
+ * $(document).ready( function() {
+ * $('#example').dataTable( {
+ * "searchDelay": 200
+ * } );
+ * } )
+ */
+ "searchDelay": null,
+
+
+ /**
* DataTables features four different built-in options for the
buttons to
* display for pagination control:
*
@@ -12839,6 +12990,13 @@
"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
* set a default use {@link DataTable.defaults}.
@@ -13987,7 +14145,7 @@
var __numericReplace = function ( d, decimalPlace, re1, re2 ) {
- if ( !d || d === '-' ) {
+ if ( d !== 0 && (!d || d === '-') ) {
return -Infinity;
}
@@ -14107,7 +14265,7 @@
// V8 will remove any unknown characters at the start
and end of the
// expression, leading to false matches such as
`$245.12` or `10%` being
// a valid date. See forum thread 18941 for detail.
- if ( d && ( ! _re_date_start.test(d) || !
_re_date_end.test(d) ) ) {
+ if ( d && !(d instanceof Date) && ( !
_re_date_start.test(d) || ! _re_date_end.test(d) ) ) {
return null;
}
var parsed = Date.parse(d);
@@ -14201,8 +14359,6 @@
},
jqueryui: function ( settings, cell, column, classes ) {
- var colIdx = column.idx;
-
$('<div/>')
.addClass( classes.sSortJUIWrapper )
.append( cell.contents() )
@@ -14217,6 +14373,8 @@
return;
}
+ var colIdx = column.idx;
+
cell
.removeClass( classes.sSortAsc
+" "+classes.sSortDesc )
.addClass( columns[ colIdx ] ==
'asc' ?
@@ -14610,3 +14768,4 @@
}));
}(window, document));
+