jquery-tablesorter 1.24.5 → 1.25.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/javascripts/jquery-tablesorter/addons/pager/jquery.tablesorter.pager.js +85 -85
- data/vendor/assets/javascripts/jquery-tablesorter/beta-testing/widget-reorder.js +17 -18
- data/vendor/assets/javascripts/jquery-tablesorter/jquery.tablesorter.combined.js +128 -101
- data/vendor/assets/javascripts/jquery-tablesorter/jquery.tablesorter.js +70 -58
- data/vendor/assets/javascripts/jquery-tablesorter/jquery.tablesorter.widgets.js +58 -43
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-date-extract.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-date-iso8601.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-date-month.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-date-range.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-date-two-digit-year.js +2 -2
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-date-weekday.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-date.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-duration.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-feet-inch-fraction.js +2 -2
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-file-type.js +2 -2
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-ignore-articles.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-image.js +2 -2
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-input-select.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-leading-zeros.js +1 -0
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-named-numbers.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-network.js +4 -4
- data/vendor/assets/javascripts/jquery-tablesorter/parsers/parser-roman.js +5 -5
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-alignChar.js +15 -15
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-build-table.js +28 -18
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-chart.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-columnSelector.js +22 -18
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-cssStickyHeaders.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-filter-formatter-html5.js +34 -31
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-filter-formatter-jui.js +46 -46
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-filter-formatter-select2.js +10 -10
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-filter-type-insideRange.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-filter.js +17 -13
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-formatter.js +2 -2
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-grouping.js +14 -15
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-headerTitles.js +8 -9
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-lazyload.js +35 -35
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-math.js +8 -9
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-output.js +7 -6
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-pager.js +60 -56
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-print.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-reflow.js +11 -11
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-repeatheaders.js +2 -2
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-resizable.js +3 -3
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-saveSort.js +23 -12
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-scroller.js +3 -4
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-sort2Hash.js +2 -2
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-sortTbodies.js +1 -1
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-staticRow.js +7 -7
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-stickyHeaders.js +2 -2
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-storage.js +5 -6
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-uitheme.js +7 -6
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-vertical-group.js +10 -12
- data/vendor/assets/javascripts/jquery-tablesorter/widgets/widget-view.js +3 -3
- metadata +2 -2
@@ -6,7 +6,7 @@
|
|
6
6
|
;( function( $ ) {
|
7
7
|
'use strict';
|
8
8
|
|
9
|
-
var updateServer = function( event, $table, $input ) {
|
9
|
+
var updateServer = function( /* event, $table, $input */ ) {
|
10
10
|
// do something here to update your server, if needed
|
11
11
|
// event = change event object
|
12
12
|
// $table = jQuery object of the table that was just updated
|
@@ -1,7 +1,7 @@
|
|
1
1
|
/*! Parser: network - updated 2018-01-10 (v2.29.3) */
|
2
2
|
/* IPv4, IPv6 and MAC Addresses */
|
3
3
|
/*global jQuery: false */
|
4
|
-
;(function($){
|
4
|
+
;(function($) {
|
5
5
|
'use strict';
|
6
6
|
|
7
7
|
var ts = $.tablesorter,
|
@@ -47,13 +47,13 @@
|
|
47
47
|
if (ts.regex.ipv4Validate.test(address)) {
|
48
48
|
groups = address.match(ts.regex.ipv4Extract);
|
49
49
|
t = '';
|
50
|
-
for (i = 1; i < groups.length; i++){
|
50
|
+
for (i = 1; i < groups.length; i++) {
|
51
51
|
t += ('00' + (parseInt(groups[i], 10).toString(16)) ).slice(-2) + ( i === 2 ? ':' : '' );
|
52
52
|
}
|
53
53
|
address = address.replace( ts.regex.ipv4Extract, t );
|
54
54
|
}
|
55
55
|
|
56
|
-
if (address.indexOf('::')
|
56
|
+
if (address.indexOf('::') === -1) {
|
57
57
|
// All eight groups are present
|
58
58
|
fullAddress = address;
|
59
59
|
} else {
|
@@ -74,7 +74,7 @@
|
|
74
74
|
// it's fastest & easiest for tablesorter to sort decimal values (vs hex)
|
75
75
|
groups[i] = hex ? ('0000' + groups[i]).slice(-4) :
|
76
76
|
('00000' + (parseInt(groups[i], 16) || 0)).slice(-5);
|
77
|
-
expandedAddress += ( i
|
77
|
+
expandedAddress += ( i !== validGroupCount - 1) ? groups[i] + ':' : groups[i];
|
78
78
|
}
|
79
79
|
return expandedAddress;
|
80
80
|
},
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* Jonathan Snook comment @ http://blog.stevenlevithan.com/archives/javascript-roman-numeral-converter#comment-16140
|
5
5
|
*/
|
6
6
|
/*jshint jquery:true, unused:false */
|
7
|
-
;(function($){
|
7
|
+
;(function($) {
|
8
8
|
'use strict';
|
9
9
|
|
10
10
|
// allow lower case roman numerals, since lists use i, ii, iii, etc.
|
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
$.tablesorter.addParser({
|
16
16
|
id: 'roman',
|
17
|
-
is: function(){
|
17
|
+
is: function() {
|
18
18
|
return false;
|
19
19
|
},
|
20
20
|
format: function(s) {
|
@@ -39,7 +39,7 @@
|
|
39
39
|
|
40
40
|
$.tablesorter.addParser({
|
41
41
|
id: 'roman-ignore',
|
42
|
-
is: function(){
|
42
|
+
is: function() {
|
43
43
|
return false;
|
44
44
|
},
|
45
45
|
format: function(s, table, cell, column) {
|
@@ -80,13 +80,13 @@
|
|
80
80
|
|
81
81
|
$.tablesorter.addParser({
|
82
82
|
id: 'roman-extract',
|
83
|
-
is: function(){
|
83
|
+
is: function() {
|
84
84
|
return false;
|
85
85
|
},
|
86
86
|
format: function(s) {
|
87
87
|
var val,
|
88
88
|
// find roman numerals
|
89
|
-
roman = $.grep(s.split(/\b/), function(v
|
89
|
+
roman = $.grep(s.split(/\b/), function(v) {
|
90
90
|
return validator.test(v) ? v : '';
|
91
91
|
}).join('').match(matcher),
|
92
92
|
|
@@ -4,14 +4,14 @@
|
|
4
4
|
*/
|
5
5
|
/*jshint browser:true, jquery:true, unused:false */
|
6
6
|
/*global jQuery: false */
|
7
|
-
;(function($){
|
7
|
+
;(function($) {
|
8
8
|
'use strict';
|
9
9
|
var ts = $.tablesorter;
|
10
10
|
|
11
11
|
ts.alignChar = {
|
12
12
|
|
13
13
|
init : function(table, c, wo) {
|
14
|
-
c.$headers.filter('[' + wo.alignChar_charAttrib + ']').each(function(){
|
14
|
+
c.$headers.filter('[' + wo.alignChar_charAttrib + ']').each(function() {
|
15
15
|
var $this = $(this),
|
16
16
|
vars = {
|
17
17
|
column : this.column,
|
@@ -27,14 +27,14 @@
|
|
27
27
|
});
|
28
28
|
},
|
29
29
|
|
30
|
-
setup: function(table, c, wo, v){
|
30
|
+
setup: function(table, c, wo, v) {
|
31
31
|
// do nothing for empty tables
|
32
32
|
if ($.isEmptyObject(c.cache)) { return; }
|
33
33
|
var tbodyIndex, rowIndex, start, end, last, index, rows, val, count,
|
34
34
|
len, wLeft, wRight, alignChar, $row,
|
35
35
|
left = [],
|
36
36
|
right = [];
|
37
|
-
for (tbodyIndex = 0; tbodyIndex < c.$tbodies.length; tbodyIndex++){
|
37
|
+
for (tbodyIndex = 0; tbodyIndex < c.$tbodies.length; tbodyIndex++) {
|
38
38
|
rows = c.cache[tbodyIndex];
|
39
39
|
len = rows.normalized.length;
|
40
40
|
for (rowIndex = 0; rowIndex < len; rowIndex++) {
|
@@ -70,14 +70,14 @@
|
|
70
70
|
}
|
71
71
|
|
72
72
|
// find widest segments
|
73
|
-
wLeft = ($.extend([], left)).sort(function(a, b){ return b.length - a.length; })[0];
|
74
|
-
wRight = ($.extend([], right)).sort(function(a, b){ return b.length - a.length; })[0];
|
73
|
+
wLeft = ($.extend([], left)).sort(function(a, b) { return b.length - a.length; })[0];
|
74
|
+
wRight = ($.extend([], right)).sort(function(a, b) { return b.length - a.length; })[0];
|
75
75
|
// calculate percentage widths
|
76
76
|
v.width = v.width || ( Math.floor(wLeft.length / (wLeft.length + wRight.length) * 100) + v.adjust );
|
77
77
|
wLeft = 'min-width:' + v.width + '%';
|
78
78
|
wRight = 'min-width:' + (100 - v.width) + '%';
|
79
79
|
|
80
|
-
for (tbodyIndex = 0; tbodyIndex < c.$tbodies.length; tbodyIndex++){
|
80
|
+
for (tbodyIndex = 0; tbodyIndex < c.$tbodies.length; tbodyIndex++) {
|
81
81
|
rows = c.cache[tbodyIndex];
|
82
82
|
len = rows.normalized.length;
|
83
83
|
for (rowIndex = 0; rowIndex < len; rowIndex++) {
|
@@ -94,10 +94,10 @@
|
|
94
94
|
|
95
95
|
},
|
96
96
|
|
97
|
-
remove: function(table, c, column){
|
97
|
+
remove: function(table, c, column) {
|
98
98
|
if ($.isEmptyObject(c.cache)) { return; }
|
99
99
|
var tbodyIndex, rowIndex, len, rows, $row, $cell;
|
100
|
-
for (tbodyIndex = 0; tbodyIndex < c.$tbodies.length; tbodyIndex++){
|
100
|
+
for (tbodyIndex = 0; tbodyIndex < c.$tbodies.length; tbodyIndex++) {
|
101
101
|
rows = c.cache[tbodyIndex];
|
102
102
|
len = rows.normalized.length;
|
103
103
|
for (rowIndex = 0; rowIndex < len; rowIndex++) {
|
@@ -118,26 +118,26 @@
|
|
118
118
|
alignChar_indexAttrib : 'data-align-index',
|
119
119
|
alignChar_adjustAttrib : 'data-align-adjust' // percentage width adjustments
|
120
120
|
},
|
121
|
-
init: function(table, thisWidget, c, wo){
|
121
|
+
init: function(table, thisWidget, c, wo) {
|
122
122
|
wo.alignChar_initialized = false;
|
123
123
|
wo.alignChar_savedVars = [];
|
124
124
|
ts.alignChar.init(table, c, wo);
|
125
|
-
c.$table.on('pagerEnd refreshAlign', function(){
|
126
|
-
c.$headers.filter('[' + wo.alignChar_charAttrib + ']').each(function(){
|
125
|
+
c.$table.on('pagerEnd refreshAlign', function() {
|
126
|
+
c.$headers.filter('[' + wo.alignChar_charAttrib + ']').each(function() {
|
127
127
|
ts.alignChar.remove(table, c, this.column);
|
128
128
|
});
|
129
129
|
ts.alignChar.init(table, c, wo);
|
130
130
|
});
|
131
131
|
},
|
132
|
-
format : function(table, c, wo){
|
132
|
+
format : function(table, c, wo) {
|
133
133
|
// reinitialize in case table is empty when first initialized
|
134
134
|
if (!wo.alignChar_initialized) {
|
135
135
|
c.$table.triggerHandler('refreshAlign');
|
136
136
|
}
|
137
137
|
},
|
138
|
-
remove : function(table, c, wo, refreshing){
|
138
|
+
remove : function(table, c, wo, refreshing) {
|
139
139
|
if (refreshing) { return; }
|
140
|
-
c.$headers.filter('[' + wo.alignChar_charAttrib + ']').each(function(){
|
140
|
+
c.$headers.filter('[' + wo.alignChar_charAttrib + ']').each(function() {
|
141
141
|
ts.alignChar.remove(table, c, this.column);
|
142
142
|
});
|
143
143
|
wo.alignChar_initialized = false;
|
@@ -1,17 +1,17 @@
|
|
1
|
-
/*! Widget: Build Table - updated
|
1
|
+
/*! Widget: Build Table - updated 2018-03-18 (v2.30.0) *//*
|
2
2
|
* for tableSorter v2.16.0+
|
3
3
|
* by Rob Garrison
|
4
4
|
*/
|
5
5
|
/*jshint browser:true, jquery:true, unused:false */
|
6
6
|
/*global jQuery: false */
|
7
|
-
;(function($){
|
7
|
+
;(function($) {
|
8
8
|
'use strict';
|
9
9
|
var ts = $.tablesorter = $.tablesorter || {},
|
10
10
|
|
11
11
|
// build a table from data (requires existing <table> tag)
|
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
|
-
bt = ts.buildTable = function(tar, c){
|
14
|
+
bt = ts.buildTable = function(tar, c) {
|
15
15
|
// add build options to defaults to prevent warnings
|
16
16
|
$.extend(true, ts.defaults.widgetOptions, bt.defaults);
|
17
17
|
// add table if one doesn't exist
|
@@ -21,9 +21,10 @@
|
|
21
21
|
p = wo.build_processing,
|
22
22
|
typ = wo.build_type,
|
23
23
|
d = wo.build_source || c.data,
|
24
|
+
debug = ts.debug(c, 'build'),
|
24
25
|
|
25
26
|
// determine type: html, json, array, csv, object
|
26
|
-
runType = function(d){
|
27
|
+
runType = function(d) {
|
27
28
|
var t = $.type(d),
|
28
29
|
jq = d instanceof jQuery;
|
29
30
|
// run any processing if set
|
@@ -59,7 +60,9 @@
|
|
59
60
|
|
60
61
|
// even if wo.build_type is undefined, we can try to figure out the type
|
61
62
|
if ( !ts.buildTable.hasOwnProperty(typ) && typ !== '' ) {
|
62
|
-
if (
|
63
|
+
if (debug) {
|
64
|
+
console.error('Build >> ERROR: Aborting build table widget, incorrect build type');
|
65
|
+
}
|
63
66
|
return false;
|
64
67
|
}
|
65
68
|
|
@@ -72,8 +75,10 @@
|
|
72
75
|
.done(function(data) {
|
73
76
|
runType(data);
|
74
77
|
})
|
75
|
-
.fail(function( jqXHR, textStatus
|
76
|
-
if (
|
78
|
+
.fail(function( jqXHR, textStatus) {
|
79
|
+
if (debug) {
|
80
|
+
console.error('Build >> ERROR: Aborting build table widget, failed ajax load');
|
81
|
+
}
|
77
82
|
$tbl.html('<tr><td class="error">' + jqXHR.status + ' ' + textStatus + '</td></tr>');
|
78
83
|
});
|
79
84
|
} else {
|
@@ -125,7 +130,7 @@
|
|
125
130
|
// add colgroup if widths set
|
126
131
|
if (widths && widths.length) {
|
127
132
|
t += '<colgroup>';
|
128
|
-
$.each(widths, function(i, w){
|
133
|
+
$.each(widths, function(i, w) {
|
129
134
|
t += '<col' + ( w ? ' style="width:' + w + '"' : '' ) + '>';
|
130
135
|
});
|
131
136
|
t += '</colgroup>';
|
@@ -133,7 +138,7 @@
|
|
133
138
|
return t;
|
134
139
|
},
|
135
140
|
// d = cell data; typ = 'th' or 'td'; first = save widths from first header row only
|
136
|
-
cell : function(d, wo, typ, col, first){
|
141
|
+
cell : function(d, wo, typ, col, first) {
|
137
142
|
var j, $td,
|
138
143
|
$col = first ? $('<col>') : '',
|
139
144
|
cls = wo.build_headers.classes,
|
@@ -150,7 +155,7 @@
|
|
150
155
|
// assume we have an object
|
151
156
|
$td = $('<' + typ + '>');
|
152
157
|
for (j in d) {
|
153
|
-
if (d.hasOwnProperty(j)){
|
158
|
+
if (d.hasOwnProperty(j)) {
|
154
159
|
if (j === 'text' || j === 'html') {
|
155
160
|
$td[j]( d[j] );
|
156
161
|
} else if (first && j === 'width') {
|
@@ -165,7 +170,7 @@
|
|
165
170
|
return [ $td, $col ];
|
166
171
|
},
|
167
172
|
// h1 = header text from data
|
168
|
-
header : function(h1, wo){
|
173
|
+
header : function(h1, wo) {
|
169
174
|
var h2 = wo.build_headers.text,
|
170
175
|
cls = wo.build_headers.classes,
|
171
176
|
t = '<tr>' + (wo.build_numbers.addColumn ? '<th' + (wo.build_numbers.sortable ? '' :
|
@@ -180,7 +185,7 @@
|
|
180
185
|
});
|
181
186
|
return t + '</tr>';
|
182
187
|
},
|
183
|
-
rows : function(items, txt, c, wo, num, ftr){
|
188
|
+
rows : function(items, txt, c, wo, num, ftr) {
|
184
189
|
var h = (ftr ? 'th' : 'td'),
|
185
190
|
t = '<tr>' + (wo.build_numbers.addColumn ? '<' + h + '>' + (ftr ? '' : num) + '</' + h + '>' : '');
|
186
191
|
$.each(items, function(i, item) {
|
@@ -196,8 +201,11 @@
|
|
196
201
|
}
|
197
202
|
};
|
198
203
|
|
199
|
-
bt.buildComplete = function(table, wo){
|
204
|
+
bt.buildComplete = function(table, wo) {
|
200
205
|
$(table).triggerHandler(wo.build_complete);
|
206
|
+
if (table.config && ts.debug(table.config, 'build')) {
|
207
|
+
console.log('Build >> Table build complete');
|
208
|
+
}
|
201
209
|
ts.setup(table, table.config);
|
202
210
|
};
|
203
211
|
|
@@ -361,7 +369,9 @@
|
|
361
369
|
r = data.hasOwnProperty(kr) && !$.isEmptyObject(data.kr) ? data.kr : data.hasOwnProperty('rows') ? data.rows : false;
|
362
370
|
|
363
371
|
if (!h || !r || h.length === 0 || r.length === 0) {
|
364
|
-
if (
|
372
|
+
if (ts.debug(c, 'build')) {
|
373
|
+
console.error('Build >> ERROR: Aborting build table widget, missing data for object build');
|
374
|
+
}
|
365
375
|
return false;
|
366
376
|
}
|
367
377
|
|
@@ -371,7 +381,7 @@
|
|
371
381
|
// Build thead
|
372
382
|
// h = [ ['headerRow1Cell1', 'headerRow1Cell2', ... 'headerRow1CellN' ], ['headerRow2Cell1', ... ] ]
|
373
383
|
// or h = [ [ { text: 'firstCell', class: 'fc', width: '20%' }, ..., { text: 'last Cell' } ], [ /* second row */ ] ]
|
374
|
-
$.each(h, function(i, d){
|
384
|
+
$.each(h, function(i, d) {
|
375
385
|
$tr = $('<tr>').appendTo( $t.find('thead') );
|
376
386
|
l = d.length; // header row
|
377
387
|
for ( j = 0; j < l; j++ ) {
|
@@ -388,14 +398,14 @@
|
|
388
398
|
|
389
399
|
$tb = $('<tbody>');
|
390
400
|
// Build tbody
|
391
|
-
$.each(r, function(i, d){
|
401
|
+
$.each(r, function(i, d) {
|
392
402
|
var j;
|
393
403
|
t = $.type(d) === 'object';
|
394
404
|
// add new tbody
|
395
405
|
if (t && d.newTbody) {
|
396
406
|
$tb = $('<tbody>').appendTo( $t );
|
397
407
|
for (j in d) {
|
398
|
-
if (d.hasOwnProperty(j) && j !== 'newTbody'){
|
408
|
+
if (d.hasOwnProperty(j) && j !== 'newTbody') {
|
399
409
|
$tb.attr(j, d[j]);
|
400
410
|
}
|
401
411
|
}
|
@@ -409,7 +419,7 @@
|
|
409
419
|
if (t) {
|
410
420
|
// row defined by object
|
411
421
|
for (j in d) {
|
412
|
-
if (d.hasOwnProperty(j) && j !== wo.build_objectCellKey){
|
422
|
+
if (d.hasOwnProperty(j) && j !== wo.build_objectCellKey) {
|
413
423
|
$tr.attr(j, d[j]);
|
414
424
|
}
|
415
425
|
}
|
@@ -1,10 +1,10 @@
|
|
1
|
-
/* Widget: columnSelector (responsive table widget) - updated
|
1
|
+
/* Widget: columnSelector (responsive table widget) - updated 2018-03-18 (v2.30.0) *//*
|
2
2
|
* Requires tablesorter v2.8+ and jQuery 1.7+
|
3
3
|
* by Justin Hallett & Rob Garrison
|
4
4
|
*/
|
5
5
|
/*jshint browser:true, jquery:true, unused:false */
|
6
6
|
/*global jQuery: false */
|
7
|
-
;(function($){
|
7
|
+
;(function($) {
|
8
8
|
'use strict';
|
9
9
|
|
10
10
|
var ts = $.tablesorter,
|
@@ -15,13 +15,14 @@
|
|
15
15
|
queryBreak : '@media all and (min-width: [size]) { [columns] { display: table-cell; } } ',
|
16
16
|
|
17
17
|
init: function(table, c, wo) {
|
18
|
-
var $t, colSel
|
18
|
+
var $t, colSel,
|
19
|
+
debug = ts.debug(c, 'columnSelector');
|
19
20
|
|
20
21
|
// abort if no input is contained within the layout
|
21
22
|
$t = $(wo.columnSelector_layout);
|
22
23
|
if (!$t.find('input').add( $t.filter('input') ).length) {
|
23
|
-
if (
|
24
|
-
console.error('ColumnSelector
|
24
|
+
if (debug) {
|
25
|
+
console.error('ColumnSelector >> ERROR: Column Selector aborting, no input found in the layout! ***');
|
25
26
|
}
|
26
27
|
return;
|
27
28
|
}
|
@@ -45,8 +46,8 @@
|
|
45
46
|
colSel.isInitializing = false;
|
46
47
|
if (colSel.$container.length) {
|
47
48
|
tsColSel.updateCols(c, wo);
|
48
|
-
} else if (
|
49
|
-
console.warn('ColumnSelector
|
49
|
+
} else if (debug) {
|
50
|
+
console.warn('ColumnSelector >> container not found');
|
50
51
|
}
|
51
52
|
|
52
53
|
c.$table
|
@@ -59,11 +60,14 @@
|
|
59
60
|
[ 'auto', [2,3,4] ] = set visible columns; turn on "auto" mode.
|
60
61
|
true = turn on "auto" mode.
|
61
62
|
*/
|
62
|
-
.on('refreshColumnSelector' + namespace, function( e, optName, optState ){
|
63
|
+
.on('refreshColumnSelector' + namespace, function( e, optName, optState ) {
|
63
64
|
// make sure we're using current config settings
|
64
65
|
tsColSel.refreshColumns( this.config, optName, optState );
|
65
66
|
});
|
66
67
|
|
68
|
+
if (debug) {
|
69
|
+
console.log('ColumnSelector >> Widget initialized');
|
70
|
+
}
|
67
71
|
},
|
68
72
|
|
69
73
|
refreshColumns: function( c, optName, optState ) {
|
@@ -87,7 +91,7 @@
|
|
87
91
|
if (isArry) {
|
88
92
|
arry = optState || optName;
|
89
93
|
// make sure array contains numbers
|
90
|
-
$.each(arry, function(i, v){
|
94
|
+
$.each(arry, function(i, v) {
|
91
95
|
arry[i] = parseInt(v, 10);
|
92
96
|
});
|
93
97
|
for (i = 0; i < c.columns; i++) {
|
@@ -229,7 +233,7 @@
|
|
229
233
|
.attr('data-column', 'auto')
|
230
234
|
.prop('checked', colSel.auto)
|
231
235
|
.toggleClass( wo.columnSelector_cssChecked, colSel.auto )
|
232
|
-
.on('change', function(){
|
236
|
+
.on('change', function() {
|
233
237
|
tsColSel.updateAuto(c, wo, $(this));
|
234
238
|
}).change();
|
235
239
|
}
|
@@ -243,7 +247,7 @@
|
|
243
247
|
updateAuto: function(c, wo, $el) {
|
244
248
|
var colSel = c.selector;
|
245
249
|
colSel.auto = $el.prop('checked') || false;
|
246
|
-
$.each( colSel.$checkbox, function(i, $cb){
|
250
|
+
$.each( colSel.$checkbox, function(i, $cb) {
|
247
251
|
if ($cb) {
|
248
252
|
$cb[0].disabled = colSel.auto;
|
249
253
|
colSel.$wrapper[i].toggleClass('disabled', colSel.auto);
|
@@ -257,7 +261,7 @@
|
|
257
261
|
if (c.selector.$popup) {
|
258
262
|
c.selector.$popup.find('.tablesorter-column-selector')
|
259
263
|
.html( colSel.$container.html() )
|
260
|
-
.find('input').each(function(){
|
264
|
+
.find('input').each(function() {
|
261
265
|
var indx = $(this).attr('data-column');
|
262
266
|
$(this).prop( 'checked', indx === 'auto' ? colSel.auto : colSel.states[indx] );
|
263
267
|
});
|
@@ -306,10 +310,10 @@
|
|
306
310
|
}
|
307
311
|
}
|
308
312
|
// only 6 breakpoints (same as jQuery Mobile)
|
309
|
-
for (priority = 0; priority < wo.columnSelector_maxPriorities; priority++){
|
313
|
+
for (priority = 0; priority < wo.columnSelector_maxPriorities; priority++) {
|
310
314
|
/*jshint loopfunc:true */
|
311
315
|
breaks = [];
|
312
|
-
c.$headers.filter('[' + wo.columnSelector_priority + '=' + (priority + 1) + ']').each(function(){
|
316
|
+
c.$headers.filter('[' + wo.columnSelector_priority + '=' + (priority + 1) + ']').each(function() {
|
313
317
|
column = parseInt($(this).attr('data-column'), 10) + 1;
|
314
318
|
// don't reveal columnSelector false columns
|
315
319
|
if ( !isHidden[ column ] ) {
|
@@ -340,14 +344,14 @@
|
|
340
344
|
colSel = c.selector,
|
341
345
|
styles = [],
|
342
346
|
prefix = c.namespace + 'columnselector';
|
343
|
-
colSel.$container.find('input[data-column]').filter('[data-column!="auto"]').each(function(){
|
347
|
+
colSel.$container.find('input[data-column]').filter('[data-column!="auto"]').each(function() {
|
344
348
|
if (!this.checked) {
|
345
349
|
column = parseInt( $(this).attr('data-column'), 10 ) + 1;
|
346
350
|
styles = styles.concat( tsColSel.addSelectors( wo, prefix, column ) );
|
347
351
|
}
|
348
352
|
$(this).toggleClass( wo.columnSelector_cssChecked, this.checked );
|
349
353
|
});
|
350
|
-
if (wo.columnSelector_mediaquery){
|
354
|
+
if (wo.columnSelector_mediaquery) {
|
351
355
|
colSel.$breakpoints.prop('disabled', true);
|
352
356
|
}
|
353
357
|
if (colSel.$style) {
|
@@ -451,7 +455,7 @@
|
|
451
455
|
wo = c.widgetOptions;
|
452
456
|
$popup.find('.tablesorter-column-selector')
|
453
457
|
.html( colSel.$container.html() )
|
454
|
-
.find('input').each(function(){
|
458
|
+
.find('input').each(function() {
|
455
459
|
var indx = $(this).attr('data-column'),
|
456
460
|
isChecked = indx === 'auto' ? colSel.auto : colSel.states[indx];
|
457
461
|
$(this)
|
@@ -503,7 +507,7 @@
|
|
503
507
|
// container layout
|
504
508
|
columnSelector_layout : '<label><input type="checkbox">{name}</label>',
|
505
509
|
// layout customizer callback called for each column
|
506
|
-
// function($cell, name, column){ return name || $cell.html(); }
|
510
|
+
// function($cell, name, column) { return name || $cell.html(); }
|
507
511
|
columnSelector_layoutCustomizer : null,
|
508
512
|
// data attribute containing column name to use in the selector container
|
509
513
|
columnSelector_name : 'data-selector-name',
|