jquery-tablesorter 1.21.4 → 1.22.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/jquery-tablesorter/version.rb +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
@@ -1,4 +1,4 @@
|
|
1
|
-
/*! Widget: grouping - updated 7/
|
1
|
+
/*! Widget: grouping - updated 7/31/2016 (v2.27.0) *//*
|
2
2
|
* Requires tablesorter v2.8+ and jQuery 1.7+
|
3
3
|
* by Rob Garrison
|
4
4
|
*/
|
@@ -144,7 +144,7 @@
|
|
144
144
|
$label = $row.find( '.group-count' );
|
145
145
|
if ( $label.length ) {
|
146
146
|
if ( wo.group_count ) {
|
147
|
-
$label.html( wo.group_count.replace( /\{num\}/g, $rows.length ) );
|
147
|
+
$label.html( wo.group_count.toString().replace( /\{num\}/g, $rows.length ) );
|
148
148
|
}
|
149
149
|
if ( $.isFunction( wo.group_callback ) ) {
|
150
150
|
wo.group_callback( $row.find( 'td' ), $rows, data.column, c.table );
|
@@ -167,7 +167,7 @@
|
|
167
167
|
},
|
168
168
|
|
169
169
|
groupHeaderHTML : function( c, wo, data ) {
|
170
|
-
var name = ( data.currentGroup || '' ).replace(/</g, '<').replace(/>/g, '>');
|
170
|
+
var name = ( data.currentGroup || '' ).toString().replace(/</g, '<').replace(/>/g, '>');
|
171
171
|
return '<tr class="group-header ' + c.selectorRemove.slice(1) +
|
172
172
|
'" unselectable="on" ' + ( c.tabIndex ? 'tabindex="0" ' : '' ) + 'data-group-index="' +
|
173
173
|
data.groupIndex + '">' +
|
@@ -0,0 +1,135 @@
|
|
1
|
+
/*! Widget: mark.js - updated 7/31/2016 (v2.27.1) *//*
|
2
|
+
* Requires tablesorter v2.8+ and jQuery 1.7+
|
3
|
+
* by Rob Garrison
|
4
|
+
*/
|
5
|
+
;( function( $ ) {
|
6
|
+
'use strict';
|
7
|
+
var ts = $.tablesorter;
|
8
|
+
|
9
|
+
ts.mark = {
|
10
|
+
init : function( c ) {
|
11
|
+
if ( typeof $.fn.mark === 'function' ) {
|
12
|
+
var tmp,
|
13
|
+
update = c.widgetOptions.mark_tsUpdate;
|
14
|
+
c.$table.on( 'filterEnd.tsmark' + ( update ? ' ' + update : '' ), function( e, filters ) {
|
15
|
+
// filterEnd passes "config" as the param
|
16
|
+
ts.mark.update( c, e.type === 'filterEnd' ? '' : filters );
|
17
|
+
});
|
18
|
+
// Regex to split up a query
|
19
|
+
tmp = '(?:<|=|>|\\||\"|' + "\\'|" +
|
20
|
+
'\\s+(?:&&|-|' +
|
21
|
+
( ts.language.and || 'and' ) + '|' +
|
22
|
+
( ts.language.or || 'or' ) + '|' +
|
23
|
+
( ts.language.to || 'to' ) + ')\\s+)';
|
24
|
+
ts.mark.regex.filter = new RegExp(tmp, 'gim');
|
25
|
+
} else {
|
26
|
+
console.warn('Widget-mark not initialized: missing "jquery.mark.js"');
|
27
|
+
}
|
28
|
+
},
|
29
|
+
regex : {
|
30
|
+
mark : /^mark_(.+)$/,
|
31
|
+
// test for regex (e.g. "/(lorem|ipsum)/gi")
|
32
|
+
pure : /^\/((?:\\\/|[^\/])+)\/([mig]{0,3})?$/
|
33
|
+
},
|
34
|
+
checkRegex : function( regex ) {
|
35
|
+
if ( regex instanceof RegExp ) {
|
36
|
+
// prevent lock up of mark.js (see https://github.com/julmot/mark.js/issues/55)
|
37
|
+
var result = '\u0001\u0002\u0003\u0004\u0005'.match( regex );
|
38
|
+
return result === null || result.length < 5;
|
39
|
+
}
|
40
|
+
return false;
|
41
|
+
},
|
42
|
+
cleanMatches : function( matches ) {
|
43
|
+
var results = [],
|
44
|
+
indx = matches && matches.length || 0;
|
45
|
+
while ( indx-- ) {
|
46
|
+
if ( matches[indx] !== '' ) {
|
47
|
+
results[ results.length ] = matches[ indx ];
|
48
|
+
}
|
49
|
+
}
|
50
|
+
return results;
|
51
|
+
},
|
52
|
+
update : function( c, filters ) {
|
53
|
+
var options = {},
|
54
|
+
regex = ts.mark.regex,
|
55
|
+
$rows = c.$table
|
56
|
+
.find( 'tbody tr' )
|
57
|
+
.unmark()
|
58
|
+
.not( '.' + ( c.widgetOptions.filter_filteredRow || 'filtered' ) );
|
59
|
+
filters = filters || $.tablesorter.getFilters( c.$table );
|
60
|
+
// extract & save mark options from widgetOptions (prefixed with "mark_")
|
61
|
+
// update dynamically
|
62
|
+
$.each( filters, function( indx, filter ) {
|
63
|
+
if ( filter ) {
|
64
|
+
var testRegex = null,
|
65
|
+
matches = filter,
|
66
|
+
useRegex = false,
|
67
|
+
col = indx === c.columns ? '' : ':nth-child(' + ( indx + 1 ) + ')';
|
68
|
+
// regular expression entered
|
69
|
+
if ( regex.pure.test( filter ) ) {
|
70
|
+
matches = regex.pure.exec( filter );
|
71
|
+
// ignore "all" matches (i.e. /.*/)
|
72
|
+
if (matches[1] === '.*') {
|
73
|
+
matches[1] = '';
|
74
|
+
}
|
75
|
+
try {
|
76
|
+
// make sure to include global flag when testing regex
|
77
|
+
testRegex = new RegExp( matches[ 1 ], 'gim' );
|
78
|
+
matches = new RegExp( matches[ 1 ], matches[ 2 ] );
|
79
|
+
} catch (err) {
|
80
|
+
matches = null;
|
81
|
+
}
|
82
|
+
if ( ts.mark.checkRegex( testRegex ) ) {
|
83
|
+
$rows.children( col ).markRegExp( matches, options );
|
84
|
+
}
|
85
|
+
// matches is either null, invalid, or done my markRegExp
|
86
|
+
return;
|
87
|
+
}
|
88
|
+
// all special querys (or, and, wild cards & fuzzy)
|
89
|
+
// regex seems to not be consistent here; so use string indexOf
|
90
|
+
// fuzzy or wild card matches
|
91
|
+
if ( filter.indexOf( '~' ) === 0 ) {
|
92
|
+
useRegex = true;
|
93
|
+
// fuzzy search separate each letter
|
94
|
+
matches = filter.replace( /~/g, '' ).split( '' );
|
95
|
+
} else {
|
96
|
+
// wild card matching
|
97
|
+
if ( filter.indexOf( '?' ) > -1 ) {
|
98
|
+
useRegex = true;
|
99
|
+
filter = filter.replace( /\?/g, '\\S{1}' );
|
100
|
+
}
|
101
|
+
if ( filter.indexOf( '*' ) > -1 ) {
|
102
|
+
useRegex = true;
|
103
|
+
filter = filter.replace( /\*/g, '\\S*' );
|
104
|
+
}
|
105
|
+
matches = filter.split( regex.filter );
|
106
|
+
}
|
107
|
+
if ( useRegex && matches && matches.length ) {
|
108
|
+
matches = new RegExp( ts.mark.cleanMatches( matches ).join( '.*' ), 'gim' );
|
109
|
+
if ( ts.mark.checkRegex( matches ) ) {
|
110
|
+
$rows.children( col ).markRegExp( matches, options );
|
111
|
+
}
|
112
|
+
} else {
|
113
|
+
// pass an array of matches
|
114
|
+
$rows.children( col ).mark( ts.mark.cleanMatches( matches ), options );
|
115
|
+
}
|
116
|
+
}
|
117
|
+
});
|
118
|
+
}
|
119
|
+
};
|
120
|
+
|
121
|
+
ts.addWidget({
|
122
|
+
id: 'mark',
|
123
|
+
options: {
|
124
|
+
mark_tsUpdate : 'markUpdate'
|
125
|
+
},
|
126
|
+
init : function( table, thisWidget, c, wo ) {
|
127
|
+
ts.mark.init( c, wo );
|
128
|
+
},
|
129
|
+
remove : function( table, c ) {
|
130
|
+
var update = c.widgetOptions.mark_tsUpdate;
|
131
|
+
c.$table.off( 'filterEnd.tsmark' + ( update ? ' ' + update : '' ) );
|
132
|
+
}
|
133
|
+
});
|
134
|
+
|
135
|
+
})( jQuery );
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/*! Widget: math - updated
|
1
|
+
/*! Widget: math - updated 7/31/2016 (v2.27.0) *//*
|
2
2
|
* Requires tablesorter v2.16+ and jQuery 1.7+
|
3
3
|
* by Rob Garrison
|
4
4
|
*/
|
@@ -216,7 +216,7 @@
|
|
216
216
|
var undef, time, mathAttr, $mathCells, indx, len,
|
217
217
|
changed = false,
|
218
218
|
filters = {};
|
219
|
-
if ( c.debug ) {
|
219
|
+
if ( c.debug || wo.math_debug ) {
|
220
220
|
time = new Date();
|
221
221
|
}
|
222
222
|
|
@@ -232,7 +232,6 @@
|
|
232
232
|
mathAttr = wo.math_dataAttrib;
|
233
233
|
$mathCells = c.$tbodies.children( 'tr' ).children( '[' + mathAttr + ']' );
|
234
234
|
changed = math.mathType( c, $mathCells, wo.math_priority ) || changed;
|
235
|
-
|
236
235
|
// only info tbody cells
|
237
236
|
$mathCells = c.$table
|
238
237
|
.children( '.' + c.cssInfoBlock + ', tfoot' )
|
@@ -257,17 +256,17 @@
|
|
257
256
|
// trigger an update only if cells inside the tbody changed
|
258
257
|
if ( changed ) {
|
259
258
|
wo.math_isUpdating = true;
|
260
|
-
if ( c.debug ) {
|
261
|
-
console[ console.group ? 'group' : 'log' ]( 'Math widget
|
259
|
+
if ( c.debug || wo.math_debug ) {
|
260
|
+
console[ console.group ? 'group' : 'log' ]( 'Math widget updating the cache after recalculation' );
|
262
261
|
}
|
263
262
|
|
264
|
-
// update internal cache
|
265
|
-
ts.
|
263
|
+
// update internal cache, but ignore "remove-me" rows and do not resort
|
264
|
+
ts.updateCache( c, function() {
|
266
265
|
math.updateComplete( c );
|
267
266
|
if ( !init && typeof wo.math_completed === 'function' ) {
|
268
267
|
wo.math_completed( c );
|
269
268
|
}
|
270
|
-
if ( c.debug ) {
|
269
|
+
if ( c.debug || wo.math_debug ) {
|
271
270
|
console.log( 'Math widget update completed' + ts.benchmark( time ) );
|
272
271
|
}
|
273
272
|
});
|
@@ -275,7 +274,7 @@
|
|
275
274
|
if ( !init && typeof wo.math_completed === 'function' ) {
|
276
275
|
wo.math_completed( c );
|
277
276
|
}
|
278
|
-
if ( c.debug ) {
|
277
|
+
if ( c.debug || wo.math_debug ) {
|
279
278
|
console.log( 'Math widget found no changes in data' + ts.benchmark( time ) );
|
280
279
|
}
|
281
280
|
}
|
@@ -284,7 +283,9 @@
|
|
284
283
|
|
285
284
|
updateComplete : function( c ) {
|
286
285
|
var wo = c.widgetOptions;
|
287
|
-
if ( wo.math_isUpdating && c.debug
|
286
|
+
if ( wo.math_isUpdating && (c.debug || wo.math_debug ) && console.groupEnd ) {
|
287
|
+
console.groupEnd();
|
288
|
+
}
|
288
289
|
wo.math_isUpdating = false;
|
289
290
|
},
|
290
291
|
|
@@ -299,7 +300,7 @@
|
|
299
300
|
// mathType is called multiple times if more than one "hasFilter" is used
|
300
301
|
getAll = math.getAll( c, hasFilter );
|
301
302
|
}
|
302
|
-
if (c.debug) {
|
303
|
+
if (c.debug || wo.math_debug) {
|
303
304
|
console[ console.group ? 'group' : 'log' ]( 'Tablesorter Math widget recalculation' );
|
304
305
|
}
|
305
306
|
// $.each is okay here... only 4 priorities
|
@@ -308,7 +309,7 @@
|
|
308
309
|
$targetCells = $cells.filter( '[' + mathAttr + '^=' + type + ']' ),
|
309
310
|
len = $targetCells.length;
|
310
311
|
if ( len ) {
|
311
|
-
if (c.debug) {
|
312
|
+
if (c.debug || wo.math_debug) {
|
312
313
|
console[ console.group ? 'group' : 'log' ]( type );
|
313
314
|
}
|
314
315
|
for ( index = 0; index < len; index++ ) {
|
@@ -324,7 +325,7 @@
|
|
324
325
|
if ( equations[ formula ] ) {
|
325
326
|
if ( arry.length ) {
|
326
327
|
result = equations[ formula ]( arry, c );
|
327
|
-
if ( c.debug ) {
|
328
|
+
if ( c.debug || wo.math_debug ) {
|
328
329
|
console.log( $el.attr( mathAttr ), hasFilter ? '("' + hasFilter + '")' : '', arry, '=', result );
|
329
330
|
}
|
330
331
|
} else {
|
@@ -334,10 +335,10 @@
|
|
334
335
|
changed = math.output( $el, c, result, arry ) || changed;
|
335
336
|
}
|
336
337
|
}
|
337
|
-
if ( c.debug && console.groupEnd ) { console.groupEnd(); }
|
338
|
+
if ( ( c.debug || wo.math_debug ) && console.groupEnd ) { console.groupEnd(); }
|
338
339
|
}
|
339
340
|
});
|
340
|
-
if ( c.debug && console.groupEnd ) { console.groupEnd(); }
|
341
|
+
if ( ( c.debug || wo.math_debug ) && console.groupEnd ) { console.groupEnd(); }
|
341
342
|
return changed;
|
342
343
|
}
|
343
344
|
return false;
|
@@ -350,7 +351,14 @@
|
|
350
351
|
changed = false,
|
351
352
|
prev = $cell.html(),
|
352
353
|
mask = $cell.attr( 'data-' + wo.math_data + '-mask' ) || wo.math_mask,
|
354
|
+
target = $cell.attr( 'data-' + wo.math_data + '-target' ) || '',
|
353
355
|
result = ts.formatMask( mask, value, wo.math_wrapPrefix, wo.math_wrapSuffix );
|
356
|
+
if (target) {
|
357
|
+
$el = $cell.find(target);
|
358
|
+
if ($el.length) {
|
359
|
+
$cell = $el;
|
360
|
+
}
|
361
|
+
}
|
354
362
|
if ( typeof wo.math_complete === 'function' ) {
|
355
363
|
result = wo.math_complete( $cell, wo, result, value, arry );
|
356
364
|
}
|
@@ -583,6 +591,7 @@
|
|
583
591
|
priority: 100,
|
584
592
|
options: {
|
585
593
|
math_data : 'math',
|
594
|
+
math_debug : false,
|
586
595
|
// column index to ignore
|
587
596
|
math_ignore : [],
|
588
597
|
// mask info: https://code.google.com/p/javascript-number-formatter/
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/*! Widget: output - updated
|
1
|
+
/*! Widget: output - updated 7/31/2016 (v2.27.0) *//*
|
2
2
|
* Requires tablesorter v2.8+ and jQuery 1.7+
|
3
3
|
* Modified from:
|
4
4
|
* HTML Table to CSV: http://www.kunalbabre.com/projects/table2CSV.php (License unknown?)
|
@@ -145,8 +145,8 @@
|
|
145
145
|
});
|
146
146
|
headers = output.processRow(c, $this, true, outputJSON);
|
147
147
|
|
148
|
-
// all tbody rows
|
149
|
-
$rows = $el.children('tbody').children('tr');
|
148
|
+
// all tbody rows - do not include widget added rows (e.g. grouping widget headers)
|
149
|
+
$rows = $el.children('tbody').children('tr').not(c.selectorRemove);
|
150
150
|
|
151
151
|
// check for a filter callback function first! because
|
152
152
|
// /^f/.test(function(){ console.log('test'); }) is TRUE! (function is converted to a string)
|
@@ -193,7 +193,7 @@
|
|
193
193
|
|
194
194
|
// callback; if true returned, continue processing
|
195
195
|
if ($.isFunction(wo.output_callback)) {
|
196
|
-
tmp = wo.output_callback(c, mydata);
|
196
|
+
tmp = wo.output_callback(c, mydata, c.pager && c.pager.ajaxObject.url || null);
|
197
197
|
if ( tmp === false ) {
|
198
198
|
return;
|
199
199
|
} else if ( typeof tmp === 'string' ) {
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/*! Widget: scroller - updated 7/
|
1
|
+
/*! Widget: scroller - updated 7/31/2016 (v2.27.0) *//*
|
2
2
|
Copyright (C) 2011 T. Connell & Associates, Inc.
|
3
3
|
|
4
4
|
Dual-licensed under the MIT and GPL licenses
|
@@ -77,7 +77,9 @@
|
|
77
77
|
scroller_barWidth : null
|
78
78
|
},
|
79
79
|
format : function( table, c, wo ) {
|
80
|
-
if (
|
80
|
+
if ( c.isScrolling ) {
|
81
|
+
ts.scroller.resize( c, wo );
|
82
|
+
} else {
|
81
83
|
// initialize here instead of in widget init to give the
|
82
84
|
// filter widget time to finish building the filter row
|
83
85
|
ts.scroller.setup( c, wo );
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/*! Widget: stickyHeaders - updated
|
1
|
+
/*! Widget: stickyHeaders - updated 7/31/2016 (v2.27.0) *//*
|
2
2
|
* Requires tablesorter v2.8+ and jQuery 1.4.3+
|
3
3
|
* by Rob Garrison
|
4
4
|
*/
|
@@ -61,10 +61,11 @@
|
|
61
61
|
// **************************
|
62
62
|
ts.addWidget({
|
63
63
|
id: 'stickyHeaders',
|
64
|
-
priority:
|
64
|
+
priority: 55, // sticky widget must be initialized after the filter widget!
|
65
65
|
options: {
|
66
66
|
stickyHeaders : '', // extra class name added to the sticky header row
|
67
|
-
|
67
|
+
stickyHeaders_appendTo : null, // jQuery selector or object to phycially attach the sticky headers
|
68
|
+
stickyHeaders_attachTo : null, // jQuery selector or object to attach scroll listener to (overridden by xScroll & yScroll settings)
|
68
69
|
stickyHeaders_xScroll : null, // jQuery selector or object to monitor horizontal scroll position (defaults: xScroll > attachTo > window)
|
69
70
|
stickyHeaders_yScroll : null, // jQuery selector or object to monitor vertical scroll position (defaults: yScroll > attachTo > window)
|
70
71
|
stickyHeaders_offset : 0, // number or jquery selector targeting the position:fixed element
|
@@ -215,8 +216,12 @@
|
|
215
216
|
|
216
217
|
ts.bindEvents(table, $stickyThead.children().children('.' + ts.css.header));
|
217
218
|
|
218
|
-
|
219
|
-
|
219
|
+
if (wo.stickyHeaders_appendTo) {
|
220
|
+
$(wo.stickyHeaders_appendTo).append( $stickyWrap );
|
221
|
+
} else {
|
222
|
+
// add stickyheaders AFTER the table. If the table is selected by ID, the original one (first) will be returned.
|
223
|
+
$table.after( $stickyWrap );
|
224
|
+
}
|
220
225
|
|
221
226
|
// onRenderHeader is defined, we need to do something about it (fixes #641)
|
222
227
|
if (c.onRenderHeader) {
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/*! Widget: uitheme - updated 7/
|
1
|
+
/*! Widget: uitheme - updated 7/31/2016 (v2.27.0) */
|
2
2
|
;(function ($) {
|
3
3
|
'use strict';
|
4
4
|
var ts = $.tablesorter || {};
|
@@ -37,9 +37,9 @@
|
|
37
37
|
hover : 'ui-state-hover', // hover class
|
38
38
|
// icon class names
|
39
39
|
icons : 'ui-icon', // icon class added to the <i> in the header
|
40
|
-
iconSortNone : 'ui-icon-carat-2-n-s', // class name added to icon when column is not sorted
|
41
|
-
iconSortAsc : 'ui-icon-carat-1-n', // class name added to icon when column has ascending sort
|
42
|
-
iconSortDesc : 'ui-icon-carat-1-s', // class name added to icon when column has descending sort
|
40
|
+
iconSortNone : 'ui-icon-carat-2-n-s ui-icon-caret-2-n-s', // class name added to icon when column is not sorted
|
41
|
+
iconSortAsc : 'ui-icon-carat-1-n ui-icon-caret-1-n', // class name added to icon when column has ascending sort
|
42
|
+
iconSortDesc : 'ui-icon-carat-1-s ui-icon-caret-1-s', // class name added to icon when column has descending sort
|
43
43
|
filterRow : '',
|
44
44
|
footerRow : '',
|
45
45
|
footerCells : '',
|
@@ -51,12 +51,12 @@
|
|
51
51
|
|
52
52
|
/* black unsorted icon */
|
53
53
|
.tablesorter-bootstrap .bootstrap-icon-unsorted {
|
54
|
-
background-image: url(data:image/png;base64,
|
54
|
+
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAOCAYAAAD5YeaVAAAA20lEQVR4AWJABpKSkoxALCstLb0aUAsZaCAMhVEY6B0amx8YZWDDEDSBa2AGe7XeIiAAClYwVGBvsAcIllsf/mvcC9DgOOd8h90fxWvngVEUbZIkuWRZZlE8eQjcisgZMM9zi+LJ6ZfwegmWZflZDugdHMfxTcGqql7TNBlUB/QObtv2VBSFrev6OY7jngzFk9OT/fn73fWYpqnlXNyXDMWT0zuYx/Bvel9ej+LJ6R08DMOu67q7DkTkrSA5vYPneV71fX/QASdTkJwezhs0TfMARn0wMDDGXEPgF4oijqwM5YjNAAAAAElFTkSuQmCC);
|
55
55
|
}
|
56
56
|
|
57
57
|
/* white unsorted icon */
|
58
58
|
.tablesorter-bootstrap .icon-white.bootstrap-icon-unsorted {
|
59
|
-
background-image: url(data:image/png;base64,
|
59
|
+
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAOCAYAAAD5YeaVAAAAe0lEQVR4AbXQoRWDMBiF0Sh2QLAAQ8SxJGugWSA6A2STW1PxTsnB9cnkfuYvv8OGC1t5G3Y0QMP+Bm857keAdQIzWBP3+Bw4MADQE18B6/etRnCV/w9nnGuLezfAmXhABGtAGIkruvk6auIFRwQJDywllsEAjCecB20GP59BQQ+gtlRLAAAAAElFTkSuQmCC);
|
60
60
|
}
|
61
61
|
|
62
62
|
/* since bootstrap (table-striped) uses nth-child(), we just use this to add a zebra stripe color */
|
@@ -61,12 +61,12 @@
|
|
61
61
|
|
62
62
|
/* black unsorted icon */
|
63
63
|
.tablesorter-bootstrap .bootstrap-icon-unsorted {
|
64
|
-
background-image: url(data:image/png;base64,
|
64
|
+
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAOCAYAAAD5YeaVAAABGUlEQVR4AZWQAUfEYBzGC07fILfrbnfgqG1jmxliDitmYIaxb9Y3CEIEVHDaUGMfYF8gIyBqbd7eH7wWofB6/J7nN+x/IIRQbz6fH8p3slgsrkl4uv8QNU071XX9wTAMQcLTD6bi2WazubUsq3ddV5AwPftU1tbr9Z0UPhGDIHgjYXp2JS+Xy71t2wNCFEV113UxCdOzKznLshvf9z+SJHlp23ZHR8L07Er+6/u/LO96td1u3zmX/BmdjoTp2ZUchmHted4o/16sVqt7KR6TMD27kpumOc/z/EkOvWmaQp7rlYTp2ZU8juOsqqqLoij2UvhyHEeQMD27knl93x+VZXmZpukz9yVh+l+vMQzDrK7rXRzHjyQ83b8BlglBGLw1Kb4AAAAASUVORK5CYII=);
|
65
65
|
}
|
66
66
|
|
67
67
|
/* white unsorted icon */
|
68
68
|
.tablesorter-bootstrap .icon-white.bootstrap-icon-unsorted {
|
69
|
-
background-image: url(data:image/png;base64,
|
69
|
+
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAOCAYAAAD5YeaVAAAAe0lEQVR4AbXQoRWDMBiF0Sh2QLAAQ8SxJGugWSA6A2STW1PxTsnB9cnkfuYvv8OGC1t5G3Y0QMP+Bm857keAdQIzWBP3+Bw4MADQE18B6/etRnCV/w9nnGuLezfAmXhABGtAGIkruvk6auIFRwQJDywllsEAjCecB20GP59BQQ+gtlRLAAAAAElFTkSuQmCC);
|
70
70
|
}
|
71
71
|
|
72
72
|
/* since bootstrap (table-striped) uses nth-child(), we just use this to add a zebra stripe color */
|
@@ -0,0 +1,176 @@
|
|
1
|
+
/*************
|
2
|
+
Materialize theme (http://materializecss.com/)
|
3
|
+
*************/
|
4
|
+
/* jQuery materialize Theme */
|
5
|
+
.tablesorter-materialize {
|
6
|
+
width: 100%;
|
7
|
+
}
|
8
|
+
.tablesorter-materialize thead th,
|
9
|
+
.tablesorter-materialize thead td,
|
10
|
+
.tablesorter-materialize tfoot th,
|
11
|
+
.tablesorter-materialize tfoot td {
|
12
|
+
font: 14px/20px Arial, Sans-serif;
|
13
|
+
font-weight: bold;
|
14
|
+
padding: 4px;
|
15
|
+
margin: 0 0 18px;
|
16
|
+
background-color: #eee;
|
17
|
+
}
|
18
|
+
|
19
|
+
.tablesorter-materialize .tablesorter-header {
|
20
|
+
cursor: pointer;
|
21
|
+
}
|
22
|
+
.tablesorter-materialize .sorter-false {
|
23
|
+
cursor: default;
|
24
|
+
}
|
25
|
+
|
26
|
+
.tablesorter-materialize .tablesorter-header-inner {
|
27
|
+
position: relative;
|
28
|
+
padding: 4px 18px 4px 4px;
|
29
|
+
}
|
30
|
+
|
31
|
+
/* sort icons */
|
32
|
+
.tablesorter-materialize thead .tablesorter-header {
|
33
|
+
background-repeat: no-repeat;
|
34
|
+
background-position: center right;
|
35
|
+
padding: 4px 18px 4px 4px;
|
36
|
+
white-space: normal;
|
37
|
+
cursor: pointer;
|
38
|
+
}
|
39
|
+
|
40
|
+
/* black unsorted icon */
|
41
|
+
.tablesorter-materialize thead .tablesorter-headerUnSorted {
|
42
|
+
/* <svg xmlns="http://www.w3.org/2000/svg" width="18" height="12" viewBox="0 0 24 16"><path d="M15 8 1 8 8 0zM15 9 1 9 8 16z" fill="#222"/></svg> */
|
43
|
+
background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxMiIgdmlld0JveD0iMCAwIDI0IDE2Ij48cGF0aCBkPSJNMTUgOCAxIDggOCAwek0xNSA5IDEgOSA4IDE2eiIgZmlsbD0iIzIyMiIvPjwvc3ZnPg==);
|
44
|
+
}
|
45
|
+
/* black asc icon */
|
46
|
+
.tablesorter-materialize thead .tablesorter-headerAsc {
|
47
|
+
/* <svg xmlns="http://www.w3.org/2000/svg" width="18" height="12" viewBox="0 0 24 16"><path d="M15 11 1 11 8 3z" fill="#222"/></svg> */
|
48
|
+
background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxMiIgdmlld0JveD0iMCAwIDI0IDE2Ij48cGF0aCBkPSJNMTUgMTEgMSAxMSA4IDN6IiBmaWxsPSIjMjIyIi8+PC9zdmc+);
|
49
|
+
}
|
50
|
+
/* black desc icon */
|
51
|
+
.tablesorter-materialize thead .tablesorter-headerDesc {
|
52
|
+
/* <svg xmlns="http://www.w3.org/2000/svg" width="18" height="12" viewBox="0 0 24 16"><path d="M15 6 1 6 8 13z" fill="#222"/></svg> */
|
53
|
+
background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxMiIgdmlld0JveD0iMCAwIDI0IDE2Ij48cGF0aCBkPSJNMTUgNiAxIDYgOCAxM3oiIGZpbGw9IiMyMjIiLz48L3N2Zz4=);
|
54
|
+
}
|
55
|
+
|
56
|
+
/* white unsorted icon */
|
57
|
+
.tablesorter-materialize-dark thead .tablesorter-headerUnSorted {
|
58
|
+
/* <svg xmlns="http://www.w3.org/2000/svg" width="18" height="12" viewBox="0 0 24 16"><path d="M15 8 1 8 8 0zM15 9 1 9 8 16z" fill="#fff"/></svg> */
|
59
|
+
background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxMiIgdmlld0JveD0iMCAwIDI0IDE2Ij48cGF0aCBkPSJNMTUgOCAxIDggOCAwek0xNSA5IDEgOSA4IDE2eiIgZmlsbD0iI2ZmZiIvPjwvc3ZnPg==);
|
60
|
+
}
|
61
|
+
/* white asc icon */
|
62
|
+
.tablesorter-materialize-dark thead .tablesorter-headerAsc {
|
63
|
+
/* <svg xmlns="http://www.w3.org/2000/svg" width="18" height="12" viewBox="0 0 24 16"><path d="M15 11 1 11 8 3z" fill="#fff"/></svg> */
|
64
|
+
background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxMiIgdmlld0JveD0iMCAwIDI0IDE2Ij48cGF0aCBkPSJNMTUgMTEgMSAxMSA4IDN6IiBmaWxsPSIjZmZmIi8+PC9zdmc+);
|
65
|
+
}
|
66
|
+
/* white desc icon */
|
67
|
+
.tablesorter-materialize-dark thead .tablesorter-headerDesc {
|
68
|
+
/* <svg xmlns="http://www.w3.org/2000/svg" width="18" height="12" viewBox="0 0 24 16"><path d="M15 6 1 6 8 13z" fill="#fff"/></svg> */
|
69
|
+
background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxMiIgdmlld0JveD0iMCAwIDI0IDE2Ij48cGF0aCBkPSJNMTUgNiAxIDYgOCAxM3oiIGZpbGw9IiNmZmYiLz48L3N2Zz4=);
|
70
|
+
}
|
71
|
+
|
72
|
+
/* since materialize (table-striped) uses nth-child(), we just use this to add a zebra stripe color */
|
73
|
+
.tablesorter-materialize > tbody > tr.odd > td,
|
74
|
+
.tablesorter-materialize > tbody > tr.tablesorter-hasChildRow.odd:hover ~ tr.tablesorter-hasChildRow.odd ~ .tablesorter-childRow.odd > td {
|
75
|
+
background-color: #f9f9f9;
|
76
|
+
}
|
77
|
+
.tablesorter-materialize > tbody > tr.hover > td,
|
78
|
+
.tablesorter-materialize > tbody > tr.odd:hover > td,
|
79
|
+
.tablesorter-materialize > tbody > tr.even:hover > td,
|
80
|
+
.tablesorter-materialize > tbody > tr.tablesorter-hasChildRow.odd:hover ~ .tablesorter-childRow.odd > td,
|
81
|
+
.tablesorter-materialize > tbody > tr.tablesorter-hasChildRow.even:hover ~ .tablesorter-childRow.even > td {
|
82
|
+
background-color: #f5f5f5;
|
83
|
+
}
|
84
|
+
.tablesorter-materialize > tbody > tr.even > td,
|
85
|
+
.tablesorter-materialize > tbody > tr.tablesorter-hasChildRow.even:hover ~ tr.tablesorter-hasChildRow.even ~ .tablesorter-childRow.even > td {
|
86
|
+
background-color: #fff;
|
87
|
+
}
|
88
|
+
|
89
|
+
/* processing icon */
|
90
|
+
.tablesorter-materialize .tablesorter-processing {
|
91
|
+
background-image: url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=');
|
92
|
+
background-position: center center !important;
|
93
|
+
background-repeat: no-repeat !important;
|
94
|
+
}
|
95
|
+
|
96
|
+
/* caption */
|
97
|
+
.caption {
|
98
|
+
background-color: #fff;
|
99
|
+
}
|
100
|
+
|
101
|
+
/* filter widget */
|
102
|
+
.tablesorter-materialize .tablesorter-filter-row input.tablesorter-filter,
|
103
|
+
.tablesorter-materialize .tablesorter-filter-row select.tablesorter-filter {
|
104
|
+
width: 98%;
|
105
|
+
margin: 0;
|
106
|
+
padding: 4px 6px;
|
107
|
+
color: #333;
|
108
|
+
-webkit-box-sizing: border-box;
|
109
|
+
-moz-box-sizing: border-box;
|
110
|
+
box-sizing: border-box;
|
111
|
+
-webkit-transition: height 0.1s ease;
|
112
|
+
-moz-transition: height 0.1s ease;
|
113
|
+
-o-transition: height 0.1s ease;
|
114
|
+
transition: height 0.1s ease;
|
115
|
+
}
|
116
|
+
.tablesorter-materialize .tablesorter-filter-row .tablesorter-filter.disabled {
|
117
|
+
background-color: #eee;
|
118
|
+
color: #555;
|
119
|
+
cursor: not-allowed;
|
120
|
+
border: 1px solid #ccc;
|
121
|
+
border-radius: 4px;
|
122
|
+
box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.075) inset;
|
123
|
+
box-sizing: border-box;
|
124
|
+
transition: height 0.1s ease;
|
125
|
+
}
|
126
|
+
.tablesorter-materialize .tablesorter-filter-row {
|
127
|
+
background-color: #efefef;
|
128
|
+
}
|
129
|
+
.tablesorter-materialize .tablesorter-filter-row td {
|
130
|
+
background-color: #efefef;
|
131
|
+
line-height: normal;
|
132
|
+
text-align: center;
|
133
|
+
padding: 4px 6px;
|
134
|
+
vertical-align: middle;
|
135
|
+
-webkit-transition: line-height 0.1s ease;
|
136
|
+
-moz-transition: line-height 0.1s ease;
|
137
|
+
-o-transition: line-height 0.1s ease;
|
138
|
+
transition: line-height 0.1s ease;
|
139
|
+
}
|
140
|
+
/* hidden filter row */
|
141
|
+
.tablesorter-materialize .tablesorter-filter-row.hideme td {
|
142
|
+
padding: 2px; /* change this to modify the thickness of the closed border row */
|
143
|
+
margin: 0;
|
144
|
+
line-height: 0;
|
145
|
+
}
|
146
|
+
.tablesorter-materialize .tablesorter-filter-row.hideme * {
|
147
|
+
height: 1px;
|
148
|
+
min-height: 0;
|
149
|
+
border: 0;
|
150
|
+
padding: 0;
|
151
|
+
margin: 0;
|
152
|
+
/* don't use visibility: hidden because it disables tabbing */
|
153
|
+
opacity: 0;
|
154
|
+
filter: alpha(opacity=0);
|
155
|
+
}
|
156
|
+
/* rows hidden by filtering (needed for child rows) */
|
157
|
+
.tablesorter .filtered {
|
158
|
+
display: none;
|
159
|
+
}
|
160
|
+
|
161
|
+
/* pager plugin */
|
162
|
+
.tablesorter-materialize .tablesorter-pager select {
|
163
|
+
padding: 4px 6px;
|
164
|
+
display: inline-block;
|
165
|
+
width: auto;
|
166
|
+
}
|
167
|
+
.tablesorter-materialize .tablesorter-pager .pagedisplay {
|
168
|
+
border: 0;
|
169
|
+
}
|
170
|
+
|
171
|
+
/* ajax error row */
|
172
|
+
.tablesorter .tablesorter-errorRow td {
|
173
|
+
text-align: center;
|
174
|
+
cursor: pointer;
|
175
|
+
background-color: #e6bf99;
|
176
|
+
}
|