[TASK] Simple sort for firmware versions
This commit is contained in:
parent
90d2c3e444
commit
a2ab0dce4f
|
@ -1,5 +1,5 @@
|
||||||
define(["chroma-js", "virtual-dom", "filters/genericnode", "vercomp"],
|
define(["chroma-js", "virtual-dom", "filters/genericnode"],
|
||||||
function (Chroma, V, Filter, vercomp) {
|
function (Chroma, V, Filter) {
|
||||||
|
|
||||||
return function (config, filterManager) {
|
return function (config, filterManager) {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
@ -214,7 +214,9 @@ define(["chroma-js", "virtual-dom", "filters/genericnode", "vercomp"],
|
||||||
return b[1] - a[1];
|
return b[1] - a[1];
|
||||||
}));
|
}));
|
||||||
fillTable("Firmware", fwTable, fwDict.sort(function (a, b) {
|
fillTable("Firmware", fwTable, fwDict.sort(function (a, b) {
|
||||||
return vercomp(b[0], a[0]);
|
if(b[0] < a[0]) return -1;
|
||||||
|
if(b[0] > a[0]) return 1;
|
||||||
|
return 0;
|
||||||
}));
|
}));
|
||||||
fillTable("Hardware", hwTable, hwDict.sort(function (a, b) {
|
fillTable("Hardware", hwTable, hwDict.sort(function (a, b) {
|
||||||
return b[1] - a[1];
|
return b[1] - a[1];
|
||||||
|
|
|
@ -1,68 +0,0 @@
|
||||||
define([], function () {
|
|
||||||
function order(c) {
|
|
||||||
if (/^\d$/.test(c)) {
|
|
||||||
return 0;
|
|
||||||
} else if (/^[a-z]$/i.test(c)) {
|
|
||||||
return c.charCodeAt(0);
|
|
||||||
} else if (c === "~") {
|
|
||||||
return -1;
|
|
||||||
} else if (c) {
|
|
||||||
return c.charCodeAt(0) + 256;
|
|
||||||
} else {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Based on dpkg code
|
|
||||||
function vercomp(a, b) {
|
|
||||||
var apos = 0, bpos = 0;
|
|
||||||
while (apos < a.length || bpos < b.length) {
|
|
||||||
var firstDiff = 0;
|
|
||||||
|
|
||||||
while ((apos < a.length && !/^\d$/.test(a[apos])) || (bpos < b.length && !/^\d$/.test(b[bpos]))) {
|
|
||||||
var ac = order(a[apos]);
|
|
||||||
var bc = order(b[bpos]);
|
|
||||||
|
|
||||||
if (ac !== bc) {
|
|
||||||
return ac - bc;
|
|
||||||
}
|
|
||||||
|
|
||||||
apos++;
|
|
||||||
bpos++;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (a[apos] === "0") {
|
|
||||||
apos++;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (b[bpos] === "0") {
|
|
||||||
bpos++;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (/^\d$/.test(a[apos]) && /^\d$/.test(b[bpos])) {
|
|
||||||
if (firstDiff === 0) {
|
|
||||||
firstDiff = a.charCodeAt(apos) - b.charCodeAt(bpos);
|
|
||||||
}
|
|
||||||
|
|
||||||
apos++;
|
|
||||||
bpos++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (/^\d$/.test(a[apos])) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (/^\d$/.test(b[bpos])) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (firstDiff !== 0) {
|
|
||||||
return firstDiff;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return vercomp;
|
|
||||||
});
|
|
Loading…
Reference in a new issue