jquery-tablesorter 1.13.4 → 1.14.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/MIT-LICENSE +1 -1
- data/README.md +2 -2
- data/lib/jquery-tablesorter/version.rb +1 -1
- data/vendor/assets/images/jquery-tablesorter/dragtable-handle.png +0 -0
- data/vendor/assets/images/jquery-tablesorter/dragtable-handle.svg +7 -0
- data/vendor/assets/javascripts/jquery-tablesorter/addons/pager/jquery.tablesorter.pager.js +58 -32
- data/vendor/assets/javascripts/jquery-tablesorter/extras/jquery.dragtable.mod.js +605 -0
- data/vendor/assets/javascripts/jquery-tablesorter/jquery.tablesorter.js +161 -81
- data/vendor/assets/javascripts/jquery-tablesorter/jquery.tablesorter.widgets-filter-formatter-select2.js +41 -30
- data/vendor/assets/javascripts/jquery-tablesorter/jquery.tablesorter.widgets.js +151 -96
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-duration.js +32 -5
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-input-select.js +21 -26
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-alignChar.js +5 -4
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-build-table.js +2 -2
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-chart.js +276 -0
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-columnSelector.js +64 -32
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-cssStickyHeaders.js +3 -2
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-editable.js +11 -5
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-formatter.js +70 -0
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-math.js +13 -6
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-output.js +7 -3
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-pager.js +70 -41
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-print.js +2 -2
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-reflow.js +4 -3
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-repeatheaders.js +14 -12
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-scroller.js +68 -26
- data/vendor/assets/stylesheets/jquery-tablesorter/dragtable.mod.css +64 -0
- data/vendor/assets/stylesheets/jquery-tablesorter/theme.black-ice.css +3 -0
- data/vendor/assets/stylesheets/jquery-tablesorter/theme.blue.css +3 -0
- data/vendor/assets/stylesheets/jquery-tablesorter/theme.bootstrap.css +3 -0
- data/vendor/assets/stylesheets/jquery-tablesorter/theme.bootstrap_2.css +3 -0
- data/vendor/assets/stylesheets/jquery-tablesorter/theme.dark.css +3 -0
- data/vendor/assets/stylesheets/jquery-tablesorter/theme.default.css +3 -0
- data/vendor/assets/stylesheets/jquery-tablesorter/theme.dropbox.css +3 -0
- data/vendor/assets/stylesheets/jquery-tablesorter/theme.green.css +3 -0
- data/vendor/assets/stylesheets/jquery-tablesorter/theme.grey.css +3 -0
- data/vendor/assets/stylesheets/jquery-tablesorter/theme.ice.css +3 -0
- data/vendor/assets/stylesheets/jquery-tablesorter/theme.jui.css +3 -0
- data/vendor/assets/stylesheets/jquery-tablesorter/theme.metro-dark.css +3 -0
- metadata +8 -2
@@ -1,4 +1,4 @@
|
|
1
|
-
/*! tablesorter CSS Sticky Headers widget - updated
|
1
|
+
/*! tablesorter CSS Sticky Headers widget - updated 2/7/2015 (v2.19.0)
|
2
2
|
* Requires a modern browser, tablesorter v2.8+
|
3
3
|
*/
|
4
4
|
/*jshint jquery:true, unused:false */
|
@@ -134,7 +134,8 @@
|
|
134
134
|
});
|
135
135
|
|
136
136
|
},
|
137
|
-
remove: function(table, c, wo){
|
137
|
+
remove: function(table, c, wo, refreshing) {
|
138
|
+
if (refreshing) { return; }
|
138
139
|
var namespace = c.namespace + 'cssstickyheader ';
|
139
140
|
$(window).unbind('scroll resize '.split(' ').join(namespace));
|
140
141
|
c.$table
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/*! tablesorter Editable Content widget - updated
|
1
|
+
/*! tablesorter Editable Content widget - updated 2/7/2015 (v2.19.0)
|
2
2
|
* Requires tablesorter v2.8+ and jQuery 1.7+
|
3
3
|
* by Rob Garrison
|
4
4
|
*/
|
@@ -35,9 +35,9 @@ var tse = $.tablesorter.editable = {
|
|
35
35
|
|
36
36
|
update: function( c, wo ) {
|
37
37
|
var indx, tmp, $t,
|
38
|
+
colIndex = [],
|
38
39
|
cols = [];
|
39
|
-
|
40
|
-
if ( $.type( wo.editable_columns ) === 'string' && wo.editable_columns.indexOf( '-' ) >= 0 ) {
|
40
|
+
if ( !wo.editable_columnsArray && $.type( wo.editable_columns ) === 'string' && wo.editable_columns.indexOf( '-' ) >= 0 ) {
|
41
41
|
// editable_columns can contain a range string ( i.e. '2-4' )
|
42
42
|
tmp = wo.editable_columns.split( /\s*-\s*/ );
|
43
43
|
indx = parseInt( tmp[ 0 ], 10 ) || 0;
|
@@ -46,15 +46,21 @@ var tse = $.tablesorter.editable = {
|
|
46
46
|
tmp = c.columns - 1;
|
47
47
|
}
|
48
48
|
for ( ; indx <= tmp; indx++ ) {
|
49
|
+
colIndex.push( indx );
|
49
50
|
cols.push( 'td:nth-child(' + ( indx + 1 ) + ')' );
|
50
51
|
}
|
51
52
|
} else if ( $.isArray( wo.editable_columns ) ) {
|
52
|
-
$.each( wo.editable_columns, function( i, col ) {
|
53
|
+
$.each( wo.editable_columnsArray || wo.editable_columns, function( i, col ) {
|
53
54
|
if ( col < c.columns ) {
|
55
|
+
colIndex.push( col );
|
54
56
|
cols.push( 'td:nth-child(' + ( col + 1 ) + ')' );
|
55
57
|
}
|
56
58
|
});
|
57
59
|
}
|
60
|
+
if ( !wo.editable_columnsArray ) {
|
61
|
+
wo.editable_columnsArray = colIndex;
|
62
|
+
wo.editable_columnsArray.sort(function(a,b){ return a - b; });
|
63
|
+
}
|
58
64
|
tmp = $( '<div>' ).wrapInner( wo.editable_wrapContent ).children().length || $.isFunction( wo.editable_wrapContent );
|
59
65
|
// IE does not allow making TR/TH/TD cells directly editable ( issue #404 )
|
60
66
|
// so add a div or span inside ( it's faster than using wrapInner() )
|
@@ -91,7 +97,7 @@ var tse = $.tablesorter.editable = {
|
|
91
97
|
c.$table
|
92
98
|
.off( 'updateComplete pagerComplete '.split( ' ' ).join( '.tseditable' ) )
|
93
99
|
.on( 'updateComplete pagerComplete '.split( ' ' ).join( '.tseditable' ), function() {
|
94
|
-
tse.update( c,
|
100
|
+
tse.update( c, c.widgetOptions );
|
95
101
|
});
|
96
102
|
|
97
103
|
c.$tbodies
|
@@ -0,0 +1,70 @@
|
|
1
|
+
/*! tablesorter Formatter widget - 2/7/2015 (v2.19.0)
|
2
|
+
* Requires tablesorter v2.8+ and jQuery 1.7+
|
3
|
+
* by Rob Garrison
|
4
|
+
*/
|
5
|
+
/*jshint browser:true, jquery:true, unused:false */
|
6
|
+
/*global jQuery: false */
|
7
|
+
;(function($){
|
8
|
+
'use strict';
|
9
|
+
var ts = $.tablesorter;
|
10
|
+
|
11
|
+
ts.formatter = {
|
12
|
+
init : function( c ) {
|
13
|
+
var events = $.trim( c.widgetOptions.formatter_event ) + ' pagerComplete updateComplete '
|
14
|
+
.split(' ').join('.tsformatter ');
|
15
|
+
c.$table.on( events, function() {
|
16
|
+
ts.formatter.setup( c );
|
17
|
+
});
|
18
|
+
ts.formatter.setup( c );
|
19
|
+
},
|
20
|
+
setup : function( c ) {
|
21
|
+
// do nothing for empty tables
|
22
|
+
if ( $.isEmptyObject( c.cache ) ) { return; }
|
23
|
+
var $tbody, tbodyIndex, rowIndex, rows, cell, len, column,
|
24
|
+
wo = c.widgetOptions,
|
25
|
+
data = { config: c, wo: wo },
|
26
|
+
formatter = [],
|
27
|
+
$headers = [];
|
28
|
+
// set up variables
|
29
|
+
for ( column = 0; column < c.columns; column++ ) {
|
30
|
+
$headers[ column ] = c.$headers.filter('[data-column="' + column + '"]:last');
|
31
|
+
formatter[ column ] = ts.getColumnData( c.table, wo.formatter_column, column ) || false;
|
32
|
+
}
|
33
|
+
// main loop
|
34
|
+
for ( tbodyIndex = 0; tbodyIndex < c.$tbodies.length; tbodyIndex++ ){
|
35
|
+
$tbody = ts.processTbody( c.table, c.$tbodies.eq( tbodyIndex ), true ); // detach tbody
|
36
|
+
rows = c.cache[ tbodyIndex ];
|
37
|
+
len = rows.normalized.length;
|
38
|
+
for ( rowIndex = 0; rowIndex < len; rowIndex++ ) {
|
39
|
+
data.$row = rows.normalized[ rowIndex ][ c.columns ].$row;
|
40
|
+
data.$cells = data.$row.children( 'th, td' );
|
41
|
+
for ( column = 0; column < c.columns; column++ ) {
|
42
|
+
if ( formatter[ column ] ) {
|
43
|
+
data.columnIndex = column;
|
44
|
+
data.$header = $headers[ column ];
|
45
|
+
data.$cell = data.$cells.eq( column );
|
46
|
+
cell = data.$cell[0];
|
47
|
+
// get text from attribute first, just in case we're updating
|
48
|
+
data.text = cell.getAttribute( c.textAttribute ) || cell.textContent || data.$cell.text();
|
49
|
+
cell.innerHTML = formatter[ column ]( data.text, data );
|
50
|
+
}
|
51
|
+
}
|
52
|
+
}
|
53
|
+
ts.processTbody( c.table, $tbody, false); // restore tbody
|
54
|
+
}
|
55
|
+
}
|
56
|
+
};
|
57
|
+
|
58
|
+
ts.addWidget({
|
59
|
+
id: 'formatter',
|
60
|
+
priority: 100,
|
61
|
+
options: {
|
62
|
+
formatter_column : {},
|
63
|
+
formatter_event : 'applyFormatter'
|
64
|
+
},
|
65
|
+
init: function( table ) {
|
66
|
+
ts.formatter.init( table.config );
|
67
|
+
}
|
68
|
+
});
|
69
|
+
|
70
|
+
})( jQuery );
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/*! tablesorter math widget -
|
1
|
+
/*! tablesorter math widget - updated 2/7/2015 (v2.19.0)
|
2
2
|
* Requires tablesorter v2.16+ and jQuery 1.7+
|
3
3
|
* by Rob Garrison
|
4
4
|
*/
|
@@ -8,6 +8,8 @@
|
|
8
8
|
"use strict";
|
9
9
|
|
10
10
|
var ts = $.tablesorter,
|
11
|
+
events = ( 'tablesorter-initialized update updateAll updateRows addRows updateCell ' +
|
12
|
+
'filterReset filterEnd recalculate ' ).split(' ').join('.tsmath '),
|
11
13
|
math = {
|
12
14
|
|
13
15
|
// get all of the row numerical values in an arry
|
@@ -183,7 +185,7 @@
|
|
183
185
|
* (c)2011 ecava
|
184
186
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
185
187
|
*/
|
186
|
-
ts.formatMask = function(m, v, tmpPrefix, tmpSuffix){
|
188
|
+
ts.formatMask = function(m, v, tmpPrefix, tmpSuffix) {
|
187
189
|
if ( !m || isNaN(+v) ) {
|
188
190
|
return v; // return as it is.
|
189
191
|
}
|
@@ -388,9 +390,13 @@
|
|
388
390
|
},
|
389
391
|
init : function(table, thisWidget, c, wo){
|
390
392
|
c.$table
|
391
|
-
.
|
393
|
+
.unbind(events + ' updateComplete.tsmath')
|
394
|
+
.bind(events, function(e){
|
392
395
|
var init = e.type === 'tablesorter-initialized';
|
393
|
-
if (
|
396
|
+
if (e.type === 'updateAll') {
|
397
|
+
// redo data-column indexes in case columns were rearranged
|
398
|
+
ts.computeColumnIndex( c.$table.children('tbody').children() );
|
399
|
+
} else if (!wo.math_isUpdating || init) {
|
394
400
|
math.recalculate( table, c, wo, init );
|
395
401
|
}
|
396
402
|
})
|
@@ -403,9 +409,10 @@
|
|
403
409
|
},
|
404
410
|
// this remove function is called when using the refreshWidgets method or when destroying the tablesorter plugin
|
405
411
|
// this function only applies to tablesorter v2.4+
|
406
|
-
remove: function(table, c, wo){
|
412
|
+
remove: function(table, c, wo, refreshing){
|
413
|
+
if (refreshing) { return; }
|
407
414
|
$(table)
|
408
|
-
.unbind(
|
415
|
+
.unbind(events + ' updateComplete.tsmath')
|
409
416
|
.find('[data-' + wo.math_data + ']').empty();
|
410
417
|
}
|
411
418
|
});
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/* Output widget
|
1
|
+
/* Output widget for TableSorter 2/7/2015 (v2.19.0)
|
2
2
|
* Requires tablesorter v2.8+ and jQuery 1.7+
|
3
3
|
* Modified from:
|
4
4
|
* HTML Table to CSV: http://www.kunalbabre.com/projects/table2CSV.php (License unknown?)
|
@@ -20,7 +20,7 @@ output = ts.output = {
|
|
20
20
|
regexBR : /(<br([\s\/])?>|\n)/g, // replace
|
21
21
|
regexIMG : /<img[^>]+alt\s*=\s*['"]([^'"]+)['"][^>]*>/i, // match
|
22
22
|
regexHTML : /<[^<]+>/g, // replace
|
23
|
-
|
23
|
+
|
24
24
|
replaceCR : '\\n',
|
25
25
|
replaceTab : '\\t',
|
26
26
|
|
@@ -192,7 +192,11 @@ output = ts.output = {
|
|
192
192
|
// replace " with “ if undefined
|
193
193
|
result = input.replace(/\"/g, wo.output_replaceQuote || '\u201c');
|
194
194
|
// replace line breaks with \\n & tabs with \\t
|
195
|
-
|
195
|
+
if (!wo.output_trimSpaces) {
|
196
|
+
result = result.replace(output.regexBR, output.replaceCR).replace(/\t/g, output.replaceTab);
|
197
|
+
} else {
|
198
|
+
result = result.replace(output.regexBR, '');
|
199
|
+
}
|
196
200
|
// extract img alt text
|
197
201
|
txt = result.match(output.regexIMG);
|
198
202
|
if (!wo.output_includeHTML && txt !== null) {
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/* Pager widget for TableSorter
|
1
|
+
/* Pager widget for TableSorter 2/7/2015 (v2.19.0) - requires jQuery 1.7+ */
|
2
2
|
/*jshint browser:true, jquery:true, unused:false */
|
3
3
|
;(function($){
|
4
4
|
"use strict";
|
@@ -111,8 +111,8 @@ ts.addWidget({
|
|
111
111
|
}
|
112
112
|
tsp.moveToPage(table, c.pager, false);
|
113
113
|
},
|
114
|
-
remove: function(table, c){
|
115
|
-
tsp.destroyPager(table, c);
|
114
|
+
remove: function(table, c, wo, refreshing){
|
115
|
+
tsp.destroyPager(table, c, refreshing);
|
116
116
|
}
|
117
117
|
});
|
118
118
|
|
@@ -138,7 +138,12 @@ tsp = ts.pager = {
|
|
138
138
|
endRow: 0,
|
139
139
|
ajaxCounter: 0,
|
140
140
|
$size: null,
|
141
|
-
last: {}
|
141
|
+
last: {},
|
142
|
+
// save original pager size
|
143
|
+
setSize: wo.pager_size,
|
144
|
+
setPage: wo.pager_startPage,
|
145
|
+
events: 'filterInit filterStart filterEnd sortEnd disable enable destroy updateComplete ' +
|
146
|
+
'pageSize pageSet pageAndSize pagerUpdate '
|
142
147
|
}, c.pager);
|
143
148
|
|
144
149
|
// pager initializes multiple times before table has completed initialization
|
@@ -162,8 +167,8 @@ tsp = ts.pager = {
|
|
162
167
|
p.initializing = true;
|
163
168
|
if (wo.pager_savePages && ts.storage) {
|
164
169
|
t = ts.storage(table, wo.pager_storageKey) || {}; // fixes #387
|
165
|
-
p.page = isNaN(t.page) ? p.page : t.page;
|
166
|
-
p.size = ( isNaN(t.size) ? p.size : t.size ) || 10;
|
170
|
+
p.page = ( isNaN(t.page) ? p.page : t.page ) || p.setPage || 1;
|
171
|
+
p.size = ( isNaN(t.size) ? p.size : t.size ) || p.setSize || 10;
|
167
172
|
$.data(table, 'pagerLastSize', p.size);
|
168
173
|
}
|
169
174
|
|
@@ -224,9 +229,9 @@ tsp = ts.pager = {
|
|
224
229
|
s = wo.pager_selectors;
|
225
230
|
|
226
231
|
c.$table
|
227
|
-
.off(
|
228
|
-
.on('filterInit.pager filterStart.pager', function(e) {
|
229
|
-
p.currentFilters = c.$table.data('lastSearch');
|
232
|
+
.off(p.events.split(' ').join('.pager '))
|
233
|
+
.on('filterInit.pager filterStart.pager', function(e, filters) {
|
234
|
+
p.currentFilters = $.isArray(filters) ? filters : c.$table.data('lastSearch');
|
230
235
|
// don't change page if filters are the same (pager updating, etc)
|
231
236
|
if (e.type === 'filterStart' && wo.pager_pageReset !== false && (c.lastCombinedFilter || '') !== (p.currentFilters || []).join('')) {
|
232
237
|
p.page = wo.pager_pageReset; // fixes #456 & #565
|
@@ -253,9 +258,9 @@ tsp = ts.pager = {
|
|
253
258
|
e.stopPropagation();
|
254
259
|
tsp.enablePager(table, c, true);
|
255
260
|
})
|
256
|
-
.on('destroy.pager', function(e){
|
261
|
+
.on('destroy.pager', function(e, refreshing){
|
257
262
|
e.stopPropagation();
|
258
|
-
tsp.destroyPager(table, c);
|
263
|
+
tsp.destroyPager(table, c, refreshing);
|
259
264
|
})
|
260
265
|
.on('updateComplete.pager', function(e, table, triggered){
|
261
266
|
e.stopPropagation();
|
@@ -273,22 +278,32 @@ tsp = ts.pager = {
|
|
273
278
|
}
|
274
279
|
tsp.hideRows(table, c);
|
275
280
|
tsp.changeHeight(table, c);
|
276
|
-
|
281
|
+
// update without triggering pagerComplete
|
282
|
+
tsp.updatePageDisplay(table, c, false);
|
277
283
|
// make sure widgets are applied - fixes #450
|
278
284
|
c.$table.trigger('applyWidgets');
|
285
|
+
tsp.updatePageDisplay(table, c);
|
279
286
|
})
|
280
|
-
.on('pageSize.pager', function(e,v){
|
287
|
+
.on('pageSize.pager refreshComplete.pager', function(e,v){
|
281
288
|
e.stopPropagation();
|
282
|
-
tsp.setPageSize(table, parseInt(v, 10) || 10, c);
|
289
|
+
tsp.setPageSize(table, parseInt(v, 10) || p.setSize || 10, c);
|
283
290
|
tsp.hideRows(table, c);
|
284
291
|
tsp.updatePageDisplay(table, c, false);
|
285
|
-
if (p.$size.length) { p.$size.val(p.size); } // twice?
|
286
292
|
})
|
287
|
-
.on('pageSet.pager', function(e,v){
|
293
|
+
.on('pageSet.pager pagerUpdate.pager', function(e,v){
|
288
294
|
e.stopPropagation();
|
289
295
|
p.page = (parseInt(v, 10) || 1) - 1;
|
290
|
-
|
296
|
+
// force pager refresh
|
297
|
+
if (e.type === 'pagerUpdate') { p.last.page = true; }
|
298
|
+
tsp.moveToPage(table, p, true);
|
299
|
+
tsp.updatePageDisplay(table, c, false);
|
300
|
+
})
|
301
|
+
.on('pageAndSize.pager', function(e, page, size){
|
302
|
+
e.stopPropagation();
|
303
|
+
p.page = (parseInt(page, 10) || 1) - 1;
|
304
|
+
tsp.setPageSize(table, parseInt(size, 10) || p.setSize || 10, c);
|
291
305
|
tsp.moveToPage(table, p, true);
|
306
|
+
tsp.hideRows(table, c);
|
292
307
|
tsp.updatePageDisplay(table, c, false);
|
293
308
|
});
|
294
309
|
|
@@ -356,7 +371,8 @@ tsp = ts.pager = {
|
|
356
371
|
},
|
357
372
|
|
358
373
|
calcFilters: function(table, c) {
|
359
|
-
var
|
374
|
+
var tbodyIndex,
|
375
|
+
wo = c.widgetOptions,
|
360
376
|
p = c.pager,
|
361
377
|
hasFilters = c.$table.hasClass('hasFilters');
|
362
378
|
if (hasFilters && !wo.pager_ajaxUrl) {
|
@@ -364,8 +380,10 @@ tsp = ts.pager = {
|
|
364
380
|
// delayInit: true so nothing is in the cache
|
365
381
|
p.filteredRows = p.totalRows = c.$tbodies.eq(0).children('tr').not( wo.pager_countChildRows ? '' : '.' + c.cssChildRow ).length;
|
366
382
|
} else {
|
383
|
+
// just in case the pager tbody isn't the first tbody
|
384
|
+
tbodyIndex = c.$table.children('tbody').index( c.$tbodies.eq(0) );
|
367
385
|
p.filteredRows = 0;
|
368
|
-
$.each(c.cache[
|
386
|
+
$.each(c.cache[tbodyIndex].normalized, function(i, el) {
|
369
387
|
p.filteredRows += p.regexRows.test(el[c.columns].$row[0].className) ? 0 : 1;
|
370
388
|
});
|
371
389
|
}
|
@@ -379,7 +397,7 @@ tsp = ts.pager = {
|
|
379
397
|
var s, t, $out,
|
380
398
|
wo = c.widgetOptions,
|
381
399
|
p = c.pager,
|
382
|
-
sz = p.size || 10; // don't allow dividing by zero
|
400
|
+
sz = p.size || p.setSize || 10; // don't allow dividing by zero
|
383
401
|
if (wo.pager_countChildRows) { t.push(c.cssChildRow); }
|
384
402
|
p.$size.add(p.$goto).removeClass(wo.pager_css.disabled).removeAttr('disabled').attr('aria-disabled', 'false');
|
385
403
|
p.totalPages = Math.ceil( p.totalRows / sz ); // needed for "pageSize" method
|
@@ -389,8 +407,8 @@ tsp = ts.pager = {
|
|
389
407
|
p.filteredPages = Math.ceil( p.filteredRows / sz ) || 0;
|
390
408
|
if ( Math.min( p.totalPages, p.filteredPages ) >= 0 ) {
|
391
409
|
t = (p.size * p.page > p.filteredRows) && completed;
|
392
|
-
p.
|
393
|
-
p.
|
410
|
+
p.page = (t) ? wo.pager_pageReset || 0 : p.page;
|
411
|
+
p.startRow = (t) ? p.size * p.page + 1 : (p.filteredRows === 0 ? 0 : p.size * p.page + 1);
|
394
412
|
p.endRow = Math.min( p.filteredRows, p.totalRows, p.size * ( p.page + 1 ) );
|
395
413
|
$out = p.$container.find(wo.pager_selectors.pageDisplay);
|
396
414
|
// form the output string (can now get a new output string from the server)
|
@@ -414,17 +432,16 @@ tsp = ts.pager = {
|
|
414
432
|
}
|
415
433
|
return extra.length > 1 && data && data[extra[0]] ? data[extra[0]][extra[1]] : p[str] || (data ? data[str] : deflt) || deflt;
|
416
434
|
});
|
417
|
-
|
435
|
+
if ( p.$goto.length ) {
|
436
|
+
t = '';
|
437
|
+
$.each(tsp.buildPageSelect(p, c), function(i, opt){
|
438
|
+
t += '<option value="' + opt + '">' + opt + '</option>';
|
439
|
+
});
|
440
|
+
// innerHTML doesn't work in IE9 - http://support2.microsoft.com/kb/276228
|
441
|
+
p.$goto.html(t).val( p.page + 1 );
|
442
|
+
}
|
418
443
|
if ($out.length) {
|
419
444
|
$out[ ($out[0].tagName === 'INPUT') ? 'val' : 'html' ](s);
|
420
|
-
if ( p.$goto.length ) {
|
421
|
-
t = '';
|
422
|
-
$.each(tsp.buildPageSelect(p, c), function(i, opt){
|
423
|
-
t += '<option value="' + opt + '">' + opt + '</option>';
|
424
|
-
});
|
425
|
-
// innerHTML doesn't work in IE9 - http://support2.microsoft.com/kb/276228
|
426
|
-
p.$goto.html(t).val( p.page + 1 );
|
427
|
-
}
|
428
445
|
// rebind startRow/page inputs
|
429
446
|
$out.find('.ts-startRow, .ts-page').off('change').on('change', function(){
|
430
447
|
var v = $(this).val(),
|
@@ -549,7 +566,9 @@ tsp = ts.pager = {
|
|
549
566
|
s = ( p.page * p.size ),
|
550
567
|
e = s + p.size,
|
551
568
|
f = wo && wo.filter_filteredRow || 'filtered',
|
569
|
+
last = 0, // for cache indexing
|
552
570
|
j = 0; // size counter
|
571
|
+
p.cacheIndex = [];
|
553
572
|
for ( i = 0; i < l; i++ ){
|
554
573
|
if ( !rows[i].className.match(f) ) {
|
555
574
|
if (j === s && rows[i].className.match(c.cssChildRow)) {
|
@@ -557,6 +576,10 @@ tsp = ts.pager = {
|
|
557
576
|
rows[i].style.display = 'none';
|
558
577
|
} else {
|
559
578
|
rows[i].style.display = ( j >= s && j < e ) ? '' : 'none';
|
579
|
+
if ( last !== j && j >= s && j < e ) {
|
580
|
+
p.cacheIndex.push(i);
|
581
|
+
last = j;
|
582
|
+
}
|
560
583
|
// don't count child rows
|
561
584
|
j += rows[i].className.match(c.cssChildRow + '|' + c.selectorRemove.slice(1)) && !wo.pager_countChildRows ? 0 : 1;
|
562
585
|
if ( j === e && rows[i].style.display !== 'none' && rows[i].className.match(ts.css.cssHasChild) ) {
|
@@ -576,7 +599,7 @@ tsp = ts.pager = {
|
|
576
599
|
|
577
600
|
hideRowsSetup: function(table, c){
|
578
601
|
var p = c.pager;
|
579
|
-
p.size = parseInt( p.$size.val(), 10 ) || p.size;
|
602
|
+
p.size = parseInt( p.$size.val(), 10 ) || p.size || p.setSize || 10;
|
580
603
|
$.data(table, 'pagerLastSize', p.size);
|
581
604
|
tsp.pagerArrows(c);
|
582
605
|
if ( !c.widgetOptions.pager_removeRows ) {
|
@@ -682,12 +705,13 @@ tsp = ts.pager = {
|
|
682
705
|
}
|
683
706
|
// make sure last pager settings are saved, prevents multiple server side calls with
|
684
707
|
// the same parameters
|
685
|
-
p.totalPages = Math.ceil( p.totalRows / ( p.size || 10 ) );
|
708
|
+
p.totalPages = Math.ceil( p.totalRows / ( p.size || p.setSize || 10 ) );
|
686
709
|
p.last.totalRows = p.totalRows;
|
687
710
|
p.last.currentFilters = p.currentFilters;
|
688
711
|
p.last.sortList = (c.sortList || []).join(',');
|
689
712
|
p.initializing = false;
|
690
|
-
|
713
|
+
// update display without triggering pager complete... before updating cache
|
714
|
+
tsp.updatePageDisplay(table, c, false);
|
691
715
|
$t.trigger('updateCache', [function(){
|
692
716
|
if (p.initialized) {
|
693
717
|
// apply widgets after table has rendered & after a delay to prevent
|
@@ -696,6 +720,7 @@ tsp = ts.pager = {
|
|
696
720
|
$t
|
697
721
|
.trigger('applyWidgets')
|
698
722
|
.trigger('pagerChange', p);
|
723
|
+
tsp.updatePageDisplay(table, c);
|
699
724
|
}, 0);
|
700
725
|
}
|
701
726
|
}]);
|
@@ -800,6 +825,7 @@ tsp = ts.pager = {
|
|
800
825
|
// lets not render the table more than once
|
801
826
|
return tsp.moveToLastPage(table, p);
|
802
827
|
}
|
828
|
+
p.cacheIndex = [];
|
803
829
|
p.isDisabled = false; // needed because sorting will change the page and re-enable the pager
|
804
830
|
if (p.initialized) { c.$table.trigger('pagerChange', c); }
|
805
831
|
if ( !wo.pager_removeRows ) {
|
@@ -817,6 +843,7 @@ tsp = ts.pager = {
|
|
817
843
|
count++;
|
818
844
|
if (count > s && added <= e) {
|
819
845
|
added++;
|
846
|
+
p.cacheIndex.push(index);
|
820
847
|
$tb.append(rows[index]);
|
821
848
|
}
|
822
849
|
}
|
@@ -871,7 +898,8 @@ tsp = ts.pager = {
|
|
871
898
|
if ( !$.isEmptyObject(table.config.cache) ) {
|
872
899
|
var i,
|
873
900
|
rows = [],
|
874
|
-
|
901
|
+
tbodyIndex = c.$table.children('tbody').index( c.$tbodies.eq(0) ),
|
902
|
+
n = table.config.cache[tbodyIndex].normalized;
|
875
903
|
p.totalRows = n.length;
|
876
904
|
for (i = 0; i < p.totalRows; i++) {
|
877
905
|
rows.push(n[i][c.columns].$row);
|
@@ -946,7 +974,7 @@ tsp = ts.pager = {
|
|
946
974
|
|
947
975
|
setPageSize: function(table, size, c) {
|
948
976
|
var p = c.pager;
|
949
|
-
p.size = size || p.size || 10;
|
977
|
+
p.size = size || p.size || p.setSize || 10;
|
950
978
|
p.$size.val(p.size);
|
951
979
|
$.data(table, 'pagerLastPage', p.page);
|
952
980
|
$.data(table, 'pagerLastSize', p.size);
|
@@ -981,14 +1009,15 @@ tsp = ts.pager = {
|
|
981
1009
|
tsp.moveToPage(table, p, true);
|
982
1010
|
},
|
983
1011
|
|
984
|
-
destroyPager: function(table, c){
|
1012
|
+
destroyPager: function(table, c, refreshing){
|
985
1013
|
var p = c.pager;
|
1014
|
+
p.initialized = false;
|
1015
|
+
c.$table.off(p.events.split(' ').join('.pager '));
|
1016
|
+
if (refreshing) { return; }
|
986
1017
|
tsp.showAllRows(table, c);
|
987
1018
|
p.$container.hide(); // hide pager
|
988
1019
|
c.appender = null; // remove pager appender function
|
989
|
-
p.initialized = false;
|
990
1020
|
delete table.config.rowsCopy;
|
991
|
-
c.$table.off('filterInit filterStart filterEnd sortEnd disable enable destroy updateComplete pageSize pageSet '.split(' ').join('.pager '));
|
992
1021
|
if (ts.storage) {
|
993
1022
|
ts.storage(table, c.widgetOptions.pager_storageKey, '');
|
994
1023
|
}
|
@@ -998,7 +1027,7 @@ tsp = ts.pager = {
|
|
998
1027
|
var info, p = c.pager;
|
999
1028
|
p.isDisabled = false;
|
1000
1029
|
p.page = $.data(table, 'pagerLastPage') || p.page || 0;
|
1001
|
-
p.size = $.data(table, 'pagerLastSize') || parseInt(p.$size.find('option[selected]').val(), 10) || p.size || 10;
|
1030
|
+
p.size = $.data(table, 'pagerLastSize') || parseInt(p.$size.find('option[selected]').val(), 10) || p.size || p.setSize || 10;
|
1002
1031
|
p.$size.val(p.size); // set page size
|
1003
1032
|
p.totalPages = Math.ceil( Math.min( p.totalRows, p.filteredRows ) / p.size );
|
1004
1033
|
c.$table.removeClass('pagerDisabled');
|
@@ -1026,7 +1055,7 @@ tsp = ts.pager = {
|
|
1026
1055
|
if ( !p.ajax ) {
|
1027
1056
|
c.rowsCopy = rows;
|
1028
1057
|
p.totalRows = wo.pager_countChildRows ? c.$tbodies.eq(0).children('tr').length : rows.length;
|
1029
|
-
p.size = $.data(table, 'pagerLastSize') || p.size || wo.pager_size || 10;
|
1058
|
+
p.size = $.data(table, 'pagerLastSize') || p.size || wo.pager_size || p.setSize || 10;
|
1030
1059
|
p.totalPages = Math.ceil( p.totalRows / p.size );
|
1031
1060
|
tsp.moveToPage(table, p);
|
1032
1061
|
// update display here in case all rows are removed
|