gui: Restrict shown decimals and restrict size of header columns (#4973)

This commit is contained in:
Simon Frei
2018-06-06 23:33:31 +02:00
committed by GitHub
parent 02da7414ab
commit 53a029a796
7 changed files with 83 additions and 51 deletions

View File

@@ -195,3 +195,52 @@ function buildTree(children) {
return root.children;
}
// unitPrefixed converts the input such that it returns a string representation
// <1000 (<1024) with the metric unit prefix suffixed. I.e. when calling this with
// binary == true, you need to suffix an additon 'i'. The "biggest" prefix used
// is 'T', numbers > 1000T are just returned as such big numbers. If ever deemed
// useful 'P' can be added easily.
function unitPrefixed(input, binary) {
if (input === undefined || isNaN(input)) {
return '0 ';
}
factor = 1000;
i = '';
if (binary) {
factor = 1024;
i = 'i'
}
if (input > factor * factor * factor * factor * 1000) {
// Don't show any decimals for more than 4 digits
input /= factor * factor * factor * factor;
return input.toLocaleString(undefined, {maximumFractionDigits: 0}) + ' T' + i;
}
// Show 3 significant digits (e.g. 123T or 2.54T)
if (input > factor * factor * factor * factor) {
input /= factor * factor * factor * factor;
return input.toLocaleString(undefined, {maximumSignificantDigits: 3}) + ' T' + i;
}
if (input > factor * factor * factor) {
input /= factor * factor * factor;
if (binary && input >= 1000) {
return input.toLocaleString(undefined, {maximumFractionDigits: 0}) + ' G' + i;
}
return input.toLocaleString(undefined, {maximumSignificantDigits: 3}) + ' G' + i;
}
if (input > factor * factor) {
input /= factor * factor;
if (binary && input >= 1000) {
return input.toLocaleString(undefined, {maximumFractionDigits: 0}) + ' M' + i;
}
return input.toLocaleString(undefined, {maximumSignificantDigits: 3}) + ' M' + i;
}
if (input > factor) {
input /= factor;
if (binary && input >= 1000) {
return input.toLocaleString(undefined, {maximumFractionDigits: 0}) + ' k' + i;
}
return input.toLocaleString(undefined, {maximumSignificantDigits: 3}) + ' k' + i;
}
return Math.round(input).toLocaleString() + ' ';
};