jquery-tablesorter 1.15.0 → 1.16.0
Sign up to get free protection for your applications and to get access to all the features.
- 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 +71 -30
- data/vendor/assets/javascripts/jquery-tablesorter/jquery.tablesorter.js +109 -65
- data/vendor/assets/javascripts/jquery-tablesorter/jquery.tablesorter.widgets.js +83 -62
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-date-range.js +93 -0
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-input-select.js +6 -4
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-metric.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-columnSelector.js +4 -2
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-filter-formatter-html5.js +2 -2
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-filter-formatter-jui.js +2 -3
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-filter-formatter-select2.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-filter-type-insideRange.js +42 -0
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-filter.js +57 -45
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-formatter.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-grouping.js +9 -7
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-output.js +9 -1
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-pager.js +68 -30
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-scroller.js +41 -41
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-stickyHeaders.js +25 -16
- metadata +4 -2
@@ -1,4 +1,4 @@
|
|
1
|
-
/* Output widget for TableSorter
|
1
|
+
/* Output widget for TableSorter 3/5/2015 (v2.21.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?)
|
@@ -120,6 +120,13 @@ output = ts.output = {
|
|
120
120
|
|
121
121
|
// all tbody rows
|
122
122
|
$rows = $el.children('tbody').children('tr');
|
123
|
+
|
124
|
+
if (wo.output_includeFooter) {
|
125
|
+
// clone, to force the tfoot rows to the end of this selection of rows
|
126
|
+
// otherwise they appear after the thead (the order in the HTML)
|
127
|
+
$rows = $rows.add( $el.children('tfoot').children('tr').clone() );
|
128
|
+
}
|
129
|
+
|
123
130
|
// get (f)iltered, (v)isible or all rows (look for the first letter only)
|
124
131
|
$rows = /f/.test(wo.output_saveRows) ? $rows.not('.' + (wo.filter_filteredRow || 'filtered') ) :
|
125
132
|
/v/.test(wo.output_saveRows) ? $rows.filter(':visible') : $rows;
|
@@ -287,6 +294,7 @@ ts.addWidget({
|
|
287
294
|
options: {
|
288
295
|
output_separator : ',', // set to "json", "array" or any separator
|
289
296
|
output_ignoreColumns : [], // columns to ignore [0, 1,... ] (zero-based index)
|
297
|
+
output_includeFooter : false, // include footer rows in the output
|
290
298
|
output_dataAttrib : 'data-name', // header attrib containing modified header name
|
291
299
|
output_headerRows : false, // if true, include multiple header rows (JSON only)
|
292
300
|
output_delivery : 'popup', // popup, download
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/* Pager widget for TableSorter
|
1
|
+
/* Pager widget for TableSorter 3/5/2015 (v2.21.0) - requires jQuery 1.7+ */
|
2
2
|
/*jshint browser:true, jquery:true, unused:false */
|
3
3
|
;(function($){
|
4
4
|
"use strict";
|
@@ -151,7 +151,7 @@ tsp = ts.pager = {
|
|
151
151
|
|
152
152
|
p.isInitializing = true;
|
153
153
|
if (c.debug) {
|
154
|
-
ts.log('Pager
|
154
|
+
ts.log('Pager: Initializing');
|
155
155
|
}
|
156
156
|
|
157
157
|
p.size = $.data(table, 'pagerLastSize') || wo.pager_size;
|
@@ -196,7 +196,7 @@ tsp = ts.pager = {
|
|
196
196
|
} else {
|
197
197
|
p.ajax = false;
|
198
198
|
// Regular pager; all rows stored in memory
|
199
|
-
c.$table.trigger(
|
199
|
+
c.$table.trigger('appendCache', [{}, true]);
|
200
200
|
}
|
201
201
|
|
202
202
|
},
|
@@ -214,6 +214,9 @@ tsp = ts.pager = {
|
|
214
214
|
p.initialized = true;
|
215
215
|
p.initializing = false;
|
216
216
|
p.isInitializing = false;
|
217
|
+
if (c.debug) {
|
218
|
+
ts.log('Pager: Triggering pagerInitialized');
|
219
|
+
}
|
217
220
|
c.$table.trigger('pagerInitialized', c);
|
218
221
|
// filter widget not initialized; it will update the output display & fire off the pagerComplete event
|
219
222
|
if ( !( c.widgetOptions.filter_initialized && ts.hasWidget(table, 'filter') ) ) {
|
@@ -310,6 +313,9 @@ tsp = ts.pager = {
|
|
310
313
|
// clicked controls
|
311
314
|
ctrls = [ s.first, s.prev, s.next, s.last ];
|
312
315
|
fxn = [ 'moveToFirstPage', 'moveToPrevPage', 'moveToNextPage', 'moveToLastPage' ];
|
316
|
+
if (c.debug && !p.$container.length) {
|
317
|
+
ts.log('Pager: >> Container not found');
|
318
|
+
}
|
313
319
|
p.$container.find(ctrls.join(','))
|
314
320
|
.attr("tabindex", 0)
|
315
321
|
.off('click.pager')
|
@@ -336,6 +342,8 @@ tsp = ts.pager = {
|
|
336
342
|
tsp.moveToPage(table, p, true);
|
337
343
|
tsp.updatePageDisplay(table, c, false);
|
338
344
|
});
|
345
|
+
} else if (c.debug) {
|
346
|
+
ts.log('Pager: >> Goto selector not found');
|
339
347
|
}
|
340
348
|
|
341
349
|
if ( p.$size.length ) {
|
@@ -351,6 +359,8 @@ tsp = ts.pager = {
|
|
351
359
|
}
|
352
360
|
return false;
|
353
361
|
});
|
362
|
+
} else if (c.debug) {
|
363
|
+
ts.log('Pager: >> Size selector not found');
|
354
364
|
}
|
355
365
|
|
356
366
|
},
|
@@ -371,7 +381,8 @@ tsp = ts.pager = {
|
|
371
381
|
},
|
372
382
|
|
373
383
|
calcFilters: function(table, c) {
|
374
|
-
var
|
384
|
+
var normalized, indx, len,
|
385
|
+
wo = c.widgetOptions,
|
375
386
|
p = c.pager,
|
376
387
|
hasFilters = c.$table.hasClass('hasFilters');
|
377
388
|
if (hasFilters && !wo.pager_ajaxUrl) {
|
@@ -380,9 +391,11 @@ tsp = ts.pager = {
|
|
380
391
|
p.filteredRows = p.totalRows = c.$tbodies.eq(0).children('tr').not( wo.pager_countChildRows ? '' : '.' + c.cssChildRow ).length;
|
381
392
|
} else {
|
382
393
|
p.filteredRows = 0;
|
383
|
-
|
384
|
-
|
385
|
-
|
394
|
+
normalized = c.cache[0].normalized;
|
395
|
+
len = normalized.length;
|
396
|
+
for (indx = 0; indx < len; indx++) {
|
397
|
+
p.filteredRows += p.regexRows.test(normalized[indx][c.columns].$row[0].className) ? 0 : 1;
|
398
|
+
}
|
386
399
|
}
|
387
400
|
} else if (!hasFilters) {
|
388
401
|
p.filteredRows = p.totalRows;
|
@@ -391,7 +404,7 @@ tsp = ts.pager = {
|
|
391
404
|
|
392
405
|
updatePageDisplay: function(table, c, completed) {
|
393
406
|
if ( c.pager.initializing ) { return; }
|
394
|
-
var s, t, $out,
|
407
|
+
var s, t, $out, options, indx, len,
|
395
408
|
wo = c.widgetOptions,
|
396
409
|
p = c.pager,
|
397
410
|
sz = p.size || p.setSize || 10; // don't allow dividing by zero
|
@@ -431,9 +444,11 @@ tsp = ts.pager = {
|
|
431
444
|
});
|
432
445
|
if ( p.$goto.length ) {
|
433
446
|
t = '';
|
434
|
-
|
435
|
-
|
436
|
-
|
447
|
+
options = tsp.buildPageSelect(p, c);
|
448
|
+
len = options.length;
|
449
|
+
for (indx = 0; indx < len; indx++) {
|
450
|
+
t += '<option value="' + options[indx] + '">' + options[indx] + '</option>';
|
451
|
+
}
|
437
452
|
// innerHTML doesn't work in IE9 - http://support2.microsoft.com/kb/276228
|
438
453
|
p.$goto.html(t).val( p.page + 1 );
|
439
454
|
}
|
@@ -450,6 +465,9 @@ tsp = ts.pager = {
|
|
450
465
|
tsp.pagerArrows(c);
|
451
466
|
tsp.fixHeight(table, c);
|
452
467
|
if (p.initialized && completed !== false) {
|
468
|
+
if (c.debug) {
|
469
|
+
ts.log('Pager: Triggering pagerComplete');
|
470
|
+
}
|
453
471
|
c.$table.trigger('pagerComplete', c);
|
454
472
|
// save pager info to storage
|
455
473
|
if (wo.pager_savePages && ts.storage) {
|
@@ -624,7 +642,7 @@ tsp = ts.pager = {
|
|
624
642
|
|
625
643
|
if ( exception ) {
|
626
644
|
if (c.debug) {
|
627
|
-
ts.log('Ajax Error', xhr, exception);
|
645
|
+
ts.log('Pager: >> Ajax Error', xhr, exception);
|
628
646
|
}
|
629
647
|
ts.showError(table, exception.message + ' (' + xhr.status + ')');
|
630
648
|
c.$tbodies.eq(0).children('tr').detach();
|
@@ -714,6 +732,9 @@ tsp = ts.pager = {
|
|
714
732
|
// apply widgets after table has rendered & after a delay to prevent
|
715
733
|
// multiple applyWidget blocking code from blocking this trigger
|
716
734
|
setTimeout(function(){
|
735
|
+
if (c.debug) {
|
736
|
+
ts.log('Pager: Triggering pagerChange');
|
737
|
+
}
|
717
738
|
$t
|
718
739
|
.trigger('applyWidgets')
|
719
740
|
.trigger('pagerChange', p);
|
@@ -755,49 +776,52 @@ tsp = ts.pager = {
|
|
755
776
|
}
|
756
777
|
};
|
757
778
|
if (c.debug) {
|
758
|
-
ts.log('
|
779
|
+
ts.log('Pager: Ajax initialized', p.ajaxObject);
|
759
780
|
}
|
760
781
|
$.ajax(p.ajaxObject);
|
761
782
|
}
|
762
783
|
},
|
763
784
|
|
764
785
|
getAjaxUrl: function(table, c) {
|
765
|
-
var
|
786
|
+
var indx, len,
|
787
|
+
p = c.pager,
|
766
788
|
wo = c.widgetOptions,
|
767
789
|
url = (wo.pager_ajaxUrl) ? wo.pager_ajaxUrl
|
768
790
|
// allow using "{page+1}" in the url string to switch to a non-zero based index
|
769
791
|
.replace(/\{page([\-+]\d+)?\}/, function(s,n){ return p.page + (n ? parseInt(n, 10) : 0); })
|
770
792
|
.replace(/\{size\}/g, p.size) : '',
|
771
|
-
|
772
|
-
|
793
|
+
sortList = c.sortList,
|
794
|
+
filterList = p.currentFilters || $(table).data('lastSearch') || [],
|
773
795
|
sortCol = url.match(/\{\s*sort(?:List)?\s*:\s*(\w*)\s*\}/),
|
774
796
|
filterCol = url.match(/\{\s*filter(?:List)?\s*:\s*(\w*)\s*\}/),
|
775
797
|
arry = [];
|
776
798
|
if (sortCol) {
|
777
799
|
sortCol = sortCol[1];
|
778
|
-
|
779
|
-
|
780
|
-
|
800
|
+
len = sortList.length;
|
801
|
+
for (indx = 0; indx < len; indx++) {
|
802
|
+
arry.push(sortCol + '[' + sortList[indx][0] + ']=' + sortList[indx][1]);
|
803
|
+
}
|
781
804
|
// if the arry is empty, just add the col parameter... "&{sortList:col}" becomes "&col"
|
782
805
|
url = url.replace(/\{\s*sort(?:List)?\s*:\s*(\w*)\s*\}/g, arry.length ? arry.join('&') : sortCol );
|
783
806
|
arry = [];
|
784
807
|
}
|
785
808
|
if (filterCol) {
|
786
809
|
filterCol = filterCol[1];
|
787
|
-
|
788
|
-
|
789
|
-
|
810
|
+
len = filterList.length;
|
811
|
+
for (indx = 0; indx < len; indx++) {
|
812
|
+
if (filterList[indx]) {
|
813
|
+
arry.push(filterCol + '[' + indx + ']=' + encodeURIComponent(filterList[indx]));
|
790
814
|
}
|
791
|
-
}
|
815
|
+
}
|
792
816
|
// if the arry is empty, just add the fcol parameter... "&{filterList:fcol}" becomes "&fcol"
|
793
817
|
url = url.replace(/\{\s*filter(?:List)?\s*:\s*(\w*)\s*\}/g, arry.length ? arry.join('&') : filterCol );
|
794
|
-
p.currentFilters =
|
818
|
+
p.currentFilters = filterList;
|
795
819
|
}
|
796
820
|
if ( $.isFunction(wo.pager_customAjaxUrl) ) {
|
797
821
|
url = wo.pager_customAjaxUrl(table, url);
|
798
822
|
}
|
799
823
|
if (c.debug) {
|
800
|
-
ts.log('Pager
|
824
|
+
ts.log('Pager: Ajax url = ' + url);
|
801
825
|
}
|
802
826
|
return url;
|
803
827
|
},
|
@@ -813,7 +837,7 @@ tsp = ts.pager = {
|
|
813
837
|
e = p.size;
|
814
838
|
if ( l < 1 ) {
|
815
839
|
if (c.debug) {
|
816
|
-
ts.log('Pager:
|
840
|
+
ts.log('Pager: >> No rows for pager to render');
|
817
841
|
}
|
818
842
|
// empty table, abort!
|
819
843
|
return;
|
@@ -824,7 +848,12 @@ tsp = ts.pager = {
|
|
824
848
|
}
|
825
849
|
p.cacheIndex = [];
|
826
850
|
p.isDisabled = false; // needed because sorting will change the page and re-enable the pager
|
827
|
-
if (p.initialized) {
|
851
|
+
if (p.initialized) {
|
852
|
+
if (c.debug) {
|
853
|
+
ts.log('Pager: Triggering pagerChange');
|
854
|
+
}
|
855
|
+
c.$table.trigger('pagerChange', c);
|
856
|
+
}
|
828
857
|
if ( !wo.pager_removeRows ) {
|
829
858
|
tsp.hideRows(table, c);
|
830
859
|
} else {
|
@@ -853,6 +882,9 @@ tsp = ts.pager = {
|
|
853
882
|
wo.pager_startPage = p.page;
|
854
883
|
wo.pager_size = p.size;
|
855
884
|
if (table.isUpdating) {
|
885
|
+
if (c.debug) {
|
886
|
+
ts.log('Pager: Triggering updateComplete');
|
887
|
+
}
|
856
888
|
c.$table.trigger('updateComplete', [ table, true ]);
|
857
889
|
}
|
858
890
|
|
@@ -877,7 +909,7 @@ tsp = ts.pager = {
|
|
877
909
|
tsp.renderTable(table, c.rowsCopy);
|
878
910
|
c.$table.trigger('applyWidgets');
|
879
911
|
if (c.debug) {
|
880
|
-
ts.log('
|
912
|
+
ts.log('Pager: Disabled');
|
881
913
|
}
|
882
914
|
}
|
883
915
|
// disable size selector
|
@@ -940,7 +972,7 @@ tsp = ts.pager = {
|
|
940
972
|
return;
|
941
973
|
}
|
942
974
|
if (c.debug) {
|
943
|
-
ts.log('Pager
|
975
|
+
ts.log('Pager: Changing to page ' + p.page);
|
944
976
|
}
|
945
977
|
p.last = {
|
946
978
|
page : p.page,
|
@@ -959,10 +991,16 @@ tsp = ts.pager = {
|
|
959
991
|
}
|
960
992
|
$.data(table, 'pagerLastPage', p.page);
|
961
993
|
if (p.initialized && pageMoved !== false) {
|
994
|
+
if (c.debug) {
|
995
|
+
ts.log('Pager: Triggering pageMoved');
|
996
|
+
}
|
962
997
|
c.$table
|
963
998
|
.trigger('pageMoved', c)
|
964
999
|
.trigger('applyWidgets');
|
965
1000
|
if (!p.ajax && table.isUpdating) {
|
1001
|
+
if (c.debug) {
|
1002
|
+
ts.log('Pager: Triggering updateComplete');
|
1003
|
+
}
|
966
1004
|
c.$table.trigger('updateComplete', [ table, true ]);
|
967
1005
|
}
|
968
1006
|
}
|
@@ -1039,7 +1077,7 @@ tsp = ts.pager = {
|
|
1039
1077
|
tsp.setPageSize(table, p.size, c);
|
1040
1078
|
tsp.hideRowsSetup(table, c);
|
1041
1079
|
if (c.debug) {
|
1042
|
-
ts.log('
|
1080
|
+
ts.log('Pager: Enabled');
|
1043
1081
|
}
|
1044
1082
|
}
|
1045
1083
|
},
|
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
Resizable scroller widget for the jQuery tablesorter plugin
|
12
12
|
|
13
|
-
Version 2.0 - modified by Rob Garrison 4/12/2013; updated
|
13
|
+
Version 2.0 - modified by Rob Garrison 4/12/2013; updated 3/5/2015 (v2.21.0)
|
14
14
|
Requires jQuery v1.7+
|
15
15
|
Requires the tablesorter plugin, v2.8+, available at http://mottie.github.com/tablesorter/docs/
|
16
16
|
|
@@ -57,10 +57,11 @@ $(function(){
|
|
57
57
|
'.tablesorter-scroller { text-align: left; overflow: hidden; }' +
|
58
58
|
'.tablesorter-scroller-header { overflow: hidden; }' +
|
59
59
|
'.tablesorter-scroller-header table.tablesorter { margin-bottom: 0; }' +
|
60
|
+
'.tablesorter-scroller-footer table.tablesorter thead { visibility: hidden, height: 0; overflow: hidden; }' +
|
60
61
|
'.tablesorter-scroller-table { overflow-y: scroll; }' +
|
61
|
-
'.tablesorter-scroller-table table.tablesorter { margin-top: 0; overflow: scroll; } ' +
|
62
|
-
'.tablesorter-scroller-table .tablesorter-filter-row
|
63
|
-
'.tablesorter-scroller-table table.tablesorter thead tr.tablesorter-headerRow * {' +
|
62
|
+
'.tablesorter-scroller-table table.tablesorter { margin-top: 0; margin-bottom: 0; overflow: scroll; } ' +
|
63
|
+
'.tablesorter-scroller-table .tablesorter-filter-row,.tablesorter-scroller-footer .tablesorter-filter-row,.tablesorter-scroller-table tfoot { display: none; }' +
|
64
|
+
'.tablesorter-scroller-table table.tablesorter thead tr.tablesorter-headerRow *,.tablesorter-scroller-footer table.tablesorter thead * {' +
|
64
65
|
'line-height:0;height:0;border:none;background-image:none;padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;overflow:hidden;' +
|
65
66
|
'}</style>';
|
66
67
|
$(s).appendTo('body');
|
@@ -95,24 +96,37 @@ ts.addWidget({
|
|
95
96
|
});
|
96
97
|
},
|
97
98
|
format: function(table, c, wo) {
|
98
|
-
var maxHt, tbHt, $hdr, resize, getBarWidth, $
|
99
|
+
var maxHt, tbHt, $hdr, $t, resize, getBarWidth, $hCells, $fCells,
|
100
|
+
$ft = [],
|
99
101
|
// c.namespace contains a unique tablesorter ID, per table
|
100
102
|
id = c.namespace.slice(1) + 'tsscroller',
|
101
103
|
$win = $(window),
|
102
104
|
$tbl = c.$table;
|
103
105
|
|
104
106
|
if (!c.isScrolling) {
|
107
|
+
// force developer to set fixedWidth to maintain column widths
|
108
|
+
c.widthFixed = true;
|
105
109
|
maxHt = wo.scroller_height || 300;
|
106
110
|
tbHt = $tbl.children('tbody').height();
|
107
111
|
if (tbHt !== 0 && maxHt > tbHt) { maxHt = tbHt + 10; } // Table is less than h px
|
108
112
|
|
109
113
|
$hdr = $('<table class="' + $tbl.attr('class') + '" cellpadding=0 cellspacing=0>' +
|
110
|
-
|
114
|
+
$tbl.children('thead')[0].outerHTML +
|
111
115
|
'</table>');
|
116
|
+
|
117
|
+
$t = $tbl.children('tfoot');
|
118
|
+
if ($t.length) {
|
119
|
+
$ft = $('<table class="' + $tbl.attr('class') + '" cellpadding=0 cellspacing=0 style="margin-top:0"></table>')
|
120
|
+
.append( $t.clone(true) ) // maintain any bindings on the tfoot cells
|
121
|
+
.append( $tbl.children('thead')[0].outerHTML )
|
122
|
+
.wrap('<div class="tablesorter-scroller-footer"/>');
|
123
|
+
$fCells = $ft.children('tfoot').eq(0).children('tr').children();
|
124
|
+
}
|
125
|
+
|
112
126
|
if (c.$extraTables && c.$extraTables.length) {
|
113
|
-
c.$extraTables = c.$extraTables.add($hdr);
|
127
|
+
c.$extraTables = c.$extraTables.add($hdr).add($ft);
|
114
128
|
} else {
|
115
|
-
c.$extraTables = $hdr;
|
129
|
+
c.$extraTables = $hdr.add($ft);
|
116
130
|
}
|
117
131
|
$tbl
|
118
132
|
.wrap('<div id="' + id + '" class="tablesorter-scroller" />')
|
@@ -120,15 +134,20 @@ ts.addWidget({
|
|
120
134
|
// shrink filter row but don't completely hide it because the inputs/selectors may distort the columns
|
121
135
|
.find('.tablesorter-filter-row').addClass('hideme');
|
122
136
|
|
123
|
-
$
|
124
|
-
|
137
|
+
if ($ft.length) {
|
138
|
+
// $ft.parent() to include <div> wrapper
|
139
|
+
$tbl.after( $ft.parent() );
|
140
|
+
}
|
141
|
+
|
142
|
+
$hCells = $hdr
|
143
|
+
.wrap('<div class="tablesorter-scroller-header" />')
|
125
144
|
.find('.' + ts.css.header);
|
126
145
|
|
127
146
|
// use max-height, so the height resizes dynamically while filtering
|
128
|
-
$tbl.wrap('<div class="tablesorter-scroller-table" style="max-height:' + maxHt + 'px;
|
147
|
+
$tbl.wrap('<div class="tablesorter-scroller-table" style="max-height:' + maxHt + 'px;" />');
|
129
148
|
|
130
149
|
// make scroller header sortable
|
131
|
-
ts.bindEvents(table, $
|
150
|
+
ts.bindEvents(table, $hCells);
|
132
151
|
|
133
152
|
// look for filter widget
|
134
153
|
if ($tbl.hasClass('hasFilters')) {
|
@@ -145,7 +164,7 @@ ts.addWidget({
|
|
145
164
|
};
|
146
165
|
|
147
166
|
resize = function(){
|
148
|
-
var d, b, $h,
|
167
|
+
var d, b, $h, w,
|
149
168
|
// Hide other scrollers so we can resize
|
150
169
|
$div = $('div.tablesorter-scroller[id != "' + id + '"]').hide();
|
151
170
|
|
@@ -153,8 +172,7 @@ ts.addWidget({
|
|
153
172
|
// only remove colgroup if it was added by the plugin
|
154
173
|
// the $.tablesorter.fixColumnWidth() function already does this (v2.19.0)
|
155
174
|
// but we need to get "accurate" resized measurements here - see issue #680
|
156
|
-
$tbl.children('colgroup
|
157
|
-
$hdr.children('colgroup').remove();
|
175
|
+
$tbl.add( $hdr ).add( $ft ).children('colgroup').remove();
|
158
176
|
|
159
177
|
// Reset sizes so parent can resize.
|
160
178
|
$tbl
|
@@ -172,43 +190,24 @@ ts.addWidget({
|
|
172
190
|
|
173
191
|
// Shrink a bit to accommodate scrollbar
|
174
192
|
w = ( wo.scroller_barWidth || getBarWidth() ) + b;
|
175
|
-
|
176
193
|
d.width( d.parent().innerWidth() - ( d.parent().hasScrollBar() ? w : 0 ) );
|
177
194
|
w = d.innerWidth() - ( d.hasScrollBar() ? w : 0 );
|
178
|
-
$tbl.width( w );
|
179
|
-
$hdr.width( w );
|
180
|
-
$hdr.parent().width( w );
|
195
|
+
$tbl.add( $hdr ).add( $hdr.parent() ).add( $ft ).width( w );
|
181
196
|
|
182
197
|
$tbl
|
183
198
|
.closest('.tablesorter-scroller')
|
184
199
|
.find('.tablesorter-scroller-reset')
|
185
200
|
.removeClass('tablesorter-scroller-reset');
|
186
201
|
|
187
|
-
$h = $hdr.find('thead').children().children();
|
188
|
-
|
189
|
-
// adjust cloned header to match original table width - includes wrappers, headers, and header inner div
|
190
|
-
$tbl.children('thead').children().children().each(function(i, c){
|
191
|
-
$th = $(c).find('.tablesorter-header-inner');
|
192
|
-
if ($th.length) {
|
193
|
-
// I have no idea why this is in here anymore LOL
|
194
|
-
w = parseInt( $th.css('min-width').replace('auto', '0').replace(/(px|em)/, ''), 10 );
|
195
|
-
if ( $th.width() < w ) {
|
196
|
-
$th.width(w);
|
197
|
-
} else {
|
198
|
-
w = $th.width();
|
199
|
-
}
|
200
|
-
|
201
|
-
$h.eq(i)
|
202
|
-
.parent()
|
203
|
-
.width( $th.parent().width() - b );
|
204
|
-
}
|
205
|
-
});
|
206
|
-
|
207
202
|
// refresh colgroup & copy to cloned header
|
208
203
|
$.tablesorter.fixColumnWidth( table );
|
209
|
-
$h = $tbl.children('colgroup')
|
204
|
+
$h = $tbl.children('colgroup');
|
210
205
|
if ($h.length) {
|
211
|
-
$
|
206
|
+
b = $h[0].outerHTML;
|
207
|
+
$hdr.prepend(b);
|
208
|
+
if ($ft.length) {
|
209
|
+
$ft.prepend(b);
|
210
|
+
}
|
212
211
|
}
|
213
212
|
|
214
213
|
// hide filter row because filterEnd event fires
|
@@ -250,6 +249,7 @@ ts.addWidget({
|
|
250
249
|
var $table = c.$table,
|
251
250
|
namespace = c.namespace + 'tsscroller';
|
252
251
|
$table.closest('.tablesorter-scroller').find('.tablesorter-scroller-header').remove();
|
252
|
+
$table.closest('.tablesorter-scroller').find('.tablesorter-scroller-footer').remove();
|
253
253
|
$table
|
254
254
|
.unwrap()
|
255
255
|
.find('.tablesorter-filter-row').removeClass('hideme').end()
|