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...