[TASK] Simple sort for firmware versions

This commit is contained in:
Xaver Maierhofer 2016-05-25 23:53:46 +02:00
parent 1768e82793
commit 685e25a38f
2 changed files with 5 additions and 71 deletions

View File

@ -1,5 +1,5 @@
define(["chroma-js", "virtual-dom", "filters/genericnode", "vercomp"],
function (Chroma, V, Filter, vercomp) {
define(["chroma-js", "virtual-dom", "filters/genericnode"],
function (Chroma, V, Filter) {
return function (config, filterManager) {
var self = this;
@ -139,7 +139,9 @@ define(["chroma-js", "virtual-dom", "filters/genericnode", "vercomp"],
return b[1] - a[1];
}));
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) {
return b[1] - a[1];

View File

@ -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;
});