jquery-tablesorter 1.12.8 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/jquery-tablesorter/version.rb +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/addons/pager/jquery.tablesorter.pager.js +115 -67
- data/vendor/assets/javascripts/jquery-tablesorter/jquery.tablesorter.js +62 -40
- data/vendor/assets/javascripts/jquery-tablesorter/jquery.tablesorter.widgets.js +251 -118
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-date-extract.js +48 -24
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-date-iso8601.js +5 -4
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-date-month.js +16 -10
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-date-two-digit-year.js +26 -19
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-date-weekday.js +16 -10
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-date.js +7 -4
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-named-numbers.js +121 -0
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/{parser-ipv6.js → parser-network.js} +66 -17
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-columnSelector.js +10 -7
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-cssStickyHeaders.js +62 -35
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-editable.js +197 -174
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-grouping.js +3 -6
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-pager.js +145 -62
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-repeatheaders.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-scroller.js +16 -14
- data/vendor/assets/stylesheets/jquery-tablesorter/theme.black-ice.css +2 -2
- data/vendor/assets/stylesheets/jquery-tablesorter/theme.blue.css +2 -2
- data/vendor/assets/stylesheets/jquery-tablesorter/theme.bootstrap_2.css +2 -2
- data/vendor/assets/stylesheets/jquery-tablesorter/theme.dark.css +2 -2
- data/vendor/assets/stylesheets/jquery-tablesorter/theme.default.css +2 -2
- data/vendor/assets/stylesheets/jquery-tablesorter/theme.dropbox.css +2 -2
- data/vendor/assets/stylesheets/jquery-tablesorter/theme.green.css +2 -2
- data/vendor/assets/stylesheets/jquery-tablesorter/theme.grey.css +2 -2
- data/vendor/assets/stylesheets/jquery-tablesorter/theme.ice.css +2 -2
- data/vendor/assets/stylesheets/jquery-tablesorter/theme.jui.css +4 -1
- data/vendor/assets/stylesheets/jquery-tablesorter/theme.metro-dark.css +4 -4
- metadata +4 -3
@@ -1,4 +1,4 @@
|
|
1
|
-
/*! tablesorter Grouping widget - updated
|
1
|
+
/*! tablesorter Grouping widget - updated 10/26/2014 (v2.18.0)
|
2
2
|
* Requires tablesorter v2.8+ and jQuery 1.7+
|
3
3
|
* by Rob Garrison
|
4
4
|
*/
|
@@ -43,6 +43,7 @@ ts.grouping = {
|
|
43
43
|
hours = time.getHours();
|
44
44
|
return part === 'year' ? time.getFullYear() :
|
45
45
|
part === 'month' ? wo.group_months[time.getMonth()] :
|
46
|
+
part === 'monthyear' ? wo.group_months[time.getMonth()] + ' ' + time.getFullYear() :
|
46
47
|
part === 'day' ? wo.group_months[time.getMonth()] + ' ' + time.getDate() :
|
47
48
|
part === 'week' ? wo.group_week[time.getDay()] :
|
48
49
|
part === 'time' ? ('00' + (hours > 12 ? hours - 12 : hours === 0 ? hours + 12 : hours)).slice(-2) + ':' +
|
@@ -53,7 +54,7 @@ ts.grouping = {
|
|
53
54
|
|
54
55
|
update : function(table, c, wo){
|
55
56
|
if ($.isEmptyObject(c.cache)) { return; }
|
56
|
-
var rowIndex, tbodyIndex, currentGroup, $rows, groupClass, grouping,
|
57
|
+
var rowIndex, tbodyIndex, currentGroup, $rows, groupClass, grouping, cache, saveName, direction,
|
57
58
|
lang = wo.grouping_language,
|
58
59
|
group = '',
|
59
60
|
savedGroup = false,
|
@@ -66,7 +67,6 @@ ts.grouping = {
|
|
66
67
|
c.$table.data('pagerSavedHeight', 0);
|
67
68
|
}
|
68
69
|
if (column >= 0 && !c.$headers.filter('[data-column="' + column + '"]:last').hasClass('group-false')) {
|
69
|
-
if (c.debug){ time = new Date(); }
|
70
70
|
wo.group_currentGroup = ''; // save current groups
|
71
71
|
wo.group_currentGroups = {};
|
72
72
|
|
@@ -150,9 +150,6 @@ ts.grouping = {
|
|
150
150
|
}
|
151
151
|
});
|
152
152
|
c.$table.trigger(wo.group_complete);
|
153
|
-
if (c.debug) {
|
154
|
-
$.tablesorter.benchmark("Applying groups widget: ", time);
|
155
|
-
}
|
156
153
|
}
|
157
154
|
},
|
158
155
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/* Pager widget for TableSorter
|
1
|
+
/* Pager widget for TableSorter 10/26/2014 (v2.18.0) - requires jQuery 1.7+ */
|
2
2
|
/*jshint browser:true, jquery:true, unused:false */
|
3
3
|
;(function($){
|
4
4
|
"use strict";
|
@@ -26,6 +26,9 @@ ts.addWidget({
|
|
26
26
|
// Number of visible rows
|
27
27
|
pager_size: 10,
|
28
28
|
|
29
|
+
// Number of options to include in the pager number selector
|
30
|
+
pager_maxOptionSize: 20,
|
31
|
+
|
29
32
|
// Save pager page & size if the storage script is loaded (requires $.tablesorter.storage in jquery.tablesorter.widgets.js)
|
30
33
|
pager_savePages: true,
|
31
34
|
|
@@ -153,12 +156,12 @@ tsp = ts.pager = {
|
|
153
156
|
p.$goto = p.$container.find(s.gotoPage); // goto is a reserved word #657
|
154
157
|
// page size selector
|
155
158
|
p.$size = p.$container.find(s.pageSize);
|
156
|
-
p.totalRows = c.$tbodies.eq(0).children('tr').not(
|
159
|
+
p.totalRows = c.$tbodies.eq(0).children('tr').not( wo.pager_countChildRows ? '' : '.' + c.cssChildRow ).length;
|
157
160
|
p.oldAjaxSuccess = p.oldAjaxSuccess || wo.pager_ajaxObject.success;
|
158
161
|
c.appender = tsp.appender;
|
159
162
|
if (ts.filter && $.inArray('filter', c.widgets) >= 0) {
|
160
163
|
// get any default filter settings (data-value attribute) fixes #388
|
161
|
-
p.currentFilters = c.$table.data('lastSearch') ||
|
164
|
+
p.currentFilters = c.$table.data('lastSearch') || [];
|
162
165
|
// set, but don't apply current filters
|
163
166
|
ts.setFilters(table, p.currentFilters, false);
|
164
167
|
}
|
@@ -179,6 +182,10 @@ tsp = ts.pager = {
|
|
179
182
|
|
180
183
|
tsp.enablePager(table, c, false);
|
181
184
|
|
185
|
+
// p must have ajaxObject
|
186
|
+
p.ajaxObject = wo.pager_ajaxObject; // $.extend({}, wo.pager_ajaxObject );
|
187
|
+
p.ajaxObject.url = wo.pager_ajaxUrl;
|
188
|
+
|
182
189
|
if ( typeof(wo.pager_ajaxUrl) === 'string' ) {
|
183
190
|
// ajax pager; interact with database
|
184
191
|
p.ajax = true;
|
@@ -197,7 +204,6 @@ tsp = ts.pager = {
|
|
197
204
|
|
198
205
|
initComplete: function(table, c){
|
199
206
|
var p = c.pager;
|
200
|
-
tsp.changeHeight(table, c);
|
201
207
|
tsp.bindEvents(table, c);
|
202
208
|
tsp.setPageSize(table, 0, c); // page size 0 is ignored
|
203
209
|
|
@@ -215,8 +221,8 @@ tsp = ts.pager = {
|
|
215
221
|
s = wo.pager_selectors;
|
216
222
|
|
217
223
|
c.$table
|
218
|
-
.
|
219
|
-
.
|
224
|
+
.off('filterStart filterEnd sortEnd disable enable destroy updateComplete pageSize pageSet '.split(' ').join('.pager '))
|
225
|
+
.on('filterStart.pager', function(e, filters) {
|
220
226
|
p.currentFilters = filters;
|
221
227
|
// don't change page is filters are the same (pager updating, etc)
|
222
228
|
if (wo.pager_pageReset !== false && (c.lastCombinedFilter || '') !== (filters || []).join('')) {
|
@@ -224,21 +230,19 @@ tsp = ts.pager = {
|
|
224
230
|
}
|
225
231
|
})
|
226
232
|
// update pager after filter widget completes
|
227
|
-
.
|
233
|
+
.on('filterEnd.pager sortEnd.pager', function() {
|
228
234
|
if (p.initialized) {
|
229
235
|
if (c.delayInit && c.rowsCopy && c.rowsCopy.length === 0) {
|
230
236
|
// make sure we have a copy of all table rows once the cache has been built
|
231
237
|
tsp.updateCache(table);
|
232
238
|
}
|
233
|
-
// update page display first, so we update p.filteredPages
|
234
|
-
tsp.updatePageDisplay(table, c, false);
|
235
239
|
// tsp.moveToPage(table, p, false); <-- called when applyWidgets is triggered
|
236
240
|
c.pager.last.page = -1;
|
237
241
|
c.$table.trigger('applyWidgets');
|
238
|
-
tsp.
|
242
|
+
tsp.updatePageDisplay(table, c, false);
|
239
243
|
}
|
240
244
|
})
|
241
|
-
.
|
245
|
+
.on('disable.pager', function(e){
|
242
246
|
e.stopPropagation();
|
243
247
|
tsp.showAllRows(table, c);
|
244
248
|
})
|
@@ -254,16 +258,19 @@ tsp = ts.pager = {
|
|
254
258
|
e.stopPropagation();
|
255
259
|
// table can be unintentionally undefined in tablesorter v2.17.7 and earlier
|
256
260
|
if (!table || triggered) { return; }
|
257
|
-
tsp.fixHeight(table, c);
|
258
261
|
var $rows = c.$tbodies.eq(0).children('tr').not(c.selectorRemove);
|
259
|
-
p.totalRows = $rows.length - (
|
262
|
+
p.totalRows = $rows.length - ( wo.pager_countChildRows ? 0 : $rows.filter('.' + c.cssChildRow).length );
|
260
263
|
p.totalPages = Math.ceil( p.totalRows / p.size );
|
261
264
|
if ($rows.length && c.rowsCopy && c.rowsCopy.length === 0) {
|
262
265
|
// make a copy of all table rows once the cache has been built
|
263
266
|
tsp.updateCache(table);
|
264
267
|
}
|
265
|
-
|
268
|
+
if ( p.page >= p.totalPages ) {
|
269
|
+
tsp.moveToLastPage(table, p);
|
270
|
+
}
|
266
271
|
tsp.hideRows(table, c);
|
272
|
+
tsp.changeHeight(table, c);
|
273
|
+
tsp.updatePageDisplay(table, c);
|
267
274
|
// make sure widgets are applied - fixes #450
|
268
275
|
c.$table.trigger('applyWidgets');
|
269
276
|
})
|
@@ -287,8 +294,8 @@ tsp = ts.pager = {
|
|
287
294
|
fxn = [ 'moveToFirstPage', 'moveToPrevPage', 'moveToNextPage', 'moveToLastPage' ];
|
288
295
|
p.$container.find(ctrls.join(','))
|
289
296
|
.attr("tabindex", 0)
|
290
|
-
.
|
291
|
-
.
|
297
|
+
.off('click.pager')
|
298
|
+
.on('click.pager', function(e){
|
292
299
|
e.stopPropagation();
|
293
300
|
var i,
|
294
301
|
$c = $(this),
|
@@ -305,8 +312,8 @@ tsp = ts.pager = {
|
|
305
312
|
|
306
313
|
if ( p.$goto.length ) {
|
307
314
|
p.$goto
|
308
|
-
.
|
309
|
-
.
|
315
|
+
.off('change')
|
316
|
+
.on('change', function(){
|
310
317
|
p.page = $(this).val() - 1;
|
311
318
|
tsp.moveToPage(table, p, true);
|
312
319
|
tsp.updatePageDisplay(table, c, false);
|
@@ -317,8 +324,8 @@ tsp = ts.pager = {
|
|
317
324
|
// setting an option as selected appears to cause issues with initial page size
|
318
325
|
p.$size.find('option').removeAttr('selected');
|
319
326
|
p.$size
|
320
|
-
.
|
321
|
-
.
|
327
|
+
.off('change.pager')
|
328
|
+
.on('change.pager', function() {
|
322
329
|
p.$size.val( $(this).val() ); // in case there are more than one pagers
|
323
330
|
if ( !$(this).hasClass(wo.pager_css.disabled) ) {
|
324
331
|
tsp.setPageSize(table, parseInt( $(this).val(), 10 ), c);
|
@@ -345,32 +352,35 @@ tsp = ts.pager = {
|
|
345
352
|
}
|
346
353
|
},
|
347
354
|
|
348
|
-
|
349
|
-
var
|
350
|
-
wo = c.widgetOptions,
|
355
|
+
calcFilters: function(table, c) {
|
356
|
+
var wo = c.widgetOptions,
|
351
357
|
p = c.pager,
|
352
|
-
|
353
|
-
|
354
|
-
sz = p.size || 10; // don't allow dividing by zero
|
355
|
-
t = [ wo && wo.filter_filteredRow || 'filtered', c.selectorRemove.replace(/^(\w+\.)/g,'') ];
|
356
|
-
if (wo.pager_countChildRows) { t.push(c.cssChildRow); }
|
357
|
-
regex = new RegExp( '(' + t.join('|') + ')' );
|
358
|
-
p.$size.add(p.$goto).removeClass(wo.pager_css.disabled).removeAttr('disabled').attr('aria-disabled', 'false');
|
359
|
-
if (f && !wo.pager_ajaxUrl) {
|
358
|
+
hasFilters = c.$table.hasClass('hasFilters');
|
359
|
+
if (hasFilters && !wo.pager_ajaxUrl) {
|
360
360
|
if ($.isEmptyObject(c.cache)) {
|
361
361
|
// delayInit: true so nothing is in the cache
|
362
|
-
p.filteredRows = p.totalRows = c.$tbodies.eq(0).children('tr').not(
|
362
|
+
p.filteredRows = p.totalRows = c.$tbodies.eq(0).children('tr').not( wo.pager_countChildRows ? '' : '.' + c.cssChildRow ).length;
|
363
363
|
} else {
|
364
364
|
p.filteredRows = 0;
|
365
365
|
$.each(c.cache[0].normalized, function(i, el) {
|
366
366
|
p.filteredRows += p.regexRows.test(el[c.columns].$row[0].className) ? 0 : 1;
|
367
367
|
});
|
368
368
|
}
|
369
|
-
} else if (!
|
369
|
+
} else if (!hasFilters) {
|
370
370
|
p.filteredRows = p.totalRows;
|
371
371
|
}
|
372
|
+
},
|
373
|
+
|
374
|
+
updatePageDisplay: function(table, c, completed) {
|
375
|
+
var s, t, $out,
|
376
|
+
wo = c.widgetOptions,
|
377
|
+
p = c.pager,
|
378
|
+
sz = p.size || 10; // don't allow dividing by zero
|
379
|
+
if (wo.pager_countChildRows) { t.push(c.cssChildRow); }
|
380
|
+
p.$size.add(p.$goto).removeClass(wo.pager_css.disabled).removeAttr('disabled').attr('aria-disabled', 'false');
|
372
381
|
p.totalPages = Math.ceil( p.totalRows / sz ); // needed for "pageSize" method
|
373
382
|
c.totalRows = p.totalRows;
|
383
|
+
tsp.calcFilters(table, c);
|
374
384
|
c.filteredRows = p.filteredRows;
|
375
385
|
p.filteredPages = Math.ceil( p.filteredRows / sz ) || 0;
|
376
386
|
if ( Math.min( p.totalPages, p.filteredPages ) >= 0 ) {
|
@@ -400,19 +410,19 @@ tsp = ts.pager = {
|
|
400
410
|
}
|
401
411
|
return extra.length > 1 && data && data[extra[0]] ? data[extra[0]][extra[1]] : p[str] || (data ? data[str] : deflt) || deflt;
|
402
412
|
});
|
413
|
+
|
403
414
|
if ($out.length) {
|
404
415
|
$out[ ($out[0].tagName === 'INPUT') ? 'val' : 'html' ](s);
|
405
416
|
if ( p.$goto.length ) {
|
406
417
|
t = '';
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
p.$goto
|
412
|
-
p.$goto[0].value = p.page + 1;
|
418
|
+
$.each(tsp.buildPageSelect(p, c), function(i, opt){
|
419
|
+
t += '<option value="' + opt + '">' + opt + '</option>';
|
420
|
+
});
|
421
|
+
// innerHTML doesn't work in IE9 - http://support2.microsoft.com/kb/276228
|
422
|
+
p.$goto.html(t).val( p.page + 1 );
|
413
423
|
}
|
414
424
|
// rebind startRow/page inputs
|
415
|
-
$out.find('.ts-startRow, .ts-page').
|
425
|
+
$out.find('.ts-startRow, .ts-page').off('change').on('change', function(){
|
416
426
|
var v = $(this).val(),
|
417
427
|
pg = $(this).hasClass('ts-startRow') ? Math.floor( v/p.size ) + 1 : v;
|
418
428
|
c.$table.trigger('pageSet.pager', [ pg ]);
|
@@ -420,6 +430,7 @@ tsp = ts.pager = {
|
|
420
430
|
}
|
421
431
|
}
|
422
432
|
tsp.pagerArrows(c);
|
433
|
+
tsp.fixHeight(table, c);
|
423
434
|
if (p.initialized && completed !== false) {
|
424
435
|
c.$table.trigger('pagerComplete', c);
|
425
436
|
// save pager info to storage
|
@@ -432,27 +443,93 @@ tsp = ts.pager = {
|
|
432
443
|
}
|
433
444
|
},
|
434
445
|
|
446
|
+
buildPageSelect: function(p, c) {
|
447
|
+
// Filter the options page number link array if it's larger than 'pager_maxOptionSize'
|
448
|
+
// as large page set links will slow the browser on large dom inserts
|
449
|
+
var i, central_focus_size, focus_option_pages, insert_index, option_length, focus_length,
|
450
|
+
wo = c.widgetOptions,
|
451
|
+
pg = Math.min( p.totalPages, p.filteredPages ) || 1,
|
452
|
+
// make skip set size multiples of 5
|
453
|
+
skip_set_size = Math.ceil( ( pg / wo.pager_maxOptionSize ) / 5 ) * 5,
|
454
|
+
large_collection = pg > wo.pager_maxOptionSize,
|
455
|
+
current_page = p.page + 1,
|
456
|
+
start_page = skip_set_size,
|
457
|
+
end_page = pg - skip_set_size,
|
458
|
+
option_pages = [1],
|
459
|
+
// construct default options pages array
|
460
|
+
option_pages_start_page = (large_collection) ? skip_set_size : 1;
|
461
|
+
|
462
|
+
for ( i = option_pages_start_page; i <= pg; ) {
|
463
|
+
option_pages.push(i);
|
464
|
+
i = i + ( large_collection ? skip_set_size : 1 );
|
465
|
+
}
|
466
|
+
option_pages.push(pg);
|
467
|
+
|
468
|
+
if (large_collection) {
|
469
|
+
focus_option_pages = [];
|
470
|
+
// don't allow central focus size to be > 5 on either side of current page
|
471
|
+
central_focus_size = Math.max( Math.floor( wo.pager_maxOptionSize / skip_set_size ) - 1, 5 );
|
472
|
+
|
473
|
+
start_page = current_page - central_focus_size;
|
474
|
+
if (start_page < 1) { start_page = 1; }
|
475
|
+
end_page = current_page + central_focus_size;
|
476
|
+
if (end_page > pg) { end_page = pg; }
|
477
|
+
// construct an array to get a focus set around the current page
|
478
|
+
for (i = start_page; i <= end_page ; i++) {
|
479
|
+
focus_option_pages.push(i);
|
480
|
+
}
|
481
|
+
|
482
|
+
// keep unique values
|
483
|
+
option_pages = $.grep(option_pages, function(value, indx) {
|
484
|
+
return $.inArray(value, option_pages) === indx;
|
485
|
+
});
|
486
|
+
|
487
|
+
option_length = option_pages.length;
|
488
|
+
focus_length = focus_option_pages.length;
|
489
|
+
|
490
|
+
// make sure at all option_pages aren't replaced
|
491
|
+
if (option_length - focus_length > skip_set_size / 2 && option_length + focus_length > wo.pager_maxOptionSize ) {
|
492
|
+
insert_index = Math.floor(option_length / 2) - Math.floor(focus_length / 2);
|
493
|
+
Array.prototype.splice.apply(option_pages, [ insert_index, focus_length ]);
|
494
|
+
}
|
495
|
+
option_pages = option_pages.concat(focus_option_pages);
|
496
|
+
|
497
|
+
}
|
498
|
+
|
499
|
+
// keep unique values again
|
500
|
+
option_pages = $.grep(option_pages, function(value, indx) {
|
501
|
+
return $.inArray(value, option_pages) === indx;
|
502
|
+
})
|
503
|
+
.sort(function(a,b) { return a - b; });
|
504
|
+
|
505
|
+
return option_pages;
|
506
|
+
},
|
507
|
+
|
435
508
|
fixHeight: function(table, c) {
|
436
509
|
var d, h,
|
437
510
|
p = c.pager,
|
438
511
|
wo = c.widgetOptions,
|
439
512
|
$b = c.$tbodies.eq(0);
|
440
|
-
|
441
|
-
|
513
|
+
$b.find('tr.pagerSavedHeightSpacer').remove();
|
514
|
+
if (wo.pager_fixedHeight && !p.isDisabled) {
|
442
515
|
h = $.data(table, 'pagerSavedHeight');
|
443
516
|
if (h) {
|
444
517
|
d = h - $b.height();
|
445
518
|
if ( d > 5 && $.data(table, 'pagerLastSize') === p.size && $b.children('tr:visible').length < p.size ) {
|
446
|
-
$b.append('<tr class="pagerSavedHeightSpacer ' +
|
519
|
+
$b.append('<tr class="pagerSavedHeightSpacer ' + c.selectorRemove.slice(1) + '" style="height:' + d + 'px;"></tr>');
|
447
520
|
}
|
448
521
|
}
|
449
522
|
}
|
450
523
|
},
|
451
524
|
|
452
525
|
changeHeight: function(table, c) {
|
453
|
-
var $b = c.$tbodies.eq(0);
|
526
|
+
var h, $b = c.$tbodies.eq(0);
|
454
527
|
$b.find('tr.pagerSavedHeightSpacer').remove();
|
455
|
-
|
528
|
+
if (!$b.children('tr:visible').length) {
|
529
|
+
$b.append('<tr class="pagerSavedHeightSpacer ' + c.selectorRemove.slice(1) + '"><td> </td></tr>');
|
530
|
+
}
|
531
|
+
h = $b.children('tr').eq(0).height() * c.pager.size;
|
532
|
+
$.data(table, 'pagerSavedHeight', h);
|
456
533
|
tsp.fixHeight(table, c);
|
457
534
|
$.data(table, 'pagerLastSize', c.pager.size);
|
458
535
|
},
|
@@ -606,7 +683,6 @@ tsp = ts.pager = {
|
|
606
683
|
p.last.currentFilters = p.currentFilters;
|
607
684
|
p.last.sortList = (c.sortList || []).join(',');
|
608
685
|
tsp.updatePageDisplay(table, c);
|
609
|
-
tsp.fixHeight(table, c);
|
610
686
|
$t.trigger('updateCache', [function(){
|
611
687
|
if (p.initialized) {
|
612
688
|
// apply widgets after table has rendered & after a delay to prevent
|
@@ -628,7 +704,6 @@ tsp = ts.pager = {
|
|
628
704
|
var counter,
|
629
705
|
url = tsp.getAjaxUrl(table, c),
|
630
706
|
$doc = $(document),
|
631
|
-
wo = c.widgetOptions,
|
632
707
|
p = c.pager;
|
633
708
|
if ( url !== '' ) {
|
634
709
|
if (c.showProcessing) {
|
@@ -636,25 +711,25 @@ tsp = ts.pager = {
|
|
636
711
|
}
|
637
712
|
$doc.on('ajaxError.pager', function(e, xhr, settings, exception) {
|
638
713
|
tsp.renderAjax(null, table, c, xhr, exception);
|
639
|
-
$doc.
|
714
|
+
$doc.off('ajaxError.pager');
|
640
715
|
});
|
641
716
|
counter = ++p.ajaxCounter;
|
642
|
-
|
643
|
-
|
717
|
+
p.ajaxObject.url = url; // from the ajaxUrl option and modified by customAjaxUrl
|
718
|
+
p.ajaxObject.success = function(data, status, jqxhr) {
|
644
719
|
// Refuse to process old ajax commands that were overwritten by new ones - see #443
|
645
720
|
if (counter < p.ajaxCounter){
|
646
721
|
return;
|
647
722
|
}
|
648
723
|
tsp.renderAjax(data, table, c, jqxhr);
|
649
|
-
$doc.
|
724
|
+
$doc.off('ajaxError.pager');
|
650
725
|
if (typeof p.oldAjaxSuccess === 'function') {
|
651
726
|
p.oldAjaxSuccess(data);
|
652
727
|
}
|
653
728
|
};
|
654
729
|
if (c.debug) {
|
655
|
-
ts.log('ajax initialized',
|
730
|
+
ts.log('ajax initialized', p.ajaxObject);
|
656
731
|
}
|
657
|
-
$.ajax(
|
732
|
+
$.ajax(p.ajaxObject);
|
658
733
|
}
|
659
734
|
},
|
660
735
|
|
@@ -745,7 +820,6 @@ tsp = ts.pager = {
|
|
745
820
|
}
|
746
821
|
|
747
822
|
tsp.updatePageDisplay(table, c);
|
748
|
-
if ( !p.isDisabled ) { tsp.fixHeight(table, c); }
|
749
823
|
|
750
824
|
wo.pager_startPage = p.page;
|
751
825
|
wo.pager_size = p.size;
|
@@ -810,9 +884,11 @@ tsp = ts.pager = {
|
|
810
884
|
if ( pageMoved !== false && p.initialized && $.isEmptyObject(table.config.cache)) {
|
811
885
|
return tsp.updateCache(table);
|
812
886
|
}
|
813
|
-
var c = table.config,
|
814
|
-
|
815
|
-
|
887
|
+
var pg, c = table.config,
|
888
|
+
wo = c.widgetOptions,
|
889
|
+
l = p.last;
|
890
|
+
tsp.calcFilters(table, c);
|
891
|
+
pg = Math.min( p.totalPages, p.filteredPages );
|
816
892
|
if ( p.page < 0 ) { p.page = 0; }
|
817
893
|
if ( p.page > ( pg - 1 ) && pg !== 0 ) { p.page = pg - 1; }
|
818
894
|
// fixes issue where one current filter is [] and the other is ['','',''],
|
@@ -822,6 +898,10 @@ tsp = ts.pager = {
|
|
822
898
|
// don't allow rendering multiple times on the same page/size/totalRows/filters/sorts
|
823
899
|
if ( l.page === p.page && l.size === p.size && l.totalRows === p.totalRows &&
|
824
900
|
(l.currentFilters || []).join(',') === (p.currentFilters || []).join(',') &&
|
901
|
+
// check for ajax url changes see #730
|
902
|
+
(l.ajaxUrl || '') === (p.ajaxObject.url || '') &&
|
903
|
+
// & ajax url option changes (dynamically add/remove/rename sort & filter parameters)
|
904
|
+
(l.optAjaxUrl || '') === (wo.pager_ajaxUrl || '') &&
|
825
905
|
l.sortList === (c.sortList || []).join(',') ) {
|
826
906
|
return;
|
827
907
|
}
|
@@ -834,7 +914,9 @@ tsp = ts.pager = {
|
|
834
914
|
// fixes #408; modify sortList otherwise it auto-updates
|
835
915
|
sortList : (c.sortList || []).join(','),
|
836
916
|
totalRows : p.totalRows,
|
837
|
-
currentFilters : p.currentFilters || []
|
917
|
+
currentFilters : p.currentFilters || [],
|
918
|
+
ajaxUrl : p.ajaxObject.url || '',
|
919
|
+
optAjaxUrl : wo.pager_ajaxUrl
|
838
920
|
};
|
839
921
|
if (p.ajax) {
|
840
922
|
tsp.getAjax(table, c);
|
@@ -896,7 +978,7 @@ tsp = ts.pager = {
|
|
896
978
|
c.appender = null; // remove pager appender function
|
897
979
|
p.initialized = false;
|
898
980
|
delete table.config.rowsCopy;
|
899
|
-
c.$table.
|
981
|
+
c.$table.off('destroy.pager sortEnd.pager filterEnd.pager enable.pager disable.pager');
|
900
982
|
if (ts.storage) {
|
901
983
|
ts.storage(table, c.widgetOptions.pager_storageKey, '');
|
902
984
|
}
|
@@ -916,11 +998,11 @@ tsp = ts.pager = {
|
|
916
998
|
p.$container.find(c.widgetOptions.pager_selectors.pageDisplay).attr('id', info);
|
917
999
|
c.$table.attr('aria-describedby', info);
|
918
1000
|
}
|
1001
|
+
tsp.changeHeight(table, c);
|
919
1002
|
if ( triggered ) {
|
920
1003
|
c.$table.trigger('updateRows');
|
921
1004
|
tsp.setPageSize(table, p.size, c);
|
922
1005
|
tsp.hideRowsSetup(table, c);
|
923
|
-
tsp.fixHeight(table, c);
|
924
1006
|
if (c.debug) {
|
925
1007
|
ts.log('pager enabled');
|
926
1008
|
}
|
@@ -933,7 +1015,7 @@ tsp = ts.pager = {
|
|
933
1015
|
p = c.pager;
|
934
1016
|
if ( !p.ajax ) {
|
935
1017
|
c.rowsCopy = rows;
|
936
|
-
p.totalRows =
|
1018
|
+
p.totalRows = wo.pager_countChildRows ? c.$tbodies.eq(0).children('tr').length : rows.length;
|
937
1019
|
p.size = $.data(table, 'pagerLastSize') || p.size || wo.pager_size || 10;
|
938
1020
|
p.totalPages = Math.ceil( p.totalRows / p.size );
|
939
1021
|
tsp.moveToPage(table, p);
|
@@ -951,7 +1033,8 @@ ts.showError = function(table, message){
|
|
951
1033
|
$(table).each(function(){
|
952
1034
|
var $row,
|
953
1035
|
c = this.config,
|
954
|
-
|
1036
|
+
wo = c.widgetOptions,
|
1037
|
+
errorRow = c.pager && c.pager.cssErrorRow || wo.pager_css && wo.pager_css.errorRow || 'tablesorter-errorRow';
|
955
1038
|
if (c) {
|
956
1039
|
if (typeof message === 'undefined') {
|
957
1040
|
c.$table.find('thead').find(c.selectorRemove).remove();
|