Energy per line, output per shift, downtime per cause, the share of each product in a day. A trend answers how something moved; this answers the other question a production screen is asked. Every figure is also in a table a screen reader reads, so the chart is never only a picture.
Bars run sideways so the names read without tilting a head. The budget is a dashed line and a bar past
it takes the warning colour; nothing else is coloured, because colour on an operator screen is kept for
what is wrong. The meters report every two seconds through push(), which is what
Connect.stream() calls with one record per interval.
pareto sorts worst first and draws the running share, because "which few causes are most of
the downtime" is the question a downtime chart exists to answer. Here the first three are four fifths
of it.
A donut, with the total in the hole, for when the share is the point. Past maxSlices the
smallest items fold into one "other" slice rather than into slivers nobody can compare.