jquery-tablesorter 1.23.5 → 1.23.6
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 +32 -22
- data/vendor/assets/javascripts/jquery-tablesorter/jquery.tablesorter.combined.js +55 -34
- data/vendor/assets/javascripts/jquery-tablesorter/jquery.tablesorter.js +34 -18
- data/vendor/assets/javascripts/jquery-tablesorter/jquery.tablesorter.widgets.js +21 -16
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-leading-zeros.js +33 -0
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-build-table.js +3 -1
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-filter.js +20 -15
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-output.js +2 -2
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-pager.js +30 -21
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-sort2Hash.js +7 -8
- data/vendor/assets/stylesheets/jquery-tablesorter/highlights.css +104 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b00e7c0fb7b83ca3dcee23aa4ae1eef3d36d6988
|
4
|
+
data.tar.gz: d2acfb12d32b823098e90a19d402542ede84f6ce
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3fdfd7dba37c34d90a2cca21376743b8f069c96376f93b092124819d5f3207f106974dcea02eff3609fe5874370c146baf2488004d1f928507de2f40865b84e5
|
7
|
+
data.tar.gz: ffeb45a467ac731aa17ada18b1d1c48c7554300300fbedf00f15e13908eb05c60163fc57220ce987412b137519f020eaa12c98f3a57256c295d256ba5eb98dcd
|
data/README.md
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
Simple integration of jQuery tablesorter ([Mottie's fork]) into the asset pipeline.
|
6
6
|
|
7
|
-
Current tablesorter version: 2.28.
|
7
|
+
Current tablesorter version: 2.28.6 (4/2/2017), [documentation]
|
8
8
|
|
9
9
|
Any issue associated with the js/css files, please report to [Mottie's fork].
|
10
10
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/*!
|
2
2
|
* tablesorter (FORK) pager plugin
|
3
|
-
* updated
|
3
|
+
* updated 4/2/2017 (v2.28.6)
|
4
4
|
*/
|
5
5
|
/*jshint browser:true, jquery:true, unused:false */
|
6
6
|
;(function($) {
|
@@ -393,10 +393,8 @@
|
|
393
393
|
},
|
394
394
|
|
395
395
|
hideRowsSetup = function(table, p){
|
396
|
-
|
397
|
-
|
398
|
-
$el.val( p.size );
|
399
|
-
$.data(table, 'pagerLastSize', p.size);
|
396
|
+
p.size = parsePageSize( p, p.$container.find(p.cssPageSize).val(), 'get' );
|
397
|
+
setPageSize( table, p.size, p );
|
400
398
|
pagerArrows( table, p );
|
401
399
|
if ( !p.removeRows ) {
|
402
400
|
hideRows(table, p);
|
@@ -689,7 +687,7 @@
|
|
689
687
|
$.data(table, 'pagerLastPage', p.page);
|
690
688
|
$.data(table, 'pagerLastSize', p.size);
|
691
689
|
p.page = 0;
|
692
|
-
p.size =
|
690
|
+
p.size = p.totalPages;
|
693
691
|
p.totalPages = 1;
|
694
692
|
$(table)
|
695
693
|
.addClass('pagerDisabled')
|
@@ -799,15 +797,9 @@
|
|
799
797
|
},
|
800
798
|
|
801
799
|
getTotalPages = function( table, p ) {
|
802
|
-
return ts.hasWidget( table, 'filter' ) ?
|
803
|
-
|
804
|
-
|
805
|
-
// set to either set or get value
|
806
|
-
parsePageSize = function( p, size, mode ) {
|
807
|
-
var s = parseInt( size, 10 ) || p.size || p.settings.size || 10;
|
808
|
-
return p.initialized && (/all/i.test( size ) || s === p.totalRows) ?
|
809
|
-
// "get" to get `p.size` or "set" to set `pageSize.val()`
|
810
|
-
'all' : ( mode === 'get' ? s : p.size );
|
800
|
+
return ts.hasWidget( table, 'filter' ) ?
|
801
|
+
Math.min( p.totalPages, p.filteredPages ) :
|
802
|
+
p.totalPages;
|
811
803
|
},
|
812
804
|
|
813
805
|
parsePageNumber = function( table, p ) {
|
@@ -818,14 +810,26 @@
|
|
818
810
|
return p.page;
|
819
811
|
},
|
820
812
|
|
813
|
+
// set to either set or get value
|
814
|
+
parsePageSize = function( p, size, mode ) {
|
815
|
+
var s = parseInt( size, 10 ) || p.size || p.settings.size || 10;
|
816
|
+
if (p.initialized && (/all/i.test( s + ' ' + size ) || s === p.totalRows)) {
|
817
|
+
// Fixing #1364 & #1366
|
818
|
+
return p.$container.find(p.cssPageSize + ' option[value="all"]').length ?
|
819
|
+
'all' : p.totalRows;
|
820
|
+
}
|
821
|
+
// "get" to get `p.size` or "set" to set `pageSize.val()`
|
822
|
+
return mode === 'get' ? s : p.size;
|
823
|
+
},
|
824
|
+
|
821
825
|
setPageSize = function(table, size, p) {
|
826
|
+
// "all" size is only returned if an "all" option exists - fixes #1366
|
822
827
|
p.size = parsePageSize( p, size, 'get' );
|
823
|
-
p.$container.find(p.cssPageSize).val(
|
828
|
+
p.$container.find( p.cssPageSize ).val( p.size );
|
824
829
|
$.data(table, 'pagerLastPage', parsePageNumber( table, p ) );
|
825
830
|
$.data(table, 'pagerLastSize', p.size);
|
826
831
|
p.totalPages = p.size === 'all' ? 1 : Math.ceil( p.totalRows / p.size );
|
827
832
|
p.filteredPages = p.size === 'all' ? 1 : Math.ceil( p.filteredRows / p.size );
|
828
|
-
moveToPage(table, p);
|
829
833
|
},
|
830
834
|
|
831
835
|
moveToFirstPage = function(table, p) {
|
@@ -906,8 +910,8 @@
|
|
906
910
|
$el = p.$container.find(p.cssPageSize);
|
907
911
|
size = $el.find('option[selected]').val();
|
908
912
|
p.size = $.data(table, 'pagerLastSize') || parsePageSize( p, size, 'get' );
|
909
|
-
$el.val( p.size ); // set page size
|
910
913
|
p.totalPages = p.size === 'all' ? 1 : Math.ceil( getTotalPages( table, p ) / p.size );
|
914
|
+
setPageSize(table, p.size, p); // set page size
|
911
915
|
// if table id exists, include page display with aria info
|
912
916
|
if ( table.id && !c.$table.attr( 'aria-describedby' ) ) {
|
913
917
|
$el = p.$container.find( p.cssPageDisplay );
|
@@ -924,6 +928,7 @@
|
|
924
928
|
// tablesorter core update table
|
925
929
|
ts.update( c );
|
926
930
|
setPageSize(table, p.size, p);
|
931
|
+
moveToPage(table, p);
|
927
932
|
hideRowsSetup(table, p);
|
928
933
|
if (c.debug) {
|
929
934
|
console.log('Pager: Enabled');
|
@@ -952,8 +957,7 @@
|
|
952
957
|
t = ts.storage(table, p.storageKey) || {}; // fixes #387
|
953
958
|
p.page = isNaN(t.page) ? p.page : t.page;
|
954
959
|
p.size = t.size === 'all' ? t.size : ( isNaN( t.size ) ? p.size : t.size ) || p.setSize || 10;
|
955
|
-
|
956
|
-
pager.find(p.cssPageSize).val(p.size);
|
960
|
+
setPageSize(table, p.size, p);
|
957
961
|
}
|
958
962
|
// skipped rows
|
959
963
|
p.regexRows = new RegExp('(' + (wo.filter_filteredRow || 'filtered') + '|' + c.selectorRemove.slice(1) + '|' + c.cssChildRow + ')');
|
@@ -965,7 +969,10 @@
|
|
965
969
|
.bind('filterInit filterStart '.split(' ').join(namespace + ' '), function(e, filters) {
|
966
970
|
p.currentFilters = $.isArray(filters) ? filters : c.$table.data('lastSearch');
|
967
971
|
// don't change page if filters are the same (pager updating, etc)
|
968
|
-
if (
|
972
|
+
if (
|
973
|
+
e.type === 'filterStart' &&
|
974
|
+
p.pageReset !== false &&
|
975
|
+
(c.lastSearch || []).join(',') !== (p.currentFilters || []).join(',')) {
|
969
976
|
p.page = p.pageReset; // fixes #456 & #565
|
970
977
|
}
|
971
978
|
})
|
@@ -1020,6 +1027,7 @@
|
|
1020
1027
|
.bind('pageSize refreshComplete '.split(' ').join(namespace + ' '), function(e, size){
|
1021
1028
|
e.stopPropagation();
|
1022
1029
|
setPageSize(table, parsePageSize( p, size, 'get' ), p);
|
1030
|
+
moveToPage(table, p);
|
1023
1031
|
hideRows(table, p);
|
1024
1032
|
updatePageDisplay(table, p, false);
|
1025
1033
|
})
|
@@ -1087,8 +1095,8 @@
|
|
1087
1095
|
if ( !$(this).hasClass(p.cssDisabled) ) {
|
1088
1096
|
var size = $(this).val();
|
1089
1097
|
// in case there are more than one pager
|
1090
|
-
p.$container.find(p.cssGoto).val( size );
|
1091
1098
|
setPageSize(table, size, p);
|
1099
|
+
moveToPage(table, p);
|
1092
1100
|
changeHeight(table, p);
|
1093
1101
|
}
|
1094
1102
|
return false;
|
@@ -1122,6 +1130,8 @@
|
|
1122
1130
|
if (!p.ajax && !p.initialized) {
|
1123
1131
|
p.initializing = false;
|
1124
1132
|
p.initialized = true;
|
1133
|
+
// update page size on init
|
1134
|
+
setPageSize(table, p.size, p);
|
1125
1135
|
moveToPage(table, p);
|
1126
1136
|
if (c.debug) {
|
1127
1137
|
console.log('Pager: Triggering pagerInitialized');
|
@@ -4,7 +4,7 @@
|
|
4
4
|
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██▀▀ ▀▀▀██
|
5
5
|
█████▀ ▀████▀ ██ ██ ▀████▀ ██ ██ ██ ██ ▀████▀ █████▀ ██ ██ █████▀
|
6
6
|
*/
|
7
|
-
/*! tablesorter (FORK) - updated
|
7
|
+
/*! tablesorter (FORK) - updated 04-02-2017 (v2.28.6)*/
|
8
8
|
/* Includes widgets ( storage,uitheme,columns,filter,stickyHeaders,resizable,saveSort ) */
|
9
9
|
(function(factory) {
|
10
10
|
if (typeof define === 'function' && define.amd) {
|
@@ -16,7 +16,7 @@
|
|
16
16
|
}
|
17
17
|
}(function(jQuery) {
|
18
18
|
|
19
|
-
/*! TableSorter (FORK) v2.28.
|
19
|
+
/*! TableSorter (FORK) v2.28.6 *//*
|
20
20
|
* Client-side table sorting with ease!
|
21
21
|
* @requires jQuery v1.2.6+
|
22
22
|
*
|
@@ -40,7 +40,7 @@
|
|
40
40
|
'use strict';
|
41
41
|
var ts = $.tablesorter = {
|
42
42
|
|
43
|
-
version : '2.28.
|
43
|
+
version : '2.28.6',
|
44
44
|
|
45
45
|
parsers : [],
|
46
46
|
widgets : [],
|
@@ -380,7 +380,17 @@
|
|
380
380
|
.bind( 'sortReset' + namespace, function( e, callback ) {
|
381
381
|
e.stopPropagation();
|
382
382
|
// using this.config to ensure functions are getting a non-cached version of the config
|
383
|
-
ts.sortReset( this.config,
|
383
|
+
ts.sortReset( this.config, function( table ) {
|
384
|
+
if (table.isApplyingWidgets) {
|
385
|
+
// multiple triggers in a row... filterReset, then sortReset - see #1361
|
386
|
+
// wait to update widgets
|
387
|
+
setTimeout( function() {
|
388
|
+
ts.applyWidget( table, '', callback );
|
389
|
+
}, 100 );
|
390
|
+
} else {
|
391
|
+
ts.applyWidget( table, '', callback );
|
392
|
+
}
|
393
|
+
});
|
384
394
|
})
|
385
395
|
.bind( 'updateAll' + namespace, function( e, resort, callback ) {
|
386
396
|
e.stopPropagation();
|
@@ -449,7 +459,7 @@
|
|
449
459
|
var tmp = $.extend( true, {}, c.originalSettings );
|
450
460
|
// restore original settings; this clears out current settings, but does not clear
|
451
461
|
// values saved to storage.
|
452
|
-
c = $.extend( true, ts.defaults, tmp );
|
462
|
+
c = $.extend( true, {}, ts.defaults, tmp );
|
453
463
|
c.originalSettings = tmp;
|
454
464
|
this.hasInitialized = false;
|
455
465
|
// setup the entire table again
|
@@ -684,8 +694,9 @@
|
|
684
694
|
for ( indx = 0; indx < max; indx++ ) {
|
685
695
|
header = c.$headerIndexed[ colIndex ];
|
686
696
|
if ( header && header.length ) {
|
687
|
-
// get column indexed table cell
|
688
|
-
|
697
|
+
// get column indexed table cell; adding true parameter fixes #1362 but
|
698
|
+
// it would break backwards compatibility...
|
699
|
+
configHeaders = ts.getColumnData( table, c.headers, colIndex ); // , true );
|
689
700
|
// get column parser/extractor
|
690
701
|
extractor = ts.getParserById( ts.getData( header, configHeaders, 'extractor' ) );
|
691
702
|
parser = ts.getParserById( ts.getData( header, configHeaders, 'sorter' ) );
|
@@ -1786,6 +1797,10 @@
|
|
1786
1797
|
ts.setHeadersCss( c );
|
1787
1798
|
ts.multisort( c );
|
1788
1799
|
ts.appendCache( c );
|
1800
|
+
var indx;
|
1801
|
+
for (indx = 0; indx < c.columns; indx++) {
|
1802
|
+
c.sortVars[ indx ].count = -1;
|
1803
|
+
}
|
1789
1804
|
if ( $.isFunction( callback ) ) {
|
1790
1805
|
callback( c.table );
|
1791
1806
|
}
|
@@ -1928,14 +1943,15 @@
|
|
1928
1943
|
},
|
1929
1944
|
|
1930
1945
|
applyWidgetOptions : function( table ) {
|
1931
|
-
var indx, widget,
|
1946
|
+
var indx, widget, wo,
|
1932
1947
|
c = table.config,
|
1933
1948
|
len = c.widgets.length;
|
1934
1949
|
if ( len ) {
|
1935
1950
|
for ( indx = 0; indx < len; indx++ ) {
|
1936
1951
|
widget = ts.getWidgetById( c.widgets[ indx ] );
|
1937
1952
|
if ( widget && widget.options ) {
|
1938
|
-
|
1953
|
+
wo = $.extend( {}, widget.options );
|
1954
|
+
c.widgetOptions = $.extend( true, wo, c.widgetOptions );
|
1939
1955
|
// add widgetOptions to defaults for option validator
|
1940
1956
|
$.extend( true, ts.defaults.widgetOptions, widget.options );
|
1941
1957
|
}
|
@@ -2058,22 +2074,22 @@
|
|
2058
2074
|
}
|
2059
2075
|
}
|
2060
2076
|
if ( c.debug && console.groupEnd ) { console.groupEnd(); }
|
2061
|
-
// callback executed on init only
|
2062
|
-
if ( !init && typeof callback === 'function' ) {
|
2063
|
-
callback( table );
|
2064
|
-
}
|
2065
2077
|
}
|
2066
2078
|
c.timerReady = setTimeout( function() {
|
2067
2079
|
table.isApplyingWidgets = false;
|
2068
2080
|
$.data( table, 'lastWidgetApplication', new Date() );
|
2069
2081
|
c.$table.triggerHandler( 'tablesorter-ready' );
|
2082
|
+
// callback executed on init only
|
2083
|
+
if ( !init && typeof callback === 'function' ) {
|
2084
|
+
callback( table );
|
2085
|
+
}
|
2086
|
+
if ( c.debug ) {
|
2087
|
+
widget = c.widgets.length;
|
2088
|
+
console.log( 'Completed ' +
|
2089
|
+
( init === true ? 'initializing ' : 'applying ' ) + widget +
|
2090
|
+
' widget' + ( widget !== 1 ? 's' : '' ) + ts.benchmark( time ) );
|
2091
|
+
}
|
2070
2092
|
}, 10 );
|
2071
|
-
if ( c.debug ) {
|
2072
|
-
widget = c.widgets.length;
|
2073
|
-
console.log( 'Completed ' +
|
2074
|
-
( init === true ? 'initializing ' : 'applying ' ) + widget +
|
2075
|
-
' widget' + ( widget !== 1 ? 's' : '' ) + ts.benchmark( time ) );
|
2076
|
-
}
|
2077
2093
|
},
|
2078
2094
|
|
2079
2095
|
removeWidget : function( table, name, refreshing ) {
|
@@ -3188,7 +3204,7 @@
|
|
3188
3204
|
|
3189
3205
|
})(jQuery);
|
3190
3206
|
|
3191
|
-
/*! Widget: filter - updated
|
3207
|
+
/*! Widget: filter - updated 4/2/2017 (v2.28.6) *//*
|
3192
3208
|
* Requires tablesorter v2.8+ and jQuery 1.7+
|
3193
3209
|
* by Rob Garrison
|
3194
3210
|
*/
|
@@ -4073,7 +4089,7 @@
|
|
4073
4089
|
wo = c.widgetOptions,
|
4074
4090
|
filterArray = $.isArray( filter ),
|
4075
4091
|
filters = ( filterArray ) ? filter : ts.getFilters( table, true ),
|
4076
|
-
|
4092
|
+
currentFilters = filters || []; // current filter values
|
4077
4093
|
// prevent errors if delay init is set
|
4078
4094
|
if ( $.isEmptyObject( c.cache ) ) {
|
4079
4095
|
// update cache if delayInit set & pager has initialized ( after user initiates a search )
|
@@ -4087,7 +4103,10 @@
|
|
4087
4103
|
// add filter array back into inputs
|
4088
4104
|
if ( filterArray ) {
|
4089
4105
|
ts.setFilters( table, filters, false, skipFirst !== true );
|
4090
|
-
if ( !wo.filter_initialized ) {
|
4106
|
+
if ( !wo.filter_initialized ) {
|
4107
|
+
c.lastSearch = [];
|
4108
|
+
c.lastCombinedFilter = '';
|
4109
|
+
}
|
4091
4110
|
}
|
4092
4111
|
if ( wo.filter_hideFilters ) {
|
4093
4112
|
// show/hide filter row as needed
|
@@ -4097,11 +4116,11 @@
|
|
4097
4116
|
}
|
4098
4117
|
// return if the last search is the same; but filter === false when updating the search
|
4099
4118
|
// see example-widget-filter.html filter toggle buttons
|
4100
|
-
if ( c.
|
4119
|
+
if ( c.lastSearch.join(',') === currentFilters.join(',') && filter !== false ) {
|
4101
4120
|
return;
|
4102
4121
|
} else if ( filter === false ) {
|
4103
4122
|
// force filter refresh
|
4104
|
-
c.lastCombinedFilter =
|
4123
|
+
c.lastCombinedFilter = '';
|
4105
4124
|
c.lastSearch = [];
|
4106
4125
|
}
|
4107
4126
|
// define filter inside it is false
|
@@ -4118,11 +4137,11 @@
|
|
4118
4137
|
if ( c.showProcessing ) {
|
4119
4138
|
// give it time for the processing icon to kick in
|
4120
4139
|
setTimeout( function() {
|
4121
|
-
tsf.findRows( table, filters,
|
4140
|
+
tsf.findRows( table, filters, currentFilters );
|
4122
4141
|
return false;
|
4123
4142
|
}, 30 );
|
4124
4143
|
} else {
|
4125
|
-
tsf.findRows( table, filters,
|
4144
|
+
tsf.findRows( table, filters, currentFilters );
|
4126
4145
|
return false;
|
4127
4146
|
}
|
4128
4147
|
},
|
@@ -4444,9 +4463,11 @@
|
|
4444
4463
|
}
|
4445
4464
|
return showRow;
|
4446
4465
|
},
|
4447
|
-
findRows: function( table, filters,
|
4448
|
-
if (
|
4449
|
-
|
4466
|
+
findRows: function( table, filters, currentFilters ) {
|
4467
|
+
if (
|
4468
|
+
table.config.lastSearch.join(',') === ( currentFilters || [] ).join(',') ||
|
4469
|
+
!table.config.widgetOptions.filter_initialized
|
4470
|
+
) {
|
4450
4471
|
return;
|
4451
4472
|
}
|
4452
4473
|
var len, norm_rows, rowData, $rows, $row, rowIndex, tbodyIndex, $tbody, columnIndex,
|
@@ -4500,8 +4521,7 @@
|
|
4500
4521
|
// filtered rows count
|
4501
4522
|
c.filteredRows = 0;
|
4502
4523
|
c.totalRows = 0;
|
4503
|
-
|
4504
|
-
combinedFilters = ( storedFilters || [] ).join( '' );
|
4524
|
+
currentFilters = ( storedFilters || [] );
|
4505
4525
|
|
4506
4526
|
for ( tbodyIndex = 0; tbodyIndex < c.$tbodies.length; tbodyIndex++ ) {
|
4507
4527
|
$tbody = ts.processTbody( table, c.$tbodies.eq( tbodyIndex ), true );
|
@@ -4514,7 +4534,7 @@
|
|
4514
4534
|
return el[ columnIndex ].$row.get();
|
4515
4535
|
}) );
|
4516
4536
|
|
4517
|
-
if (
|
4537
|
+
if ( currentFilters.join('') === '' || wo.filter_serversideFiltering ) {
|
4518
4538
|
$rows
|
4519
4539
|
.removeClass( wo.filter_filteredRow )
|
4520
4540
|
.not( '.' + c.cssChildRow )
|
@@ -4689,7 +4709,8 @@
|
|
4689
4709
|
c.totalRows += $rows.length;
|
4690
4710
|
ts.processTbody( table, $tbody, false );
|
4691
4711
|
}
|
4692
|
-
|
4712
|
+
// lastCombinedFilter is no longer used internally
|
4713
|
+
c.lastCombinedFilter = storedFilters.join(''); // save last search
|
4693
4714
|
// don't save 'filters' directly since it may have altered ( AnyMatch column searches )
|
4694
4715
|
c.lastSearch = storedFilters;
|
4695
4716
|
c.$table.data( 'lastSearch', storedFilters );
|
@@ -4989,7 +5010,7 @@
|
|
4989
5010
|
if ( ( getRaw !== true && wo && !wo.filter_columnFilters ) ||
|
4990
5011
|
// setFilters called, but last search is exactly the same as the current
|
4991
5012
|
// fixes issue #733 & #903 where calling update causes the input values to reset
|
4992
|
-
( $.isArray(setFilters) && setFilters.join('') === c.
|
5013
|
+
( $.isArray(setFilters) && setFilters.join(',') === c.lastSearch.join(',') ) ) {
|
4993
5014
|
return $( table ).data( 'lastSearch' );
|
4994
5015
|
}
|
4995
5016
|
if ( c ) {
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/*! TableSorter (FORK) v2.28.
|
1
|
+
/*! TableSorter (FORK) v2.28.6 *//*
|
2
2
|
* Client-side table sorting with ease!
|
3
3
|
* @requires jQuery v1.2.6+
|
4
4
|
*
|
@@ -22,7 +22,7 @@
|
|
22
22
|
'use strict';
|
23
23
|
var ts = $.tablesorter = {
|
24
24
|
|
25
|
-
version : '2.28.
|
25
|
+
version : '2.28.6',
|
26
26
|
|
27
27
|
parsers : [],
|
28
28
|
widgets : [],
|
@@ -362,7 +362,17 @@
|
|
362
362
|
.bind( 'sortReset' + namespace, function( e, callback ) {
|
363
363
|
e.stopPropagation();
|
364
364
|
// using this.config to ensure functions are getting a non-cached version of the config
|
365
|
-
ts.sortReset( this.config,
|
365
|
+
ts.sortReset( this.config, function( table ) {
|
366
|
+
if (table.isApplyingWidgets) {
|
367
|
+
// multiple triggers in a row... filterReset, then sortReset - see #1361
|
368
|
+
// wait to update widgets
|
369
|
+
setTimeout( function() {
|
370
|
+
ts.applyWidget( table, '', callback );
|
371
|
+
}, 100 );
|
372
|
+
} else {
|
373
|
+
ts.applyWidget( table, '', callback );
|
374
|
+
}
|
375
|
+
});
|
366
376
|
})
|
367
377
|
.bind( 'updateAll' + namespace, function( e, resort, callback ) {
|
368
378
|
e.stopPropagation();
|
@@ -431,7 +441,7 @@
|
|
431
441
|
var tmp = $.extend( true, {}, c.originalSettings );
|
432
442
|
// restore original settings; this clears out current settings, but does not clear
|
433
443
|
// values saved to storage.
|
434
|
-
c = $.extend( true, ts.defaults, tmp );
|
444
|
+
c = $.extend( true, {}, ts.defaults, tmp );
|
435
445
|
c.originalSettings = tmp;
|
436
446
|
this.hasInitialized = false;
|
437
447
|
// setup the entire table again
|
@@ -666,8 +676,9 @@
|
|
666
676
|
for ( indx = 0; indx < max; indx++ ) {
|
667
677
|
header = c.$headerIndexed[ colIndex ];
|
668
678
|
if ( header && header.length ) {
|
669
|
-
// get column indexed table cell
|
670
|
-
|
679
|
+
// get column indexed table cell; adding true parameter fixes #1362 but
|
680
|
+
// it would break backwards compatibility...
|
681
|
+
configHeaders = ts.getColumnData( table, c.headers, colIndex ); // , true );
|
671
682
|
// get column parser/extractor
|
672
683
|
extractor = ts.getParserById( ts.getData( header, configHeaders, 'extractor' ) );
|
673
684
|
parser = ts.getParserById( ts.getData( header, configHeaders, 'sorter' ) );
|
@@ -1768,6 +1779,10 @@
|
|
1768
1779
|
ts.setHeadersCss( c );
|
1769
1780
|
ts.multisort( c );
|
1770
1781
|
ts.appendCache( c );
|
1782
|
+
var indx;
|
1783
|
+
for (indx = 0; indx < c.columns; indx++) {
|
1784
|
+
c.sortVars[ indx ].count = -1;
|
1785
|
+
}
|
1771
1786
|
if ( $.isFunction( callback ) ) {
|
1772
1787
|
callback( c.table );
|
1773
1788
|
}
|
@@ -1910,14 +1925,15 @@
|
|
1910
1925
|
},
|
1911
1926
|
|
1912
1927
|
applyWidgetOptions : function( table ) {
|
1913
|
-
var indx, widget,
|
1928
|
+
var indx, widget, wo,
|
1914
1929
|
c = table.config,
|
1915
1930
|
len = c.widgets.length;
|
1916
1931
|
if ( len ) {
|
1917
1932
|
for ( indx = 0; indx < len; indx++ ) {
|
1918
1933
|
widget = ts.getWidgetById( c.widgets[ indx ] );
|
1919
1934
|
if ( widget && widget.options ) {
|
1920
|
-
|
1935
|
+
wo = $.extend( {}, widget.options );
|
1936
|
+
c.widgetOptions = $.extend( true, wo, c.widgetOptions );
|
1921
1937
|
// add widgetOptions to defaults for option validator
|
1922
1938
|
$.extend( true, ts.defaults.widgetOptions, widget.options );
|
1923
1939
|
}
|
@@ -2040,22 +2056,22 @@
|
|
2040
2056
|
}
|
2041
2057
|
}
|
2042
2058
|
if ( c.debug && console.groupEnd ) { console.groupEnd(); }
|
2043
|
-
// callback executed on init only
|
2044
|
-
if ( !init && typeof callback === 'function' ) {
|
2045
|
-
callback( table );
|
2046
|
-
}
|
2047
2059
|
}
|
2048
2060
|
c.timerReady = setTimeout( function() {
|
2049
2061
|
table.isApplyingWidgets = false;
|
2050
2062
|
$.data( table, 'lastWidgetApplication', new Date() );
|
2051
2063
|
c.$table.triggerHandler( 'tablesorter-ready' );
|
2064
|
+
// callback executed on init only
|
2065
|
+
if ( !init && typeof callback === 'function' ) {
|
2066
|
+
callback( table );
|
2067
|
+
}
|
2068
|
+
if ( c.debug ) {
|
2069
|
+
widget = c.widgets.length;
|
2070
|
+
console.log( 'Completed ' +
|
2071
|
+
( init === true ? 'initializing ' : 'applying ' ) + widget +
|
2072
|
+
' widget' + ( widget !== 1 ? 's' : '' ) + ts.benchmark( time ) );
|
2073
|
+
}
|
2052
2074
|
}, 10 );
|
2053
|
-
if ( c.debug ) {
|
2054
|
-
widget = c.widgets.length;
|
2055
|
-
console.log( 'Completed ' +
|
2056
|
-
( init === true ? 'initializing ' : 'applying ' ) + widget +
|
2057
|
-
' widget' + ( widget !== 1 ? 's' : '' ) + ts.benchmark( time ) );
|
2058
|
-
}
|
2059
2075
|
},
|
2060
2076
|
|
2061
2077
|
removeWidget : function( table, name, refreshing ) {
|
@@ -4,7 +4,7 @@
|
|
4
4
|
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██▀▀ ▀▀▀██
|
5
5
|
█████▀ ▀████▀ ██ ██ ▀████▀ ██ ██ ██ ██ ▀████▀ █████▀ ██ ██ █████▀
|
6
6
|
*/
|
7
|
-
/*! tablesorter (FORK) - updated
|
7
|
+
/*! tablesorter (FORK) - updated 04-02-2017 (v2.28.6)*/
|
8
8
|
/* Includes widgets ( storage,uitheme,columns,filter,stickyHeaders,resizable,saveSort ) */
|
9
9
|
(function(factory) {
|
10
10
|
if (typeof define === 'function' && define.amd) {
|
@@ -393,7 +393,7 @@
|
|
393
393
|
|
394
394
|
})(jQuery);
|
395
395
|
|
396
|
-
/*! Widget: filter - updated
|
396
|
+
/*! Widget: filter - updated 4/2/2017 (v2.28.6) *//*
|
397
397
|
* Requires tablesorter v2.8+ and jQuery 1.7+
|
398
398
|
* by Rob Garrison
|
399
399
|
*/
|
@@ -1278,7 +1278,7 @@
|
|
1278
1278
|
wo = c.widgetOptions,
|
1279
1279
|
filterArray = $.isArray( filter ),
|
1280
1280
|
filters = ( filterArray ) ? filter : ts.getFilters( table, true ),
|
1281
|
-
|
1281
|
+
currentFilters = filters || []; // current filter values
|
1282
1282
|
// prevent errors if delay init is set
|
1283
1283
|
if ( $.isEmptyObject( c.cache ) ) {
|
1284
1284
|
// update cache if delayInit set & pager has initialized ( after user initiates a search )
|
@@ -1292,7 +1292,10 @@
|
|
1292
1292
|
// add filter array back into inputs
|
1293
1293
|
if ( filterArray ) {
|
1294
1294
|
ts.setFilters( table, filters, false, skipFirst !== true );
|
1295
|
-
if ( !wo.filter_initialized ) {
|
1295
|
+
if ( !wo.filter_initialized ) {
|
1296
|
+
c.lastSearch = [];
|
1297
|
+
c.lastCombinedFilter = '';
|
1298
|
+
}
|
1296
1299
|
}
|
1297
1300
|
if ( wo.filter_hideFilters ) {
|
1298
1301
|
// show/hide filter row as needed
|
@@ -1302,11 +1305,11 @@
|
|
1302
1305
|
}
|
1303
1306
|
// return if the last search is the same; but filter === false when updating the search
|
1304
1307
|
// see example-widget-filter.html filter toggle buttons
|
1305
|
-
if ( c.
|
1308
|
+
if ( c.lastSearch.join(',') === currentFilters.join(',') && filter !== false ) {
|
1306
1309
|
return;
|
1307
1310
|
} else if ( filter === false ) {
|
1308
1311
|
// force filter refresh
|
1309
|
-
c.lastCombinedFilter =
|
1312
|
+
c.lastCombinedFilter = '';
|
1310
1313
|
c.lastSearch = [];
|
1311
1314
|
}
|
1312
1315
|
// define filter inside it is false
|
@@ -1323,11 +1326,11 @@
|
|
1323
1326
|
if ( c.showProcessing ) {
|
1324
1327
|
// give it time for the processing icon to kick in
|
1325
1328
|
setTimeout( function() {
|
1326
|
-
tsf.findRows( table, filters,
|
1329
|
+
tsf.findRows( table, filters, currentFilters );
|
1327
1330
|
return false;
|
1328
1331
|
}, 30 );
|
1329
1332
|
} else {
|
1330
|
-
tsf.findRows( table, filters,
|
1333
|
+
tsf.findRows( table, filters, currentFilters );
|
1331
1334
|
return false;
|
1332
1335
|
}
|
1333
1336
|
},
|
@@ -1649,9 +1652,11 @@
|
|
1649
1652
|
}
|
1650
1653
|
return showRow;
|
1651
1654
|
},
|
1652
|
-
findRows: function( table, filters,
|
1653
|
-
if (
|
1654
|
-
|
1655
|
+
findRows: function( table, filters, currentFilters ) {
|
1656
|
+
if (
|
1657
|
+
table.config.lastSearch.join(',') === ( currentFilters || [] ).join(',') ||
|
1658
|
+
!table.config.widgetOptions.filter_initialized
|
1659
|
+
) {
|
1655
1660
|
return;
|
1656
1661
|
}
|
1657
1662
|
var len, norm_rows, rowData, $rows, $row, rowIndex, tbodyIndex, $tbody, columnIndex,
|
@@ -1705,8 +1710,7 @@
|
|
1705
1710
|
// filtered rows count
|
1706
1711
|
c.filteredRows = 0;
|
1707
1712
|
c.totalRows = 0;
|
1708
|
-
|
1709
|
-
combinedFilters = ( storedFilters || [] ).join( '' );
|
1713
|
+
currentFilters = ( storedFilters || [] );
|
1710
1714
|
|
1711
1715
|
for ( tbodyIndex = 0; tbodyIndex < c.$tbodies.length; tbodyIndex++ ) {
|
1712
1716
|
$tbody = ts.processTbody( table, c.$tbodies.eq( tbodyIndex ), true );
|
@@ -1719,7 +1723,7 @@
|
|
1719
1723
|
return el[ columnIndex ].$row.get();
|
1720
1724
|
}) );
|
1721
1725
|
|
1722
|
-
if (
|
1726
|
+
if ( currentFilters.join('') === '' || wo.filter_serversideFiltering ) {
|
1723
1727
|
$rows
|
1724
1728
|
.removeClass( wo.filter_filteredRow )
|
1725
1729
|
.not( '.' + c.cssChildRow )
|
@@ -1894,7 +1898,8 @@
|
|
1894
1898
|
c.totalRows += $rows.length;
|
1895
1899
|
ts.processTbody( table, $tbody, false );
|
1896
1900
|
}
|
1897
|
-
|
1901
|
+
// lastCombinedFilter is no longer used internally
|
1902
|
+
c.lastCombinedFilter = storedFilters.join(''); // save last search
|
1898
1903
|
// don't save 'filters' directly since it may have altered ( AnyMatch column searches )
|
1899
1904
|
c.lastSearch = storedFilters;
|
1900
1905
|
c.$table.data( 'lastSearch', storedFilters );
|
@@ -2194,7 +2199,7 @@
|
|
2194
2199
|
if ( ( getRaw !== true && wo && !wo.filter_columnFilters ) ||
|
2195
2200
|
// setFilters called, but last search is exactly the same as the current
|
2196
2201
|
// fixes issue #733 & #903 where calling update causes the input values to reset
|
2197
|
-
( $.isArray(setFilters) && setFilters.join('') === c.
|
2202
|
+
( $.isArray(setFilters) && setFilters.join(',') === c.lastSearch.join(',') ) ) {
|
2198
2203
|
return $( table ).data( 'lastSearch' );
|
2199
2204
|
}
|
2200
2205
|
if ( c ) {
|
@@ -0,0 +1,33 @@
|
|
1
|
+
/*! Parser: leading zeros - updated 4/2/2017 (v2.28.6) */
|
2
|
+
/* jshint jquery:true, unused:false */
|
3
|
+
;( function( $ ) {
|
4
|
+
'use strict';
|
5
|
+
|
6
|
+
var ts = $.tablesorter,
|
7
|
+
// modify this value to increase precision as needed
|
8
|
+
precision = 1e-10;
|
9
|
+
|
10
|
+
ts.addParser({
|
11
|
+
id: 'leadingZeros',
|
12
|
+
is: function() {
|
13
|
+
return false;
|
14
|
+
},
|
15
|
+
format: function( s, table ) {
|
16
|
+
var val = ( s || '' ).replace( ts.regex.nondigit, '' ),
|
17
|
+
number = ts.formatFloat( val, table ),
|
18
|
+
str = number.toString();
|
19
|
+
if (
|
20
|
+
!isNaN( number ) &&
|
21
|
+
number == val && // jshint ignore:line
|
22
|
+
val.length !== str.length
|
23
|
+
) {
|
24
|
+
// subtract a decimal equivalent of the string length
|
25
|
+
// so "0001" sorts before "01"
|
26
|
+
number -= precision * ( s.length - str.length );
|
27
|
+
}
|
28
|
+
return number;
|
29
|
+
},
|
30
|
+
type: 'number'
|
31
|
+
});
|
32
|
+
|
33
|
+
})( jQuery );
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/*! Widget: Build Table - updated
|
1
|
+
/*! Widget: Build Table - updated 4/2/2017 (v2.28.6) *//*
|
2
2
|
* for tableSorter v2.16.0+
|
3
3
|
* by Rob Garrison
|
4
4
|
*/
|
@@ -12,6 +12,8 @@
|
|
12
12
|
// data.header contains an array of header titles
|
13
13
|
// data.rows contains an array of rows which contains an array of cells
|
14
14
|
bt = ts.buildTable = function(tar, c){
|
15
|
+
// add build options to defaults to prevent warnings
|
16
|
+
$.extend(true, ts.defaults.widgetOptions, bt.defaults);
|
15
17
|
// add table if one doesn't exist
|
16
18
|
var $tbl = tar.nodeName === 'TABLE' ? $(tar) : $('<table>').appendTo(tar),
|
17
19
|
table = $tbl[0],
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/*! Widget: filter - updated
|
1
|
+
/*! Widget: filter - updated 4/2/2017 (v2.28.6) *//*
|
2
2
|
* Requires tablesorter v2.8+ and jQuery 1.7+
|
3
3
|
* by Rob Garrison
|
4
4
|
*/
|
@@ -883,7 +883,7 @@
|
|
883
883
|
wo = c.widgetOptions,
|
884
884
|
filterArray = $.isArray( filter ),
|
885
885
|
filters = ( filterArray ) ? filter : ts.getFilters( table, true ),
|
886
|
-
|
886
|
+
currentFilters = filters || []; // current filter values
|
887
887
|
// prevent errors if delay init is set
|
888
888
|
if ( $.isEmptyObject( c.cache ) ) {
|
889
889
|
// update cache if delayInit set & pager has initialized ( after user initiates a search )
|
@@ -897,7 +897,10 @@
|
|
897
897
|
// add filter array back into inputs
|
898
898
|
if ( filterArray ) {
|
899
899
|
ts.setFilters( table, filters, false, skipFirst !== true );
|
900
|
-
if ( !wo.filter_initialized ) {
|
900
|
+
if ( !wo.filter_initialized ) {
|
901
|
+
c.lastSearch = [];
|
902
|
+
c.lastCombinedFilter = '';
|
903
|
+
}
|
901
904
|
}
|
902
905
|
if ( wo.filter_hideFilters ) {
|
903
906
|
// show/hide filter row as needed
|
@@ -907,11 +910,11 @@
|
|
907
910
|
}
|
908
911
|
// return if the last search is the same; but filter === false when updating the search
|
909
912
|
// see example-widget-filter.html filter toggle buttons
|
910
|
-
if ( c.
|
913
|
+
if ( c.lastSearch.join(',') === currentFilters.join(',') && filter !== false ) {
|
911
914
|
return;
|
912
915
|
} else if ( filter === false ) {
|
913
916
|
// force filter refresh
|
914
|
-
c.lastCombinedFilter =
|
917
|
+
c.lastCombinedFilter = '';
|
915
918
|
c.lastSearch = [];
|
916
919
|
}
|
917
920
|
// define filter inside it is false
|
@@ -928,11 +931,11 @@
|
|
928
931
|
if ( c.showProcessing ) {
|
929
932
|
// give it time for the processing icon to kick in
|
930
933
|
setTimeout( function() {
|
931
|
-
tsf.findRows( table, filters,
|
934
|
+
tsf.findRows( table, filters, currentFilters );
|
932
935
|
return false;
|
933
936
|
}, 30 );
|
934
937
|
} else {
|
935
|
-
tsf.findRows( table, filters,
|
938
|
+
tsf.findRows( table, filters, currentFilters );
|
936
939
|
return false;
|
937
940
|
}
|
938
941
|
},
|
@@ -1254,9 +1257,11 @@
|
|
1254
1257
|
}
|
1255
1258
|
return showRow;
|
1256
1259
|
},
|
1257
|
-
findRows: function( table, filters,
|
1258
|
-
if (
|
1259
|
-
|
1260
|
+
findRows: function( table, filters, currentFilters ) {
|
1261
|
+
if (
|
1262
|
+
table.config.lastSearch.join(',') === ( currentFilters || [] ).join(',') ||
|
1263
|
+
!table.config.widgetOptions.filter_initialized
|
1264
|
+
) {
|
1260
1265
|
return;
|
1261
1266
|
}
|
1262
1267
|
var len, norm_rows, rowData, $rows, $row, rowIndex, tbodyIndex, $tbody, columnIndex,
|
@@ -1310,8 +1315,7 @@
|
|
1310
1315
|
// filtered rows count
|
1311
1316
|
c.filteredRows = 0;
|
1312
1317
|
c.totalRows = 0;
|
1313
|
-
|
1314
|
-
combinedFilters = ( storedFilters || [] ).join( '' );
|
1318
|
+
currentFilters = ( storedFilters || [] );
|
1315
1319
|
|
1316
1320
|
for ( tbodyIndex = 0; tbodyIndex < c.$tbodies.length; tbodyIndex++ ) {
|
1317
1321
|
$tbody = ts.processTbody( table, c.$tbodies.eq( tbodyIndex ), true );
|
@@ -1324,7 +1328,7 @@
|
|
1324
1328
|
return el[ columnIndex ].$row.get();
|
1325
1329
|
}) );
|
1326
1330
|
|
1327
|
-
if (
|
1331
|
+
if ( currentFilters.join('') === '' || wo.filter_serversideFiltering ) {
|
1328
1332
|
$rows
|
1329
1333
|
.removeClass( wo.filter_filteredRow )
|
1330
1334
|
.not( '.' + c.cssChildRow )
|
@@ -1499,7 +1503,8 @@
|
|
1499
1503
|
c.totalRows += $rows.length;
|
1500
1504
|
ts.processTbody( table, $tbody, false );
|
1501
1505
|
}
|
1502
|
-
|
1506
|
+
// lastCombinedFilter is no longer used internally
|
1507
|
+
c.lastCombinedFilter = storedFilters.join(''); // save last search
|
1503
1508
|
// don't save 'filters' directly since it may have altered ( AnyMatch column searches )
|
1504
1509
|
c.lastSearch = storedFilters;
|
1505
1510
|
c.$table.data( 'lastSearch', storedFilters );
|
@@ -1799,7 +1804,7 @@
|
|
1799
1804
|
if ( ( getRaw !== true && wo && !wo.filter_columnFilters ) ||
|
1800
1805
|
// setFilters called, but last search is exactly the same as the current
|
1801
1806
|
// fixes issue #733 & #903 where calling update causes the input values to reset
|
1802
|
-
( $.isArray(setFilters) && setFilters.join('') === c.
|
1807
|
+
( $.isArray(setFilters) && setFilters.join(',') === c.lastSearch.join(',') ) ) {
|
1803
1808
|
return $( table ).data( 'lastSearch' );
|
1804
1809
|
}
|
1805
1810
|
if ( c ) {
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/*! Widget: output - updated
|
1
|
+
/*! Widget: output - updated 4/2/2017 (v2.28.6) *//*
|
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?)
|
@@ -85,7 +85,7 @@
|
|
85
85
|
colspanLen = parseInt( $cell.attr('colspan'), 10) - 1;
|
86
86
|
// allow data-attribute to be an empty string
|
87
87
|
txt = output.formatData( c, wo, $cell, isHeader );
|
88
|
-
for (col =
|
88
|
+
for (col = 0; col < colspanLen; col++) {
|
89
89
|
// if we're processing the header & making JSON, the header names need to be unique
|
90
90
|
if ($cell.filter('[rowspan]').length) {
|
91
91
|
rowspanLen = parseInt( $cell.attr('rowspan'), 10);
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/*! Widget: Pager - updated
|
1
|
+
/*! Widget: Pager - updated 4/2/2017 (v2.28.6) */
|
2
2
|
/* Requires tablesorter v2.8+ and jQuery 1.7+
|
3
3
|
* by Rob Garrison
|
4
4
|
*/
|
@@ -180,8 +180,7 @@
|
|
180
180
|
t = ts.storage( table, wo.pager_storageKey ) || {}; // fixes #387
|
181
181
|
p.page = ( isNaN( t.page ) ? p.page : t.page ) || p.setPage || 0;
|
182
182
|
p.size = t.size === 'all' ? t.size : ( isNaN( t.size ) ? p.size : t.size ) || p.setSize || 10;
|
183
|
-
|
184
|
-
p.$container.find( s.pageSize ).val( p.size );
|
183
|
+
tsp.setPageSize( c, p.size );
|
185
184
|
}
|
186
185
|
|
187
186
|
// skipped rows
|
@@ -219,7 +218,6 @@
|
|
219
218
|
initComplete: function( c ) {
|
220
219
|
var p = c.pager;
|
221
220
|
tsp.bindEvents( c );
|
222
|
-
tsp.setPageSize( c, 0 ); // page size 0 is ignored
|
223
221
|
if ( !p.ajax ) {
|
224
222
|
tsp.hideRowsSetup( c );
|
225
223
|
}
|
@@ -228,6 +226,7 @@
|
|
228
226
|
p.initialized = true;
|
229
227
|
p.initializing = false;
|
230
228
|
p.isInitializing = false;
|
229
|
+
tsp.setPageSize( c, p.size ); // page size 0 is ignored
|
231
230
|
if ( c.debug ) {
|
232
231
|
console.log( 'Pager: Triggering pagerInitialized' );
|
233
232
|
}
|
@@ -252,7 +251,8 @@
|
|
252
251
|
p.currentFilters = $.isArray( filters ) ? filters : c.$table.data( 'lastSearch' );
|
253
252
|
// don't change page if filters are the same (pager updating, etc)
|
254
253
|
if ( e.type === 'filterStart' && wo.pager_pageReset !== false &&
|
255
|
-
( c.
|
254
|
+
( c.lastSearch || [] ).join( ',' ) !== ( p.currentFilters || [] ).join( ',' )
|
255
|
+
) {
|
256
256
|
p.page = wo.pager_pageReset; // fixes #456 & #565
|
257
257
|
}
|
258
258
|
})
|
@@ -309,6 +309,7 @@
|
|
309
309
|
.on( 'pageSize refreshComplete '.split( ' ' ).join( namespace + ' ' ), function( e, size ) {
|
310
310
|
e.stopPropagation();
|
311
311
|
tsp.setPageSize( c, tsp.parsePageSize( c, size, 'get' ) );
|
312
|
+
tsp.moveToPage( c, p, true );
|
312
313
|
tsp.hideRows( c );
|
313
314
|
tsp.updatePageDisplay( c, false );
|
314
315
|
})
|
@@ -381,6 +382,7 @@
|
|
381
382
|
// in case there are more than one pager
|
382
383
|
p.$container.find( wo.pager_selectors.pageSize ).val( size );
|
383
384
|
tsp.setPageSize( c, size );
|
385
|
+
tsp.moveToPage( c, p, true );
|
384
386
|
tsp.changeHeight( c );
|
385
387
|
}
|
386
388
|
return false;
|
@@ -693,8 +695,7 @@
|
|
693
695
|
$el = p.$container.find( c.widgetOptions.pager_selectors.pageSize ),
|
694
696
|
size = $el.val();
|
695
697
|
p.size = tsp.parsePageSize( c, size, 'get' );
|
696
|
-
|
697
|
-
$.data( c.table, 'pagerLastSize', p.size );
|
698
|
+
tsp.setPageSize( c, p.size );
|
698
699
|
tsp.pagerArrows( c );
|
699
700
|
if ( !c.widgetOptions.pager_removeRows ) {
|
700
701
|
tsp.hideRows( c );
|
@@ -1002,7 +1003,7 @@
|
|
1002
1003
|
$.data( table, 'pagerLastPage', p.page );
|
1003
1004
|
$.data( table, 'pagerLastSize', p.size );
|
1004
1005
|
p.page = 0;
|
1005
|
-
p.size =
|
1006
|
+
p.size = p.totalPages;
|
1006
1007
|
p.totalPages = 1;
|
1007
1008
|
c.$table
|
1008
1009
|
.addClass( 'pagerDisabled' )
|
@@ -1127,16 +1128,9 @@
|
|
1127
1128
|
},
|
1128
1129
|
|
1129
1130
|
getTotalPages: function( c, p ) {
|
1130
|
-
return ts.hasWidget( c.table, 'filter' ) ?
|
1131
|
-
|
1132
|
-
|
1133
|
-
// set to either set or get value
|
1134
|
-
parsePageSize: function( c, size, mode ) {
|
1135
|
-
var p = c.pager,
|
1136
|
-
s = parseInt( size, 10 ) || p.size || c.widgetOptions.pager_size || 10;
|
1137
|
-
return p.initialized && (/all/i.test( size ) || s === p.totalRows) ?
|
1138
|
-
// "get" to set `p.size` or "set" to set `pageSize.val()`
|
1139
|
-
'all' : ( mode === 'get' ? s : p.size );
|
1131
|
+
return ts.hasWidget( c.table, 'filter' ) ?
|
1132
|
+
Math.min( p.totalPages, p.filteredPages ) :
|
1133
|
+
p.totalPages;
|
1140
1134
|
},
|
1141
1135
|
|
1142
1136
|
parsePageNumber: function( c, p ) {
|
@@ -1147,18 +1141,32 @@
|
|
1147
1141
|
return p.page;
|
1148
1142
|
},
|
1149
1143
|
|
1144
|
+
// set to either set or get value
|
1145
|
+
parsePageSize: function( c, size, mode ) {
|
1146
|
+
var p = c.pager,
|
1147
|
+
wo = c.widgetOptions,
|
1148
|
+
s = parseInt( size, 10 ) || p.size || wo.pager_size || 10;
|
1149
|
+
if (p.initialized && (/all/i.test( s + ' ' + size ) || s === p.totalRows)) {
|
1150
|
+
// Fixing #1364 & #1366
|
1151
|
+
return p.$container.find( wo.pager_selectors.pageSize + ' option[value="all"]').length ?
|
1152
|
+
'all' : p.totalRows;
|
1153
|
+
}
|
1154
|
+
// "get" to set `p.size` or "set" to set `pageSize.val()`
|
1155
|
+
return mode === 'get' ? s : p.size;
|
1156
|
+
},
|
1157
|
+
|
1150
1158
|
setPageSize: function( c, size ) {
|
1151
1159
|
var p = c.pager,
|
1152
1160
|
table = c.table;
|
1161
|
+
// "all" size is only returned if an "all" option exists - fixes #1366
|
1153
1162
|
p.size = tsp.parsePageSize( c, size, 'get' );
|
1154
1163
|
p.$container
|
1155
1164
|
.find( c.widgetOptions.pager_selectors.pageSize )
|
1156
|
-
.val(
|
1165
|
+
.val( p.size );
|
1157
1166
|
$.data( table, 'pagerLastPage', tsp.parsePageNumber( c, p ) );
|
1158
1167
|
$.data( table, 'pagerLastSize', p.size );
|
1159
1168
|
p.totalPages = p.size === 'all' ? 1 : Math.ceil( p.totalRows / p.size );
|
1160
1169
|
p.filteredPages = p.size === 'all' ? 1 : Math.ceil( p.filteredRows / p.size );
|
1161
|
-
tsp.moveToPage( c, p, true );
|
1162
1170
|
},
|
1163
1171
|
|
1164
1172
|
moveToFirstPage: function( c, p ) {
|
@@ -1227,7 +1235,7 @@
|
|
1227
1235
|
p.page = $.data( table, 'pagerLastPage' ) || p.page || 0;
|
1228
1236
|
size = $el.find('option[selected]' ).val();
|
1229
1237
|
p.size = $.data( table, 'pagerLastSize' ) || tsp.parsePageSize( c, size, 'get' );
|
1230
|
-
|
1238
|
+
tsp.setPageSize( c, p.size ); // set page size
|
1231
1239
|
p.totalPages = p.size === 'all' ? 1 : Math.ceil( tsp.getTotalPages( c, p ) / p.size );
|
1232
1240
|
c.$table.removeClass( 'pagerDisabled' );
|
1233
1241
|
// if table id exists, include page display with aria info
|
@@ -1246,6 +1254,7 @@
|
|
1246
1254
|
// tablesorter core update table
|
1247
1255
|
ts.update( c );
|
1248
1256
|
tsp.setPageSize( c, p.size );
|
1257
|
+
tsp.moveToPage( c, p, true );
|
1249
1258
|
tsp.hideRowsSetup( c );
|
1250
1259
|
if ( c.debug ) {
|
1251
1260
|
console.log( 'Pager: Enabled' );
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/*! Widget: sort2Hash (BETA) - updated
|
1
|
+
/*! Widget: sort2Hash (BETA) - updated 4/2/2017 (v2.28.6) */
|
2
2
|
/* Requires tablesorter v2.8+ and jQuery 1.7+
|
3
3
|
* by Rob Garrison
|
4
4
|
*/
|
@@ -227,15 +227,14 @@
|
|
227
227
|
sort2Hash_separator : '-', // don't '#' or '=' here
|
228
228
|
sort2Hash_headerTextAttr : 'data-header', // data attribute containing alternate header text
|
229
229
|
sort2Hash_directionText : [ 0, 1 ], // [ 'asc', 'desc' ],
|
230
|
-
sort2Hash_overrideSaveSort : false
|
230
|
+
sort2Hash_overrideSaveSort : false, // if true, override saveSort widget if saved sort available
|
231
231
|
|
232
|
-
//
|
233
|
-
|
234
|
-
// sort2Hash_tableId : null, // this option > table ID > table index on page,
|
232
|
+
// this option > table ID > table index on page
|
233
|
+
sort2Hash_tableId : null,
|
235
234
|
// custom hash processing functions
|
236
|
-
|
237
|
-
|
238
|
-
|
235
|
+
sort2Hash_encodeHash : null,
|
236
|
+
sort2Hash_decodeHash : null,
|
237
|
+
sort2Hash_cleanHash : null
|
239
238
|
},
|
240
239
|
init: function(table, thisWidget, c, wo) {
|
241
240
|
s2h.init( c, wo );
|
@@ -0,0 +1,104 @@
|
|
1
|
+
/* CSS Column & Row Hightlights - matches the blue theme
|
2
|
+
* See https://mottie.github.io/tablesorter/docs/example-css-highlighting.html
|
3
|
+
*/
|
4
|
+
table.hover-highlight td:before,
|
5
|
+
table.focus-highlight td:before {
|
6
|
+
background: #fff;
|
7
|
+
}
|
8
|
+
|
9
|
+
/* ODD ZEBRA STRIPE color (needs zebra widget) */
|
10
|
+
.hover-highlight .odd td:before, .hover-highlight .odd th:before,
|
11
|
+
.focus-highlight .odd td:before, .focus-highlight .odd th:before {
|
12
|
+
background: #ebf2fa;
|
13
|
+
}
|
14
|
+
/* EVEN ZEBRA STRIPE color (needs zebra widget) */
|
15
|
+
.hover-highlight .even td:before, .hover-highlight .even th:before,
|
16
|
+
.focus-highlight .even td:before, .focus-highlight .even th:before {
|
17
|
+
background-color: #fff;
|
18
|
+
}
|
19
|
+
|
20
|
+
/* FOCUS ROW highlight color (touch devices) */
|
21
|
+
.focus-highlight td:focus::before, .focus-highlight th:focus::before {
|
22
|
+
background-color: lightblue;
|
23
|
+
}
|
24
|
+
/* FOCUS COLUMN highlight color (touch devices) */
|
25
|
+
.focus-highlight td:focus::after, .focus-highlight th:focus::after {
|
26
|
+
background-color: lightblue;
|
27
|
+
}
|
28
|
+
/* FOCUS CELL highlight color */
|
29
|
+
.focus-highlight th:focus, .focus-highlight td:focus,
|
30
|
+
.focus-highlight .even th:focus, .focus-highlight .even td:focus,
|
31
|
+
.focus-highlight .odd th:focus, .focus-highlight .odd td:focus {
|
32
|
+
background-color: #d9d9d9;
|
33
|
+
color: #333;
|
34
|
+
}
|
35
|
+
|
36
|
+
/* HOVER ROW highlight colors */
|
37
|
+
table.hover-highlight tbody > tr:hover > td, /* override tablesorter theme row hover */
|
38
|
+
table.hover-highlight tbody > tr.odd:hover > td,
|
39
|
+
table.hover-highlight tbody > tr.even:hover > td {
|
40
|
+
background-color: #ffa;
|
41
|
+
}
|
42
|
+
/* HOVER COLUMN highlight colors */
|
43
|
+
.hover-highlight tbody tr td:hover::after,
|
44
|
+
.hover-highlight tbody tr th:hover::after {
|
45
|
+
background-color: #ffa;
|
46
|
+
}
|
47
|
+
|
48
|
+
/* ************************************************* */
|
49
|
+
/* **** No need to modify the definitions below **** */
|
50
|
+
/* ************************************************* */
|
51
|
+
.focus-highlight td:focus::after, .focus-highlight th:focus::after,
|
52
|
+
.hover-highlight td:hover::after, .hover-highlight th:hover::after {
|
53
|
+
content: '';
|
54
|
+
position: absolute;
|
55
|
+
width: 100%;
|
56
|
+
height: 999em;
|
57
|
+
left: 0;
|
58
|
+
top: -555em;
|
59
|
+
z-index: -1;
|
60
|
+
}
|
61
|
+
.focus-highlight td:focus::before, .focus-highlight th:focus::before {
|
62
|
+
content: '';
|
63
|
+
position: absolute;
|
64
|
+
width: 999em;
|
65
|
+
height: 100%;
|
66
|
+
left: -555em;
|
67
|
+
top: 0;
|
68
|
+
z-index: -2;
|
69
|
+
}
|
70
|
+
/* required styles */
|
71
|
+
.hover-highlight,
|
72
|
+
.focus-highlight {
|
73
|
+
overflow: hidden;
|
74
|
+
}
|
75
|
+
.hover-highlight td, .hover-highlight th,
|
76
|
+
.focus-highlight td, .focus-highlight th {
|
77
|
+
position: relative;
|
78
|
+
outline: 0;
|
79
|
+
}
|
80
|
+
/* override the tablesorter theme styling */
|
81
|
+
table.hover-highlight, table.hover-highlight tbody > tr > td,
|
82
|
+
table.focus-highlight, table.focus-highlight tbody > tr > td,
|
83
|
+
/* override zebra styling */
|
84
|
+
table.hover-highlight tbody tr.even > th,
|
85
|
+
table.hover-highlight tbody tr.even > td,
|
86
|
+
table.hover-highlight tbody tr.odd > th,
|
87
|
+
table.hover-highlight tbody tr.odd > td,
|
88
|
+
table.focus-highlight tbody tr.even > th,
|
89
|
+
table.focus-highlight tbody tr.even > td,
|
90
|
+
table.focus-highlight tbody tr.odd > th,
|
91
|
+
table.focus-highlight tbody tr.odd > td {
|
92
|
+
background: transparent;
|
93
|
+
}
|
94
|
+
/* table background positioned under the highlight */
|
95
|
+
table.hover-highlight td:before,
|
96
|
+
table.focus-highlight td:before {
|
97
|
+
content: '';
|
98
|
+
position: absolute;
|
99
|
+
width: 100%;
|
100
|
+
height: 100%;
|
101
|
+
left: 0;
|
102
|
+
top: 0;
|
103
|
+
z-index: -3;
|
104
|
+
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jquery-tablesorter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.23.
|
4
|
+
version: 1.23.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jun Lin
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-02
|
12
|
+
date: 2017-04-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: railties
|
@@ -103,6 +103,7 @@ files:
|
|
103
103
|
- vendor/assets/javascripts/jquery-tablesorter/parsers/parser-ignore-articles.js
|
104
104
|
- vendor/assets/javascripts/jquery-tablesorter/parsers/parser-image.js
|
105
105
|
- vendor/assets/javascripts/jquery-tablesorter/parsers/parser-input-select.js
|
106
|
+
- vendor/assets/javascripts/jquery-tablesorter/parsers/parser-leading-zeros.js
|
106
107
|
- vendor/assets/javascripts/jquery-tablesorter/parsers/parser-metric.js
|
107
108
|
- vendor/assets/javascripts/jquery-tablesorter/parsers/parser-named-numbers.js
|
108
109
|
- vendor/assets/javascripts/jquery-tablesorter/parsers/parser-network.js
|
@@ -145,6 +146,7 @@ files:
|
|
145
146
|
- vendor/assets/stylesheets/jquery-tablesorter/addons/pager/jquery.tablesorter.pager.css
|
146
147
|
- vendor/assets/stylesheets/jquery-tablesorter/dragtable.mod.css
|
147
148
|
- vendor/assets/stylesheets/jquery-tablesorter/filter.formatter.css
|
149
|
+
- vendor/assets/stylesheets/jquery-tablesorter/highlights.css
|
148
150
|
- vendor/assets/stylesheets/jquery-tablesorter/theme.black-ice.css
|
149
151
|
- vendor/assets/stylesheets/jquery-tablesorter/theme.blue.css
|
150
152
|
- vendor/assets/stylesheets/jquery-tablesorter/theme.bootstrap.css
|
@@ -181,7 +183,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
181
183
|
version: '0'
|
182
184
|
requirements: []
|
183
185
|
rubyforge_project:
|
184
|
-
rubygems_version: 2.
|
186
|
+
rubygems_version: 2.6.11
|
185
187
|
signing_key:
|
186
188
|
specification_version: 4
|
187
189
|
summary: Simple integration of jquery-tablesorter (Mottie's fork) into the Rails asset
|