mirror of
https://github.com/ultralytics/ultralytics
synced 2026-04-30 03:48:39 +00:00
77 lines
1.9 KiB
JavaScript
77 lines
1.9 KiB
JavaScript
// Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
|
||
|
||
// tablesort.filesize.min.js
|
||
!(() => {
|
||
const filesizeRegex = /^(\d+(\.\d+)?) ?((K|M|G|T|P|E|Z|Y|B$)i?B?)$/i;
|
||
|
||
function r(t) {
|
||
t = t.match(filesizeRegex);
|
||
if (!t) {
|
||
return 0;
|
||
}
|
||
|
||
const value = Number.parseFloat(t[1].replace(/[^\-?0-9.]/g, ""));
|
||
const unit = t[3].toLowerCase();
|
||
const base = unit[1] === "i" ? 1024 : 1e3;
|
||
const powers = { k: 2, m: 3, g: 4, t: 5, p: 6, e: 7, z: 8, y: 9 };
|
||
|
||
return value * (powers[unit[0]] ? base ** powers[unit[0]] : base);
|
||
}
|
||
|
||
Tablesort.extend(
|
||
"filesize",
|
||
(t) => filesizeRegex.test(t),
|
||
(t, e) => {
|
||
t = r(t);
|
||
e = r(e);
|
||
return (Number.isNaN(e) ? 0 : e) - (Number.isNaN(t) ? 0 : t);
|
||
},
|
||
);
|
||
})();
|
||
|
||
// tablesort.dotsep.min.js
|
||
Tablesort.extend(
|
||
"dotsep",
|
||
(t) => /^(\d+\.)+\d+$/.test(t),
|
||
(t, r) => {
|
||
t = t.split(".");
|
||
r = r.split(".");
|
||
|
||
for (let i = 0, s = t.length; i < s; i++) {
|
||
const e = Number.parseInt(t[i], 10);
|
||
const n = Number.parseInt(r[i], 10);
|
||
|
||
if (e !== n) {
|
||
return n < e ? -1 : 1;
|
||
}
|
||
}
|
||
return 0;
|
||
},
|
||
);
|
||
|
||
// tablesort.number.min.js
|
||
(() => {
|
||
const cleanNumber = (i) =>
|
||
i
|
||
.split("±")[0]
|
||
.trim()
|
||
.replace(/[^\-?0-9.]/g, "");
|
||
const compareNumber = (a, b) => (Number.parseFloat(a) || 0) - (Number.parseFloat(b) || 0);
|
||
|
||
Tablesort.extend(
|
||
"number",
|
||
(item) =>
|
||
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
|
||
(a, b) => compareNumber(cleanNumber(b), cleanNumber(a)),
|
||
);
|
||
})();
|
||
|
||
// subscribe
|
||
document$.subscribe(() => {
|
||
document.querySelectorAll("article table:not([class])").forEach((table) => {
|
||
new Tablesort(table);
|
||
});
|
||
});
|