jquery-tablesorter 1.0.4 → 1.0.5
Sign up to get free protection for your applications and to get access to all the features.
data/README.markdown
CHANGED
@@ -3,7 +3,7 @@ jQuery Table Sorter plugin for Rails
|
|
3
3
|
|
4
4
|
Simple integration of jquery-tablesorter into the asset pipeline.
|
5
5
|
|
6
|
-
Current version: 2.3.
|
6
|
+
Current version: 2.3.11(7/12/2012), [documentation]
|
7
7
|
|
8
8
|
Any issue associate with the js/css files, please report to [Mottie's fork].
|
9
9
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* TableSorter 2.3.
|
2
|
+
* TableSorter 2.3.11 - Client-side table sorting with ease!
|
3
3
|
* @requires jQuery v1.2.6+
|
4
4
|
*
|
5
5
|
* Copyright (c) 2007 Christian Bach
|
@@ -18,7 +18,7 @@
|
|
18
18
|
$.extend({
|
19
19
|
tablesorter: new function() {
|
20
20
|
|
21
|
-
this.version = "2.3.
|
21
|
+
this.version = "2.3.11";
|
22
22
|
|
23
23
|
var parsers = [], widgets = [];
|
24
24
|
this.defaults = {
|
@@ -111,11 +111,7 @@
|
|
111
111
|
if (c.supportsTextContent) {
|
112
112
|
text = node.textContent; // newer browsers support this
|
113
113
|
} else {
|
114
|
-
|
115
|
-
text = node.childNodes[0].innerHTML;
|
116
|
-
} else {
|
117
|
-
text = node.innerHTML;
|
118
|
-
}
|
114
|
+
text = $(node).text();
|
119
115
|
}
|
120
116
|
} else {
|
121
117
|
if (typeof(t) === "function") {
|
@@ -177,7 +173,7 @@
|
|
177
173
|
l = rows[0].cells.length;
|
178
174
|
for (i = 0; i < l; i++) {
|
179
175
|
// tons of thanks to AnthonyM1229 for working out the following selector (issue #74) to make this work in IE8!
|
180
|
-
h = $headers.filter(':not([colspan])[data-column="'+i+'"]:last,[colspan="1"][data-column="'+i+'"]:last');
|
176
|
+
h = $headers.filter(':not([colspan])[data-column="' + i + '"]:last,[colspan="1"][data-column="' + i + '"]:last');
|
181
177
|
ch = c.headers[i];
|
182
178
|
// get column parser
|
183
179
|
p = getParserById( ts.getData(h, ch, 'sorter') );
|
@@ -476,12 +472,12 @@
|
|
476
472
|
|
477
473
|
/* sorting methods - reverted sorting method back to version 2.0.3 */
|
478
474
|
function multisort(table, sortList) {
|
479
|
-
var dynamicExp, col, mx = 0, dir = 0, tc = table.config,
|
475
|
+
var dynamicExp, sortWrapper, col, mx = 0, dir = 0, tc = table.config,
|
480
476
|
l = sortList.length, bl = table.tBodies.length,
|
481
477
|
sortTime, i, j, k, c, cache, lc, s, e, order, orgOrderCol;
|
482
478
|
if (tc.debug) { sortTime = new Date(); }
|
483
479
|
for (k = 0; k < bl; k++) {
|
484
|
-
dynamicExp = "
|
480
|
+
dynamicExp = "sortWrapper = function(a,b) {";
|
485
481
|
cache = tc.cache[k];
|
486
482
|
lc = cache.normalized.length;
|
487
483
|
for (i = 0; i < l; i++) {
|
@@ -504,7 +500,7 @@
|
|
504
500
|
dir = (tc.strings[c]) ? tc.string[tc.strings[c]] || 0 : 0;
|
505
501
|
}
|
506
502
|
}
|
507
|
-
dynamicExp += "var " + e + " = sort" + s + "(table,a[" + c + "],b[" + c + "]," + c + "," + mx + "," + dir + "); ";
|
503
|
+
dynamicExp += "var " + e + " = $.tablesorter.sort" + s + "(table,a[" + c + "],b[" + c + "]," + c + "," + mx + "," + dir + "); ";
|
508
504
|
dynamicExp += "if (" + e + ") { return " + e + "; } ";
|
509
505
|
dynamicExp += "else { ";
|
510
506
|
}
|
@@ -516,94 +512,11 @@
|
|
516
512
|
}
|
517
513
|
dynamicExp += "return 0; ";
|
518
514
|
dynamicExp += "}; ";
|
519
|
-
eval(dynamicExp);
|
520
|
-
cache.normalized.sort(sortWrapper); // sort using eval expression
|
515
|
+
cache.normalized.sort(eval(dynamicExp)); // sort using eval expression
|
521
516
|
}
|
522
517
|
if (tc.debug) { benchmark("Sorting on " + sortList.toString() + " and dir " + order+ " time", sortTime); }
|
523
518
|
}
|
524
519
|
|
525
|
-
// Natural sort - https://github.com/overset/javascript-natural-sort
|
526
|
-
function sortText(table, a, b, col) {
|
527
|
-
if (a === b) { return 0; }
|
528
|
-
var c = table.config, e = c.string[ (c.empties[col] || c.emptyTo ) ],
|
529
|
-
r = $.tablesorter.regex, xN, xD, yN, yD, xF, yF, i, mx;
|
530
|
-
if (a === '' && e !== 0) { return (typeof(e) === 'boolean') ? (e ? -1 : 1) : -e || -1; }
|
531
|
-
if (b === '' && e !== 0) { return (typeof(e) === 'boolean') ? (e ? 1 : -1) : e || 1; }
|
532
|
-
if (typeof c.textSorter === 'function') { return c.textSorter(a, b, table, col); }
|
533
|
-
// chunk/tokenize
|
534
|
-
xN = a.replace(r[0], '\0$1\0').replace(/\0$/, '').replace(/^\0/, '').split('\0');
|
535
|
-
yN = b.replace(r[0], '\0$1\0').replace(/\0$/, '').replace(/^\0/, '').split('\0');
|
536
|
-
// numeric, hex or date detection
|
537
|
-
xD = parseInt(a.match(r[2])) || (xN.length !== 1 && a.match(r[1]) && Date.parse(a));
|
538
|
-
yD = parseInt(b.match(r[2])) || (xD && b.match(r[1]) && Date.parse(b)) || null;
|
539
|
-
// first try and sort Hex codes or Dates
|
540
|
-
if (yD) {
|
541
|
-
if ( xD < yD ) { return -1; }
|
542
|
-
if ( xD > yD ) { return 1; }
|
543
|
-
}
|
544
|
-
mx = Math.max(xN.length, yN.length);
|
545
|
-
// natural sorting through split numeric strings and default strings
|
546
|
-
for (i = 0; i < mx; i++) {
|
547
|
-
// find floats not starting with '0', string or 0 if not defined (Clint Priest)
|
548
|
-
xF = (!(xN[i] || '').match(r[3]) && parseFloat(xN[i])) || xN[i] || 0;
|
549
|
-
yF = (!(yN[i] || '').match(r[3]) && parseFloat(yN[i])) || yN[i] || 0;
|
550
|
-
// handle numeric vs string comparison - number < string - (Kyle Adams)
|
551
|
-
if (isNaN(xF) !== isNaN(yF)) { return (isNaN(xF)) ? 1 : -1; }
|
552
|
-
// rely on string comparison if different types - i.e. '02' < 2 != '02' < '2'
|
553
|
-
if (typeof xF !== typeof yF) {
|
554
|
-
xF += '';
|
555
|
-
yF += '';
|
556
|
-
}
|
557
|
-
if (xF < yF) { return -1; }
|
558
|
-
if (xF > yF) { return 1; }
|
559
|
-
}
|
560
|
-
return 0;
|
561
|
-
}
|
562
|
-
|
563
|
-
function sortTextDesc(table, a, b, col) {
|
564
|
-
if (a === b) { return 0; }
|
565
|
-
var c = table.config, e = c.string[ (c.empties[col] || c.emptyTo ) ];
|
566
|
-
if (a === '' && e !== 0) { return (typeof(e) === 'boolean') ? (e ? -1 : 1) : e || 1; }
|
567
|
-
if (b === '' && e !== 0) { return (typeof(e) === 'boolean') ? (e ? 1 : -1) : -e || -1; }
|
568
|
-
if (typeof c.textSorter === 'function') { return c.textSorter(b, a, table, col); }
|
569
|
-
return sortText(table, b, a);
|
570
|
-
}
|
571
|
-
|
572
|
-
// return text string value by adding up ascii value
|
573
|
-
// so the text is somewhat sorted when using a digital sort
|
574
|
-
// this is NOT an alphanumeric sort
|
575
|
-
function getTextValue(a, mx, d) {
|
576
|
-
if (mx) {
|
577
|
-
// make sure the text value is greater than the max numerical value (mx)
|
578
|
-
var i, l = a.length, n = mx + d;
|
579
|
-
for (i = 0; i < l; i++) {
|
580
|
-
n += a.charCodeAt(i);
|
581
|
-
}
|
582
|
-
return d * n;
|
583
|
-
}
|
584
|
-
return 0;
|
585
|
-
}
|
586
|
-
|
587
|
-
function sortNumeric(table, a, b, col, mx, d) {
|
588
|
-
if (a === b) { return 0; }
|
589
|
-
var c = table.config, e = c.string[ (c.empties[col] || c.emptyTo ) ];
|
590
|
-
if (a === '' && e !== 0) { return (typeof(e) === 'boolean') ? (e ? -1 : 1) : -e || -1; }
|
591
|
-
if (b === '' && e !== 0) { return (typeof(e) === 'boolean') ? (e ? 1 : -1) : e || 1; }
|
592
|
-
if (isNaN(a)) { a = getTextValue(a, mx, d); }
|
593
|
-
if (isNaN(b)) { b = getTextValue(b, mx, d); }
|
594
|
-
return a - b;
|
595
|
-
}
|
596
|
-
|
597
|
-
function sortNumericDesc(table, a, b, col, mx, d) {
|
598
|
-
if (a === b) { return 0; }
|
599
|
-
var c = table.config, e = c.string[ (c.empties[col] || c.emptyTo ) ];
|
600
|
-
if (a === '' && e !== 0) { return (typeof(e) === 'boolean') ? (e ? -1 : 1) : e || 1; }
|
601
|
-
if (b === '' && e !== 0) { return (typeof(e) === 'boolean') ? (e ? 1 : -1) : -e || -1; }
|
602
|
-
if (isNaN(a)) { a = getTextValue(a, mx, d); }
|
603
|
-
if (isNaN(b)) { b = getTextValue(b, mx, d); }
|
604
|
-
return b - a;
|
605
|
-
}
|
606
|
-
|
607
520
|
function checkResort($table, flag, callback) {
|
608
521
|
var t = $table[0];
|
609
522
|
if (flag !== false) {
|
@@ -701,7 +614,7 @@
|
|
701
614
|
// add other columns if header spans across multiple
|
702
615
|
if (this.colSpan > 1) {
|
703
616
|
for (j = 1; j < this.colSpan; j++) {
|
704
|
-
c.sortList.push([i+j, o]);
|
617
|
+
c.sortList.push([i + j, o]);
|
705
618
|
}
|
706
619
|
}
|
707
620
|
}
|
@@ -729,7 +642,7 @@
|
|
729
642
|
// add other columns if header spans across multiple
|
730
643
|
if (this.colSpan > 1) {
|
731
644
|
for (j = 1; j < this.colSpan; j++) {
|
732
|
-
c.sortList.push([i+j, o]);
|
645
|
+
c.sortList.push([i + j, o]);
|
733
646
|
}
|
734
647
|
}
|
735
648
|
}
|
@@ -749,8 +662,6 @@
|
|
749
662
|
setHeadersCss($this[0], $headers, c.sortList);
|
750
663
|
multisort($this[0], c.sortList);
|
751
664
|
appendToTable($this[0]);
|
752
|
-
// stop normal event by returning false
|
753
|
-
return false;
|
754
665
|
}
|
755
666
|
});
|
756
667
|
if (c.cancelSelection) {
|
@@ -861,6 +772,88 @@
|
|
861
772
|
});
|
862
773
|
};
|
863
774
|
|
775
|
+
// Natural sort - https://github.com/overset/javascript-natural-sort
|
776
|
+
this.sortText = function(table, a, b, col) {
|
777
|
+
if (a === b) { return 0; }
|
778
|
+
var c = table.config, e = c.string[ (c.empties[col] || c.emptyTo ) ],
|
779
|
+
r = $.tablesorter.regex, xN, xD, yN, yD, xF, yF, i, mx;
|
780
|
+
if (a === '' && e !== 0) { return (typeof(e) === 'boolean') ? (e ? -1 : 1) : -e || -1; }
|
781
|
+
if (b === '' && e !== 0) { return (typeof(e) === 'boolean') ? (e ? 1 : -1) : e || 1; }
|
782
|
+
if (typeof c.textSorter === 'function') { return c.textSorter(a, b, table, col); }
|
783
|
+
// chunk/tokenize
|
784
|
+
xN = a.replace(r[0], '\\0$1\\0').replace(/\\0$/, '').replace(/^\\0/, '').split('\\0');
|
785
|
+
yN = b.replace(r[0], '\\0$1\\0').replace(/\\0$/, '').replace(/^\\0/, '').split('\\0');
|
786
|
+
// numeric, hex or date detection
|
787
|
+
xD = parseInt(a.match(r[2]),16) || (xN.length !== 1 && a.match(r[1]) && Date.parse(a));
|
788
|
+
yD = parseInt(b.match(r[2]),16) || (xD && b.match(r[1]) && Date.parse(b)) || null;
|
789
|
+
// first try and sort Hex codes or Dates
|
790
|
+
if (yD) {
|
791
|
+
if ( xD < yD ) { return -1; }
|
792
|
+
if ( xD > yD ) { return 1; }
|
793
|
+
}
|
794
|
+
mx = Math.max(xN.length, yN.length);
|
795
|
+
// natural sorting through split numeric strings and default strings
|
796
|
+
for (i = 0; i < mx; i++) {
|
797
|
+
// find floats not starting with '0', string or 0 if not defined (Clint Priest)
|
798
|
+
xF = (!(xN[i] || '').match(r[3]) && parseFloat(xN[i])) || xN[i] || 0;
|
799
|
+
yF = (!(yN[i] || '').match(r[3]) && parseFloat(yN[i])) || yN[i] || 0;
|
800
|
+
// handle numeric vs string comparison - number < string - (Kyle Adams)
|
801
|
+
if (isNaN(xF) !== isNaN(yF)) { return (isNaN(xF)) ? 1 : -1; }
|
802
|
+
// rely on string comparison if different types - i.e. '02' < 2 != '02' < '2'
|
803
|
+
if (typeof xF !== typeof yF) {
|
804
|
+
xF += '';
|
805
|
+
yF += '';
|
806
|
+
}
|
807
|
+
if (xF < yF) { return -1; }
|
808
|
+
if (xF > yF) { return 1; }
|
809
|
+
}
|
810
|
+
return 0;
|
811
|
+
};
|
812
|
+
|
813
|
+
this.sortTextDesc = function(table, a, b, col) {
|
814
|
+
if (a === b) { return 0; }
|
815
|
+
var c = table.config, e = c.string[ (c.empties[col] || c.emptyTo ) ];
|
816
|
+
if (a === '' && e !== 0) { return (typeof(e) === 'boolean') ? (e ? -1 : 1) : e || 1; }
|
817
|
+
if (b === '' && e !== 0) { return (typeof(e) === 'boolean') ? (e ? 1 : -1) : -e || -1; }
|
818
|
+
if (typeof c.textSorter === 'function') { return c.textSorter(b, a, table, col); }
|
819
|
+
return this.sortText(table, b, a);
|
820
|
+
};
|
821
|
+
|
822
|
+
// return text string value by adding up ascii value
|
823
|
+
// so the text is somewhat sorted when using a digital sort
|
824
|
+
// this is NOT an alphanumeric sort
|
825
|
+
this.getTextValue = function(a, mx, d) {
|
826
|
+
if (mx) {
|
827
|
+
// make sure the text value is greater than the max numerical value (mx)
|
828
|
+
var i, l = a.length, n = mx + d;
|
829
|
+
for (i = 0; i < l; i++) {
|
830
|
+
n += a.charCodeAt(i);
|
831
|
+
}
|
832
|
+
return d * n;
|
833
|
+
}
|
834
|
+
return 0;
|
835
|
+
};
|
836
|
+
|
837
|
+
this.sortNumeric = function(table, a, b, col, mx, d) {
|
838
|
+
if (a === b) { return 0; }
|
839
|
+
var c = table.config, e = c.string[ (c.empties[col] || c.emptyTo ) ];
|
840
|
+
if (a === '' && e !== 0) { return (typeof(e) === 'boolean') ? (e ? -1 : 1) : -e || -1; }
|
841
|
+
if (b === '' && e !== 0) { return (typeof(e) === 'boolean') ? (e ? 1 : -1) : e || 1; }
|
842
|
+
if (isNaN(a)) { a = this.getTextValue(a, mx, d); }
|
843
|
+
if (isNaN(b)) { b = this.getTextValue(b, mx, d); }
|
844
|
+
return a - b;
|
845
|
+
};
|
846
|
+
|
847
|
+
this.sortNumericDesc = function(table, a, b, col, mx, d) {
|
848
|
+
if (a === b) { return 0; }
|
849
|
+
var c = table.config, e = c.string[ (c.empties[col] || c.emptyTo ) ];
|
850
|
+
if (a === '' && e !== 0) { return (typeof(e) === 'boolean') ? (e ? -1 : 1) : e || 1; }
|
851
|
+
if (b === '' && e !== 0) { return (typeof(e) === 'boolean') ? (e ? 1 : -1) : -e || -1; }
|
852
|
+
if (isNaN(a)) { a = this.getTextValue(a, mx, d); }
|
853
|
+
if (isNaN(b)) { b = this.getTextValue(b, mx, d); }
|
854
|
+
return b - a;
|
855
|
+
};
|
856
|
+
|
864
857
|
this.destroy = function(table, removeClasses){
|
865
858
|
var $t = $(table), c = table.config;
|
866
859
|
// remove widget added rows
|
@@ -1026,19 +1019,14 @@
|
|
1026
1019
|
ts.addParser({
|
1027
1020
|
id: "ipAddress",
|
1028
1021
|
is: function(s) {
|
1029
|
-
return (/^\d{
|
1022
|
+
return (/^\d{1,3}[\.]\d{1,3}[\.]\d{1,3}[\.]\d{1,3}$/).test(s);
|
1030
1023
|
},
|
1031
1024
|
format: function(s, table) {
|
1032
|
-
var i,
|
1025
|
+
var i, a = s.split("."),
|
1033
1026
|
r = "",
|
1034
1027
|
l = a.length;
|
1035
1028
|
for (i = 0; i < l; i++) {
|
1036
|
-
|
1037
|
-
if (item.length === 2) {
|
1038
|
-
r += "0" + item;
|
1039
|
-
} else {
|
1040
|
-
r += item;
|
1041
|
-
}
|
1029
|
+
r += ("00" + a[i]).slice(-3);
|
1042
1030
|
}
|
1043
1031
|
return ts.formatFloat(r, table);
|
1044
1032
|
},
|
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.0.
|
4
|
+
version: 1.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-07-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: railties
|