JSFiddle - React, Tailwind, and code Playground
by Will Stott
HTML
<script src="https://d3js.org/d3-format.v1.min.js"></script>
<body>
</body>
JavaScript
function col(vals) {
let r = "";
for (let a of vals) {
const amt = 17 - a.length;
for (let i = 0; i <= amt; i++) {
a += " ";
}
r += a;
}
return r;
}
const _numberFormatters = [
new Intl.NumberFormat("en-GB", {
maximumFractionDigits: 0,
minimumFractionDigits: 0
}),
new Intl.NumberFormat("en-GB", {
maximumFractionDigits: 1,
minimumFractionDigits: 1
}),
new Intl.NumberFormat("en-GB", {
maximumFractionDigits: 2,
minimumFractionDigits: 2
}),
new Intl.NumberFormat("en-GB", {
maximumFractionDigits: 3,
minimumFractionDigits: 3
}),
new Intl.NumberFormat("en-GB", {
maximumFractionDigits: 4,
minimumFractionDigits: 4
})
];
const _numberFormatters2 = [
new Intl.NumberFormat("en-GB", {
maximumFractionDigits: 0,
minimumFractionDigits: 0
}),
new Intl.NumberFormat("en-GB", {
maximumFractionDigits: 1,
minimumFractionDigits: 1
}),
new Intl.NumberFormat("en-GB", {
maximumFractionDigits: 2,
minimumFractionDigits: 2
}),
new Intl.NumberFormat("en-GB", {
maximumFractionDigits: 3,
minimumFractionDigits: 3
}),
new Intl.NumberFormat("en-GB", {
maximumFractionDigits: 4,
minimumFractionDigits: 4
}),
new Intl.NumberFormat("en-GB", {
notation: "scientific",
maximumFractionDigits: 2,
minimumFractionDigits: 2
})
];
function f(value) {
let decimalPlaces;
const a = Math.abs(value);
if (a <= 2) decimalPlaces = 4;
else if (a <= 20) decimalPlaces = 3;
else if (a <= 200) decimalPlaces = 2;
else if (a <= 2000) decimalPlaces = 1;
else decimalPlaces = 0;
return _numberFormatters[decimalPlaces].format(value);
}
function f2(value) {
let formatter;
const a = Math.abs(value);
if (a < 0.001) formatter = 5;
else if (a < 1) formatter = 4;
else if (a < 10) formatter = 3;
else if (a < 100) formatter = 2;
else if (a < 1000) formatter = 1;
else if (a < 10000) formatter = 0;
else formatter = 5;
return...