jquery-tablesorter 1.15.0 → 1.16.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 +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()
|