diff --git a/addons/pager/jquery.tablesorter.pager.js b/addons/pager/jquery.tablesorter.pager.js
index abfa9c35..ec7535b7 100644
--- a/addons/pager/jquery.tablesorter.pager.js
+++ b/addons/pager/jquery.tablesorter.pager.js
@@ -206,6 +206,7 @@
}
}
pagerArrows(p);
+ fixHeight(table, p);
if (p.initialized && completed !== false) {
c.$table.trigger('pagerComplete', p);
// save pager info to storage
@@ -282,22 +283,28 @@
var d, h,
c = table.config,
$b = c.$tbodies.eq(0);
- if (p.fixedHeight) {
- $b.find('tr.pagerSavedHeightSpacer').remove();
+ $b.find('tr.pagerSavedHeightSpacer').remove();
+ if (p.fixedHeight && !p.isDisabled) {
h = $.data(table, 'pagerSavedHeight');
if (h) {
d = h - $b.height();
if ( d > 5 && $.data(table, 'pagerLastSize') === p.size && $b.children('tr:visible').length < p.size ) {
- $b.append('
');
+ $b.append('
');
}
}
}
},
changeHeight = function(table, p) {
- var $b = table.config.$tbodies.eq(0);
+ var h,
+ c = table.config,
+ $b = c.$tbodies.eq(0);
$b.find('tr.pagerSavedHeightSpacer').remove();
- $.data(table, 'pagerSavedHeight', $b.height());
+ if (!$b.children('tr:visible').length) {
+ $b.append('
 
');
+ }
+ h = $b.children('tr').eq(0).height() * p.size;
+ $.data(table, 'pagerSavedHeight', h);
fixHeight(table, p);
$.data(table, 'pagerLastSize', p.size);
},
@@ -455,7 +462,6 @@
p.last.currentFilters = p.currentFilters;
p.last.sortList = (c.sortList || []).join(',');
updatePageDisplay(table, p, true);
- fixHeight(table, p);
$t.trigger('updateCache', [function(){
if (p.initialized) {
// apply widgets after table has rendered & after a delay to prevent
@@ -597,7 +603,6 @@
ts.processTbody(table, $tb, false);
}
updatePageDisplay(table, p, true);
- if ( !p.isDisabled ) { fixHeight(table, p); }
if (table.isUpdating) {
$t.trigger('updateComplete', [ table, true ]);
}
@@ -765,11 +770,11 @@
p.$container.find(p.cssPageDisplay).attr('id', info);
c.$table.attr('aria-describedby', info);
}
+ changeHeight(table, p);
if ( triggered ) {
c.$table.trigger('updateRows');
setPageSize(table, p.size, p);
hideRowsSetup(table, p);
- fixHeight(table, p);
if (c.debug) {
ts.log('pager enabled');
}
@@ -839,11 +844,9 @@
// make sure we have a copy of all table rows once the cache has been built
updateCache(table);
}
- // update page display first, so we update p.filteredPages
- updatePageDisplay(table, p, false);
moveToPage(table, p, false);
c.$table.trigger('applyWidgets');
- fixHeight(table, p);
+ updatePageDisplay(table, p, false);
}
})
.bind('disable.pager', function(e){
@@ -862,7 +865,6 @@
e.stopPropagation();
// table can be unintentionally undefined in tablesorter v2.17.7 and earlier
if ( !table || triggered ) { return; }
- fixHeight(table, p);
var $rows = c.$tbodies.eq(0).children('tr').not(c.selectorRemove);
p.totalRows = $rows.length - ( p.countChildRows ? 0 : $rows.filter('.' + c.cssChildRow).length );
p.totalPages = Math.ceil( p.totalRows / p.size );
@@ -870,8 +872,12 @@
// make a copy of all table rows once the cache has been built
updateCache(table);
}
- updatePageDisplay(table, p, true);
+ if ( p.page >= p.totalPages ) {
+ moveToLastPage(table, p);
+ }
hideRows(table, p);
+ changeHeight(table, p);
+ updatePageDisplay(table, p, true);
})
.bind('pageSize.pager', function(e,v){
e.stopPropagation();
@@ -955,8 +961,6 @@
hideRowsSetup(table, p);
}
- changeHeight(table, p);
-
// pager initialized
if (!p.ajax) {
p.initialized = true;
diff --git a/docs/example-pager.html b/docs/example-pager.html
index 2f7ed64b..19c14032 100644
--- a/docs/example-pager.html
+++ b/docs/example-pager.html
@@ -266,226 +266,28 @@
-
-
Student01
-
Languages
-
male
-
80
-
70
-
75
-
80
-
-
-
-
Student02
-
Mathematics
-
male
-
90
-
88
-
100
-
90
-
-
-
-
Student03
-
Languages
-
female
-
85
-
95
-
80
-
85
-
-
-
-
Student04
-
Languages
-
male
-
60
-
55
-
100
-
100
-
-
-
-
Student05
-
Languages
-
female
-
68
-
80
-
95
-
80
-
-
-
-
Student06
-
Mathematics
-
male
-
100
-
99
-
100
-
90
-
-
-
-
Student07
-
Mathematics
-
male
-
85
-
68
-
90
-
90
-
-
-
-
Student08
-
Languages
-
male
-
100
-
90
-
90
-
85
-
-
-
-
Student09
-
Mathematics
-
male
-
80
-
50
-
65
-
75
-
-
-
-
Student10
-
Languages
-
male
-
85
-
100
-
100
-
90
-
-
-
-
Student11
-
Languages
-
male
-
86
-
85
-
100
-
100
-
-
-
-
Student12
-
Mathematics
-
female
-
100
-
75
-
70
-
85
-
-
-
-
Student13
-
Languages
-
female
-
100
-
80
-
100
-
90
-
-
-
-
Student14
-
Languages
-
female
-
50
-
45
-
55
-
90
-
-
-
-
Student15
-
Languages
-
male
-
95
-
35
-
100
-
90
-
-
-
-
Student16
-
Languages
-
female
-
100
-
50
-
30
-
70
-
-
-
-
Student17
-
Languages
-
female
-
80
-
100
-
55
-
65
-
-
-
-
Student18
-
Mathematics
-
male
-
30
-
49
-
55
-
75
-
-
-
-
Student19
-
Languages
-
male
-
68
-
90
-
88
-
70
-
-
-
-
Student20
-
Mathematics
-
male
-
40
-
45
-
40
-
80
-
-
-
-
Student21
-
Languages
-
male
-
50
-
45
-
100
-
100
-
-
-
-
Student22
-
Mathematics
-
male
-
100
-
99
-
100
-
90
-
-
+
Student01
Languages
male
80
70
75
80
+
Student02
Mathematics
male
90
88
100
90
+
Student03
Languages
female
85
95
80
85
+
Student04
Languages
male
60
55
100
100
+
Student05
Languages
female
68
80
95
80
+
Student06
Mathematics
male
100
99
100
90
+
Student07
Mathematics
male
85
68
90
90
+
Student08
Languages
male
100
90
90
85
+
Student09
Mathematics
male
80
50
65
75
+
Student10
Languages
male
85
100
100
90
+
Student11
Languages
male
86
85
100
100
+
Student12
Mathematics
female
100
75
70
85
+
Student13
Languages
female
100
80
100
90
+
Student14
Languages
female
50
45
55
90
+
Student15
Languages
male
95
35
100
90
+
Student16
Languages
female
100
50
30
70
+
Student17
Languages
female
80
100
55
65
+
Student18
Mathematics
male
30
49
55
75
+
Student19
Languages
male
68
90
88
70
+
Student20
Mathematics
male
40
45
40
80
+
Student21
Languages
male
50
45
100
100
+
Student22
Mathematics
male
100
99
100
90
Student23
Mathematics
male
82
77
0
79
Student24
Languages
female
100
91
13
82
Student25
Mathematics
male
22
96
82
53
diff --git a/docs/example-widget-pager.html b/docs/example-widget-pager.html
index 0f122b0c..ef3573d4 100644
--- a/docs/example-widget-pager.html
+++ b/docs/example-widget-pager.html
@@ -54,7 +54,7 @@
// if true, the table will remain the same height no matter how many records are displayed. The space is made up by an empty
// table row set to a height to compensate; default is false
- pager_fixedHeight: false,
+ pager_fixedHeight: true,
// remove rows from the table to speed up the sort of large tables.
// setting this to false, only hides the non-visible rows; needed if you plan to add/remove rows with the pager enabled.
@@ -282,226 +282,28 @@
-
-
Student01
-
Languages
-
male
-
80
-
70
-
75
-
80
-
-
-
-
Student02
-
Mathematics
-
male
-
90
-
88
-
100
-
90
-
-
-
-
Student03
-
Languages
-
female
-
85
-
95
-
80
-
85
-
-
-
-
Student04
-
Languages
-
male
-
60
-
55
-
100
-
100
-
-
-
-
Student05
-
Languages
-
female
-
68
-
80
-
95
-
80
-
-
-
-
Student06
-
Mathematics
-
male
-
100
-
99
-
100
-
90
-
-
-
-
Student07
-
Mathematics
-
male
-
85
-
68
-
90
-
90
-
-
-
-
Student08
-
Languages
-
male
-
100
-
90
-
90
-
85
-
-
-
-
Student09
-
Mathematics
-
male
-
80
-
50
-
65
-
75
-
-
-
-
Student10
-
Languages
-
male
-
85
-
100
-
100
-
90
-
-
-
-
Student11
-
Languages
-
male
-
86
-
85
-
100
-
100
-
-
-
-
Student12
-
Mathematics
-
female
-
100
-
75
-
70
-
85
-
-
-
-
Student13
-
Languages
-
female
-
100
-
80
-
100
-
90
-
-
-
-
Student14
-
Languages
-
female
-
50
-
45
-
55
-
90
-
-
-
-
Student15
-
Languages
-
male
-
95
-
35
-
100
-
90
-
-
-
-
Student16
-
Languages
-
female
-
100
-
50
-
30
-
70
-
-
-
-
Student17
-
Languages
-
female
-
80
-
100
-
55
-
65
-
-
-
-
Student18
-
Mathematics
-
male
-
30
-
49
-
55
-
75
-
-
-
-
Student19
-
Languages
-
male
-
68
-
90
-
88
-
70
-
-
-
-
Student20
-
Mathematics
-
male
-
40
-
45
-
40
-
80
-
-
-
-
Student21
-
Languages
-
male
-
50
-
45
-
100
-
100
-
-
-
-
Student22
-
Mathematics
-
male
-
100
-
99
-
100
-
90
-
-
+
Student01
Languages
male
80
70
75
80
+
Student02
Mathematics
male
90
88
100
90
+
Student03
Languages
female
85
95
80
85
+
Student04
Languages
male
60
55
100
100
+
Student05
Languages
female
68
80
95
80
+
Student06
Mathematics
male
100
99
100
90
+
Student07
Mathematics
male
85
68
90
90
+
Student08
Languages
male
100
90
90
85
+
Student09
Mathematics
male
80
50
65
75
+
Student10
Languages
male
85
100
100
90
+
Student11
Languages
male
86
85
100
100
+
Student12
Mathematics
female
100
75
70
85
+
Student13
Languages
female
100
80
100
90
+
Student14
Languages
female
50
45
55
90
+
Student15
Languages
male
95
35
100
90
+
Student16
Languages
female
100
50
30
70
+
Student17
Languages
female
80
100
55
65
+
Student18
Mathematics
male
30
49
55
75
+
Student19
Languages
male
68
90
88
70
+
Student20
Mathematics
male
40
45
40
80
+
Student21
Languages
male
50
45
100
100
+
Student22
Mathematics
male
100
99
100
90
Student23
Mathematics
male
82
77
0
79
Student24
Languages
female
100
91
13
82
Student25
Mathematics
male
22
96
82
53
diff --git a/js/widgets/widget-pager.js b/js/widgets/widget-pager.js
index 8729f688..855bf836 100644
--- a/js/widgets/widget-pager.js
+++ b/js/widgets/widget-pager.js
@@ -204,7 +204,6 @@ tsp = ts.pager = {
initComplete: function(table, c){
var p = c.pager;
- tsp.changeHeight(table, c);
tsp.bindEvents(table, c);
tsp.setPageSize(table, 0, c); // page size 0 is ignored
@@ -237,12 +236,10 @@ tsp = ts.pager = {
// make sure we have a copy of all table rows once the cache has been built
tsp.updateCache(table);
}
- // update page display first, so we update p.filteredPages
- tsp.updatePageDisplay(table, c, false);
// tsp.moveToPage(table, p, false); <-- called when applyWidgets is triggered
c.pager.last.page = -1;
c.$table.trigger('applyWidgets');
- tsp.fixHeight(table, c);
+ tsp.updatePageDisplay(table, c, false);
}
})
.on('disable.pager', function(e){
@@ -261,7 +258,6 @@ tsp = ts.pager = {
e.stopPropagation();
// table can be unintentionally undefined in tablesorter v2.17.7 and earlier
if (!table || triggered) { return; }
- tsp.fixHeight(table, c);
var $rows = c.$tbodies.eq(0).children('tr').not(c.selectorRemove);
p.totalRows = $rows.length - ( c.widgetOptions.pager_countChildRows ? 0 : $rows.filter('.' + c.cssChildRow).length );
p.totalPages = Math.ceil( p.totalRows / p.size );
@@ -269,8 +265,12 @@ tsp = ts.pager = {
// make a copy of all table rows once the cache has been built
tsp.updateCache(table);
}
- tsp.updatePageDisplay(table, c);
+ if ( p.page >= p.totalPages ) {
+ tsp.moveToLastPage(table, p);
+ }
tsp.hideRows(table, c);
+ tsp.changeHeight(table, c);
+ tsp.updatePageDisplay(table, c);
// make sure widgets are applied - fixes #450
c.$table.trigger('applyWidgets');
})
@@ -371,7 +371,7 @@ tsp = ts.pager = {
},
updatePageDisplay: function(table, c, completed) {
- var s, t, $out, regex,
+ var s, t, $out,
wo = c.widgetOptions,
p = c.pager,
sz = p.size || 10; // don't allow dividing by zero
@@ -418,7 +418,7 @@ tsp = ts.pager = {
t += '';
});
// innerHTML doesn't work in IE9 - http://support2.microsoft.com/kb/276228
- p.$goto.html(t).val( p.page + 1 );;
+ p.$goto.html(t).val( p.page + 1 );
}
// rebind startRow/page inputs
$out.find('.ts-startRow, .ts-page').off('change').on('change', function(){
@@ -429,6 +429,7 @@ tsp = ts.pager = {
}
}
tsp.pagerArrows(c);
+ tsp.fixHeight(table, c);
if (p.initialized && completed !== false) {
c.$table.trigger('pagerComplete', c);
// save pager info to storage
@@ -508,22 +509,26 @@ tsp = ts.pager = {
p = c.pager,
wo = c.widgetOptions,
$b = c.$tbodies.eq(0);
- if (wo.pager_fixedHeight) {
- $b.find('tr.pagerSavedHeightSpacer').remove();
+ $b.find('tr.pagerSavedHeightSpacer').remove();
+ if (wo.pager_fixedHeight && !p.isDisabled) {
h = $.data(table, 'pagerSavedHeight');
if (h) {
d = h - $b.height();
if ( d > 5 && $.data(table, 'pagerLastSize') === p.size && $b.children('tr:visible').length < p.size ) {
- $b.append('
');
+ $b.append('
');
}
}
}
},
changeHeight: function(table, c) {
- var $b = c.$tbodies.eq(0);
+ var h, $b = c.$tbodies.eq(0);
$b.find('tr.pagerSavedHeightSpacer').remove();
- $.data(table, 'pagerSavedHeight', $b.height());
+ if (!$b.children('tr:visible').length) {
+ $b.append('