Everything @umriss-ui/charts exports, with its signature. A component's props stand on its own page.
ControlChartControlChart – Centre line, control limits and the rule violations of a process (an SPC or Shewhart chart). Reach for it to see a process drift before it leaves its specification.
Used on Scenarios and ControlChart.
DataTableThe chart's values as a table, on demand: a key - in the legend where
there is one - opens a table of what the chart shows, one column per
visible series, in the tooltip's format. For a reader who wants every value
at once. Place it inside a Chart.
function DataTable(): ReactNode;LegendLegend – What the colours mean (a key), and a switch for every series: a click hides it and shows it again, a double click shows only it (a solo).
Used on Scenarios, Chart, Axis, View, Line, Area, Bar, Scatter, BoxPlot, StateBand, LimitLine, Pareto, Tooltip, Legend and Benchmark.
LimitBandLimitLine – A limit drawn as a band between two values of an axis - a tolerance or a
zone. Otherwise a LimitLine.
LimitLineLimitLine – The limits a course is read against (a threshold, a reference line): a line above the series, a band beneath them. Reach for it for objectives, budgets and alert levels.
Used on Scenarios, Chart, Scatter, BoxPlot, LimitLine, ControlChart, Pareto and Tooltip.
TooltipTooltip – What a hover reports (a hover card), and the values as a table for a reader who wants them all at once.
Used on Scenarios, Installation, Chart, Axis, Zoom and pan, View, Line, Area, Bar, Scatter, BoxPlot, StateBand, Matrix, LimitLine, ControlChart, Pareto, Tooltip, Legend and Benchmark.
useChartA chart over your rows: the parts it returns are typed at your row, so
that a field name in value is checked by the compiler.
rows – The rows every series reads that brings no data of its own.options – The view to start from and the handler of its changes.Chart, XAxis, YAxis and every series kind - each keeps its
identity over the renders -, the view, its domains and hidden, and
the setters that change them.function useChart<Z>(rows: readonly Z[], options?: ChartOptions<Z>): ChartParts<Z>;Used on Scenarios, Installation, Chart, Axis, Zoom and pan, View, Line, Area, Bar, Scatter, BoxPlot, StateBand, Matrix, LimitLine, ControlChart, Pareto, Tooltip, Legend and Benchmark.
assessWhat the value is, given the limit set. A pure function of the two.
A missing or non-finite value yields unknown - and nothing else: the
deviation of a value nobody has is unknown to everybody too.
A bound is violated when the value lies beyond it, not when it lies on it. A
value exactly on the upper bound is in order. That is decided once here
(ADR-0006), so that two building blocks on the same screen do not disagree
about the edge.
Where several bounds are violated the most severe wins; among equally severe
ones the one the value lies furthest beyond. Under a tie in both, the one
named first.
No hysteresis: that would need the previous state, and a function of one
value has none. Exactly that is the property which makes this module safe to
duplicate.
function assess(value: number | null | undefined, set?: LimitSet): Assessment;binCounts values into bins of equal width.
A value on an edge belongs to the bin that edge starts - [from, to) - but
the last bin is closed, so the greatest value of a domain is counted and not
lost. Values that are not finite (NaN, ±Infinity, null, undefined)
are skipped, as a gap is on a chart. Without values there are no bins; with
values there is at least one, even when they are all equal.
function bin(values: readonly (number | null | undefined)[], options?: BinOptions): Bin[];
function bin<T>(rows: readonly T[], value: (row: T) => number | null | undefined, options?: BinOptions): Bin[];Used on Bar.
breaksThe breaks in working time that lie within the extent [from, to] - what the axis must mark, in domain units.
function breaks(input: CalendarInput, from: number, to: number): number[];calendarFromCalendar from an input - a built calendar is passed straight through, a raw list is built once and remembered.
function calendarFrom(input: CalendarInput): WorkingCalendar;controlLimitsCentre line and control limits. Either given or calculated from exactly the named reference window - never from the whole series and never from the visible excerpt. Gaps (NaN) count neither in the centre line nor in the moving range. A window without values yields NaN limits, not an error: the chart then draws no line instead of bursting.
function controlLimits(values: readonly number[], origin: ControlLimitOrigin): ControlLimits;Used on Scenarios, LimitLine and ControlChart.
invalidateThemeExplicit invalidation: devalue the cache, every living chart reads anew and redraws.
function invalidateTheme(): void;localOffsetThe local offset at an instant, as the shift of a grid that is to lie on
local time: wallClock = offset + k · step. Taken at one instant, it holds
for a grid up to the next clock change.
function localOffset(instant: number): number;paretoSorts descending, accumulates, collects the tail and finds the cutoff crossing. Ties keep the input order - explicitly through the input index, not in reliance on a stable sort - so that two reasons with the same count do not swap places between two frames. The remainder stands last, independently of its value. Two hundred small reasons regularly yield a remainder larger than the third real bar; sorted into place, the chart would claim there is a fault reason called "other" which is the third biggest problem.
function pareto(items: readonly ParetoItem[], options?: ParetoSettings): ParetoResult;Used on Pareto.
removedIntervalsThe removed spans between the working intervals, for the mark in the axis band. A chart that takes a weekend out and does not say so claims a continuity it does not have. Before the first and after the last interval there is nothing to mark: that lies outside the axis' extent.
function removedIntervals(input: CalendarInput): RemovedSpan[];resolveColoursAny number of CSS colours - a token, light-dark(…), var(--…), a
literal - resolved to values a canvas can draw, in the scheme that applies
at root. The same probe resolveTheme uses, for a canvas of a
neighbouring package (ADR-0022): the schedule draws its subtasks with the
colours of
function resolveColours<K extends string>(root: Element, colours: Readonly<Record<K, string>>): Record<K, string>;subscribeThemeSubscribe to theme invalidations - a switch of color-scheme on the
document, the system's preference, or invalidateTheme(). The scenes of
the charts use it, and so does any canvas that resolved its colours with
resolveColours. Returns the unsubscribe.
function subscribeTheme(notify: () => void): () => void;timeStepStep for tick candidates in wall clock time, at an intended count. Rounded up to the next readable step, so that no more ticks arise than wanted. Above the day steps it continues in whole days.
function timeStep(span: number, count: number): number;toWallClockWorking time → wall clock time; outside [0, total] there is none. At a seam - the end of an interval which is at the same time the beginning of the next - the beginning of the next comes out: from there time counts again, and a pointer aiming there aims at the coming interval. Only the end of the last interval has no next and comes back as itself.
function toWallClock(workingTime: number, input: CalendarInput): number;toWorkingTimeClampedWall clock time → working time, but without NaN: whatever lies in removed time falls onto the seam that this span collapses onto anyway; whatever lies before the first or after the last interval onto 0 or onto the whole working time respectively. The materialised x values must stay ascending: binary search assumes it, and a search over NaN silently lands on the wrong point. The clamped value is a POSITION, not a statement: the point itself is carried as a gap and is never drawn and never hit.
function toWorkingTimeClamped(wallClock: number, input: CalendarInput): number;verdictWeightHow heavily a verdict weighs, as a number - for sorting and comparing, as when a matrix is to bring its worst cell to the top. It stands here so that the order is not reinvented at every call site.
function verdictWeight(verdict: Verdict): number;violatedIndicesAll violated indices, ascending and free of duplicates - the scatter drawn beside the line.
function violatedIndices(found: readonly Violation[]): number[];violationsThe rules switched on, each with its indices. Rules without hits do not appear in the list. The indices are data, not merely marks: they can be listed beside the chart as well as marked on it.
function violations(values: readonly number[], limits: ControlLimits, options?: Partial<RuleOptions>): Violation[];Used on Scenarios and ControlChart.
workingCalendarBuilds a calendar: sorts, merges overlapping and abutting intervals and throws away empty, reversed and non-finite ones. Merging is not a courtesy but a precondition: only over separated intervals is the reverse mapping unambiguous.
function workingCalendar(intervals: readonly WorkingInterval[]): WorkingCalendar;Used on Axis.
workingTimeTicksTicks for a working time axis, from an extent in WALL CLOCK TIME. The candidates arise in wall clock time on multiples of the step - hours, interval changes, days - whatever lies in removed time falls away, the rest is mapped. Never the other way round: ticks generated in working time land in the middle of an interval and yield an axis labelled 14.5 and 29.0 which nobody can read. The offset shifts the grid; with it a local time hits its own midnight without this module having to know about time zones. If two candidates fall on the same working time - the end of one interval and the beginning of the next - the earlier one stays: two labels on the same pixel would be one too many. Both times come back, because the axis needs both: the working time to place the tick, the wall clock time to label it.
function workingTimeTicks(input: CalendarInput, from: number, to: number, step: number, offset?: number): WorkingTimeTick[];zonesThe faintly drawn zone lines. Rule 4 is about the two-sigma zone, and a reader cannot check it against a chart that does not show it.
function zones(limits: ControlLimits, multiples?: readonly number[]): Zone[];Used on ControlChart.
DAYOne day of 24 hours in milliseconds; across a clock change a calendar day is an hour longer or shorter.
const DAY: number;Used on Scenarios, Chart, Axis, Zoom and pan, StateBand, Tooltip and Benchmark.
DEFAULT_CHARTS_WORDINGThe instance shipped by default. English; German is
GERMAN_CHARTS_WORDING in @umriss-ui/charts/wording/de. A chart takes
its own through wording.
Every entry, with its value, stands in the table Charts wording on core's Language page.
const DEFAULT_CHARTS_WORDING: ChartsWording;DEFAULT_GRADIENTDefault gradient: a sequential set, light to dark, so that it stays readable as an order of lightness even without colour. It is a default, not a restriction - whoever has a scale of their own names it.
const DEFAULT_GRADIENT: readonly string[];Used on Matrix.
HOUROne hour in milliseconds.
const HOUR: number;Used on Chart, Axis, Zoom and pan, Area, BoxPlot, Tooltip and Benchmark.
LinearScaleThe affine mapping from a domain onto a pixel range, and back; the scale every axis of the library uses.
class LinearScale implements Scale {
readonly domain: readonly [number, number];
readonly range: readonly [number, number];
/** Pre-computed line equation px = v·m + b - the draw loop uses it directly. */
readonly m: number;
readonly b: number;
constructor(domain: readonly [number, number], range: readonly [number, number]);
toPx(v: number): number;
fromPx(px: number): number;
ticks(n: number): number[];
}MINUTEOne minute in milliseconds.
const MINUTE: number;Used on Scenarios, Installation, Chart, Axis, Zoom and pan, View, Line, Area, Scatter, BoxPlot, StateBand, LimitLine, Tooltip, Legend and Benchmark.
SECONDOne second in milliseconds, the unit of a time axis.
const SECOND = 1000;AreaPropsIts table stands on Area.
AreaSeriesConfig<T = unknown>An Area as the chart holds it once registered.
| Name | Type | Default | Description |
|---|---|---|---|
kindrequired | "area" | — | |
baseline | ValueFunction<T> | — | Lower edge; without a value the fixed baseline 0. |
fillOpacityrequired | number | — | Opacity of the fill; the outline stays fully opaque. |
strokeWidthrequired | number | — | |
dash | readonly number[] | — | Dash pattern of the outline. |
accessorrequired | ValueFunction<T> | — | Y value; null/undefined/NaN/±Infinity means a gap. from SeriesBase |
data | readonly T[] | — | Series-own data; overrides the container data. from SeriesBase |
xAxisIdrequired | string | — | from SeriesBase |
yAxisIdrequired | string | — | from SeriesBase |
name | string | — | from SeriesBase |
format | (value: number) => string | — | The value in the tooltip; before the y axis' tickFormat. Compared by its
source text, as an accessor is. from SeriesBase |
color | string | — | from SeriesBase |
tone | | "ok" | — | A role instead of a colour value: the theme resolves it, in both themes.
For series that mean something rather than just being the next one - the
violating points of a control chart, say. color beats it. from SeriesBase |
stack | string | — | The stack this series stands in: series with the same id, on the same x
and y axis, stack in registration order. from Stackable |
normalize | boolean | — | On any member, the whole stack sums to 100 at every x. from Stackable |
AssessmentThe verdict and what led to it.
| Name | Type | Default | Description |
|---|---|---|---|
verdictrequired | Verdict| "ok" | — | |
limit | Limit | — | The violated limit - the same object the caller passed in, so that it can be recognised against the caller's own data. Absent where none is violated. |
excess | number | — | The amount beyond the bound, always positive. Absent where none is violated. |
deviation | number | — | The signed distance from the target. Absent where none is set - a missing target yields no deviation of zero. Two fields and not one: excess and deviation are two numbers, and a single field meaning the one thing when a bound is violated and the other otherwise reads well and is wrong at three in the morning. |
AxisConfig<T = unknown>An XAxis or YAxis as the chart holds it once registered.
| Name | Type | Default | Description |
|---|---|---|---|
idrequired | string | — | |
orientationrequired | AxisOrientation"x" | "y" | — | |
positionrequired | AxisPosition| "bottom" | — | |
accessor | (d: T, index: number) => AxisValue | — | Where a row lies along the axis; an x axis' only - along y the series
place their rows. A number is a position or an instant, a string a
category, a Date an instant (ADR-0052). |
label | string | — | |
tickCount | number | — | |
tickFormat | (v: number) => string | — | |
domainrequired | | "nice" | — | "visible" is a y axis' only: the extent of what its series show inside their x axis' domain. |
grid | boolean | only the first registered axis per orientation | Whether the axis draws its grid lines. |
ticks | readonly number[] | — | Fixed tick values instead of the 1-2-5 algorithm, on a numeric axis: an hour axis' named hours, a lane grid. |
categories | readonly string[] | — | The categories of the axis, in their order: the list is the order and the extent, and makes the axis a category axis (ADR-0052). |
categoryLabel | (category: string) => string | — | What is written for a category, wherever it is written. |
time | boolean | — | The values are instants - milliseconds, and where this is said ISO 8601
strings as well: ticks on local boundaries, labels by level. A calendar
implies it, and so do rows that bring a Date (ADR-0052). |
calendar | readonly WorkingInterval[] | — | Working calendar: the intervals in which time counts. With it, materialisation maps wall clock time onto working time before the scale calculates - the scale stays affine (ADR-0001). |
alignTicks | boolean | — | y axes only: this axis' ticks on the first y axis' grid. |
zoomable | boolean | — | x axes only: wheel, drag, pinch, double click and the zoom keys move the span the chart's view holds for this axis (ADR-0047). |
zoomLimits | ZoomLimits | at most the data's extent, at least three data steps | x axes only: the narrowest and the widest span zoom may reach. |
AxisField<T, V = AxisValue>The fields of a row an axis can read - or, with V, those that hold only
some of what an axis reads: a matrix' row is a position or a category,
never an instant.
type AxisField<T, V = AxisValue> = NoInfer<
{
[K in keyof T & string]-?: T[K] extends V ? K : never;
}[keyof T & string]
>;AxisOrientationWhether an axis or a limit runs along x or along y.
type AxisOrientation = "x" | "y";AxisPositionThe edge of the plot an axis stands at: bottom or top for x, left or
right for y.
type AxisPosition = "bottom" | "top" | "left" | "right";AxisSpansThe span each zoomable x axis shows, by axis id, in the axis' units.
type AxisSpans = Readonly<Record<string, readonly [number, number]>>;AxisValueWhat an axis reads from a row (ADR-0052): a number - a position, or an
instant on a time axis -, a string, which is a category, or a Date,
which is an instant. The type of the value decides what kind the axis is,
never its content: "2024" is a category, 2024 a number. On an axis
that says time a string is an ISO 8601 instant. null/undefined is no
place.
type AxisValue = number | string | Date | null | undefined;BarPropsIts table stands on Bar.
BarSeriesConfig<T = unknown>A Bar as the chart holds it once registered.
| Name | Type | Default | Description |
|---|---|---|---|
kindrequired | "bar" | — | |
barWidthrequired | number | — | Width as a fraction of the step; the group shares this fraction. |
accessorrequired | ValueFunction<T> | — | Y value; null/undefined/NaN/±Infinity means a gap. from SeriesBase |
data | readonly T[] | — | Series-own data; overrides the container data. from SeriesBase |
xAxisIdrequired | string | — | from SeriesBase |
yAxisIdrequired | string | — | from SeriesBase |
name | string | — | from SeriesBase |
format | (value: number) => string | — | The value in the tooltip; before the y axis' tickFormat. Compared by its
source text, as an accessor is. from SeriesBase |
color | string | — | from SeriesBase |
tone | | "ok" | — | A role instead of a colour value: the theme resolves it, in both themes.
For series that mean something rather than just being the next one - the
violating points of a control chart, say. color beats it. from SeriesBase |
stack | string | — | The stack this series stands in: series with the same id, on the same x
and y axis, stack in registration order. from Stackable |
normalize | boolean | — | On any member, the whole stack sums to 100 at every x. from Stackable |
BinOptionsThe settings of bin.
| Name | Type | Default | Description |
|---|---|---|---|
width | number | — | The width of a bin. Wins over count. Without a domain the edges are
multiples of it.Shown in: Count readings into a histogram (Bar) |
count | number | 10 | About how many bins: the width becomes the next 1-2-5 step, so the number
comes out near it and not exactly - with a domain, exactly. |
domain | readonly [number, number] | — | The span the bins cover, the first edge on its start and the last on its end. Values outside it are left out, not clamped into the end bins. |
BoxChannelsThe named channels of a box: one number per point, NaN where the median is a gap; and its outliers (ADR-0040).
| Name | Type | Default | Description |
|---|---|---|---|
outliersrequired | Float64Array | null | — | Every box's outliers, flat, box after box; null without outliers. |
outlierOffsetsrequired | Uint32Array | null | — | Where each box's outliers begin, and one past the last: box i's stand
from outlierOffsets[i] to outlierOffsets[i + 1]. null without
outliers. |
meanrequired | Float64Array | null | — | The optional numbers, each null where not given. |
notchLowerrequired | Float64Array | null | — | |
notchUpperrequired | Float64Array | null | — | |
countrequired | Float64Array | null | — | |
lowerQuartilerequired | Float64Array | — | from BoxNumbers |
upperQuartilerequired | Float64Array | — | from BoxNumbers |
lowerWhiskerrequired | Float64Array | — | from BoxNumbers |
upperWhiskerrequired | Float64Array | — | from BoxNumbers |
BoxExtras<V = number>The optional numbers of a box by name.
| Name | Type | Default | Description |
|---|---|---|---|
meanrequired | V | — | |
notchLowerrequired | V | — | |
notchUpperrequired | V | — | |
countrequired | V | — |
BoxNumbers<V = number>A box's further numbers beside its median, by name.
| Name | Type | Default | Description |
|---|---|---|---|
lowerQuartilerequired | V | — | |
upperQuartilerequired | V | — | |
lowerWhiskerrequired | V | — | |
upperWhiskerrequired | V | — |
BoxPlotPropsIts table stands on BoxPlot.
BoxSeriesConfig<T = unknown>A box plot (CONTEXT.md: Box). The base accessor is the median; the four further numbers are the caller's, computed by whatever method the caller chose - the library draws them and computes none.
| Name | Type | Default | Description |
|---|---|---|---|
kindrequired | "box" | — | |
lowerQuartilerequired | ValueFunction<T> | — | |
upperQuartilerequired | ValueFunction<T> | — | |
lowerWhiskerrequired | ValueFunction<T> | — | |
upperWhiskerrequired | ValueFunction<T> | — | |
outliers | ListFunction<T> | — | The values beyond the whiskers, per box (ADR-0040). |
mean | ValueFunction<T> | — | |
notchLower | ValueFunction<T> | — | Both bounds or neither (CONTEXT.md: Notch). |
notchUpper | ValueFunction<T> | — | |
count | ValueFunction<T> | — | How many values stand behind the box; no y value. |
boxWidthrequired | number | — | Width as a fraction of the step; boxes and bars on one x axis share it. |
accessorrequired | ValueFunction<T> | — | Y value; null/undefined/NaN/±Infinity means a gap. from SeriesBase |
data | readonly T[] | — | Series-own data; overrides the container data. from SeriesBase |
xAxisIdrequired | string | — | from SeriesBase |
yAxisIdrequired | string | — | from SeriesBase |
name | string | — | from SeriesBase |
format | (value: number) => string | — | The value in the tooltip; before the y axis' tickFormat. Compared by its
source text, as an accessor is. from SeriesBase |
color | string | — | from SeriesBase |
tone | | "ok" | — | A role instead of a colour value: the theme resolves it, in both themes.
For series that mean something rather than just being the next one - the
violating points of a control chart, say. color beats it. from SeriesBase |
CalendarInputEvery function of this module takes either: the raw list as it stands on the axis, or the calendar built from it.
type CalendarInput = WorkingCalendar | readonly WorkingInterval[];ChartOptionsIts table stands on Zoom and pan.
ChartParts<Z>What useChart hands back: the chart and its parts, typed at the row Z,
its view and the setters that change it. A series given data of its own
is typed by that data instead.
| Name | Type | Default | Description |
|---|---|---|---|
Chartrequired | (props: ChartProps) => ReactNode | — | The chart over the hook's rows. One per useChart: it holds the view,
and a second chart is a second call.Shown in: Draw a first chart (Installation), Size a chart by its container (Installation), Mix series kinds (Chart) and 74 more |
XAxisrequired | <T = Z>(props: XAxisProps<T>) => null | — | An x axis reads the rows of every series bound to it: the hook's, or
with <XAxis<Row>> those the series bring as their own data.Shown in: Draw a first chart (Installation), Size a chart by its container (Installation), Mix series kinds (Chart) and 74 more |
YAxisrequired | (props: YAxisProps) => null | — | Shown in: Draw a first chart (Installation), Size a chart by its container (Installation), Mix series kinds (Chart) and 74 more |
Linerequired | <T = Z>(props: LineProps<T>) => null | — | Shown in: Draw a first chart (Installation), Size a chart by its container (Installation), Mix series kinds (Chart) and 47 more |
Arearequired | <T = Z>(props: AreaProps<T>) => null | — | Shown in: Mix series kinds (Chart), Mark every kind (Chart), Bind every kind of series to a second axis (Axis) and 5 more |
Barrequired | <T = Z>(props: BarProps<T>) => null | — | Shown in: Mix series kinds (Chart), Mark every kind (Chart), Bind every kind of series to a second axis (Axis) and 13 more |
Scatterrequired | <T = Z>(props: ScatterProps<T>) => null | — | Shown in: Mix series kinds (Chart), Mark every kind (Chart), Bind every kind of series to a second axis (Axis) and 3 more |
StateBandrequired | <T = Z>(props: StateBandProps<T> & OneLane) => null | — | Shown in: Mark bands, limits and cells (Chart), One vehicle through the day (StateBand), Lay a state under a course (StateBand) and 4 more |
Matrixrequired | <T = Z>(props: MatrixProps<T>) => null | — | Shown in: Mark bands, limits and cells (Chart), Colour cells by their limits (Matrix), Colour cells along a gradient (Matrix) and 1 more |
BoxPlotrequired | <T = Z>(props: BoxPlotProps<T>) => null | — | Shown in: One box per service (BoxPlot), A box per hour on a time axis (BoxPlot), With outliers (BoxPlot) and 4 more |
viewrequired | ChartView | — | How the reader is looking at the chart. Shown in: Keep and restore a view (View) |
domainsrequired | AxisSpans | — | The span each zoomable x axis shows, by axis id; an axis absent shows
its own domain. |
setViewrequired | (view: ChartView) => void | — | Goes to a whole view; what it leaves out is shown whole again. Not
reported through onViewChange: two charts kept in step by
onViewChange: (v) => other.setView(v) in both directions do not answer
each other. A view with the content already shown changes nothing.Shown in: Read it by keyboard and screen reader (Chart), Keep charts in step (Zoom and pan), Keep and restore a view (View) |
setDomainrequired | (axisId: string, span: readonly [number, number] | null) => void | — | Puts a span in view on a zoomable x axis - a lone one is "x"; null
shows the axis' own domain again.Shown in: Measure a million points (Benchmark) |
toggleSeriesrequired | (name: string) => void | — | Hides the series name, or shows it where it is hidden - as a click on
its legend entry does. Hiding the last series visible shows all. |
showOnlyrequired | (name: string) => void | — | Hides every series but name; all are shown where none carries it.Shown in: Hide a series from the legend (Legend) |
showAllSeriesrequired | () => void | — | Shows every series again. Shown in: Hide a series from the legend (Legend) |
Used on Chart.
ChartPerfMeasurements of the instrumentation for the benchmark page.
| Name | Type | Default | Description |
|---|---|---|---|
materializeMsrequired | number | — | Shown in: Measure a million points (Benchmark) |
seriesDrawMsrequired | number | — | Shown in: Measure a million points (Benchmark), Draw a week of seconds (Benchmark) |
pointsrequired | number | — | Shown in: Measure a million points (Benchmark) |
Used on Benchmark.
ChartPropsIts table stands on Chart.
ChartsWordingEverything the charts put out as text.
| Name | Type | Default | Description |
|---|---|---|---|
localerequired | string | — | The BCP 47 tag every number and every date or time label of the chart is
formatted in (en-GB, de-DE). The one input for the locale: the
browser's language is not read. The clock stays 24-hour in both. |
roleDescriptionrequired | string | — | What a screen reader calls the plot area that takes the keys
(aria-roledescription). |
emptyrequired | string | — | Shown in the plot area when no visible series has a point to show. |
seriesListrequired | (names: readonly string[]) => string | — | The summary's visible series, by name. |
visibleRangerequired | (from: string, to: string) => string | — | The summary's visible stretch of the x axis, both ends formatted. |
seriesExtentrequired | (name: string, min: string, max: string) => string | — | The summary's lowest and highest value of one series in that stretch. |
limitListrequired | (limits: readonly { name: string; value: string }[]) => string | — | The summary's labelled limits, each with its value in its axis' format (a band's two edges as one value). |
readoutrequired | (x: string, rows: readonly { name: string; value: string; x: string }[]) => string | — | What is read after a key: the position, then each series with its value (and its own x where it stands on another x axis), the emphasised one first. |
stackTotalrequired | string | — | The last row of a stack in the tooltip and the readout: the sum of its members at the point. |
percentrequired | (value: string) => string | — | A share in a normalised stack, its number already formatted. |
walkHelprequired | string | — | The keys that walk the chart. |
selectHelprequired | string | — | The key that reports the Active point - only where onSelect is given. |
zoomHelprequired | string | — | The keys that zoom and pan it - only where the chart can be zoomed. |
legendHelprequired | string | — | The keys of the legend's entries - only where it has one to press. |
allShownrequired | string | — | Read out where hiding would leave nothing to see, and every series is shown instead. |
showAllrequired | string | — | The control over a zoomed plot that brings every zoomed axis back to its own domain (component-view 04). |
showDatarequired | string | — | The data table's disclosure key, closed and open. |
hideDatarequired | string | — | |
positionColumnrequired | string | — | The heading of the table's x column where its axis has no label, and
of a matrix' row column where its y axis has none. |
rowColumnrequired | string | — | |
tableCaptionrequired | (from: string, to: string) => string | — | The table's caption: the visible stretch it lists, both ends formatted. |
upperWhiskerrequired | string | — | A box's numbers, top to bottom as drawn: the tooltip's rows, the readout's parts and the data table's columns (box-plot B9). |
upperQuartilerequired | string | — | |
medianrequired | string | — | |
lowerQuartilerequired | string | — | |
lowerWhiskerrequired | string | — | |
outliersrequired | string | — | A box's outliers: the row's name, and the row's value - their count and the first few values, the rest counted (box-plot B9). |
meanrequired | string | — | A box's optional readings: its mean, its notch's two bounds as one row, and how many values stand behind it. |
notchrequired | string | — | |
countrequired | string | — | |
outlierListrequired | (values: readonly string[], more: number) => string | — | |
downsampledrequired | (readings: number) => string | — | Added to the caption where the table shows the downsampled course: how many readings its rows stand for. |
ControlChartPropsIts table stands on ControlChart.
ControlLimitOriginWhere the limits come from. There are exactly these two possibilities.
type ControlLimitOrigin =
/** From a baseline the caller has fixed. Taken as it is - even where the
series would yield something else out of itself. */
| { readonly kind: "given"; readonly center: number; readonly sigma: number }
/** From exactly this index range of the series, half-open [from, to). */
| { readonly kind: "referenceWindow"; readonly from: number; readonly to: number };ControlLimitsCentre line, estimated spread and the control limits at three sigma.
| Name | Type | Default | Description |
|---|---|---|---|
centerrequired | number | — | Shown in: Set specification and control limits side by side (LimitLine) |
sigmarequired | number | — | Estimated spread of a single value, not the distance to the limit. |
upperrequired | number | — | Shown in: Set specification and control limits side by side (LimitLine) |
lowerrequired | number | — | Shown in: Set specification and control limits side by side (LimitLine) |
DataTableGroupOne table of the data table: the series of one x axis, or one matrix. Every cell is text already, in the format the tooltip writes.
LegendConfigA Legend as the chart holds it once registered.
| Name | Type | Default | Description |
|---|---|---|---|
placementrequired | "top" | "bottom" | — |
LegendPropsIts table stands on Legend.
LimitA bound: a value, a side and a severity. No more - a tolerance band is
derived and never an input (two limits of equal severity on opposite sides
enclose one). That keeps the one-sided case, which is the more common one,
free of a null on the other edge.
| Name | Type | Default | Description |
|---|---|---|---|
valuerequired | number | — | Shown in: Mark bands, limits and cells (Chart), Colour cells by their limits (Matrix) |
siderequired | Side"upper" | "lower" | — | Shown in: Mark bands, limits and cells (Chart), Colour cells by their limits (Matrix) |
severityrequired | Severity"warning" | "alarm" | — | Shown in: Mark bands, limits and cells (Chart), Colour cells by their limits (Matrix) |
LimitBandConfigA LimitBand as the chart holds it once registered: the range from from
to to.
| Name | Type | Default | Description |
|---|---|---|---|
kindrequired | "band" | — | |
fromrequired | number | — | |
torequired | number | — | |
axisId | string | — | Axis on which the value lies; without one, the first axis of its
orientation. from LimitBase |
orientationrequired | AxisOrientation"x" | "y" | — | from LimitBase |
severityrequired | Severity"warning" | "alarm" | — | from LimitBase |
label | string | — | from LimitBase |
color | string | — | A colour of its own; without one, that of the role or of the severity out of
the theme. from LimitBase |
inExtentrequired | boolean | — | Pulls the extent of the axis along. Default true: an excluded limit yields a
chart that looks right and does not show its most important line - and that
nobody notices. A squashed plot is noticed at once. from LimitBase |
LimitBandPropsIts table stands on LimitLine.
LimitConfigAny registered limit, a line or a band, told apart by kind.
type LimitConfig = LimitLineConfig | LimitBandConfig;LimitLineConfigA LimitLine as the chart holds it once registered.
| Name | Type | Default | Description |
|---|---|---|---|
kindrequired | "line" | — | |
valuerequired | number | — | |
axisId | string | — | Axis on which the value lies; without one, the first axis of its
orientation. from LimitBase |
orientationrequired | AxisOrientation"x" | "y" | — | from LimitBase |
severityrequired | Severity"warning" | "alarm" | — | from LimitBase |
label | string | — | from LimitBase |
color | string | — | A colour of its own; without one, that of the role or of the severity out of
the theme. from LimitBase |
inExtentrequired | boolean | — | Pulls the extent of the axis along. Default true: an excluded limit yields a
chart that looks right and does not show its most important line - and that
nobody notices. A squashed plot is noticed at once. from LimitBase |
LimitLinePropsIts table stands on LimitLine.
LimitRoleWhat a limit stands for. The difference is not cosmetic: a specification limit is chosen (what the customer assumes), a control limit is calculated (what the process normally does). A process can be in control and outside the specification and the other way round, and each of the four cases calls for something different - which is why the two lines have to look distinguishable (ADR-0008).
type LimitRole = "specification" | "control" | "zone";LimitSetThe set a value is read against: its bounds and, where there is one, its target. The target is not a limit. It is missed, never violated, and it is never the edge of a region. Conflating the two is how a tile turns red for being above target.
| Name | Type | Default | Description |
|---|---|---|---|
limits | readonly Limit[] | — | In any order; none, one or several. Shown in: Mark bands, limits and cells (Chart), Colour cells by their limits (Matrix) |
target | number | — |
Used on Scenarios.
LinePropsIts table stands on Line.
LineSeriesConfig<T = unknown>A Line as the chart holds it once registered.
| Name | Type | Default | Description |
|---|---|---|---|
kindrequired | "line" | — | |
strokeWidthrequired | number | — | |
dash | readonly number[] | — | |
markersrequired | | "auto" | — | |
step | boolean | — | Sample-and-hold: each value holds until the next sample. |
accessorrequired | ValueFunction<T> | — | Y value; null/undefined/NaN/±Infinity means a gap. from SeriesBase |
data | readonly T[] | — | Series-own data; overrides the container data. from SeriesBase |
xAxisIdrequired | string | — | from SeriesBase |
yAxisIdrequired | string | — | from SeriesBase |
name | string | — | from SeriesBase |
format | (value: number) => string | — | The value in the tooltip; before the y axis' tickFormat. Compared by its
source text, as an accessor is. from SeriesBase |
color | string | — | from SeriesBase |
tone | | "ok" | — | A role instead of a colour value: the theme resolves it, in both themes.
For series that mean something rather than just being the next one - the
violating points of a control chart, say. color beats it. from SeriesBase |
ListField<T>The fields of a row whose value is a list of numbers, or absent.
type ListField<T> = NoInfer<
{
[K in keyof T & string]-?: T[K] extends readonly number[] | null | undefined ? K : never;
}[keyof T & string]
>;ListFunction<T>A list computed from the row - a box's outliers (ADR-0040), the
function form of ListValue. null/undefined or an
empty array is none; a value that is not finite is left out.
type ListFunction<T> = (d: T, index: number) => readonly number[] | null | undefined;ListValue<T>A list read from the row: the name of a list field or a function.
type ListValue<T> = ListField<T> | ListFunction<T>;MaterializedSeriesMaterialised series: the draw loop works only on this. Gaps (null/undefined/NaN/±Infinity out of the accessor) are encoded as NaN.
| Name | Type | Default | Description |
|---|---|---|---|
xrequired | Float64Array | — | |
yrequired | Float64Array | — | |
y0required | Float64Array | null | — | Lower edge, where the baseline is an accessor of its own; otherwise null. A fixed baseline needs no channel - it is a number. |
wrequired | Float64Array | null | — | Level channel: the third value per point, which today only the matrix needs. Named rather than overloading y0 - a property that only some kinds carry does not belong in the shared type with a comment (ADR-0011). null for every kind that does not use it. |
boxrequired | BoxChannels | null | — | A box's further numbers beside its median in y; null for every other kind (ADR-0011). |
lengthrequired | number | — |
MatrixColoringHow a matrix colours its cells. Discretely by assessment - the same limits that colour a tile - or across a gradient.
type MatrixColoring =
| { kind: "assessment"; limits: LimitSet }
| {
kind: "gradient";
/** Colour stops from small to large; at least two. The stops ARE the
steps - the library does not interpolate between them, because that
would mean a colour parser for arbitrary CSS colour values, which this
package does not have and is not to get (ADR-0011). Whoever wants a
finer gradation names more colours. */
stops: readonly string[];
/** Value range of the gradient.
@default the range of the data */
range?: readonly [number, number];
};MatrixPropsIts table stands on Matrix.
MatrixSeriesConfig<T = unknown>A Matrix as the chart holds it once registered: its base accessor is the
row, level the colour. The row may be named: where the accessor yields a
string, materialisation gives it its category's place (ADR-0052) - the one
series kind whose base accessor reads more than a number.
| Name | Type | Default | Description |
|---|---|---|---|
kindrequired | "matrix" | — | |
levelrequired | ValueFunction<T> | — | The level that decides the colour - the third channel (ADR-0011). The base accessor yields the row position, not this level. |
coloringrequired | MatrixColoring | — | |
accessorrequired | ValueFunction<T> | — | Y value; null/undefined/NaN/±Infinity means a gap. from SeriesBase |
data | readonly T[] | — | Series-own data; overrides the container data. from SeriesBase |
xAxisIdrequired | string | — | from SeriesBase |
yAxisIdrequired | string | — | from SeriesBase |
name | string | — | from SeriesBase |
format | (value: number) => string | — | The value in the tooltip; before the y axis' tickFormat. Compared by its
source text, as an accessor is. from SeriesBase |
color | string | — | from SeriesBase |
tone | | "ok" | — | A role instead of a colour value: the theme resolves it, in both themes.
For series that mean something rather than just being the next one - the
violating points of a control chart, say. color beats it. from SeriesBase |
NumberField<T>The fields of a row whose value is a number, or absent.
type NumberField<T> = NoInfer<
{
[K in keyof T & string]-?: T[K] extends number | null | undefined ? K : never;
}[keyof T & string]
>;OneLaneA lane is named or given by its edges: the compiler refuses both at once.
Beside the props and not in them, so that StateBandProps stays an
interface another can extend.
type OneLane = { lane: string; laneFrom?: undefined; laneTo?: undefined } | { lane?: undefined };PaddingSpace in CSS pixels on each side of a rectangle.
| Name | Type | Default | Description |
|---|---|---|---|
toprequired | number | — | Shown in: Fix the domain and name the ticks (Axis) |
rightrequired | number | — | Shown in: Fix the domain and name the ticks (Axis) |
bottomrequired | number | — | Shown in: Fix the domain and name the ticks (Axis) |
leftrequired | number | — | Shown in: Fix the domain and name the ticks (Axis) |
ParetoEntryAn item, the way it is drawn.
| Name | Type | Default | Description |
|---|---|---|---|
namerequired | string | — | |
valuerequired | number | — | |
indexrequired | number | — | The entry's rank from 0, in the order drawn - its place on an x axis
that reads name, and an x value for one that reads numbers. |
sharerequired | number | — | Share of the total, 0…1. |
cumulativerequired | number | — | Cumulative share up to and including this entry, 0…1. Exactly 1 at the last entry. |
remainderrequired | boolean | — | The collected tail. Exactly one entry can be this, and it always stands last. |
ParetoOptionsThe settings of pareto, complete; a call gives ParetoSettings.
| Name | Type | Default | Description |
|---|---|---|---|
cutoffrequired | number | 0.8 | The share whose crossing is sought. Whoever lands exactly on it counts as the crossing: the question is "which reasons make up eighty per cent", and whoever reaches eighty exactly belongs to them. |
collectRankrequired | number | Infinity | How many items stay on their own. Everything behind that becomes a single entry. Beyond the number of items no remainder arises at all - not an empty one. |
remainderName | string | none - the caller names it | Name of the collected remainder. The helper has no default wording for it. |
ParetoResultWhat pareto returns: the entries as they are drawn, their total and
where the cutoff is crossed.
| Name | Type | Default | Description |
|---|---|---|---|
entriesrequired | readonly ParetoEntry[] | — | |
totalrequired | number | — | Total of the drawn entries - after collecting, the same as before. |
cutoffIndexrequired | number | — | Index of the first entry whose cumulative share reaches the cutoff; -1 when it is never reached. |
ParetoSettingsWhat a call may specify: a collect rank only together with the name of the remainder it creates.
type ParetoSettings = { readonly cutoff?: number } & (
| { readonly collectRank?: undefined; readonly remainderName?: undefined }
| { readonly collectRank: number; readonly remainderName: string }
);RemovedSpanA removed span and the place it collapses onto.
| Name | Type | Default | Description |
|---|---|---|---|
fromrequired | number | — | |
torequired | number | — | |
workingTimerequired | number | — | Working time on which the whole span lies - a point, not a stretch. |
ResolvedThemeA chart's colours and fonts, resolved from the --uc-* tokens where the
chart stands.
| Name | Type | Default | Description |
|---|---|---|---|
colorAxisrequired | string | — | |
colorGridrequired | string | — | |
colorTextrequired | string | — | |
colorBgrequired | string | — | |
colorWarningrequired | string | — | Colours of the two limit severities. A limit carries the colour of its severity, not that of its series - it belongs to none. |
colorAlarmrequired | string | — | |
colorOkrequired | string | — | The third outcome of an assessment. "unknown" deliberately has no colour: a missing value becomes a hole like every gap in this library, and a hole carries no colour, because a colour would be a claim. |
fontrequired | string | — | |
fontMonorequired | string | — | |
seriesrequired | readonly string[] | — | |
forcedrequired | boolean | — | The page is in forced colours: every colour above is a system colour, and
the chart encodes by marks whatever its encoding. |
RuleNameName of a rule, the way it is switched on and off in violations.
type RuleName = "outlier" | "run" | "trend" | "twoOfThree";Used on Scenarios and ControlChart.
RuleOptionsWhich rules run, and with which run lengths.
| Name | Type | Default | Description |
|---|---|---|---|
outlierrequired | boolean | — | |
runrequired | boolean | — | |
trendrequired | boolean | — | |
twoOfThreerequired | boolean | — | |
runLengthrequired | number | — | Points on one side of the centre line from which rule 2 fires. |
trendLengthrequired | number | — | Points in succession from which rule 3 fires. |
ScaleThe mapping of an axis' values onto pixels and back, with its ticks. Every
scale of the library is affine; LinearScale implements it.
interface Scale {
domain: readonly [number, number];
range: readonly [number, number];
/** Affine coefficients of the mapping px = v·m + b.
They stand in the interface because the drawing code reads them and
computes inline in the point loop instead of calling toPx() per point -
that is what carries 60 fps at millions of points. Every scale of this
library is affine; see docs/adr/0001-affine-scale-contract.md, which also
says what a later log scale would cost. */
readonly m: number;
readonly b: number;
toPx(v: number): number;
fromPx(px: number): number;
ticks(n: number): number[];
}ScatterPropsIts table stands on Scatter.
ScatterSeriesConfig<T = unknown>A Scatter as the chart holds it once registered.
| Name | Type | Default | Description |
|---|---|---|---|
kindrequired | "scatter" | — | |
radiusrequired | number | — | Point radius in CSS pixels. |
accessorrequired | ValueFunction<T> | — | Y value; null/undefined/NaN/±Infinity means a gap. from SeriesBase |
data | readonly T[] | — | Series-own data; overrides the container data. from SeriesBase |
xAxisIdrequired | string | — | from SeriesBase |
yAxisIdrequired | string | — | from SeriesBase |
name | string | — | from SeriesBase |
format | (value: number) => string | — | The value in the tooltip; before the y axis' tickFormat. Compared by its
source text, as an accessor is. from SeriesBase |
color | string | — | from SeriesBase |
tone | | "ok" | — | A role instead of a colour value: the theme resolves it, in both themes.
For series that mean something rather than just being the next one - the
violating points of a control chart, say. color beats it. from SeriesBase |
SeriesBase<T = unknown>What every series registers, whatever its kind: where its values come from, which axes it stands on, and how it is named and coloured.
| Name | Type | Default | Description |
|---|---|---|---|
accessorrequired | ValueFunction<T> | — | Y value; null/undefined/NaN/±Infinity means a gap. |
data | readonly T[] | — | Series-own data; overrides the container data. |
xAxisIdrequired | string | — | |
yAxisIdrequired | string | — | |
name | string | — | |
format | (value: number) => string | — | The value in the tooltip; before the y axis' tickFormat. Compared by its
source text, as an accessor is. |
color | string | — | |
tone | | "ok" | — | A role instead of a colour value: the theme resolves it, in both themes.
For series that mean something rather than just being the next one - the
violating points of a control chart, say. color beats it. |
SeriesConfig<T = unknown>Any registered series, told apart by kind.
type SeriesConfig<T = unknown> =
| LineSeriesConfig<T>
| AreaSeriesConfig<T>
| BarSeriesConfig<T>
| BoxSeriesConfig<T>
| ScatterSeriesConfig<T>
| StateSeriesConfig<T>
| MatrixSeriesConfig<T>;SeriesKindThe kinds of series a chart draws: line, area, bar, box, scatter,
state and matrix. The set is closed.
type SeriesKind = SeriesConfig["kind"];SeverityHow seriously a violation weighs. Exactly two: one severity that advises and one that calls for action. Five severities would be five colours, and five colours on a dense screen are noise. Whoever needs a third distinction sets a second limit.
type Severity = "warning" | "alarm";SideWhether a limit is an upper or a lower bound.
type Side = "upper" | "lower";StateBandPropsIts table stands on StateBand.
StateSeriesConfig<T = unknown>A StateBand as the chart holds it once registered: its accessor yields
an index into states.
| Name | Type | Default | Description |
|---|---|---|---|
kindrequired | "state" | — | |
statesrequired | readonly StateEntry[] | — | The closed set of states. The accessor yields the index into it - a number, not a key (ADR-0007). |
lane | string | — | The lane by its name: a category of the y axis, whose place the band takes (ADR-0052). |
laneFrom | number | — | Lower edge of the lane in domain units of the y axis; without a value the beginning of the axis domain. |
laneTo | number | — | Upper edge of the lane; without a value the end of the axis domain. |
accessorrequired | ValueFunction<T> | — | Y value; null/undefined/NaN/±Infinity means a gap. from SeriesBase |
data | readonly T[] | — | Series-own data; overrides the container data. from SeriesBase |
xAxisIdrequired | string | — | from SeriesBase |
yAxisIdrequired | string | — | from SeriesBase |
name | string | — | from SeriesBase |
format | (value: number) => string | — | The value in the tooltip; before the y axis' tickFormat. Compared by its
source text, as an accessor is. from SeriesBase |
color | string | — | from SeriesBase |
tone | | "ok" | — | A role instead of a colour value: the theme resolves it, in both themes.
For series that mean something rather than just being the next one - the
violating points of a control chart, say. color beats it. from SeriesBase |
TooltipConfig<T = unknown>A Tooltip as the chart holds it once registered.
| Name | Type | Default | Description |
|---|---|---|---|
moderequired | "x" | "nearest" | — | |
limits | boolean | — | |
render | (hit: TooltipHit<T>) => ReactNode | — |
TooltipHit<T = unknown>What the pointer hit: the x value under it and one point per series there.
A custom tooltip's render receives it.
| Name | Type | Default | Description |
|---|---|---|---|
xValuerequired | number | — | Shown in: Fix the domain and name the ticks (Axis), Write the tooltip yourself (Tooltip), Choose a hit (Tooltip) |
pointsrequired | readonly TooltipPoint<T>[] | — | Shown in: Fix the domain and name the ticks (Axis), Write the tooltip yourself (Tooltip), Choose a hit (Tooltip) |
xPxrequired | number | — | Pixel position of the crosshair (snapped to the data point). |
yPxrequired | number | — | Pixel position of the primary hit. |
TooltipPoint<T = unknown>One hit per series in the tooltip.
| Name | Type | Default | Description |
|---|---|---|---|
seriesNamerequired | string | — | Shown in: Fix the domain and name the ticks (Axis), Write the tooltip yourself (Tooltip), Choose a hit (Tooltip) |
colorrequired | string | — | |
xValuerequired | number | — | The point's x value on its own x axis - with several x axes it can differ from the hit's. |
yValuerequired | number | — | The point's y value; in a stack its own value, not its top - in a
normalised stack its share in percent. Shown in: Fix the domain and name the ticks (Axis), Choose a hit (Tooltip) |
datumrequired | T | — | Shown in: Write the tooltip yourself (Tooltip) |
indexrequired | number | — | |
level | number | — | Only for the matrix: its level, out of the level channel. It stands here and not in yValue, because yValue is the position on the y axis - for a matrix therefore the row. Putting both into one field would be exactly the overloading ADR-0011 is written against. |
segment | { from: number; to: number; label: string } | — | Only for state series: the section being pointed at. A duration does not stand here - it is the difference of two numbers the entry already carries, and formatting it would presuppose knowing what the x axis means. The caller knows that, not this library. |
box | BoxNumbers & Partial<BoxExtras> & { /** As the caller gave them; only where the series has `outliers`. */ outliers?: readonly number[]; } | — | Only for a box: its further numbers; yValue is its median. Fields of
their own for the reason level has one (ADR-0011). |
TooltipPropsIts table stands on Tooltip.
Value<T>A value read from the row (ADR-0048): the name of a number field, compared
by its name, or a function, compared by its source text (ValueFunction).
type Value<T> = NumberField<T> | ValueFunction<T>;ValueFunction<T>A value computed from the row - the function form of Value.
Compared by its source text, not its identity - an inline function is new
on every render. Known limit: one that reads a
changed closure variable under the same text is not run again; pass a new
data reference then. A native or bound function is compared by identity.
type ValueFunction<T> = (d: T, index: number) => number | null | undefined;VerdictWhat a value is. Four outcomes, not three.
unknown is an outcome of its own and not a null return: a null
invites ?? "ok" at the call site, and that very expression is the defect
this module exists to prevent. A value nobody has is a reason to look and
not a reason to relax.
type Verdict = "ok" | "unknown" | "warning" | "alarm";ViolationA rule and the indices it violates.
| Name | Type | Default | Description |
|---|---|---|---|
rulerequired | RuleName| "outlier" | — | Shown in: List the rule violations (ControlChart), Choose the rules (ControlChart), Hold the tile length in control (Scenarios) |
indicesrequired | readonly number[] | — | Shown in: List the rule violations (ControlChart), Choose the rules (ControlChart), Hold the tile length in control (Scenarios) |
Used on ControlChart.
WorkingCalendarA working calendar: sorted, merged intervals with the working time accumulated before each one begins. An empty calendar is no calendar: it maps unchanged. Build once, then pass around: the mapping runs once per point, and were it to sort and accumulate every time, the calendar would be the most expensive thing about the frame.
| Name | Type | Default | Description |
|---|---|---|---|
intervalsrequired | readonly WorkingInterval[] | — | |
offsetsrequired | readonly number[] | — | Working time accumulated before the respective interval begins. |
totalrequired | number | — | The whole working time - the axis' extent is [0, total]. |
WorkingTimeTickA tick: where it stands on the clock and where it lies on the axis.
| Name | Type | Default | Description |
|---|---|---|---|
wallClockrequired | number | — | |
workingTimerequired | number | — |
XAxisPropsIts table stands on Axis.
YAxisPropsIts table stands on Axis.
ZoneA zone line: k times sigma above and below the centre line.
Used on Scenarios, Axis, LimitLine and ControlChart.
ZoomLimitsThe narrowest and the widest span zoom may reach, in the axis' units - the schedule's shape.
| Name | Type | Default | Description |
|---|---|---|---|
minrequired | number | — | Shown in: Limit the zoom (Zoom and pan) |
maxrequired | number | — | Shown in: Limit the zoom (Zoom and pan) |
Used on Zoom and pan.
GERMAN_CHARTS_WORDINGThe German instance, for a chart's wording. Complete, because it is
typed ChartsWording.
Every entry, with its value, stands in the table Charts wording on core's Language page.
const GERMAN_CHARTS_WORDING: ChartsWording;Used on Installation and Chart.