110 lines
2.6 KiB
JavaScript
110 lines
2.6 KiB
JavaScript
// tablesort.filesize.min.js
|
||
!(function () {
|
||
function r(t) {
|
||
return (
|
||
(t = t.match(/^(\d+(\.\d+)?) ?((K|M|G|T|P|E|Z|Y|B$)i?B?)$/i)),
|
||
parseFloat(t[1].replace(/[^\-?0-9.]/g, "")) *
|
||
(function (t) {
|
||
var e = "i" === (t = t.toLowerCase())[1] ? 1024 : 1e3;
|
||
switch (t[0]) {
|
||
case "k":
|
||
return Math.pow(e, 2);
|
||
case "m":
|
||
return Math.pow(e, 3);
|
||
case "g":
|
||
return Math.pow(e, 4);
|
||
case "t":
|
||
return Math.pow(e, 5);
|
||
case "p":
|
||
return Math.pow(e, 6);
|
||
case "e":
|
||
return Math.pow(e, 7);
|
||
case "z":
|
||
return Math.pow(e, 8);
|
||
case "y":
|
||
return Math.pow(e, 9);
|
||
default:
|
||
return e;
|
||
}
|
||
})(t[3])
|
||
);
|
||
}
|
||
Tablesort.extend(
|
||
"filesize",
|
||
function (t) {
|
||
return /^\d+(\.\d+)? ?(K|M|G|T|P|E|Z|Y|B$)i?B?$/i.test(t);
|
||
},
|
||
function (t, e) {
|
||
return (
|
||
(t = r(t)),
|
||
(e = r(e)),
|
||
(e = e),
|
||
(t = t),
|
||
(e = parseFloat(e)),
|
||
(t = parseFloat(t)),
|
||
(e = isNaN(e) ? 0 : e) - (t = isNaN(t) ? 0 : t)
|
||
);
|
||
},
|
||
);
|
||
})();
|
||
|
||
// tablesort.dotsep.min.js
|
||
Tablesort.extend(
|
||
"dotsep",
|
||
function (t) {
|
||
return /^(\d+\.)+\d+$/.test(t);
|
||
},
|
||
function (t, r) {
|
||
(t = t.split(".")), (r = r.split("."));
|
||
for (var e, n, i = 0, s = t.length; i < s; i++)
|
||
if ((e = parseInt(t[i], 10)) !== (n = parseInt(r[i], 10))) {
|
||
if (n < e) return -1;
|
||
if (e < n) return 1;
|
||
}
|
||
return 0;
|
||
},
|
||
);
|
||
|
||
// tablesort.number.min.js
|
||
(function () {
|
||
var cleanNumber = function (i) {
|
||
// Remove everything after ± symbol if present
|
||
i = i.split("±")[0].trim();
|
||
return i.replace(/[^\-?0-9.]/g, "");
|
||
},
|
||
compareNumber = function (a, b) {
|
||
a = parseFloat(a);
|
||
b = parseFloat(b);
|
||
|
||
a = isNaN(a) ? 0 : a;
|
||
b = isNaN(b) ? 0 : b;
|
||
|
||
return a - b;
|
||
};
|
||
|
||
Tablesort.extend(
|
||
"number",
|
||
function (item) {
|
||
return (
|
||
item.match(/^[-+]?[£\x24Û¢´€]?\d+\s*([,\.]\d{0,2})/) || // Prefixed currency
|
||
item.match(/^[-+]?\d+\s*([,\.]\d{0,2})?[£\x24Û¢´€]/) || // Suffixed currency
|
||
item.match(/^[-+]?(\d)*-?([,\.]){0,1}-?(\d)+([E,e][\-+][\d]+)?%?$/)
|
||
); // Number
|
||
},
|
||
function (a, b) {
|
||
a = cleanNumber(a);
|
||
b = cleanNumber(b);
|
||
|
||
return compareNumber(b, a);
|
||
},
|
||
);
|
||
})();
|
||
|
||
// subscribe
|
||
document$.subscribe(function () {
|
||
var tables = document.querySelectorAll("article table:not([class])");
|
||
tables.forEach(function (table) {
|
||
new Tablesort(table);
|
||
});
|
||
});
|