1
0
mirror of https://github.com/DataTables/DataTables.git synced 2025-03-15 16:29:16 +01:00

Fixed: When destroying a table which had been filtered to no results, the 'No results' row was not automatically removed, returning in the table being unable to be re-initialised (since it has a colspan).

Fixed: Now use escape() and unescape() for state saving cookie with the filtering strings - 2608
This commit is contained in:
Allan Jardine 2010-09-14 18:51:41 +01:00
parent 8b4769f809
commit fb20b17856
2 changed files with 47 additions and 4 deletions

View File

@ -2058,6 +2058,9 @@
}
}
/* If there is an 'empty' indicator row, remove it */
$('tbody>tr>td.'+oSettings.oClasses.sRowEmpty, oSettings.nTable).parent().remove();
/* When scrolling we had to break the table up - restore it */
if ( oSettings.nTable != oSettings.nTHead.parentNode )
{
@ -5733,7 +5736,7 @@
sValue += '"iStart":'+ oSettings._iDisplayStart+',';
sValue += '"iEnd":'+ oSettings._iDisplayEnd+',';
sValue += '"iLength":'+ oSettings._iDisplayLength+',';
sValue += '"sFilter":"'+ oSettings.oPreviousSearch.sSearch.replace('"','\\"')+'",';
sValue += '"sFilter":"'+ escape(oSettings.oPreviousSearch.sSearch)+'",';
sValue += '"sFilterEsc":'+ !oSettings.oPreviousSearch.bRegex+',';
sValue += '"aaSorting":[';
@ -5747,7 +5750,7 @@
sValue += '"aaSearchCols":[';
for ( i=0 ; i<oSettings.aoPreSearchCols.length ; i++ )
{
sValue += '["'+oSettings.aoPreSearchCols[i].sSearch.replace('"','\\"')+
sValue += '["'+escape(oSettings.aoPreSearchCols[i].sSearch)+
'",'+!oSettings.aoPreSearchCols[i].bRegex+'],';
}
sValue = sValue.substring(0, sValue.length-1);
@ -5802,7 +5805,7 @@
oSettings.iInitDisplayStart = oData.iStart;
oSettings._iDisplayEnd = oData.iEnd;
oSettings._iDisplayLength = oData.iLength;
oSettings.oPreviousSearch.sSearch = oData.sFilter;
oSettings.oPreviousSearch.sSearch = unescape(oData.sFilter);
oSettings.aaSorting = oData.aaSorting.slice();
oSettings.saved_aaSorting = oData.aaSorting.slice();
@ -5822,7 +5825,7 @@
for ( var i=0 ; i<oData.aaSearchCols.length ; i++ )
{
oSettings.aoPreSearchCols[i] = {
"sSearch": oData.aaSearchCols[i][0],
"sSearch": unescape(oData.aaSearchCols[i][0]),
"bRegex": !oData.aaSearchCols[i][1]
};
}

View File

@ -0,0 +1,40 @@
// DATA_TEMPLATE: dom_data
oTest.fnStart( "2608 - State saving escaping filters" );
$(document).ready( function () {
$('#example').dataTable( {
"bStateSave": true
} );
oTest.fnTest(
"Set the filter",
function () {
$('#example_filter input').val( '\\s*CVM\\s*$' );
$('#example_filter input').keyup();
},
function () { return $('#example_filter input').val() == '\\s*CVM\\s*$'; }
);
oTest.fnTest(
"Destroy the table and remake it - checking the filter was saved",
function () {
$('#example').dataTable( {
"bStateSave": true,
"bDestroy": true
} );
},
function () { return $('#example_filter input').val() == '\\s*CVM\\s*$'; }
);
oTest.fnTest(
"Do it again without state saving and make sure filter is empty",
function () {
$('#example').dataTable( {
"bDestroy": true
} );
},
function () { return $('#example_filter input').val() == ''; }
);
oTest.fnComplete();
} );