jquery-tablesorter 1.23.5 → 1.23.6
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 +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
|