jquery-tablesorter 1.21.4 → 1.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/jquery-tablesorter/version.rb +2 -2
- data/vendor/assets/images/jquery-tablesorter/bootstrap-black-unsorted.png +0 -0
- data/vendor/assets/images/jquery-tablesorter/metro-black-asc.png +0 -0
- data/vendor/assets/images/jquery-tablesorter/metro-black-desc.png +0 -0
- data/vendor/assets/images/jquery-tablesorter/metro-white-asc.png +0 -0
- data/vendor/assets/images/jquery-tablesorter/metro-white-desc.png +0 -0
- data/vendor/assets/javascripts/jquery-tablesorter/jquery.tablesorter.combined.js +63 -43
- data/vendor/assets/javascripts/jquery-tablesorter/jquery.tablesorter.js +33 -21
- data/vendor/assets/javascripts/jquery-tablesorter/jquery.tablesorter.widgets.js +30 -22
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-columnSelector.js +62 -24
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-currentSort.js +60 -0
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-filter.js +13 -10
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-grouping.js +3 -3
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-mark.js +135 -0
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-math.js +24 -15
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-output.js +4 -4
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-scroller.js +4 -2
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-stickyHeaders.js +10 -5
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-uitheme.js +4 -4
- data/vendor/assets/stylesheets/jquery-tablesorter/theme.bootstrap.css +2 -2
- data/vendor/assets/stylesheets/jquery-tablesorter/theme.bootstrap_2.css +2 -2
- data/vendor/assets/stylesheets/jquery-tablesorter/theme.materialize.css +176 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 99189ff9a2249c96239ce0a4d41da038186e1cde
|
4
|
+
data.tar.gz: 679942012457965ded688309186e319f21ef60a9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 770c688cdc640feea77d202e70ed0052c83e6fdf8941e3bac493037c6a01f5ef17beede2a6cca63314d183ea6a7e73c9b4d80e417ab050bc0f5621717dc32a1f
|
7
|
+
data.tar.gz: 1396e2d506b053424f68fef6700fb7e6f9169c629635e89b71043c54dd7360bb739f2b1a3ddb7b2a47e9a6ff82708ad650f4bd327ea245c335e600ec4e904e9b
|
data/README.md
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
Simple integration of jquery-tablesorter into the asset pipeline.
|
6
6
|
|
7
|
-
Current tablesorter version: 2.
|
7
|
+
Current tablesorter version: 2.27.1 (7/31/2016), [documentation]
|
8
8
|
|
9
9
|
Any issue associated with the js/css files, please report to [Mottie's fork].
|
10
10
|
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -4,7 +4,7 @@
|
|
4
4
|
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██▀▀ ▀▀▀██
|
5
5
|
█████▀ ▀████▀ ██ ██ ▀████▀ ██ ██ ██ ██ ▀████▀ █████▀ ██ ██ █████▀
|
6
6
|
*/
|
7
|
-
/*! tablesorter (FORK) - updated 07-
|
7
|
+
/*! tablesorter (FORK) - updated 07-31-2016 (v2.27.1)*/
|
8
8
|
/* Includes widgets ( storage,uitheme,columns,filter,stickyHeaders,resizable,saveSort ) */
|
9
9
|
(function(factory) {
|
10
10
|
if (typeof define === 'function' && define.amd) {
|
@@ -14,16 +14,16 @@
|
|
14
14
|
} else {
|
15
15
|
factory(jQuery);
|
16
16
|
}
|
17
|
-
}(function(
|
17
|
+
}(function(jQuery) {
|
18
18
|
|
19
|
-
/*! TableSorter (FORK) v2.
|
19
|
+
/*! TableSorter (FORK) v2.27.1 *//*
|
20
20
|
* Client-side table sorting with ease!
|
21
21
|
* @requires jQuery v1.2.6+
|
22
22
|
*
|
23
23
|
* Copyright (c) 2007 Christian Bach
|
24
24
|
* fork maintained by Rob Garrison
|
25
25
|
*
|
26
|
-
* Examples and docs at: http://tablesorter.com
|
26
|
+
* Examples and original docs at: http://tablesorter.com
|
27
27
|
* Dual licensed under the MIT and GPL licenses:
|
28
28
|
* http://www.opensource.org/licenses/mit-license.php
|
29
29
|
* http://www.gnu.org/licenses/gpl.html
|
@@ -33,13 +33,14 @@
|
|
33
33
|
* @cat Plugins/Tablesorter
|
34
34
|
* @author Christian Bach - christian.bach@polyester.se
|
35
35
|
* @contributor Rob Garrison - https://github.com/Mottie/tablesorter
|
36
|
+
* @docs (fork) - https://mottie.github.io/tablesorter/docs/
|
36
37
|
*/
|
37
38
|
/*jshint browser:true, jquery:true, unused:false, expr: true */
|
38
39
|
;( function( $ ) {
|
39
40
|
'use strict';
|
40
41
|
var ts = $.tablesorter = {
|
41
42
|
|
42
|
-
version : '2.
|
43
|
+
version : '2.27.1',
|
43
44
|
|
44
45
|
parsers : [],
|
45
46
|
widgets : [],
|
@@ -580,19 +581,19 @@
|
|
580
581
|
}
|
581
582
|
column = parseInt( $elem.attr( 'data-column' ), 10 );
|
582
583
|
elem.column = column;
|
583
|
-
tmp = ts.getData( $elem, configHeaders, 'sortInitialOrder' ) || c.sortInitialOrder;
|
584
|
+
tmp = ts.getOrder( ts.getData( $elem, configHeaders, 'sortInitialOrder' ) || c.sortInitialOrder );
|
584
585
|
// this may get updated numerous times if there are multiple rows
|
585
586
|
c.sortVars[ column ] = {
|
586
587
|
count : -1, // set to -1 because clicking on the header automatically adds one
|
587
|
-
order:
|
588
|
-
[ 1, 0, 2 ] : // desc, asc, unsorted
|
589
|
-
[ 0, 1, 2 ], // asc, desc, unsorted
|
588
|
+
order: tmp ?
|
589
|
+
( c.sortReset ? [ 1, 0, 2 ] : [ 1, 0 ] ) : // desc, asc, unsorted
|
590
|
+
( c.sortReset ? [ 0, 1, 2 ] : [ 0, 1 ] ), // asc, desc, unsorted
|
590
591
|
lockedOrder : false
|
591
592
|
};
|
592
593
|
tmp = ts.getData( $elem, configHeaders, 'lockedOrder' ) || false;
|
593
594
|
if ( typeof tmp !== 'undefined' && tmp !== false ) {
|
594
595
|
c.sortVars[ column ].lockedOrder = true;
|
595
|
-
c.sortVars[ column ].order = ts.getOrder( tmp ) ? [ 1, 1
|
596
|
+
c.sortVars[ column ].order = ts.getOrder( tmp ) ? [ 1, 1 ] : [ 0, 0 ];
|
596
597
|
}
|
597
598
|
// add cell to headerList
|
598
599
|
c.headerList[ index ] = elem;
|
@@ -900,6 +901,10 @@
|
|
900
901
|
/** Add the table data to main data array */
|
901
902
|
$row = $( $tbody[ tbodyIndex ].rows[ rowIndex ] );
|
902
903
|
cols = [];
|
904
|
+
// ignore "remove-me" rows
|
905
|
+
if ( $row.hasClass( c.selectorRemove.slice(1) ) ) {
|
906
|
+
continue;
|
907
|
+
}
|
903
908
|
// if this is a child row, add it to the last row's children and continue to the next row
|
904
909
|
// ignore child row class, if it is the first row
|
905
910
|
if ( $row.hasClass( c.cssChildRow ) && rowIndex !== 0 ) {
|
@@ -991,7 +996,8 @@
|
|
991
996
|
if ( c.debug ) {
|
992
997
|
len = Math.min( 5, c.cache[ 0 ].normalized.length );
|
993
998
|
console[ console.group ? 'group' : 'log' ]( 'Building cache for ' + c.totalRows +
|
994
|
-
' rows (showing ' + len + ' rows in log)' +
|
999
|
+
' rows (showing ' + len + ' rows in log) and ' + c.columns + ' columns' +
|
1000
|
+
ts.benchmark( cacheTime ) );
|
995
1001
|
val = {};
|
996
1002
|
for ( colIndex = 0; colIndex < c.columns; colIndex++ ) {
|
997
1003
|
for ( cacheIndex = 0; cacheIndex < len; cacheIndex++ ) {
|
@@ -1142,6 +1148,7 @@
|
|
1142
1148
|
setColumnAriaLabel : function( c, $header, nextSort ) {
|
1143
1149
|
if ( $header.length ) {
|
1144
1150
|
var column = parseInt( $header.attr( 'data-column' ), 10 ),
|
1151
|
+
vars = c.sortVars[ column ],
|
1145
1152
|
tmp = $header.hasClass( ts.css.sortAsc ) ?
|
1146
1153
|
'sortAsc' :
|
1147
1154
|
$header.hasClass( ts.css.sortDesc ) ? 'sortDesc' : 'sortNone',
|
@@ -1149,7 +1156,8 @@
|
|
1149
1156
|
if ( $header.hasClass( 'sorter-false' ) || nextSort === false ) {
|
1150
1157
|
txt += ts.language.sortDisabled;
|
1151
1158
|
} else {
|
1152
|
-
|
1159
|
+
tmp = ( vars.count + 1 ) % vars.order.length;
|
1160
|
+
nextSort = vars.order[ tmp ];
|
1153
1161
|
// if nextSort
|
1154
1162
|
txt += ts.language[ nextSort === 0 ? 'nextAsc' : nextSort === 1 ? 'nextDesc' : 'nextNone' ];
|
1155
1163
|
}
|
@@ -1208,7 +1216,12 @@
|
|
1208
1216
|
// set order if not already defined - due to colspan header without associated header cell
|
1209
1217
|
// adding this check prevents a javascript error
|
1210
1218
|
if ( !c.sortVars[ col ].order ) {
|
1211
|
-
|
1219
|
+
if ( ts.getOrder( c.sortInitialOrder ) ) {
|
1220
|
+
order = c.sortReset ? [ 1, 0, 2 ] : [ 1, 0 ];
|
1221
|
+
} else {
|
1222
|
+
order = c.sortReset ? [ 0, 1, 2 ] : [ 0, 1 ];
|
1223
|
+
}
|
1224
|
+
c.sortVars[ col ].order = order;
|
1212
1225
|
c.sortVars[ col ].count = 0;
|
1213
1226
|
}
|
1214
1227
|
|
@@ -1225,12 +1238,12 @@
|
|
1225
1238
|
dir = primary || 0;
|
1226
1239
|
break;
|
1227
1240
|
case 'o' :
|
1228
|
-
temp = order[ ( primary || 0 ) %
|
1241
|
+
temp = order[ ( primary || 0 ) % order.length ];
|
1229
1242
|
// opposite of primary column; but resets if primary resets
|
1230
1243
|
dir = temp === 0 ? 1 : temp === 1 ? 0 : 2;
|
1231
1244
|
break;
|
1232
1245
|
case 'n' :
|
1233
|
-
dir = order[ ( ++c.sortVars[ col ].count ) %
|
1246
|
+
dir = order[ ( ++c.sortVars[ col ].count ) % order.length ];
|
1234
1247
|
break;
|
1235
1248
|
default : // ascending
|
1236
1249
|
dir = 0;
|
@@ -1240,7 +1253,7 @@
|
|
1240
1253
|
group = [ col, parseInt( dir, 10 ) || 0 ];
|
1241
1254
|
c.sortList[ c.sortList.length ] = group;
|
1242
1255
|
dir = $.inArray( group[ 1 ], order ); // fixes issue #167
|
1243
|
-
c.sortVars[ col ].count = dir >= 0 ? dir : group[ 1 ] %
|
1256
|
+
c.sortVars[ col ].count = dir >= 0 ? dir : group[ 1 ] % order.length;
|
1244
1257
|
}
|
1245
1258
|
}
|
1246
1259
|
},
|
@@ -1503,8 +1516,8 @@
|
|
1503
1516
|
// Only call sortStart if sorting is enabled
|
1504
1517
|
c.$table.triggerHandler( 'sortStart', table );
|
1505
1518
|
// get current column sort order
|
1506
|
-
c.sortVars[ col ].count
|
1507
|
-
|
1519
|
+
tmp = ( c.sortVars[ col ].count + 1 ) % order.length;
|
1520
|
+
c.sortVars[ col ].count = event[ c.sortResetKey ] ? 2 : tmp;
|
1508
1521
|
// reset all sorts on non-current column - issue #30
|
1509
1522
|
if ( c.sortRestart ) {
|
1510
1523
|
for ( headerIndx = 0; headerIndx < len; headerIndx++ ) {
|
@@ -1599,7 +1612,7 @@
|
|
1599
1612
|
dir = tmp === 0 ? 1 : 0;
|
1600
1613
|
break;
|
1601
1614
|
case 'n' :
|
1602
|
-
dir = ( tmp + 1 ) %
|
1615
|
+
dir = ( tmp + 1 ) % order.length;
|
1603
1616
|
break;
|
1604
1617
|
default:
|
1605
1618
|
dir = 0;
|
@@ -2117,7 +2130,7 @@
|
|
2117
2130
|
▀████▀ ██ ██ ██████ ██ ██ ██ ██████ █████▀
|
2118
2131
|
*/
|
2119
2132
|
benchmark : function( diff ) {
|
2120
|
-
return ( ' (
|
2133
|
+
return ( ' (' + ( new Date().getTime() - diff.getTime() ) + ' ms)' );
|
2121
2134
|
},
|
2122
2135
|
// deprecated ts.log
|
2123
2136
|
log : function() {
|
@@ -2546,8 +2559,8 @@
|
|
2546
2559
|
|
2547
2560
|
// too many protocols to add them all https://en.wikipedia.org/wiki/URI_scheme
|
2548
2561
|
// now, this regex can be updated before initialization
|
2549
|
-
ts.regex.urlProtocolTest =
|
2550
|
-
ts.regex.urlProtocolReplace = /(https?|ftp|file)
|
2562
|
+
ts.regex.urlProtocolTest = /^(https?|ftp|file):\/\//;
|
2563
|
+
ts.regex.urlProtocolReplace = /(https?|ftp|file):\/\/(www\.)?/;
|
2551
2564
|
ts.addParser({
|
2552
2565
|
id : 'url',
|
2553
2566
|
is : function( str ) {
|
@@ -2556,7 +2569,6 @@
|
|
2556
2569
|
format : function( str ) {
|
2557
2570
|
return str ? $.trim( str.replace( ts.regex.urlProtocolReplace, '' ) ) : str;
|
2558
2571
|
},
|
2559
|
-
parsed : true, // filter widget flag
|
2560
2572
|
type : 'text'
|
2561
2573
|
});
|
2562
2574
|
|
@@ -2839,7 +2851,7 @@
|
|
2839
2851
|
|
2840
2852
|
})(jQuery, window, document);
|
2841
2853
|
|
2842
|
-
/*! Widget: uitheme - updated 7/
|
2854
|
+
/*! Widget: uitheme - updated 7/31/2016 (v2.27.0) */
|
2843
2855
|
;(function ($) {
|
2844
2856
|
'use strict';
|
2845
2857
|
var ts = $.tablesorter || {};
|
@@ -2878,9 +2890,9 @@
|
|
2878
2890
|
hover : 'ui-state-hover', // hover class
|
2879
2891
|
// icon class names
|
2880
2892
|
icons : 'ui-icon', // icon class added to the <i> in the header
|
2881
|
-
iconSortNone : 'ui-icon-carat-2-n-s', // class name added to icon when column is not sorted
|
2882
|
-
iconSortAsc : 'ui-icon-carat-1-n', // class name added to icon when column has ascending sort
|
2883
|
-
iconSortDesc : 'ui-icon-carat-1-s', // class name added to icon when column has descending sort
|
2893
|
+
iconSortNone : 'ui-icon-carat-2-n-s ui-icon-caret-2-n-s', // class name added to icon when column is not sorted
|
2894
|
+
iconSortAsc : 'ui-icon-carat-1-n ui-icon-caret-1-n', // class name added to icon when column has ascending sort
|
2895
|
+
iconSortDesc : 'ui-icon-carat-1-s ui-icon-caret-1-s', // class name added to icon when column has descending sort
|
2884
2896
|
filterRow : '',
|
2885
2897
|
footerRow : '',
|
2886
2898
|
footerCells : '',
|
@@ -3114,7 +3126,7 @@
|
|
3114
3126
|
|
3115
3127
|
})(jQuery);
|
3116
3128
|
|
3117
|
-
/*! Widget: filter - updated 7/
|
3129
|
+
/*! Widget: filter - updated 7/31/2016 (v2.27.0) *//*
|
3118
3130
|
* Requires tablesorter v2.8+ and jQuery 1.7+
|
3119
3131
|
* by Rob Garrison
|
3120
3132
|
*/
|
@@ -3210,7 +3222,7 @@
|
|
3210
3222
|
|
3211
3223
|
// regex used in filter 'check' functions - not for general use and not documented
|
3212
3224
|
regex: {
|
3213
|
-
regex : /^\/((?:\\\/|[^\/])+)\/([
|
3225
|
+
regex : /^\/((?:\\\/|[^\/])+)\/([migyu]{0,5})?$/, // regex to test for regex
|
3214
3226
|
child : /tablesorter-childRow/, // child row class name; this gets updated in the script
|
3215
3227
|
filtered : /filtered/, // filtered (hidden) row class name; updated in the script
|
3216
3228
|
type : /undefined|number/, // check type
|
@@ -3553,6 +3565,8 @@
|
|
3553
3565
|
// force a new search since content has changed
|
3554
3566
|
c.lastCombinedFilter = null;
|
3555
3567
|
c.lastSearch = [];
|
3568
|
+
// update filterFormatters after update - Fixes #1237
|
3569
|
+
c.$table.triggerHandler( 'filterFomatterUpdate' );
|
3556
3570
|
}
|
3557
3571
|
// pass true ( skipFirst ) to prevent the tablesorter.setFilters function from skipping the first
|
3558
3572
|
// input ensures all inputs are updated when a search is triggered on the table
|
@@ -3717,8 +3731,10 @@
|
|
3717
3731
|
count = 0,
|
3718
3732
|
completed = function() {
|
3719
3733
|
wo.filter_initialized = true;
|
3734
|
+
// update lastSearch - it gets cleared often
|
3735
|
+
c.lastSearch = c.$table.data( 'lastSearch' );
|
3720
3736
|
c.$table.triggerHandler( 'filterInit', c );
|
3721
|
-
tsf.findRows( c.table, c
|
3737
|
+
tsf.findRows( c.table, c.lastSearch || [] );
|
3722
3738
|
};
|
3723
3739
|
if ( $.isEmptyObject( wo.filter_formatter ) ) {
|
3724
3740
|
completed();
|
@@ -4203,6 +4219,7 @@
|
|
4203
4219
|
fxn, ffxn, txt,
|
4204
4220
|
wo = c.widgetOptions,
|
4205
4221
|
showRow = true,
|
4222
|
+
hasAnyMatchInput = wo.filter_$anyMatch && wo.filter_$anyMatch.length,
|
4206
4223
|
|
4207
4224
|
// if wo.filter_$anyMatch data-column attribute is changed dynamically
|
4208
4225
|
// we don't want to do an "anyMatch" search on one column using data
|
@@ -4212,11 +4229,11 @@
|
|
4212
4229
|
tsf.multipleColumns( c, wo.filter_$anyMatch ) :
|
4213
4230
|
[];
|
4214
4231
|
data.$cells = data.$row.children();
|
4215
|
-
if ( data.anyMatchFlag && columnIndex.length > 1 || data.anyMatchFilter ) {
|
4232
|
+
if ( data.anyMatchFlag && columnIndex.length > 1 || ( data.anyMatchFilter && !hasAnyMatchInput ) ) {
|
4216
4233
|
data.anyMatch = true;
|
4217
4234
|
data.isMatch = true;
|
4218
4235
|
data.rowArray = data.$cells.map( function( i ) {
|
4219
|
-
if ( $.inArray( i, columnIndex ) > -1 || data.anyMatchFilter ) {
|
4236
|
+
if ( $.inArray( i, columnIndex ) > -1 || ( data.anyMatchFilter && !hasAnyMatchInput ) ) {
|
4220
4237
|
if ( data.parsed[ i ] ) {
|
4221
4238
|
txt = data.cacheArray[ i ];
|
4222
4239
|
} else {
|
@@ -4506,6 +4523,7 @@
|
|
4506
4523
|
}
|
4507
4524
|
|
4508
4525
|
data.$row = $rows.eq( rowIndex );
|
4526
|
+
data.rowIndex = rowIndex;
|
4509
4527
|
data.cacheArray = norm_rows[ rowIndex ];
|
4510
4528
|
rowData = data.cacheArray[ c.columns ];
|
4511
4529
|
data.rawArray = rowData.raw;
|
@@ -4861,7 +4879,7 @@
|
|
4861
4879
|
|
4862
4880
|
ts.getFilters = function( table, getRaw, setFilters, skipFirst ) {
|
4863
4881
|
var i, $filters, $column, cols,
|
4864
|
-
filters =
|
4882
|
+
filters = [],
|
4865
4883
|
c = table ? $( table )[0].config : '',
|
4866
4884
|
wo = c ? c.widgetOptions : '';
|
4867
4885
|
if ( ( getRaw !== true && wo && !wo.filter_columnFilters ) ||
|
@@ -4927,9 +4945,6 @@
|
|
4927
4945
|
}
|
4928
4946
|
}
|
4929
4947
|
}
|
4930
|
-
if ( filters.length === 0 ) {
|
4931
|
-
filters = false;
|
4932
|
-
}
|
4933
4948
|
return filters;
|
4934
4949
|
};
|
4935
4950
|
|
@@ -4947,12 +4962,12 @@
|
|
4947
4962
|
tsf.searching( c.table, filter, skipFirst );
|
4948
4963
|
c.$table.triggerHandler( 'filterFomatterUpdate' );
|
4949
4964
|
}
|
4950
|
-
return
|
4965
|
+
return valid.length !== 0;
|
4951
4966
|
};
|
4952
4967
|
|
4953
4968
|
})( jQuery );
|
4954
4969
|
|
4955
|
-
/*! Widget: stickyHeaders - updated
|
4970
|
+
/*! Widget: stickyHeaders - updated 7/31/2016 (v2.27.0) *//*
|
4956
4971
|
* Requires tablesorter v2.8+ and jQuery 1.4.3+
|
4957
4972
|
* by Rob Garrison
|
4958
4973
|
*/
|
@@ -5015,10 +5030,11 @@
|
|
5015
5030
|
// **************************
|
5016
5031
|
ts.addWidget({
|
5017
5032
|
id: 'stickyHeaders',
|
5018
|
-
priority:
|
5033
|
+
priority: 55, // sticky widget must be initialized after the filter widget!
|
5019
5034
|
options: {
|
5020
5035
|
stickyHeaders : '', // extra class name added to the sticky header row
|
5021
|
-
|
5036
|
+
stickyHeaders_appendTo : null, // jQuery selector or object to phycially attach the sticky headers
|
5037
|
+
stickyHeaders_attachTo : null, // jQuery selector or object to attach scroll listener to (overridden by xScroll & yScroll settings)
|
5022
5038
|
stickyHeaders_xScroll : null, // jQuery selector or object to monitor horizontal scroll position (defaults: xScroll > attachTo > window)
|
5023
5039
|
stickyHeaders_yScroll : null, // jQuery selector or object to monitor vertical scroll position (defaults: yScroll > attachTo > window)
|
5024
5040
|
stickyHeaders_offset : 0, // number or jquery selector targeting the position:fixed element
|
@@ -5169,8 +5185,12 @@
|
|
5169
5185
|
|
5170
5186
|
ts.bindEvents(table, $stickyThead.children().children('.' + ts.css.header));
|
5171
5187
|
|
5172
|
-
|
5173
|
-
|
5188
|
+
if (wo.stickyHeaders_appendTo) {
|
5189
|
+
$(wo.stickyHeaders_appendTo).append( $stickyWrap );
|
5190
|
+
} else {
|
5191
|
+
// add stickyheaders AFTER the table. If the table is selected by ID, the original one (first) will be returned.
|
5192
|
+
$table.after( $stickyWrap );
|
5193
|
+
}
|
5174
5194
|
|
5175
5195
|
// onRenderHeader is defined, we need to do something about it (fixes #641)
|
5176
5196
|
if (c.onRenderHeader) {
|
@@ -5716,5 +5736,5 @@
|
|
5716
5736
|
|
5717
5737
|
})(jQuery);
|
5718
5738
|
|
5719
|
-
return
|
5739
|
+
return jQuery.tablesorter;
|
5720
5740
|
}));
|
@@ -1,11 +1,11 @@
|
|
1
|
-
/*! TableSorter (FORK) v2.
|
1
|
+
/*! TableSorter (FORK) v2.27.1 *//*
|
2
2
|
* Client-side table sorting with ease!
|
3
3
|
* @requires jQuery v1.2.6+
|
4
4
|
*
|
5
5
|
* Copyright (c) 2007 Christian Bach
|
6
6
|
* fork maintained by Rob Garrison
|
7
7
|
*
|
8
|
-
* Examples and docs at: http://tablesorter.com
|
8
|
+
* Examples and original docs at: http://tablesorter.com
|
9
9
|
* Dual licensed under the MIT and GPL licenses:
|
10
10
|
* http://www.opensource.org/licenses/mit-license.php
|
11
11
|
* http://www.gnu.org/licenses/gpl.html
|
@@ -15,13 +15,14 @@
|
|
15
15
|
* @cat Plugins/Tablesorter
|
16
16
|
* @author Christian Bach - christian.bach@polyester.se
|
17
17
|
* @contributor Rob Garrison - https://github.com/Mottie/tablesorter
|
18
|
+
* @docs (fork) - https://mottie.github.io/tablesorter/docs/
|
18
19
|
*/
|
19
20
|
/*jshint browser:true, jquery:true, unused:false, expr: true */
|
20
21
|
;( function( $ ) {
|
21
22
|
'use strict';
|
22
23
|
var ts = $.tablesorter = {
|
23
24
|
|
24
|
-
version : '2.
|
25
|
+
version : '2.27.1',
|
25
26
|
|
26
27
|
parsers : [],
|
27
28
|
widgets : [],
|
@@ -562,19 +563,19 @@
|
|
562
563
|
}
|
563
564
|
column = parseInt( $elem.attr( 'data-column' ), 10 );
|
564
565
|
elem.column = column;
|
565
|
-
tmp = ts.getData( $elem, configHeaders, 'sortInitialOrder' ) || c.sortInitialOrder;
|
566
|
+
tmp = ts.getOrder( ts.getData( $elem, configHeaders, 'sortInitialOrder' ) || c.sortInitialOrder );
|
566
567
|
// this may get updated numerous times if there are multiple rows
|
567
568
|
c.sortVars[ column ] = {
|
568
569
|
count : -1, // set to -1 because clicking on the header automatically adds one
|
569
|
-
order:
|
570
|
-
[ 1, 0, 2 ] : // desc, asc, unsorted
|
571
|
-
[ 0, 1, 2 ], // asc, desc, unsorted
|
570
|
+
order: tmp ?
|
571
|
+
( c.sortReset ? [ 1, 0, 2 ] : [ 1, 0 ] ) : // desc, asc, unsorted
|
572
|
+
( c.sortReset ? [ 0, 1, 2 ] : [ 0, 1 ] ), // asc, desc, unsorted
|
572
573
|
lockedOrder : false
|
573
574
|
};
|
574
575
|
tmp = ts.getData( $elem, configHeaders, 'lockedOrder' ) || false;
|
575
576
|
if ( typeof tmp !== 'undefined' && tmp !== false ) {
|
576
577
|
c.sortVars[ column ].lockedOrder = true;
|
577
|
-
c.sortVars[ column ].order = ts.getOrder( tmp ) ? [ 1, 1
|
578
|
+
c.sortVars[ column ].order = ts.getOrder( tmp ) ? [ 1, 1 ] : [ 0, 0 ];
|
578
579
|
}
|
579
580
|
// add cell to headerList
|
580
581
|
c.headerList[ index ] = elem;
|
@@ -882,6 +883,10 @@
|
|
882
883
|
/** Add the table data to main data array */
|
883
884
|
$row = $( $tbody[ tbodyIndex ].rows[ rowIndex ] );
|
884
885
|
cols = [];
|
886
|
+
// ignore "remove-me" rows
|
887
|
+
if ( $row.hasClass( c.selectorRemove.slice(1) ) ) {
|
888
|
+
continue;
|
889
|
+
}
|
885
890
|
// if this is a child row, add it to the last row's children and continue to the next row
|
886
891
|
// ignore child row class, if it is the first row
|
887
892
|
if ( $row.hasClass( c.cssChildRow ) && rowIndex !== 0 ) {
|
@@ -973,7 +978,8 @@
|
|
973
978
|
if ( c.debug ) {
|
974
979
|
len = Math.min( 5, c.cache[ 0 ].normalized.length );
|
975
980
|
console[ console.group ? 'group' : 'log' ]( 'Building cache for ' + c.totalRows +
|
976
|
-
' rows (showing ' + len + ' rows in log)' +
|
981
|
+
' rows (showing ' + len + ' rows in log) and ' + c.columns + ' columns' +
|
982
|
+
ts.benchmark( cacheTime ) );
|
977
983
|
val = {};
|
978
984
|
for ( colIndex = 0; colIndex < c.columns; colIndex++ ) {
|
979
985
|
for ( cacheIndex = 0; cacheIndex < len; cacheIndex++ ) {
|
@@ -1124,6 +1130,7 @@
|
|
1124
1130
|
setColumnAriaLabel : function( c, $header, nextSort ) {
|
1125
1131
|
if ( $header.length ) {
|
1126
1132
|
var column = parseInt( $header.attr( 'data-column' ), 10 ),
|
1133
|
+
vars = c.sortVars[ column ],
|
1127
1134
|
tmp = $header.hasClass( ts.css.sortAsc ) ?
|
1128
1135
|
'sortAsc' :
|
1129
1136
|
$header.hasClass( ts.css.sortDesc ) ? 'sortDesc' : 'sortNone',
|
@@ -1131,7 +1138,8 @@
|
|
1131
1138
|
if ( $header.hasClass( 'sorter-false' ) || nextSort === false ) {
|
1132
1139
|
txt += ts.language.sortDisabled;
|
1133
1140
|
} else {
|
1134
|
-
|
1141
|
+
tmp = ( vars.count + 1 ) % vars.order.length;
|
1142
|
+
nextSort = vars.order[ tmp ];
|
1135
1143
|
// if nextSort
|
1136
1144
|
txt += ts.language[ nextSort === 0 ? 'nextAsc' : nextSort === 1 ? 'nextDesc' : 'nextNone' ];
|
1137
1145
|
}
|
@@ -1190,7 +1198,12 @@
|
|
1190
1198
|
// set order if not already defined - due to colspan header without associated header cell
|
1191
1199
|
// adding this check prevents a javascript error
|
1192
1200
|
if ( !c.sortVars[ col ].order ) {
|
1193
|
-
|
1201
|
+
if ( ts.getOrder( c.sortInitialOrder ) ) {
|
1202
|
+
order = c.sortReset ? [ 1, 0, 2 ] : [ 1, 0 ];
|
1203
|
+
} else {
|
1204
|
+
order = c.sortReset ? [ 0, 1, 2 ] : [ 0, 1 ];
|
1205
|
+
}
|
1206
|
+
c.sortVars[ col ].order = order;
|
1194
1207
|
c.sortVars[ col ].count = 0;
|
1195
1208
|
}
|
1196
1209
|
|
@@ -1207,12 +1220,12 @@
|
|
1207
1220
|
dir = primary || 0;
|
1208
1221
|
break;
|
1209
1222
|
case 'o' :
|
1210
|
-
temp = order[ ( primary || 0 ) %
|
1223
|
+
temp = order[ ( primary || 0 ) % order.length ];
|
1211
1224
|
// opposite of primary column; but resets if primary resets
|
1212
1225
|
dir = temp === 0 ? 1 : temp === 1 ? 0 : 2;
|
1213
1226
|
break;
|
1214
1227
|
case 'n' :
|
1215
|
-
dir = order[ ( ++c.sortVars[ col ].count ) %
|
1228
|
+
dir = order[ ( ++c.sortVars[ col ].count ) % order.length ];
|
1216
1229
|
break;
|
1217
1230
|
default : // ascending
|
1218
1231
|
dir = 0;
|
@@ -1222,7 +1235,7 @@
|
|
1222
1235
|
group = [ col, parseInt( dir, 10 ) || 0 ];
|
1223
1236
|
c.sortList[ c.sortList.length ] = group;
|
1224
1237
|
dir = $.inArray( group[ 1 ], order ); // fixes issue #167
|
1225
|
-
c.sortVars[ col ].count = dir >= 0 ? dir : group[ 1 ] %
|
1238
|
+
c.sortVars[ col ].count = dir >= 0 ? dir : group[ 1 ] % order.length;
|
1226
1239
|
}
|
1227
1240
|
}
|
1228
1241
|
},
|
@@ -1485,8 +1498,8 @@
|
|
1485
1498
|
// Only call sortStart if sorting is enabled
|
1486
1499
|
c.$table.triggerHandler( 'sortStart', table );
|
1487
1500
|
// get current column sort order
|
1488
|
-
c.sortVars[ col ].count
|
1489
|
-
|
1501
|
+
tmp = ( c.sortVars[ col ].count + 1 ) % order.length;
|
1502
|
+
c.sortVars[ col ].count = event[ c.sortResetKey ] ? 2 : tmp;
|
1490
1503
|
// reset all sorts on non-current column - issue #30
|
1491
1504
|
if ( c.sortRestart ) {
|
1492
1505
|
for ( headerIndx = 0; headerIndx < len; headerIndx++ ) {
|
@@ -1581,7 +1594,7 @@
|
|
1581
1594
|
dir = tmp === 0 ? 1 : 0;
|
1582
1595
|
break;
|
1583
1596
|
case 'n' :
|
1584
|
-
dir = ( tmp + 1 ) %
|
1597
|
+
dir = ( tmp + 1 ) % order.length;
|
1585
1598
|
break;
|
1586
1599
|
default:
|
1587
1600
|
dir = 0;
|
@@ -2099,7 +2112,7 @@
|
|
2099
2112
|
▀████▀ ██ ██ ██████ ██ ██ ██ ██████ █████▀
|
2100
2113
|
*/
|
2101
2114
|
benchmark : function( diff ) {
|
2102
|
-
return ( ' (
|
2115
|
+
return ( ' (' + ( new Date().getTime() - diff.getTime() ) + ' ms)' );
|
2103
2116
|
},
|
2104
2117
|
// deprecated ts.log
|
2105
2118
|
log : function() {
|
@@ -2528,8 +2541,8 @@
|
|
2528
2541
|
|
2529
2542
|
// too many protocols to add them all https://en.wikipedia.org/wiki/URI_scheme
|
2530
2543
|
// now, this regex can be updated before initialization
|
2531
|
-
ts.regex.urlProtocolTest =
|
2532
|
-
ts.regex.urlProtocolReplace = /(https?|ftp|file)
|
2544
|
+
ts.regex.urlProtocolTest = /^(https?|ftp|file):\/\//;
|
2545
|
+
ts.regex.urlProtocolReplace = /(https?|ftp|file):\/\/(www\.)?/;
|
2533
2546
|
ts.addParser({
|
2534
2547
|
id : 'url',
|
2535
2548
|
is : function( str ) {
|
@@ -2538,7 +2551,6 @@
|
|
2538
2551
|
format : function( str ) {
|
2539
2552
|
return str ? $.trim( str.replace( ts.regex.urlProtocolReplace, '' ) ) : str;
|
2540
2553
|
},
|
2541
|
-
parsed : true, // filter widget flag
|
2542
2554
|
type : 'text'
|
2543
2555
|
});
|
2544
2556
|
|