mirror of
https://github.com/Mottie/tablesorter.git
synced 2024-10-08 13:44:18 +00:00
Pager: parse page number to prevent user seeing NaN
This commit is contained in:
parent
b8880d65f9
commit
9da745bf5b
@ -169,6 +169,7 @@
|
||||
if (p.countChildRows) { t.push(c.cssChildRow); }
|
||||
p.totalPages = Math.ceil( p.totalRows / sz ); // needed for "pageSize" method
|
||||
c.totalRows = p.totalRows;
|
||||
parsePageNumber( p );
|
||||
calcFilters(table, p);
|
||||
c.filteredRows = p.filteredRows;
|
||||
p.filteredPages = Math.ceil( p.filteredRows / sz ) || 0;
|
||||
@ -705,7 +706,7 @@
|
||||
|
||||
moveToPage = function(table, p, pageMoved) {
|
||||
if ( p.isDisabled ) { return; }
|
||||
var pg, c = table.config,
|
||||
var c = table.config,
|
||||
$t = $(table),
|
||||
l = p.last;
|
||||
if ( pageMoved !== false && p.initialized && ts.isEmptyObject(c.cache)) {
|
||||
@ -713,10 +714,9 @@
|
||||
}
|
||||
// abort page move if the table has filters and has not been initialized
|
||||
if (p.ajax && ts.hasWidget(table, 'filter') && !c.widgetOptions.filter_initialized) { return; }
|
||||
|
||||
parsePageNumber( p );
|
||||
calcFilters(table, p);
|
||||
pg = Math.min( p.totalPages, p.filteredPages );
|
||||
if ( p.page < 0 ) { p.page = 0; }
|
||||
if ( p.page > ( pg - 1 ) && pg !== 0 ) { p.page = pg - 1; }
|
||||
// fixes issue where one currentFilter is [] and the other is ['','',''],
|
||||
// making the next if comparison think the filters are different (joined by commas). Fixes #202.
|
||||
l.currentFilters = (l.currentFilters || []).join('') === '' ? [] : l.currentFilters;
|
||||
@ -772,10 +772,18 @@
|
||||
( mode === 'get' ? s : p.size );
|
||||
},
|
||||
|
||||
parsePageNumber = function( p ) {
|
||||
var min = Math.min( p.totalPages, p.filteredPages ) - 1;
|
||||
p.page = parseInt( p.page, 10 );
|
||||
if ( p.page < 0 || isNaN( p.page ) ) { p.page = 0; }
|
||||
if ( p.page > min && p.page !== 0 ) { p.page = min; }
|
||||
return p.page;
|
||||
},
|
||||
|
||||
setPageSize = function(table, size, p) {
|
||||
p.size = parsePageSize( p, size, 'get' ) || p.size || p.settings.size || 10;
|
||||
p.$size.val( parsePageSize( p, size, 'set' ) );
|
||||
$.data(table, 'pagerLastPage', p.page);
|
||||
$.data(table, 'pagerLastPage', parsePageNumber( p ) );
|
||||
$.data(table, 'pagerLastSize', p.size);
|
||||
p.totalPages = Math.ceil( p.totalRows / p.size );
|
||||
p.filteredPages = Math.ceil( p.filteredRows / p.size );
|
||||
|
File diff suppressed because one or more lines are too long
2
dist/js/widgets/widget-pager.min.js
vendored
2
dist/js/widgets/widget-pager.min.js
vendored
File diff suppressed because one or more lines are too long
@ -426,6 +426,7 @@
|
||||
p.$size.add(p.$goto).removeClass(wo.pager_css.disabled).removeAttr('disabled').attr('aria-disabled', 'false');
|
||||
p.totalPages = Math.ceil( p.totalRows / sz ); // needed for 'pageSize' method
|
||||
c.totalRows = p.totalRows;
|
||||
tsp.parsePageNumber( p );
|
||||
tsp.calcFilters(table, c);
|
||||
c.filteredRows = p.filteredRows;
|
||||
p.filteredPages = Math.ceil( p.filteredRows / sz ) || 0;
|
||||
@ -983,17 +984,15 @@
|
||||
if ( pageMoved !== false && p.initialized && $.isEmptyObject(table.config.cache)) {
|
||||
return tsp.updateCache(table);
|
||||
}
|
||||
var pg, c = table.config,
|
||||
var c = table.config,
|
||||
wo = c.widgetOptions,
|
||||
l = p.last;
|
||||
|
||||
// abort page move if the table has filters and has not been initialized
|
||||
if (p.ajax && !wo.filter_initialized && ts.hasWidget(table, 'filter')) { return; }
|
||||
|
||||
tsp.parsePageNumber( p );
|
||||
tsp.calcFilters(table, c);
|
||||
pg = Math.min( p.totalPages, p.filteredPages );
|
||||
if ( p.page < 0 ) { p.page = 0; }
|
||||
if ( p.page > ( pg - 1 ) && pg !== 0 ) { p.page = pg - 1; }
|
||||
|
||||
// fixes issue where one current filter is [] and the other is [ '', '', '' ],
|
||||
// making the next if comparison think the filters as different. Fixes #202.
|
||||
@ -1052,11 +1051,19 @@
|
||||
( mode === 'get' ? s : p.size );
|
||||
},
|
||||
|
||||
parsePageNumber: function( p ) {
|
||||
var min = Math.min( p.totalPages, p.filteredPages ) - 1;
|
||||
p.page = parseInt( p.page, 10 );
|
||||
if ( p.page < 0 || isNaN( p.page ) ) { p.page = 0; }
|
||||
if ( p.page > min && p.page !== 0 ) { p.page = min; }
|
||||
return p.page;
|
||||
},
|
||||
|
||||
setPageSize: function(table, size, c) {
|
||||
var p = c.pager;
|
||||
p.size = tsp.parsePageSize( p, size, 'get' ) || p.size || p.setSize || 10;
|
||||
p.$size.val( tsp.parsePageSize( p, p.size, 'set' ) );
|
||||
$.data(table, 'pagerLastPage', p.page);
|
||||
$.data(table, 'pagerLastPage', tsp.parsePageNumber( p ) );
|
||||
$.data(table, 'pagerLastSize', p.size);
|
||||
p.totalPages = Math.ceil( p.totalRows / p.size );
|
||||
p.filteredPages = Math.ceil( p.filteredRows / p.size );
|
||||
|
Loading…
Reference in New Issue
Block a user