[TASK] Simple sort for firmware versions
This commit is contained in:
parent
fe3ba88887
commit
d4670d8742
|
@ -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;
|
||||
|
@ -214,7 +214,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];
|
||||
|
|
|
@ -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