Premium options reference
Options of the premium chart types (plotOptions.sankey, .gantt, .radialColumn, ...).
Options and runtime commands of the west-coast-charts/premium chart types. For the concepts behind them see
Premium and licensing and the Radial column guide.
Every premium type also takes plotOptions.<type>.plugins (see The premium plugin object).
Contents
sankeychordgantttreestockmapmarimekkonetworkradialColumnquint(quintTimeline, quintConvergence)vitalsClockschedule- Runtime API
plotOptions.sankey
Chart type sankey (WccSankeyOptions).
| Option | Type | Description |
|---|---|---|
plotOptions.sankey.plugins |
WccPremiumPluginRef[] |
Plugins of this chart: plugin objects, registered names, or [nameOrPlugin, options]. |
plotOptions.sankey.plugins[].name |
string |
Plugin id (state key and warnings); not set uses plugin-<index>. |
plotOptions.sankey.plugins[].defaults |
object |
Default options of the plugin; the [nameOrPlugin, options] form overrides them. |
plotOptions.sankey.plugins[].reserve() |
(p: any): { top?: number; right?: number; bottom?: number; left?: number } | void |
(p) => { top, right, bottom, left }: space in px taken from the plot before layout. |
plotOptions.sankey.plugins[].afterRender() |
(p: any): void |
(p): called after each render; draw into p.layer() and bind events with p.on(). |
plotOptions.sankey.plugins[].event() |
(name: string, e: Event | null, payload: any, p: any): boolean | void |
(name, e, payload, p): called for every chart event; returning false cancels a cancelable one. |
plotOptions.sankey.plugins[].tooltip() |
(content: any, p: any): any |
(content, p) => content: changes the tooltip content (rows, footer, …). |
plotOptions.sankey.plugins[].describe() |
(p: any): string |
(p) => string appended to the screen-reader summary. |
plotOptions.sankey.plugins[].destroy() |
(p: any): void |
(p): called before each redraw and on destroy. |
plotOptions.sankey.orientation |
'horizontal' | 'vertical' |
'horizontal' lets the flow run left to right; 'vertical' runs it top to bottom. Default: 'horizontal'. |
plotOptions.sankey.nodeWidth |
number |
Node bar thickness in px. Default: 12. |
plotOptions.sankey.nodePadding |
number |
Gap between nodes of a column in px. Default: 16. |
plotOptions.sankey.nodeAlign |
'left' | 'right' | 'center' | 'justify' |
Column of nodes without outgoing links: 'justify' moves them to the last column, 'left' keeps them at their depth, 'right' aligns everything to the end, 'center' puts sources next to their first target. Default: 'justify'. |
plotOptions.sankey.nodeBorderRadius |
number |
Corner radius of the node bars in px. Default: 3. |
plotOptions.sankey.minNodeHeight |
number |
Smallest node length in px, so tiny values stay visible. Default: 2. |
plotOptions.sankey.iterations |
number |
Relaxation passes that reduce link crossings (ignored with sort: 'input'). Default: 32. |
plotOptions.sankey.sort |
'auto' | 'input' |
'input' keeps the node order of the data; 'auto' reorders nodes to reduce crossings. Default: 'auto'. |
plotOptions.sankey.cycles |
'error' | 'break' | 'circular' |
Data with a cycle: 'error' shows an error and emits an error event, 'break' drops the closing links (with a console warning), 'circular' draws them as return loops. Default: 'error'. |
plotOptions.sankey.nodes |
object[] |
Node definitions that set names, colours or fixed columns. Default: []. |
plotOptions.sankey.nodes[].id |
string | number |
Node id used in the links. |
plotOptions.sankey.nodes[].name |
string |
Shown name; not set uses the id. |
plotOptions.sankey.nodes[].color |
WccColor |
Node colour. |
plotOptions.sankey.nodes[].column |
number |
Fixed column (0 is the first). |
plotOptions.sankey.draggable |
boolean |
Lets the user drag nodes across the flow; positions survive updates. Default: false. |
plotOptions.sankey.rtl |
'auto' | boolean |
Mirrored layout, the flow runs right to left; 'auto' follows the CSS direction. Default: 'auto'. |
plotOptions.sankey.link |
object |
Link ribbons. |
plotOptions.sankey.link.colorMode |
'source' | 'target' | 'gradient' |
Ribbon colour from the 'source' node, the 'target' node, or a 'gradient' between both. Default: 'gradient'. |
plotOptions.sankey.link.color |
WccColor |
One colour for all ribbons (a link's own color still wins). |
plotOptions.sankey.link.opacity |
number |
Ribbon opacity; not set uses 0.34 (0.5 in dark mode). |
plotOptions.sankey.link.curvature |
number |
Bend of the ribbons, 0 straight. Default: 0.5. |
plotOptions.sankey.link.minWidth |
number |
Thinnest ribbon in px. Default: 1. |
plotOptions.sankey.link.circularWidth |
number |
Width factor (0.1 to 1) of return loops with cycles: 'circular'. Default: 0.4. |
plotOptions.sankey.link.particles |
object |
Animated dots flowing along the links. |
plotOptions.sankey.link.particles.enabled |
boolean |
Turns the particles on (not with motion off). Default: false. |
plotOptions.sankey.link.particles.density |
number |
Factor on the number of particles. Default: 1. |
plotOptions.sankey.link.particles.speed |
number |
Factor on the particle speed. Default: 1. |
plotOptions.sankey.link.particles.size |
number |
Particle radius in px. Default: 2.2. |
plotOptions.sankey.link.particles.color |
WccColor |
Particle colour; not set uses the target node colour (white in dark mode). |
plotOptions.sankey.alluvial |
object |
Alluvial mode: data points { from, to, value, stage } link the same categories across stages. |
plotOptions.sankey.alluvial.enabled |
boolean |
Turns alluvial mode on (input node order, a gradient link colour becomes source). Default: false. |
plotOptions.sankey.alluvial.stages |
string[] |
Stage labels; not set numbers the stages from 1. Default: []. |
plotOptions.sankey.alluvial.showStageLabels |
boolean |
Shows the stage labels over the columns. Default: true. |
plotOptions.sankey.playback |
object |
Animated playback of several data frames. |
plotOptions.sankey.playback.frames |
object[] |
Frames { label, data }; two or more start the playback. Default: []. |
plotOptions.sankey.playback.frames[].label |
string |
Frame label (series name, playback button and playbackFrame event). |
plotOptions.sankey.playback.frames[].data |
any[] |
Link data of the frame. |
plotOptions.sankey.playback.interval |
number |
Time per frame in ms (at least 300). Default: 2400. |
plotOptions.sankey.playback.autoplay |
boolean |
Starts playing on render. Default: true. |
plotOptions.sankey.playback.loop |
boolean |
Starts again after the last frame. Default: true. |
plotOptions.sankey.playback.controls |
boolean |
Shows play and frame buttons. Default: true. |
plotOptions.sankey.labels |
object |
Node labels. |
plotOptions.sankey.labels.show |
boolean |
Shows the node labels. Default: true. |
plotOptions.sankey.labels.position |
'auto' | 'outside' |
'outside' puts first-column labels on the outer side too; 'auto' places them next to the node, inside the flow. Default: 'auto'. |
plotOptions.sankey.labels.showValue |
boolean |
Shows the node value under the name. Default: true. |
plotOptions.sankey.labels.fontSize |
number | string |
Label font size; not set uses the theme font size. |
plotOptions.sankey.labels.fontWeight |
number | string |
Label font weight. Default: 600. |
plotOptions.sankey.labels.formatter |
WccCallback |
(name, { node, value, w }) => string for the label name. |
plotOptions.sankey.labels.valueFormatter |
WccCallback |
(value, { node, w }) => string for values in labels and tooltips; not set uses tooltip.y.formatter or a number format. |
plotOptions.sankey.drilldown |
WccPremiumDrilldown |
Drill-down into nodes. |
plotOptions.sankey.drilldown.enabled |
boolean |
false switches drill-down off. Default: true. |
plotOptions.sankey.drilldown.breadcrumb |
boolean |
Shows the breadcrumb of the opened levels. Default: true. |
plotOptions.sankey.drilldown.rootLabel |
string |
Breadcrumb label of the top level; not set uses 'Overview' (sankey) or the map name. |
plotOptions.sankey.drilldown.load |
(item: any, info: any) => any |
load(item, info) returns a level or a Promise of one |
plotOptions.sankey.drilldown.drillable |
(string | number)[] | ((item: any) => boolean) |
ids that can be opened, or a test; default: every item when only load is set |
plotOptions.sankey.drilldown.nodes |
object |
Levels per node id: link data, { data, label, nodes }, or true to load the level via load. |
plotOptions.chord
Chart type chord (WccChordOptions).
| Option | Type | Description |
|---|---|---|
plotOptions.chord.plugins |
WccPremiumPluginRef[] |
Plugins of this chart: plugin objects, registered names, or [nameOrPlugin, options]. |
plotOptions.chord.plugins[].name |
string |
Plugin id (state key and warnings); not set uses plugin-<index>. |
plotOptions.chord.plugins[].defaults |
object |
Default options of the plugin; the [nameOrPlugin, options] form overrides them. |
plotOptions.chord.plugins[].reserve() |
(p: any): { top?: number; right?: number; bottom?: number; left?: number } | void |
(p) => { top, right, bottom, left }: space in px taken from the plot before layout. |
plotOptions.chord.plugins[].afterRender() |
(p: any): void |
(p): called after each render; draw into p.layer() and bind events with p.on(). |
plotOptions.chord.plugins[].event() |
(name: string, e: Event | null, payload: any, p: any): boolean | void |
(name, e, payload, p): called for every chart event; returning false cancels a cancelable one. |
plotOptions.chord.plugins[].tooltip() |
(content: any, p: any): any |
(content, p) => content: changes the tooltip content (rows, footer, …). |
plotOptions.chord.plugins[].describe() |
(p: any): string |
(p) => string appended to the screen-reader summary. |
plotOptions.chord.plugins[].destroy() |
(p: any): void |
(p): called before each redraw and on destroy. |
plotOptions.chord.matrix |
number[][] | null |
Flow matrix instead of series data: rows are the sources, columns the targets (names from labels). Default: null. |
plotOptions.chord.labels |
string[] |
Group names for the matrix rows and columns; missing names become Group 1, Group 2, …. Default: []. |
plotOptions.chord.directed |
'auto' | boolean |
true sizes each arc by what the group sends plus what it receives; false by what it sends only (each flow is drawn once); 'auto' uses false when every flow has an equal reverse flow. Default: 'auto'. |
plotOptions.chord.padAngle |
number |
Gap between neighbouring groups in radians. Default: 0.03. |
plotOptions.chord.sort |
'none' | 'asc' | 'desc' |
Group order around the circle: data order ('none'), or by size 'asc' / 'desc'. Default: 'none'. |
plotOptions.chord.ringWidth |
number |
Thickness of the group ring in px (4 px up to a third of the radius). Default: 12. |
plotOptions.chord.ribbon |
object |
Flow ribbons. |
plotOptions.chord.ribbon.opacity |
number |
Ribbon opacity; not set uses 0.5 (0.58 in dark mode). |
plotOptions.chord.ribbon.colorMode |
'source' | 'target' | 'gradient' |
Ribbon colour from the 'source' group, the 'target' group, or a 'gradient' between both. Default: 'source'. |
plotOptions.chord.ribbon.padding |
number |
Gap between the ring and the ribbon ends in px. Default: 2. |
plotOptions.chord.groups |
object[] |
Group definitions that set names and colours. Default: []. |
plotOptions.chord.groups[].id |
string | number |
Group id used in the data. |
plotOptions.chord.groups[].name |
string |
Shown name; not set uses the id. |
plotOptions.chord.groups[].color |
WccColor |
Group colour. |
plotOptions.chord.ticks |
object |
Value ticks along the outside of the ring. |
plotOptions.chord.ticks.show |
boolean |
Shows the ticks. Default: false. |
plotOptions.chord.ticks.step |
'auto' | number |
Value step of the minor ticks; 'auto' keeps them about 9 px apart. Default: 'auto'. |
plotOptions.chord.ticks.labelStep |
'auto' | number |
Value step of the labelled ticks; 'auto' uses a 1/2/5/10 multiple of step about 44 px apart. Default: 'auto'. |
plotOptions.chord.ticks.formatter |
WccCallback |
(value, { w }) => string for tick labels; not set uses a compact number. |
plotOptions.chord.dataLabels |
object |
Group labels outside the ring. |
plotOptions.chord.dataLabels.show |
boolean |
Shows the group labels. Default: true. |
plotOptions.chord.dataLabels.showValue |
boolean |
Shows the group size under the name. Default: true. |
plotOptions.chord.dataLabels.formatter |
WccCallback |
(name, { node, w }) => string for the label name. |
plotOptions.gantt
Chart type gantt (WccGanttOptions).
| Option | Type | Description |
|---|---|---|
plotOptions.gantt.plugins |
WccPremiumPluginRef[] |
Plugins of this chart: plugin objects, registered names, or [nameOrPlugin, options]. |
plotOptions.gantt.plugins[].name |
string |
Plugin id (state key and warnings); not set uses plugin-<index>. |
plotOptions.gantt.plugins[].defaults |
object |
Default options of the plugin; the [nameOrPlugin, options] form overrides them. |
plotOptions.gantt.plugins[].reserve() |
(p: any): { top?: number; right?: number; bottom?: number; left?: number } | void |
(p) => { top, right, bottom, left }: space in px taken from the plot before layout. |
plotOptions.gantt.plugins[].afterRender() |
(p: any): void |
(p): called after each render; draw into p.layer() and bind events with p.on(). |
plotOptions.gantt.plugins[].event() |
(name: string, e: Event | null, payload: any, p: any): boolean | void |
(name, e, payload, p): called for every chart event; returning false cancels a cancelable one. |
plotOptions.gantt.plugins[].tooltip() |
(content: any, p: any): any |
(content, p) => content: changes the tooltip content (rows, footer, …). |
plotOptions.gantt.plugins[].describe() |
(p: any): string |
(p) => string appended to the screen-reader summary. |
plotOptions.gantt.plugins[].destroy() |
(p: any): void |
(p): called before each redraw and on destroy. |
plotOptions.gantt.rowHeight |
number |
Height of one task row in px. Default: 36. |
plotOptions.gantt.barHeight |
number |
fraction of the row |
plotOptions.gantt.barRadius |
number |
Corner radius of the task bars in px. Default: 5. |
plotOptions.gantt.sort |
'input' | 'start' | 'end' | 'name' |
'input' keeps the series order; 'start' sorts the tasks of each group by start, then end. 'end' sorts by end time; 'name' sorts by locale-aware task name. Equal keys retain input order. Group order is unchanged. Default: 'input'. |
plotOptions.gantt.grid |
object |
Task table to the left of the timeline (right in RTL). |
plotOptions.gantt.grid.show |
boolean |
false hides the table and gives the timeline the full width. Default: true. |
plotOptions.gantt.grid.width |
number |
Table width in px, capped at 42 % of the plot width. Default: 260. |
plotOptions.gantt.grid.columns |
Array<'name' | 'start' | 'end' | 'duration' | 'progress' | 'assignee' | 'wbs' | 'ring' | WccGanttColumnDef> |
Columns of the table in order. Default: ['name', 'start', 'duration']. |
plotOptions.gantt.grid.headers |
{ [column in 'name' | 'start' | 'end' | 'duration' | 'progress' | 'assignee' | 'wbs' | 'ring']?: string } |
Header text per column. Default: { name: 'Task', start: 'Start', end: 'End', duration: 'Days', progress: '%', assignee: 'Owner', wbs: 'WBS', ring: '' }. |
plotOptions.gantt.groups |
object |
Group rows (one group per series name). |
plotOptions.gantt.groups.show |
boolean |
Draws a header row per group when there are several groups or the group is named. Default: true. |
plotOptions.gantt.groups.collapsible |
boolean |
Lets a click on a group row collapse or expand its tasks. Default: true. |
plotOptions.gantt.labels |
object |
Task name labels on the bars. |
plotOptions.gantt.labels.show |
boolean |
false draws the bars without name labels. Default: true. |
plotOptions.gantt.labels.position |
'right' | 'left' | 'inside' |
Preferred side of the label: 'right' or 'left' outside the bar, or 'inside' when it fits (falls back outside on narrow bars). Default: 'right'. |
plotOptions.gantt.labels.formatter |
WccCallback |
(name, { task, w }) => string returns the label text; not set shows the name (plus the assignee when no assignee column is shown). |
plotOptions.gantt.progress |
object |
Progress fill of the bars. |
plotOptions.gantt.progress.show |
boolean |
Fills each bar to its progress and adds the percentage to the label. Default: true. |
plotOptions.gantt.dependencies |
object |
Dependency links between tasks. |
plotOptions.gantt.dependencies.show |
boolean |
false hides the links (and link editing). Default: true. |
plotOptions.gantt.dependencies.color |
WccColor |
Link colour; not set uses a muted theme colour (critical links use the critical-path colour). |
plotOptions.gantt.dependencies.radius |
number |
Corner radius of the link elbows in px. Default: 6. |
plotOptions.gantt.dependencies.arrowSize |
number |
Size of the arrow head in px. Default: 5. |
plotOptions.gantt.dependencies.lagLabels |
boolean |
Writes a link's lag or lead (e.g. "+2d") on the link. Default: true. |
plotOptions.gantt.dependencies.violations |
boolean |
Dashes and marks links whose successor starts before the dependency allows. Default: false. |
plotOptions.gantt.dependencies.edit |
boolean |
Lets the user draw links from the handle at a bar's end and delete a selected link. Default: false. |
plotOptions.gantt.today |
object |
Today marker. |
plotOptions.gantt.today.show |
boolean |
Draws a vertical line at today. Default: true. |
plotOptions.gantt.today.date |
WccDate |
Date used as "today"; not set uses the current time. |
plotOptions.gantt.today.label |
string |
Text of the today marker and its control button. Default: 'Today'. |
plotOptions.gantt.weekends |
object |
Weekend shading (used when no working calendar is set). |
plotOptions.gantt.weekends.show |
boolean |
Shades Saturdays and Sundays once a day is at least 10 px wide. Default: true. |
plotOptions.gantt.calendar |
object |
Working calendar: durations, moves and resizes count working days. Not set: calendar days. |
plotOptions.gantt.calendar.workingDays |
number[] |
Working weekdays, 0 = Sunday ... 6 = Saturday. Default: [1, 2, 3, 4, 5]. |
plotOptions.gantt.calendar.holidays |
object[] |
Non-working dates: a date, { date, name } or a range { from, to, name }. |
plotOptions.gantt.calendar.holidays[].date |
WccDate |
Date of the holiday. |
plotOptions.gantt.calendar.holidays[].name |
string |
Name shown for the holiday. |
plotOptions.gantt.calendar.holidays[].from |
WccDate |
First day of the holiday range. |
plotOptions.gantt.calendar.holidays[].to |
WccDate |
Last day of the holiday range (inclusive). |
plotOptions.gantt.calendar.shade |
boolean |
false stops shading non-working days. Default: true. |
plotOptions.gantt.criticalPath |
object |
Critical path highlighting. |
plotOptions.gantt.criticalPath.show |
boolean |
Outlines the tasks without float (a delay moves the project end) and the links between them. Default: false. |
plotOptions.gantt.criticalPath.color |
WccColor |
Colour of the critical path; not set uses the theme's negative colour. |
plotOptions.gantt.baselines |
object |
Planned (baseline) bars. |
plotOptions.gantt.baselines.show |
boolean |
Draws a task's baseline dates as a thin bar under it and adds it to the legend. Default: true. |
plotOptions.gantt.zoom |
object |
Zoom of the time axis. |
plotOptions.gantt.zoom.enabled |
boolean |
false disables zooming. Default: true. |
plotOptions.gantt.zoom.wheel |
'ctrl' | boolean | string |
false turns off Ctrl/Cmd + wheel zoom; any other value keeps it (a plain wheel always scrolls). Default: 'ctrl'. |
plotOptions.gantt.zoom.minDays |
number |
Smallest visible span in days. Default: 3. |
plotOptions.gantt.zoom.maxDays |
number |
Largest visible span in days. Default: 3650. |
plotOptions.gantt.drag |
object |
Moving and resizing tasks with the pointer. |
plotOptions.gantt.drag.enabled |
boolean |
Lets the user move bars (and enables the editing options). Default: false. |
plotOptions.gantt.drag.resize |
boolean |
Adds resize handles at the bar ends while dragging is on. Default: true. |
plotOptions.gantt.drag.snap |
'day' | 'hour' | false |
Snap of moved dates: 'day', 'hour', a step in ms, or false for none. Default: 'day'. |
plotOptions.gantt.drag.draw |
boolean |
Lets the user draw new tasks on empty rows and shows the "+ Add task" row. Default: false. |
plotOptions.gantt.edit |
object |
Editing behaviour (needs drag.enabled). |
plotOptions.gantt.edit.undo |
boolean |
Keeps an undo / redo history of edits. Default: true. |
plotOptions.gantt.edit.keyboard |
boolean |
Allows keyboard edits of the focused task. Default: true. |
plotOptions.gantt.edit.remove |
boolean |
Lets Delete / Backspace remove the focused task. Default: true. |
plotOptions.gantt.edit.rename |
boolean |
Lets a double click on a task name rename it inline. Default: true. |
plotOptions.gantt.edit.newName |
string |
Name given to a newly created task. Default: 'New task'. |
plotOptions.gantt.edit.newDays |
number |
Length in days of a task created with the add button or keyboard. Default: 3. |
plotOptions.gantt.edit.addLabel |
string |
Text of the add row (shown after "+ "). Default: 'Add task'. |
plotOptions.gantt.range |
object |
Fixed time range of the timeline. |
plotOptions.gantt.range.min |
WccDate |
Start of the timeline; not set fits the tasks. |
plotOptions.gantt.range.max |
WccDate |
End of the timeline; not set fits the tasks (with room for labels). |
plotOptions.gantt.boundary |
object |
Project boundary: dashed start / deadline lines; tasks outside it are flagged. |
plotOptions.gantt.boundary.start |
WccDate |
Project start date. |
plotOptions.gantt.boundary.end |
WccDate |
Project end date (deadline). |
plotOptions.gantt.boundary.startLabel |
string |
Label of the start line. Default: 'Start'. |
plotOptions.gantt.boundary.endLabel |
string |
Label of the deadline line. Default: 'Deadline'. |
plotOptions.gantt.boundary.shade |
boolean |
false stops shading the time outside the boundary. Default: true. |
plotOptions.gantt.annotations |
object[] |
Timeline annotations: a marker line, a range (x2), or a note on a task's bar (task). Default: []. |
plotOptions.gantt.annotations[].x |
WccDate |
Date of the marker, or start of the range. |
plotOptions.gantt.annotations[].x2 |
WccDate |
End of the range; set draws a shaded band. |
plotOptions.gantt.annotations[].label |
string |
Text of the chip or note. |
plotOptions.gantt.annotations[].color |
WccColor |
Colour; not set cycles through theme colours. |
plotOptions.gantt.annotations[].dash |
boolean |
false draws the marker solid; any other value keeps it dashed. |
plotOptions.gantt.annotations[].task |
string | number |
Task id: draws the annotation as a note on that task's row. |
plotOptions.gantt.persist |
object | string |
Saves the view to localStorage under this key (a string) or { key, ... }; not set saves nothing. |
plotOptions.gantt.persist.key |
string |
localStorage key. |
plotOptions.gantt.persist.view |
boolean |
Saves the visible time range. Default: true. |
plotOptions.gantt.persist.collapsed |
boolean |
Saves the collapsed groups. Default: true. |
plotOptions.gantt.persist.selection |
boolean |
Saves the selected tasks. Default: false. |
plotOptions.gantt.controls |
object |
On-chart buttons (today, zoom). |
plotOptions.gantt.controls.show |
boolean |
false hides the control buttons. Default: true. |
plotOptions.gantt.selection |
object |
Task selection. |
plotOptions.gantt.selection.enabled |
boolean |
Lets a click select a task. Default: true. |
plotOptions.gantt.selection.multiple |
boolean |
Lets Ctrl/Cmd/Shift + click add to the selection. Default: true. |
plotOptions.gantt.crosshair |
object |
Time crosshair. |
plotOptions.gantt.crosshair.show |
boolean |
Draws a vertical line with the date under the pointer. Default: false. |
plotOptions.gantt.rtl |
'auto' | boolean |
Mirrored layout (table on the right, time runs right to left); 'auto' follows the CSS direction. Default: 'auto'. |
plotOptions.tree
Chart type tree (WccTreeOptions).
| Option | Type | Description |
|---|---|---|
plotOptions.tree.plugins |
WccPremiumPluginRef[] |
Plugins of this chart: plugin objects, registered names, or [nameOrPlugin, options]. |
plotOptions.tree.plugins[].name |
string |
Plugin id (state key and warnings); not set uses plugin-<index>. |
plotOptions.tree.plugins[].defaults |
object |
Default options of the plugin; the [nameOrPlugin, options] form overrides them. |
plotOptions.tree.plugins[].reserve() |
(p: any): { top?: number; right?: number; bottom?: number; left?: number } | void |
(p) => { top, right, bottom, left }: space in px taken from the plot before layout. |
plotOptions.tree.plugins[].afterRender() |
(p: any): void |
(p): called after each render; draw into p.layer() and bind events with p.on(). |
plotOptions.tree.plugins[].event() |
(name: string, e: Event | null, payload: any, p: any): boolean | void |
(name, e, payload, p): called for every chart event; returning false cancels a cancelable one. |
plotOptions.tree.plugins[].tooltip() |
(content: any, p: any): any |
(content, p) => content: changes the tooltip content (rows, footer, …). |
plotOptions.tree.plugins[].describe() |
(p: any): string |
(p) => string appended to the screen-reader summary. |
plotOptions.tree.plugins[].destroy() |
(p: any): void |
(p): called before each redraw and on destroy. |
plotOptions.tree.layout |
'tidy' | 'dendrogram' |
'tidy' places parents over their children; 'dendrogram' puts all leaves on the last level. Default: 'tidy'. |
plotOptions.tree.orientation |
'vertical' | 'horizontal' | 'radial' | 'top-to-bottom' | 'bottom-to-top' | 'left-to-right' | 'right-to-left' |
Growth direction; 'radial' places levels on rings. The aliases 'top-to-bottom', 'bottom-to-top', 'left-to-right' and 'right-to-left' also set direction. Default: 'vertical'. |
plotOptions.tree.direction |
'forward' | 'reverse' |
'reverse' puts the root at the bottom (vertical) or right (horizontal). Default: 'forward'. |
plotOptions.tree.rtl |
'auto' | boolean |
Mirrored layout (first child on the right, horizontal trees grow leftwards, card text right-aligned); 'auto' follows the CSS direction. Default: 'auto'. |
plotOptions.tree.node |
object |
Node drawing. |
plotOptions.tree.node.template |
'auto' | 'card' | 'compact' | 'dot' |
'card', 'compact' or 'dot'; 'auto' uses dots for radial trees and dendrograms, otherwise cards. Default: 'auto'. |
plotOptions.tree.node.width |
number |
Card width in px. Default: 196. |
plotOptions.tree.node.height |
number |
Card height in px. Default: 60. |
plotOptions.tree.node.radius |
number |
Card corner radius in px. Default: 10. |
plotOptions.tree.node.avatar |
boolean |
Shows the avatar circle on cards at least 44 px high. Default: true. |
plotOptions.tree.node.dotSize |
number |
Dot radius of the dot template in px. Default: 5. |
plotOptions.tree.node.stackLeaves |
'auto' | boolean |
Stacks the leaf children of a vertical card tree in a column; 'auto' keeps a plain row when that fits the plot better, false never stacks. Default: 'auto'. |
plotOptions.tree.node.formatter |
WccCallback |
returns text fields only, never HTML |
plotOptions.tree.node.size |
(data: any, info: { node: any; depth: number; children: any[] }) => { width?: number; height?: number } |
(data, { node, depth, children }) => { width, height } sets a node's own card size (a size in the data also works). |
plotOptions.tree.node.autoHeight |
boolean |
Wraps long titles and subtitles (up to maxLines) and grows the card to fit. Default: false. |
plotOptions.tree.node.maxLines |
number |
Most lines of a wrapped text with autoHeight. Default: 3. |
plotOptions.tree.wrappers |
object[] |
Frames around a node and its visible descendants (cards only, not radial); a node's data wrapper: true | { label, color } also adds one. Default: []. |
plotOptions.tree.wrappers[].id |
string | number |
Id of the framed node. |
plotOptions.tree.wrappers[].label |
string |
Label of the frame. |
plotOptions.tree.wrappers[].color |
WccColor |
Frame colour. |
plotOptions.tree.wrappers[].dashed |
boolean |
Dashes the frame outline. Default: false. |
plotOptions.tree.spacing |
object |
Gaps of the layout in px. |
plotOptions.tree.spacing.sibling |
number |
Gap between neighbouring cards. Default: 16. |
plotOptions.tree.spacing.level |
number |
Gap between levels. Default: 56. |
plotOptions.tree.spacing.dot |
number |
Distance between neighbouring dots. Default: 22. |
plotOptions.tree.radial |
object |
Radial layout. |
plotOptions.tree.radial.startAngle |
number |
Start angle in degrees clockwise from 12 o'clock; not set is fitted to the plot. |
plotOptions.tree.radial.stretch |
'auto' | boolean |
false keeps a true circle; 'auto' stretches it (up to 1.45 x) along the plot's long side. Default: 'auto'. |
plotOptions.tree.links |
object |
Parent-child links. |
plotOptions.tree.links.style |
'auto' | 'elbow' | 'curve' | 'straight' |
'elbow', 'curve' or 'straight'; 'auto' uses curves for dot trees (not dendrograms), otherwise elbows. Default: 'auto'. |
plotOptions.tree.links.color |
WccColor |
Link colour; not set uses a muted tone (a branch tint for dot trees). |
plotOptions.tree.links.width |
number |
Link width in px. Default: 1.25. |
plotOptions.tree.colorBy |
'branch' | 'depth' | 'none' |
Node tint: one colour per top-level 'branch', per 'depth', or the accent for 'none'. Default: 'branch'. |
plotOptions.tree.collapse |
object |
Folding of subtrees. |
plotOptions.tree.collapse.enabled |
boolean |
Lets the user fold and unfold subtrees. Default: true. |
plotOptions.tree.collapse.initialDepth |
number |
Folds nodes at this depth and deeper on the first render; not set opens everything (nodes with collapsed: true start folded). |
plotOptions.tree.zoom |
WccZoomOptions |
Zoom and pan (scale 0.05 to 3 by default). |
plotOptions.tree.zoom.enabled |
boolean |
Enables zoom and pan of the view. Default: true. |
plotOptions.tree.zoom.wheel |
'ctrl' | boolean | string |
Wheel zoom: 'ctrl' zooms only while Ctrl or Cmd is held, true on every wheel event, false never. Default: 'ctrl'. |
plotOptions.tree.zoom.min |
number |
Smallest zoom factor. Default: 0.25 for the network, 0.05 for the tree. |
plotOptions.tree.zoom.max |
number |
Largest zoom factor. Default: 8 for the network, 3 for the tree. |
plotOptions.tree.zoom.fitMin |
number |
Smallest scale of the initial fit; not set uses the scale where the smallest text is readableFont px. |
plotOptions.tree.zoom.fitMax |
number |
Largest scale of the initial fit. Default: 1.5. |
plotOptions.tree.zoom.readableFont |
number |
Text size in px the initial view keeps readable. Default: 11. |
plotOptions.tree.zoom.overviewFont |
number | false |
A tree too big for the readable scale still opens whole while its smallest text stays at least this size; false starts readable at the root instead. Default: 8. |
plotOptions.tree.controls |
object |
On-chart zoom buttons. |
plotOptions.tree.controls.show |
boolean |
false hides the zoom buttons. Default: true. |
plotOptions.tree.lod |
object |
Level of detail. |
plotOptions.tree.lod.threshold |
number |
Below this zoom scale card texts are hidden and cards drawn as plain shapes. Default: 0.42. |
plotOptions.tree.lazy |
object |
Lazy children for nodes with hasChildren: true and no children. |
plotOptions.tree.lazy.load |
(node: any, info: { w: any; id: any; name: string; depth: number }) => any |
(node, { w, id, name, depth }) => children[] | Promise, called when such a node is first expanded. |
plotOptions.tree.lazy.loadingText |
string |
Text of the placeholder while loading. Default: 'Loading…'. |
plotOptions.tree.lazy.errorText |
string |
Text when the load fails (a click retries). Default: 'Could not load · retry'. |
plotOptions.stock
Chart type stock (WccStockOptions).
| Option | Type | Description |
|---|---|---|
plotOptions.stock.plugins |
WccPremiumPluginRef[] |
Plugins of this chart: plugin objects, registered names, or [nameOrPlugin, options]. |
plotOptions.stock.plugins[].name |
string |
Plugin id (state key and warnings); not set uses plugin-<index>. |
plotOptions.stock.plugins[].defaults |
object |
Default options of the plugin; the [nameOrPlugin, options] form overrides them. |
plotOptions.stock.plugins[].reserve() |
(p: any): { top?: number; right?: number; bottom?: number; left?: number } | void |
(p) => { top, right, bottom, left }: space in px taken from the plot before layout. |
plotOptions.stock.plugins[].afterRender() |
(p: any): void |
(p): called after each render; draw into p.layer() and bind events with p.on(). |
plotOptions.stock.plugins[].event() |
(name: string, e: Event | null, payload: any, p: any): boolean | void |
(name, e, payload, p): called for every chart event; returning false cancels a cancelable one. |
plotOptions.stock.plugins[].tooltip() |
(content: any, p: any): any |
(content, p) => content: changes the tooltip content (rows, footer, …). |
plotOptions.stock.plugins[].describe() |
(p: any): string |
(p) => string appended to the screen-reader summary. |
plotOptions.stock.plugins[].destroy() |
(p: any): void |
(p): called before each redraw and on destroy. |
plotOptions.stock.enabled |
boolean |
with chart.type 'candlestick': draw it with the stock renderer |
plotOptions.stock.style |
'candlestick' | 'ohlc' | 'line' | 'area' |
Price display: candles, OHLC bars, a close line or a close area. Default: 'candlestick'. |
plotOptions.stock.colors |
object |
Colours of rising and falling candles. |
plotOptions.stock.colors.up |
WccColor |
Rising candle colour; not set uses the theme's positive colour. |
plotOptions.stock.colors.down |
WccColor |
Falling candle colour; not set uses the theme's negative colour. |
plotOptions.stock.volume |
object |
Volume bars at the bottom of the price pane (drawn when the data has volume). |
plotOptions.stock.volume.show |
boolean |
false hides the volume bars. Default: true. |
plotOptions.stock.volume.height |
number |
Share of the price pane used by volume (0.05 to 0.5). Default: 0.2. |
plotOptions.stock.overlays |
object[] |
Price overlays: SMA, EMA or Bollinger bands. Default: []. |
plotOptions.stock.overlays[].type |
'sma' | 'ema' | 'bollinger' |
Overlay kind ('bb' is accepted for Bollinger). |
plotOptions.stock.overlays[].period |
number |
Period in candles. Default: 20. |
plotOptions.stock.overlays[].k |
number |
Bollinger band width in standard deviations. Default: 2. |
plotOptions.stock.overlays[].color |
WccColor |
Line colour; not set cycles through theme colours. |
plotOptions.stock.indicators |
object[] |
Indicator panes under the price pane: RSI or MACD. Default: []. |
plotOptions.stock.indicators[].type |
'rsi' |
Indicator kind. |
plotOptions.stock.indicators[].period |
number |
RSI period in candles. Default: 14. |
plotOptions.stock.indicators[].type |
'macd' |
Indicator kind. |
plotOptions.stock.indicators[].fast |
number |
MACD fast EMA period. Default: 12. |
plotOptions.stock.indicators[].slow |
number |
MACD slow EMA period. Default: 26. |
plotOptions.stock.indicators[].signal |
number |
MACD signal EMA period. Default: 9. |
plotOptions.stock.rangeSelector |
object |
Range buttons above the chart. |
plotOptions.stock.rangeSelector.show |
boolean |
false hides the range buttons. Default: true. |
plotOptions.stock.rangeSelector.buttons |
object[] |
Buttons, each spanning months, days, the year to date (ytd) or all. Default: 1M, 3M, 6M, YTD, 1Y, All. |
plotOptions.stock.rangeSelector.buttons[].label |
string |
Button text; also the value of selected. |
plotOptions.stock.rangeSelector.buttons[].months |
number |
Months back from the last candle. |
plotOptions.stock.rangeSelector.buttons[].days |
number |
Days back from the last candle. |
plotOptions.stock.rangeSelector.buttons[].ytd |
boolean |
Spans from 1 January of the last candle's year. |
plotOptions.stock.rangeSelector.buttons[].all |
boolean |
Spans all candles. |
plotOptions.stock.rangeSelector.selected |
string |
Label of the initial range; not set picks 6M (over 400 days of data), 3M (over 120 days) or All. |
plotOptions.stock.navigator |
object |
Overview strip with a draggable window under the chart. |
plotOptions.stock.navigator.show |
boolean |
false hides the navigator. Default: true. |
plotOptions.stock.navigator.height |
number |
Navigator height in px. Default: 46. |
plotOptions.stock.crosshair |
object |
Crosshair across all panes. |
plotOptions.stock.crosshair.show |
boolean |
false hides the crosshair lines. Default: true. |
plotOptions.stock.readout |
object |
OHLC and overlay values written at the top of the price pane. |
plotOptions.stock.readout.show |
boolean |
false hides the readout and its reserved space. Default: true. |
plotOptions.stock.realtime |
object |
Behaviour when candles are added. |
plotOptions.stock.realtime.follow |
boolean |
Keeps the view at the newest candle when new ones arrive while the view is at the end. Default: true. |
plotOptions.stock.zoom |
object |
Zoom and pan of the time axis. |
plotOptions.stock.zoom.enabled |
boolean |
false disables wheel zoom and drag panning. Default: true. |
plotOptions.stock.zoom.wheel |
'ctrl' | boolean | string |
'ctrl' zooms while Ctrl or Cmd is held, true on every wheel event; other values never. Default: 'ctrl'. |
plotOptions.stock.zoom.minCandles |
number |
Fewest candles in view (at least 2). Default: 8. |
plotOptions.stock.yaxis |
object |
Price axis. |
plotOptions.stock.yaxis.decimals |
number |
Decimals of prices; not set uses 0 from 1000, 2 from 1, otherwise 4. |
plotOptions.stock.yaxis.formatter |
WccCallback |
(price, { w }) => string for axis labels and readouts. |
plotOptions.stock.yaxis.type |
'linear' | 'log' | 'percent' |
'log' uses a logarithmic scale, 'percent' shows the change against the first visible close. Default: 'linear'. |
plotOptions.stock.timeframe |
'day' | 'week' | 'month' |
Candle size; 'week' and 'month' aggregate the input candles. Default: 'day'. |
plotOptions.stock.priceLines |
object[] |
Horizontal price levels (orders, targets, stops) with an axis label. Default: []. |
plotOptions.stock.priceLines[].y |
number |
Price of the line. |
plotOptions.stock.priceLines[].label |
string |
Text chip at the left end of the line. |
plotOptions.stock.priceLines[].color |
WccColor |
Line colour; not set cycles through theme colours. |
plotOptions.stock.priceLines[].dash |
boolean |
false draws the line solid; otherwise it is dashed. |
plotOptions.stock.priceLines[].width |
number |
Line width in px. Default: 1.2. |
plotOptions.stock.markers |
object[] |
Event flags (earnings, dividends, splits) on the candle of their date. Default: []. |
plotOptions.stock.markers[].x |
WccDate |
Date of the event. |
plotOptions.stock.markers[].label |
string |
One or two characters inside the flag. Default: '•'. |
plotOptions.stock.markers[].text |
string |
Hover text of the flag (after the date). |
plotOptions.stock.markers[].color |
WccColor |
Flag colour; not set cycles through theme colours. |
plotOptions.stock.markers[].position |
'below' | 'above' |
'below' the candle's low or 'above' its high. Default: 'below'. |
plotOptions.stock.drawings |
object |
Drawing tools for the user (opt-in). |
plotOptions.stock.drawings.enabled |
boolean |
Turns the drawing tools on. Default: false. |
plotOptions.stock.drawings.tools |
('trendline' | 'ray' | 'fib' | 'rect')[] |
Tools in the toolbar. Default: ['trendline', 'ray', 'fib', 'rect']. |
plotOptions.stock.drawings.items |
WccStockDrawing[] |
Initial drawings. Default: []. |
plotOptions.stock.drawings.items[].id |
string | number |
Id of the drawing; not set gets 'd1', 'd2', ... |
plotOptions.stock.drawings.items[].type |
'trendline' | 'ray' | 'fib' | 'rect' | string |
'trendline' (2 points), 'ray' (horizontal, 1 point), 'fib' (retracement, 2 points) or 'rect' (2 corners); aliases such as 'line' or 'box' are accepted. |
plotOptions.stock.drawings.items[].points |
object[] |
Anchors as { t, y } or [t, y] (time, price); invalid drawings are skipped. |
plotOptions.stock.drawings.items[].points[].t |
WccDate |
Time of the anchor. |
plotOptions.stock.drawings.items[].points[].y |
number |
Price of the anchor. |
plotOptions.stock.drawings.items[].color |
WccColor |
Colour; not set uses drawings.colors or the palette. |
plotOptions.stock.drawings.items[].label |
string |
Text written along the drawing. |
plotOptions.stock.drawings.items[].width |
number |
Line width in px. Default: 1.6. |
plotOptions.stock.drawings.items[].extend |
boolean | 'left' | 'right' | 'both' |
Trend line: extends to the plot edge (true or 'both' both ways, 'left', 'right'); fib: false ends the levels at the second point. |
plotOptions.stock.drawings.items[].dash |
boolean | string |
true dashes the line; a string is used as SVG dash array; not set draws it solid. |
plotOptions.stock.drawings.items[].fill |
string |
Fill of a rectangle; not set uses a faint tint of the colour. |
plotOptions.stock.drawings.items[].levels |
number[] |
Fibonacci levels as fractions. Default: [0, 0.236, 0.382, 0.5, 0.618, 0.786, 1]. |
plotOptions.stock.drawings.items[].locked |
boolean |
true stops the user from moving or editing the drawing. |
plotOptions.stock.drawings.items[].labelPosition |
'above' | 'below' |
Side of the trend line label. Default: 'above'. |
plotOptions.stock.drawings.toolbar |
boolean |
false hides the tool buttons (drawings stay visible). Default: true. |
plotOptions.stock.drawings.magnet |
boolean |
Snaps anchors to the open, high, low or close within 10 px of the pointer. Default: true. |
plotOptions.stock.drawings.keepTool |
boolean |
Keeps the tool active after a drawing is finished. Default: false. |
plotOptions.stock.drawings.storageKey |
string |
localStorage key; set saves and restores the drawings. |
plotOptions.stock.drawings.palette |
'muted' | 'vivid' |
'muted' uses the accent for trend lines and a muted tone for the rest; 'vivid' gives every tool its own colour. Default: 'muted'. |
plotOptions.stock.drawings.colors |
object |
Colour per tool; wins over the palette. |
plotOptions.stock.drawings.colors.trendline |
WccColor |
Trend line colour. |
plotOptions.stock.drawings.colors.ray |
WccColor |
Horizontal ray colour. |
plotOptions.stock.drawings.colors.fib |
WccColor |
Fibonacci retracement colour. |
plotOptions.stock.drawings.colors.rect |
WccColor |
Rectangle colour. |
plotOptions.map
Chart type map (WccMapOptions).
| Option | Type | Description |
|---|---|---|
plotOptions.map.plugins |
WccPremiumPluginRef[] |
Plugins of this chart: plugin objects, registered names, or [nameOrPlugin, options]. |
plotOptions.map.plugins[].name |
string |
Plugin id (state key and warnings); not set uses plugin-<index>. |
plotOptions.map.plugins[].defaults |
object |
Default options of the plugin; the [nameOrPlugin, options] form overrides them. |
plotOptions.map.plugins[].reserve() |
(p: any): { top?: number; right?: number; bottom?: number; left?: number } | void |
(p) => { top, right, bottom, left }: space in px taken from the plot before layout. |
plotOptions.map.plugins[].afterRender() |
(p: any): void |
(p): called after each render; draw into p.layer() and bind events with p.on(). |
plotOptions.map.plugins[].event() |
(name: string, e: Event | null, payload: any, p: any): boolean | void |
(name, e, payload, p): called for every chart event; returning false cancels a cancelable one. |
plotOptions.map.plugins[].tooltip() |
(content: any, p: any): any |
(content, p) => content: changes the tooltip content (rows, footer, …). |
plotOptions.map.plugins[].describe() |
(p: any): string |
(p) => string appended to the screen-reader summary. |
plotOptions.map.plugins[].destroy() |
(p: any): void |
(p): called before each redraw and on destroy. |
plotOptions.map.map |
string | object |
a registered map name, or TopoJSON / GeoJSON |
plotOptions.map.object |
string | null |
TopoJSON object name, when there are several |
plotOptions.map.projection |
'auto' | 'equalEarth' | 'mercator' | 'equirectangular' | 'albers' | 'albersUsa' | 'orthographic' |
Projection; 'auto' uses the map's own projection hint or 'equalEarth'. Default: 'auto'. |
plotOptions.map.rotate |
[number, number] |
globe centre [lon, lat] |
plotOptions.map.normalize |
object |
Per-unit choropleth values: value / by * per (e.g. per capita). |
plotOptions.map.normalize.by |
string | ((item: any) => number) | null |
Denominator: a key of the data item or of the region's properties, or (item, { feature }) => number; not set: no normalisation. |
plotOptions.map.normalize.per |
number |
Multiplier of the ratio (e.g. 100000 for "per 100k"). Default: 1. |
plotOptions.map.normalize.label |
string | null |
Tooltip label of the raw total next to the normalised value. Default: 'Total'. |
plotOptions.map.exclude |
string[] |
Region ids or names left out of the map (case-insensitive). Default: ['ATA']. |
plotOptions.map.style |
'fill' | 'dots' | 'tiles' |
Region drawing: 'fill' (shapes), 'dots' (a dot grid clipped to the land) or 'tiles' (one equal tile per region). Default: 'fill'. |
plotOptions.map.dots |
object |
Dot grid of style: 'dots'. |
plotOptions.map.dots.spacing |
number |
Distance between dot centres in px (at least 3). Default: 7. |
plotOptions.map.dots.size |
number |
Dot diameter as a fraction of the spacing (0.2 to 1). Default: 0.72. |
plotOptions.map.tiles |
object |
Tile cartogram of style: 'tiles'. |
plotOptions.map.tiles.shape |
'hex' | 'square' |
'hex' or 'square' tiles. Default: 'hex'. |
plotOptions.map.tiles.gap |
number |
Gap between tiles in px. Default: 2.5. |
plotOptions.map.tiles.labels |
boolean | ((region: any) => string) |
false hides the tile labels; a function ({ id, name, value, properties }) => string sets them. Default: true (region id). |
plotOptions.map.tiles.layout |
object | string |
Grid placement: a built-in layout name (e.g. 'us-states') or { id: [col, row] }; not set uses the built-in layout of the map. |
plotOptions.map.sphere |
boolean |
Draws the globe outline with a faint 30° graticule behind equalEarth and equirectangular maps. Default: true. |
plotOptions.map.colorScale |
object |
Colour scale of choropleth values. |
plotOptions.map.colorScale.type |
'linear' | 'log' | 'quantize' | 'diverging' |
'linear', 'log', 'quantize' (stepped buckets) or 'diverging' (around mid); a diverging palette implies 'diverging'. Default: 'linear'. |
plotOptions.map.colorScale.palette |
string |
Named palette: blue, green, teal, purple, orange, red, gray, heat, viridis, or diverging blue-red, green-purple, teal-orange; not set derives a ramp from the theme accent. |
plotOptions.map.colorScale.reverse |
boolean |
Reverses the named palette. Default: false. |
plotOptions.map.colorScale.colors |
string[] | null |
Own colour stops; win over palette. |
plotOptions.map.colorScale.min |
number |
Lower end of the scale; not set uses the data minimum. |
plotOptions.map.colorScale.max |
number |
Upper end of the scale; not set uses the data maximum. |
plotOptions.map.colorScale.mid |
number |
Neutral value of a diverging scale. Default: 0. |
plotOptions.map.colorScale.steps |
number |
Number of buckets of a quantize scale (2 to 12). Default: 5. |
plotOptions.map.colorScale.ranges |
object[] | null |
Explicit value ranges, each with its own colour (and legend entry); win over the scale type. |
plotOptions.map.colorScale.ranges[].from |
number |
Lowest value of the range (inclusive); not set: open below. |
plotOptions.map.colorScale.ranges[].to |
number |
Highest value of the range (inclusive); not set: open above. |
plotOptions.map.colorScale.ranges[].color |
WccColor |
Colour of the range; not set takes the next scale colour. |
plotOptions.map.colorScale.ranges[].name |
string |
Legend name of the range. |
plotOptions.map.colorScale.ranges[].pattern |
WccMapPattern |
Pattern drawn over the range's regions. |
plotOptions.map.colorScale.ranges[].pattern.type |
string |
Pattern: 'hatch', 'hatch-reverse', 'cross', 'dots', 'grid', 'vertical' or 'horizontal'; other values draw no pattern. |
plotOptions.map.colorScale.ranges[].pattern.color |
WccColor |
Ink of the lines or dots; not set uses a contrasting theme ink. |
plotOptions.map.colorScale.ranges[].pattern.background |
WccColor |
Fill behind the pattern; not set uses the region colour. |
plotOptions.map.colorScale.ranges[].pattern.size |
number |
Pattern cell in px (3 to 40). Default: 6, 7 for dots. |
plotOptions.map.colorScale.ranges[].pattern.width |
number |
Line width or dot radius in px (0.3 to 10). Default: 1.1, 1.4 for dots. |
plotOptions.map.colorScale.ranges[].pattern.angle |
number |
Rotation in degrees. Default: 45 for hatch, -45 for hatch-reverse, otherwise 0. |
plotOptions.map.colorScale.nullColor |
WccColor | null |
Fill of regions without a value; not set uses a light theme grey. |
plotOptions.map.colorScale.patterns |
boolean |
Adds automatic patterns to every bucket but the first (ranges and quantize scales), for print and colour-blind readers. Default: false. |
plotOptions.map.borders |
object |
Region outlines. |
plotOptions.map.borders.width |
number |
Outline width in px. Default: 0.6 (0.5 on dark themes). |
plotOptions.map.borders.color |
WccColor | null |
Outline colour; not set uses the surface colour (none for dots). |
plotOptions.map.bubble |
object |
Bubble layers sized by value. |
plotOptions.map.bubble.minRadius |
number |
Smallest bubble radius in px. Default: 3. |
plotOptions.map.bubble.maxRadius |
number |
Largest bubble radius in px. Default: 26. |
plotOptions.map.bubble.opacity |
number |
Fill opacity of bubbles. Default: 0.62. |
plotOptions.map.hexbin |
object |
Hexbin layers that bin points into hexagons. |
plotOptions.map.hexbin.radius |
'auto' | number |
Hexagon radius in px; 'auto' uses 1/60 of the map width (5 to 14 px). Default: 'auto'. |
plotOptions.map.hexbin.scaleSize |
boolean |
Scales each hexagon by its count as well as colouring it. Default: true. |
plotOptions.map.hexbin.colors |
string[] | null |
Colour stops of the count ramp; not set derives three stops from the layer colour. |
plotOptions.map.arcs |
object |
Flow arc layers (from, to, value). |
plotOptions.map.arcs.curvature |
number |
Bulge of the arcs relative to their length. Default: 0.28. |
plotOptions.map.arcs.width |
[number, number] |
[min, max] stroke width in px, scaled by the square root of the value. Default: [1, 3.5]. |
plotOptions.map.arcs.flow |
boolean |
Animates a moving dash along each arc while animations are on. Default: true. |
plotOptions.map.arcs.endpoints |
boolean |
Draws dots at both ends of each arc. Default: true. |
plotOptions.map.markers |
object |
Fixed-size point markers. |
plotOptions.map.markers.shape |
'pin' | 'circle' | 'square' | 'diamond' | 'triangle' | 'star' |
Marker shape. Default: 'pin'. |
plotOptions.map.markers.size |
number |
Marker size in px. Default: 24. |
plotOptions.map.markers.labels |
boolean |
Writes the point name next to each marker (a layer or point setting wins). Default: false. |
plotOptions.map.routes |
object |
Route layers through ordered stops. |
plotOptions.map.routes.width |
number |
Line width in px (a layer or route setting wins). Default: 2.5. |
plotOptions.map.routes.geodesic |
boolean |
Follows great circles between stops instead of straight lines. Default: true. |
plotOptions.map.routes.stops |
boolean |
Draws a dot at each stop. Default: true. |
plotOptions.map.routes.arrows |
boolean |
Adds direction arrows along the route. Default: true. |
plotOptions.map.routes.labels |
boolean |
Writes the stop names. Default: false. |
plotOptions.map.routes.dash |
number | string | null |
SVG dash array of the route line; not set draws it solid. |
plotOptions.map.annotations |
object[] |
Callouts, free text and region notes, placed by region, at: [lon, lat] or lon/lat; kept at screen size while zooming. Default: []. |
plotOptions.map.legend |
object |
Colour or size legend under the map. |
plotOptions.map.legend.show |
boolean |
false hides the legend. Default: true. |
plotOptions.map.legend.title |
string | null |
Legend title; not set uses the layer name. |
plotOptions.map.fit |
'auto' | 'data' | 'map' |
Framing: 'map' shows the whole map, 'data' frames the data, 'auto' frames point, arc and route layers but shows the whole map for choropleths. Default: 'auto'. |
plotOptions.map.fitParts |
'all' | 'largest' |
Geometry used only for data framing: all region polygons, or each region's largest polygon. Drawing retains every polygon. Default: 'all'. |
plotOptions.map.zoom |
WccZoomOptions |
Zoom and pan (scale 1 to 16 by default). |
plotOptions.map.zoom.enabled |
boolean |
Enables zoom and pan of the view. Default: true. |
plotOptions.map.zoom.wheel |
'ctrl' | boolean | string |
Wheel zoom: 'ctrl' zooms only while Ctrl or Cmd is held, true on every wheel event, false never. Default: 'ctrl'. |
plotOptions.map.zoom.min |
number |
Smallest zoom factor. Default: 0.25 for the network, 0.05 for the tree. |
plotOptions.map.zoom.max |
number |
Largest zoom factor. Default: 8 for the network, 3 for the tree. |
plotOptions.map.zoom.toRegion |
boolean |
A double click on a region zooms to that region (instead of zooming in one step). Default: true. |
plotOptions.map.controls |
object |
On-map zoom buttons. |
plotOptions.map.controls.show |
boolean |
false hides the zoom buttons. Default: true. |
plotOptions.map.formatter |
((value: number) => string) | null |
(value) => string for values in tooltips and legend; not set uses tooltip.y.formatter or a compact number. |
plotOptions.map.drilldown |
WccPremiumDrilldown |
Drill-down into regions. |
plotOptions.map.drilldown.enabled |
boolean |
false switches drill-down off. Default: true. |
plotOptions.map.drilldown.breadcrumb |
boolean |
Shows the breadcrumb of the opened levels. Default: true. |
plotOptions.map.drilldown.rootLabel |
string |
Breadcrumb label of the top level; not set uses 'Overview' (sankey) or the map name. |
plotOptions.map.drilldown.load |
(item: any, info: any) => any |
load(item, info) returns a level or a Promise of one |
plotOptions.map.drilldown.drillable |
(string | number)[] | ((item: any) => boolean) |
ids that can be opened, or a test; default: every item when only load is set |
plotOptions.map.drilldown.regions |
object |
Levels per region id: { map, series, label, colorScale }, or true to load the level via load. |
plotOptions.marimekko
Chart type marimekko (WccMarimekkoOptions).
| Option | Type | Description |
|---|---|---|
plotOptions.marimekko.plugins |
WccPremiumPluginRef[] |
Plugins of this chart: plugin objects, registered names, or [nameOrPlugin, options]. |
plotOptions.marimekko.plugins[].name |
string |
Plugin id (state key and warnings); not set uses plugin-<index>. |
plotOptions.marimekko.plugins[].defaults |
object |
Default options of the plugin; the [nameOrPlugin, options] form overrides them. |
plotOptions.marimekko.plugins[].reserve() |
(p: any): { top?: number; right?: number; bottom?: number; left?: number } | void |
(p) => { top, right, bottom, left }: space in px taken from the plot before layout. |
plotOptions.marimekko.plugins[].afterRender() |
(p: any): void |
(p): called after each render; draw into p.layer() and bind events with p.on(). |
plotOptions.marimekko.plugins[].event() |
(name: string, e: Event | null, payload: any, p: any): boolean | void |
(name, e, payload, p): called for every chart event; returning false cancels a cancelable one. |
plotOptions.marimekko.plugins[].tooltip() |
(content: any, p: any): any |
(content, p) => content: changes the tooltip content (rows, footer, …). |
plotOptions.marimekko.plugins[].describe() |
(p: any): string |
(p) => string appended to the screen-reader summary. |
plotOptions.marimekko.plugins[].destroy() |
(p: any): void |
(p): called before each redraw and on destroy. |
plotOptions.marimekko.gap |
number |
Gap between columns in px (0 to 12). Default: 2. |
plotOptions.marimekko.radius |
number |
Corner radius of the cells in px (0 to 8). Default: 3. |
plotOptions.marimekko.fill |
'soft' | 'solid' |
'soft' uses calmer tones of the palette for the large cells, 'solid' the palette as is (a series color is always kept). Default: 'soft'. |
plotOptions.marimekko.widths |
'total' | number[] |
Column widths: 'total' follows the column totals; an array sets explicit column weights. Default: 'total'. |
plotOptions.marimekko.sort |
'none' | 'asc' | 'desc' |
Column order: data order ('none'), or by column width 'asc' / 'desc'. Default: 'none'. |
plotOptions.marimekko.dataLabels |
object |
Labels inside the cells. |
plotOptions.marimekko.dataLabels.show |
boolean |
Shows the cell labels. Default: true. |
plotOptions.marimekko.dataLabels.showName |
boolean |
Adds the series name to the cell label when it fits. Default: true. |
plotOptions.marimekko.dataLabels.showPercent |
boolean |
Shows the cell's share of its column; false shows the cell value instead. Default: true. |
plotOptions.marimekko.dataLabels.minWidth |
number |
Narrowest cell in px that gets a label. Default: 34. |
plotOptions.marimekko.dataLabels.minHeight |
number |
Lowest cell in px that gets a label. Default: 18. |
plotOptions.marimekko.dataLabels.outside |
boolean |
A last column too narrow for its labels gets them in a gutter right of the plot. Default: true. |
plotOptions.marimekko.dataLabels.formatter |
WccCallback |
(share, { seriesIndex, category, value, w }) => string for the value text of a cell. |
plotOptions.marimekko.columnLabels |
object |
Column names under the plot. |
plotOptions.marimekko.columnLabels.show |
boolean |
Shows the column names. Default: true. |
plotOptions.marimekko.columnLabels.showTotal |
boolean |
Adds the column total under the name. Default: true. |
plotOptions.marimekko.columnLabels.showShare |
boolean |
Adds the column's share of the whole under the name. Default: true. |
plotOptions.marimekko.columnLabels.wrap |
boolean |
Wraps a name that does not fit onto two lines at a word break. Default: true. |
plotOptions.marimekko.columnLabels.abbreviate |
boolean |
Abbreviates a name that still does not fit (initials; the full name is the hover title). Default: true. |
plotOptions.marimekko.columnLabels.abbreviations |
object |
Own abbreviations per column name, e.g. { 'North America': 'NA' }. |
plotOptions.marimekko.yAxis |
object |
Percentage axis on the left. |
plotOptions.marimekko.yAxis.show |
boolean |
Shows the 0 to 100 % axis. Default: true. |
plotOptions.marimekko.legend |
object |
Series legend. |
plotOptions.marimekko.legend.show |
boolean |
Shows the legend (with two or more series). Default: true. |
plotOptions.network
Chart type network (WccNetworkOptions).
| Option | Type | Description |
|---|---|---|
plotOptions.network.plugins |
WccPremiumPluginRef[] |
Plugins of this chart: plugin objects, registered names, or [nameOrPlugin, options]. |
plotOptions.network.plugins[].name |
string |
Plugin id (state key and warnings); not set uses plugin-<index>. |
plotOptions.network.plugins[].defaults |
object |
Default options of the plugin; the [nameOrPlugin, options] form overrides them. |
plotOptions.network.plugins[].reserve() |
(p: any): { top?: number; right?: number; bottom?: number; left?: number } | void |
(p) => { top, right, bottom, left }: space in px taken from the plot before layout. |
plotOptions.network.plugins[].afterRender() |
(p: any): void |
(p): called after each render; draw into p.layer() and bind events with p.on(). |
plotOptions.network.plugins[].event() |
(name: string, e: Event | null, payload: any, p: any): boolean | void |
(name, e, payload, p): called for every chart event; returning false cancels a cancelable one. |
plotOptions.network.plugins[].tooltip() |
(content: any, p: any): any |
(content, p) => content: changes the tooltip content (rows, footer, …). |
plotOptions.network.plugins[].describe() |
(p: any): string |
(p) => string appended to the screen-reader summary. |
plotOptions.network.plugins[].destroy() |
(p: any): void |
(p): called before each redraw and on destroy. |
plotOptions.network.renderer |
'auto' | 'svg' | 'canvas' |
'svg' or 'canvas'; 'auto' uses canvas from canvasThreshold nodes. Default: 'auto'. |
plotOptions.network.canvasThreshold |
number |
Node count above which renderer: 'auto' switches to canvas. Default: 1200. |
plotOptions.network.nodes |
object |
Node circles. |
plotOptions.network.nodes.minRadius |
number |
Smallest node radius in px. Default: 4. |
plotOptions.network.nodes.maxRadius |
number |
Largest node radius in px (graphs over 1000 nodes cap it at 8). Default: 16. |
plotOptions.network.nodes.sizeBy |
'auto' | 'value' | 'degree' | 'none' |
Node size from 'value', 'degree' (number of links) or 'none'; 'auto' uses value when a node has one, else degree. Default: 'auto'. |
plotOptions.network.nodes.strokeWidth |
number |
Width of the ring around each node in px. Default: 1.5. |
plotOptions.network.edges |
object |
Edge lines. |
plotOptions.network.edges.width |
[number, number] |
[min, max] line width in px, scaled by edge weight. Default: [0.8, 3]. |
plotOptions.network.edges.opacity |
number |
Edge opacity; not set uses 0.3 (0.34 in dark mode, 0.16 over 1000 nodes). |
plotOptions.network.edges.bundle |
boolean |
Bundles edges between groups through the group centres. Default: false. |
plotOptions.network.edges.bundleStrength |
number |
How tightly bundled edges follow the group centres (0 to 1). Default: 0.85. |
plotOptions.network.edges.curvature |
number |
Bend of the edges, 0 straight. Default: 0. |
plotOptions.network.layout |
object |
Force layout. |
plotOptions.network.layout.type |
'force' | 'facet' | 'preset' |
'force': the force simulation. 'facet': a deterministic projection on concentric regular polygon shells (core in the centre, groups as filled facet sectors, causal paths across; options under facet). Default: 'force'. |
plotOptions.network.layout.linkDistance |
'auto' | number |
Target edge length; 'auto' derives it from the node sizes. Default: 'auto'. |
plotOptions.network.layout.charge |
'auto' | number |
Repulsion between nodes; 'auto' derives it from the node sizes. Default: 'auto'. |
plotOptions.network.layout.groupStrength |
number |
Pull of nodes towards their group centre (with two or more groups). Default: 0.1. |
plotOptions.network.layout.iterations |
'auto' | number |
Simulation steps; 'auto' runs until the layout has cooled down. Default: 'auto'. |
plotOptions.network.layout.warmup |
'auto' | number |
Steps computed before the first paint; 'auto' uses 40 from 600 nodes and 90 from 2000. Default: 'auto'. |
plotOptions.network.groups |
object |
Node groups (group in the node data). |
plotOptions.network.groups.show |
boolean |
false treats all nodes as one group: no group colours, clustering or legend. Default: true. |
plotOptions.network.groups.hulls |
boolean |
Draws a soft rounded hull behind each group (svg renderer, two or more groups). Default: false. |
plotOptions.network.labels |
object |
Node labels. |
plotOptions.network.labels.show |
boolean |
Shows labels, biggest nodes first, without overlaps. Default: true. |
plotOptions.network.labels.max |
number |
Most labels at the fit zoom (fewer in dense graphs, more when zoomed in). Default: 40. |
plotOptions.network.labels.minZoom |
number |
Zoom from which small nodes get labels too. Default: 1.6. |
plotOptions.network.labels.formatter |
WccCallback |
(name, { node, w }) => string for the label text. |
plotOptions.network.labels.readability |
WccReadability |
Facet layout: treatment of labels over facets and shell lines (pill by default; full options with features/readability). Default: 'auto'. |
plotOptions.network.labels.readability.mode |
'none' | 'halo' | 'pill' | 'auto' | 'hide' |
'auto' (default where on): nothing for labels off the marks, a contrasting text colour over one fill, a pill over mixed fills; 'hide' = skip labels that sit on marks |
plotOptions.network.labels.readability.fallback |
'pill' | 'halo' | 'hide' |
what 'auto' escalates to over mixed fills or when no text colour reaches minRatio. Default 'pill' |
plotOptions.network.labels.readability.enabled |
boolean |
false switches the treatment off for this label kind |
plotOptions.network.labels.readability.contrast |
boolean |
swap the text to light/dark when it misses minRatio against what is under it (any mode) |
plotOptions.network.labels.readability.minRatio |
number |
WCAG 2 contrast ratio to reach. Default 4.5 |
plotOptions.network.labels.readability.light |
string |
text/backdrop colour pair used by contrast and 'auto' fills. Defaults '#ffffff' / '#111827' |
plotOptions.network.labels.readability.dark |
string |
Dark colour of the pair. Default: '#111827'. |
plotOptions.network.labels.readability.background |
'auto' | string |
colour under the chart; 'auto' = chart.background, else the first opaque ancestor |
plotOptions.network.labels.readability.halo |
object |
outline behind the glyphs; blur > 0 makes it a soft glow. Defaults width 3, color 'auto' (chart background), opacity 0.92 |
plotOptions.network.labels.readability.halo.width |
number |
Outline width in pixels. Default: 3. |
plotOptions.network.labels.readability.halo.color |
'auto' | string |
Outline colour; 'auto' uses the colour under the label or a contrasting one. Default: 'auto'. |
plotOptions.network.labels.readability.halo.opacity |
number |
Outline opacity (0 to 1). Default: 0.92. |
plotOptions.network.labels.readability.halo.blur |
number |
Blur in pixels; above 0 the outline becomes a soft glow. Default: 0. |
plotOptions.network.labels.readability.pill |
object |
backdrop box. padding = [vertical, horizontal]; offset = [dx, dy] px. Defaults fill 'auto', opacity 0.9, radius 4, padding [1, 4] |
plotOptions.network.labels.readability.pill.fill |
'auto' | string |
Box colour; 'auto' uses the colour under the label or a contrasting one. Default: 'auto'. |
plotOptions.network.labels.readability.pill.opacity |
number |
Box opacity (0 to 1). Default: 0.9. |
plotOptions.network.labels.readability.pill.radius |
number |
Corner radius in pixels. Default: 4. |
plotOptions.network.labels.readability.pill.padding |
number | [number, number] |
Space around the text in pixels: one number, or [vertical, horizontal]. Default: [1, 4]. |
plotOptions.network.labels.readability.pill.stroke |
string |
Outline colour of the box. Default: 'none'. |
plotOptions.network.labels.readability.pill.strokeWidth |
number |
Outline width in pixels. Default: 1. |
plotOptions.network.labels.readability.pill.offset |
[number, number] |
Shift of the box as [dx, dy] in pixels. Default: [0, 0]. |
plotOptions.network.labels.readability.shadow |
object | boolean |
drop shadow on the pill (on the text in halo mode) |
plotOptions.network.labels.readability.shadow.dx |
number |
Horizontal shadow offset in pixels. Default: 0. |
plotOptions.network.labels.readability.shadow.dy |
number |
Vertical shadow offset in pixels. Default: 1. |
plotOptions.network.labels.readability.shadow.blur |
number |
Shadow blur in pixels. Default: 2. |
plotOptions.network.labels.readability.shadow.color |
string |
Shadow colour. Default: '#000000'. |
plotOptions.network.labels.readability.shadow.opacity |
number |
Shadow opacity (0 to 1). Default: 0.35. |
plotOptions.network.labels.readability.raise |
boolean |
axis labels sitting on marks are moved above the series (default true) |
plotOptions.network.labels.readability.each |
(info: WccReadabilityInfo) => WccReadability | null | undefined |
per label: return an override (or 'none') for this one label; called only when set |
plotOptions.network.drag |
object |
Dragging nodes. |
plotOptions.network.drag.enabled |
boolean |
Lets the user drag nodes. Default: true. |
plotOptions.network.drag.pin |
boolean |
Keeps a dragged node where it was dropped. Default: false. |
plotOptions.network.zoom |
WccZoomOptions |
Zoom and pan of the network view. |
plotOptions.network.zoom.enabled |
boolean |
Enables zoom and pan of the view. Default: true. |
plotOptions.network.zoom.wheel |
'ctrl' | boolean | string |
Wheel zoom: 'ctrl' zooms only while Ctrl or Cmd is held, true on every wheel event, false never. Default: 'ctrl'. |
plotOptions.network.zoom.min |
number |
Smallest zoom factor. Default: 0.25 for the network, 0.05 for the tree. |
plotOptions.network.zoom.max |
number |
Largest zoom factor. Default: 8 for the network, 3 for the tree. |
plotOptions.network.legend |
object |
Group legend. |
plotOptions.network.legend.show |
boolean |
Shows the group legend (with two or more groups). Default: true. |
plotOptions.network.controls |
object |
On-chart zoom buttons. |
plotOptions.network.controls.show |
boolean |
false hides the zoom buttons. Default: true. |
plotOptions.network.facet |
WccNetworkFacetOptions |
Facet layout (layout.type: 'facet'). Node data may carry level (0 = centre), severity ('critical' | 'warning' | 'info' | 'ok'), anomaly (true or a short text), badge, labelPriority (true: always labelled, like warnings) and keys. Label priority (any network layout): highlighted, then critical, then warning / anomaly / labelPriority – these labels are never dropped for the label budget or the zoom threshold. Edges causal: true; a series paths: [{ name, nodes, severity, color }]. |
plotOptions.network.facet.levels |
object[] | 'auto' |
Level names, centre first (['Core', 'Services', …] or { name, description }); 'auto' names them Core, Level 1, Level 2 … Default: 'auto'. |
plotOptions.network.facet.levels[].name |
string |
|
plotOptions.network.facet.levels[].description |
string |
|
plotOptions.network.facet.core |
string[] |
Node ids of the core when no node has level: 0; not set uses the most connected node. |
plotOptions.network.facet.sides |
'auto' | number |
Polygon sides; 'auto' = the group count for 5–12 groups, twice it for 2–4, 6 for one group. Default: 'auto'. |
plotOptions.network.facet.rotation |
number |
Turns the shells, degrees; 0 puts a vertex at 12 o'clock. Default: 0. |
plotOptions.network.facet.sectors |
'auto' | 'equal' | 'weighted' |
Sector size per group: 'equal', 'weighted' (by its most crowded shell) or 'auto'. Default: 'auto'. |
plotOptions.network.facet.order |
'crossings' | 'data' |
'crossings' reorders nodes inside a facet (barycentric sweeps) to reduce crossings; 'data' keeps the data order. Default: 'crossings'. |
plotOptions.network.facet.coreRadius |
number |
Level-1 radius as a fraction of the outer radius. Default: 0.24. |
plotOptions.network.facet.bundle |
number |
Pull of plain edges towards the centre, 0 (straight) to 1; edges between two facets route through both facets' anchors. Default: 0.65. |
plotOptions.network.facet.edges |
object |
Plain edge rendering in dense estates. |
plotOptions.network.facet.edges.degreeAlpha |
boolean |
Fades edges of hubs: opacity × clamp(2 / √(max endpoint degree), 0.35, 1). Default: true. |
plotOptions.network.facet.edges.lod |
boolean | 'auto' |
Level of detail for cross-facet edges, 'auto' from 300 nodes: at overview zoom they fade (ribbons stand for them); zoomed in, only those with an end in view are drawn (hover / highlight still show all of a node's links). Default: 'auto'. |
plotOptions.network.facet.edges.lodZoom |
number |
Zoom factor from which the individual cross-facet edges come back. Default: 1.8. |
plotOptions.network.facet.edges.ribbons |
boolean |
With lod at overview zoom: one ribbon per facet pair, width by its link count (title: A – B: n links). Default: true. |
plotOptions.network.facet.shells |
object |
Shell polygons. |
plotOptions.network.facet.shells.show |
boolean |
Draws the shell outlines. Default: true. |
plotOptions.network.facet.shells.labels |
boolean |
Writes the level name on each shell. Default: true. |
plotOptions.network.facet.shells.opacity |
'auto' | number |
Outline opacity; 'auto' follows the theme. Default: 'auto'. |
plotOptions.network.facet.facets |
object |
Filled facet sectors, one per group. |
plotOptions.network.facet.facets.show |
boolean |
Draws the facets. Default: true. |
plotOptions.network.facet.facets.opacity |
'auto' | number |
Fill opacity; 'auto' = 0.07 light, 0.11 dark. Default: 'auto'. |
plotOptions.network.facet.facets.labels |
boolean |
Writes the group names outside the outer shell. Default: true. |
plotOptions.network.facet.paths |
object |
Causal edges and paths. |
plotOptions.network.facet.paths.show |
boolean |
Draws causal edges and paths. Default: true. |
plotOptions.network.facet.paths.width |
number |
Line width in px. Default: 2. |
plotOptions.network.facet.paths.dash |
[number, number] |
Dash pattern [dash, gap] in px. Default: [6, 5]. |
plotOptions.network.facet.paths.curvature |
number |
Sideways bow of a hop (fraction of its length). Default: 0.22. |
plotOptions.network.facet.paths.arrows |
boolean |
Arrow heads at the effect end. Default: true. |
plotOptions.network.facet.paths.flow |
boolean |
Dashes flow from cause to effect (off under reduced motion). Default: true. |
plotOptions.network.facet.markers |
object |
Severity / anomaly markers and badges. |
plotOptions.network.facet.markers.show |
boolean |
Draws markers and badges. Default: true. |
plotOptions.network.facet.markers.colors |
object |
Colours per severity; not set uses the theme's negative / warning / accent / positive. |
plotOptions.network.facet.markers.colors.critical |
string |
|
plotOptions.network.facet.markers.colors.warning |
string |
|
plotOptions.network.facet.markers.colors.info |
string |
|
plotOptions.network.facet.markers.colors.ok |
string |
|
plotOptions.network.facet.legend |
object |
Level legend in the legend row above the plot (replaces the group legend; needs legend.show of the network too). |
plotOptions.network.facet.legend.show |
boolean |
Shows the level legend. Default: true. |
plotOptions.network.facet.legend.title |
string |
Leads the legend row (e.g. your word for "Levels"). |
Stock drawing items
plotOptions.stock.drawings.items[] and the stock drawing commands (WccStockDrawing).
| Option | Type | Description |
|---|---|---|
drawing.id |
string | number |
Id of the drawing; not set gets 'd1', 'd2', ... |
drawing.type |
'trendline' | 'ray' | 'fib' | 'rect' | string |
'trendline' (2 points), 'ray' (horizontal, 1 point), 'fib' (retracement, 2 points) or 'rect' (2 corners); aliases such as 'line' or 'box' are accepted. |
drawing.points |
object[] |
Anchors as { t, y } or [t, y] (time, price); invalid drawings are skipped. |
drawing.points[].t |
WccDate |
Time of the anchor. |
drawing.points[].y |
number |
Price of the anchor. |
drawing.color |
WccColor |
Colour; not set uses drawings.colors or the palette. |
drawing.label |
string |
Text written along the drawing. |
drawing.width |
number |
Line width in px. Default: 1.6. |
drawing.extend |
boolean | 'left' | 'right' | 'both' |
Trend line: extends to the plot edge (true or 'both' both ways, 'left', 'right'); fib: false ends the levels at the second point. |
drawing.dash |
boolean | string |
true dashes the line; a string is used as SVG dash array; not set draws it solid. |
drawing.fill |
string |
Fill of a rectangle; not set uses a faint tint of the colour. |
drawing.levels |
number[] |
Fibonacci levels as fractions. Default: [0, 0.236, 0.382, 0.5, 0.618, 0.786, 1]. |
drawing.locked |
boolean |
true stops the user from moving or editing the drawing. |
drawing.labelPosition |
'above' | 'below' |
Side of the trend line label. Default: 'above'. |
plotOptions.radialColumn
Chart type radialColumn (RadialColumnOptions).
| Option | Type | Description |
|---|---|---|
plotOptions.radialColumn.readabilityWarnings |
boolean |
Warn once if inner rings are thinner than 8 px or heat cells below 2 px per slot. No values/layers are removed. Default: true. |
plotOptions.radialColumn.aggregate |
'sum' | 'mean' | 'max' | 'min' | 'none' |
how the column values combine in the centre, the generated description, tooltip footers and the filter note. 'sum' (default) adds them into a Total — right for counts and amounts only. Use 'max' / 'min' for latencies and percentiles ('Highest p95 latency (ms): 412 (Matching · 20:00)'), 'mean' for rates, percentages and scores, 'none' to name no combined number at all. |
plotOptions.radialColumn.link |
RadialColumnLink | RadialLinkMode |
links between inner layers and the column ring (a mode string or options) |
plotOptions.radialColumn.link.mode |
'none' | 'category' | 'angle' | 'map' | 'auto' |
auto (default): a datum's own link, else matching category names, else the angle span |
plotOptions.radialColumn.link.map |
((segment: RadialLinkSegment) => Array<number | string> | null | undefined) | Record<string, Array<number | string>> |
map mode: a function or an object keyed by 'A › B' path or name; values are category indices or names |
plotOptions.radialColumn.link.interaction |
'highlight' | 'filter' | 'both' |
highlight on hover, filter (cross-filter / values) on click, or both. Default 'highlight' |
plotOptions.radialColumn.link.bidirectional |
boolean |
hovering a bar also lights its segments (default true) |
plotOptions.radialColumn.link.align |
boolean |
segments span exactly the angle of their linked bars (default false) |
plotOptions.radialColumn.link.indicator |
boolean |
bracket arc on the outer edge over the linked bars (default true) |
plotOptions.radialColumn.link.unit |
string |
what a category is, for tooltips and announcements ('18 of 72 time slots'). Default 'categories'. Name the real unit: categories that combine several things (service × day) are 'service-days', not 'days'. |
plotOptions.radialColumn.link.basis |
string |
how the categories are composed, appended in brackets ('18 of 140 service-days (10 services × 14 days)'). Default: none |
plotOptions.radialColumn.encode |
RadialColumnEncode |
bind colour / delta / length to separate metrics |
plotOptions.radialColumn.encode.angle |
string |
name of the angular dimension for the guide (default: xaxis.title.text or 'Category') |
plotOptions.radialColumn.encode.length |
'value' | string |
bar length: 'value' (default) or a datum field |
plotOptions.radialColumn.encode.color |
RadialEncodeChannel | string |
bar colour = a separate metric |
plotOptions.radialColumn.encode.color.field |
string |
Datum field of the metric (datum.meta[field] or datum[field]). |
plotOptions.radialColumn.encode.color.values |
Array<number | null> |
One value per category instead of a field. |
plotOptions.radialColumn.encode.color.name |
string |
legend / tooltip name (default: the field) |
plotOptions.radialColumn.encode.color.unit |
string |
appended to values: '%' sticks, other units get a space |
plotOptions.radialColumn.encode.color.decimals |
number |
Decimals of the shown values; not set uses 0 from 100, 1 from 10, else 2. |
plotOptions.radialColumn.encode.color.format |
(value: number) => string |
(value) => string for the shown values (wins over decimals and unit). |
plotOptions.radialColumn.encode.color.legend |
boolean |
false: no key in the strip under the ring (default true) |
plotOptions.radialColumn.encode.color.show |
boolean |
false switches the channel off. Default: true. |
plotOptions.radialColumn.encode.color.scale |
'sequential' | 'diverging' |
'sequential' (low to high) or 'diverging' around mid. Default: 'sequential'. |
plotOptions.radialColumn.encode.color.domain |
number[] |
[lo, hi] or [lo, mid, hi]; default: data extent (diverging: symmetric around mid) |
plotOptions.radialColumn.encode.color.mid |
number |
diverging centre (default 0) |
plotOptions.radialColumn.encode.color.stops |
string[] |
Colour stops; not set uses ['#2dd4bf', '#facc15', '#f43f5e'] (diverging: blue, a neutral tone, orange). |
plotOptions.radialColumn.encode.color.reverse |
boolean |
Reverses the colour stops. Default: false. |
plotOptions.radialColumn.encode.delta |
RadialEncodeChannel | string |
change vs a previous period outside the bars |
plotOptions.radialColumn.encode.delta.field |
string |
Datum field of the metric (datum.meta[field] or datum[field]). |
plotOptions.radialColumn.encode.delta.values |
Array<number | null> |
One value per category instead of a field. |
plotOptions.radialColumn.encode.delta.name |
string |
legend / tooltip name (default: the field) |
plotOptions.radialColumn.encode.delta.unit |
string |
appended to values: '%' sticks, other units get a space |
plotOptions.radialColumn.encode.delta.decimals |
number |
Decimals of the shown values; not set uses 0 from 100, 1 from 10, else 2. |
plotOptions.radialColumn.encode.delta.format |
(value: number) => string |
(value) => string for the shown values (wins over decimals and unit). |
plotOptions.radialColumn.encode.delta.legend |
boolean |
false: no key in the strip under the ring (default true) |
plotOptions.radialColumn.encode.delta.show |
boolean |
false switches the channel off. Default: true. |
plotOptions.radialColumn.encode.delta.style |
'band' | 'ticks' | 'bars' |
band: thin coloured ring; ticks: marks at the bar tips; bars: signed mini bars (out = up, in = down) |
plotOptions.radialColumn.encode.delta.colors |
object |
Colours of increases and decreases. |
plotOptions.radialColumn.encode.delta.colors.up |
string |
Colour of increases. Default: '#22c55e'. |
plotOptions.radialColumn.encode.delta.colors.down |
string |
Colour of decreases. Default: '#f43f5e'. |
plotOptions.radialColumn.encode.delta.max |
number |
|value| of full intensity / length (default: largest |value|) |
plotOptions.radialColumn.encode.guide |
object | boolean |
'?' button with a 'how to read' panel listing every bound channel |
plotOptions.radialColumn.encode.guide.show |
boolean |
false hides the guide button. Default: true. |
plotOptions.radialColumn.encode.guide.open |
boolean | 'always' |
start open (true: only when the chart is >= 560 px wide; 'always') |
plotOptions.radialColumn.markers |
Array<{ at: number | string label?: string kind?: string color?: string shape?: 'dot' | 'diamond' }> |
rim marks (deploys, pipeline runs, incidents): a small glyph outside the bars at a slot, a tooltip row on that slot and a guide row |
plotOptions.radialColumn.startAngle |
number |
degrees, 0 = 12 o'clock, clockwise; a partial range gives a gauge |
plotOptions.radialColumn.endAngle |
number |
End of the range in degrees (same convention as startAngle). Default: 360. |
plotOptions.radialColumn.innerRadius |
'auto' | number | string |
base radius of the bars: 'auto', px, '40%' or a fraction of the outer radius |
plotOptions.radialColumn.barPadding |
'auto' | number |
gap between neighbouring slots: 'auto' or a fraction of the slot (0..0.9) |
plotOptions.radialColumn.groupPadding |
number |
gap between the bars of one slot when grouped (fraction) |
plotOptions.radialColumn.stacked |
boolean |
stack series outward (falls back to chart.stacked) |
plotOptions.radialColumn.stackGap |
number |
Gap between stacked segments in px. Default: 1. |
plotOptions.radialColumn.rounded |
boolean |
rounded bar ends |
plotOptions.radialColumn.fill |
object |
Bar colours. |
plotOptions.radialColumn.fill.type |
'auto' | 'spectrum' | 'series' | 'value' |
auto: spectrum for one uncoloured series, else series colours |
plotOptions.radialColumn.fill.stops |
string[] |
gradient stops (spectrum by angle, value by magnitude) |
plotOptions.radialColumn.fill.ranges |
object[] |
type 'value': fixed colours for value ranges (inclusive); values outside every range use the stops |
plotOptions.radialColumn.fill.ranges[].from |
number |
Lowest value of the range (inclusive). |
plotOptions.radialColumn.fill.ranges[].to |
number |
Highest value of the range (inclusive). |
plotOptions.radialColumn.fill.ranges[].color |
string |
Colour of bars in the range. |
plotOptions.radialColumn.fill.fade |
number |
inner fade of the bars, 0..1 (0 = off) |
plotOptions.radialColumn.track |
object |
Background track behind the bars. |
plotOptions.radialColumn.track.show |
boolean |
Shows the track. Default: false. |
plotOptions.radialColumn.track.color |
string |
Track colour; not set uses a faint text tone. |
plotOptions.radialColumn.baseline |
object |
Zero ring. |
plotOptions.radialColumn.baseline.show |
boolean |
Draws the ring at value 0. Default: true. |
plotOptions.radialColumn.valueAxis |
object |
Value scale of the bars. |
plotOptions.radialColumn.valueAxis.show |
boolean |
false hides the grid rings and value labels. Default: true. |
plotOptions.radialColumn.valueAxis.min |
number |
Fixed lower end; not set uses the data. |
plotOptions.radialColumn.valueAxis.max |
number |
Fixed upper end; not set uses the data. |
plotOptions.radialColumn.valueAxis.tickAmount |
number |
Target number of tick steps. Default: 4. |
plotOptions.radialColumn.valueAxis.nice |
boolean |
round free ends to the tightest whole tick step (3-6 ticks); false = data extent. Default true |
plotOptions.radialColumn.valueAxis.rings |
boolean |
Draws the grid rings at the ticks (the value labels sit on them). Default: true. |
plotOptions.radialColumn.valueAxis.labels |
object |
Tick labels of the value scale. |
plotOptions.radialColumn.valueAxis.labels.show |
boolean |
Shows the tick labels. Default: true. |
plotOptions.radialColumn.valueAxis.labels.formatter |
(value: number) => string |
(value, { w }) => string; not set uses a compact number. |
plotOptions.radialColumn.valueAxis.labels.readability |
RadialReadability |
labels that sit on bars: 'auto' (default) = untouched off the bars, contrasting colour over one fill, pill over mixed fills; 'none' = off. Layered over chart.readability |
plotOptions.radialColumn.valueAxis.labels.readability.mode |
'none' | 'halo' | 'pill' | 'auto' | 'hide' |
'auto' (default where on): nothing for labels off the marks, a contrasting text colour over one fill, a pill over mixed fills; 'hide' = skip labels that sit on marks |
plotOptions.radialColumn.valueAxis.labels.readability.fallback |
'pill' | 'halo' | 'hide' |
what 'auto' escalates to over mixed fills or when no text colour reaches minRatio. Default 'pill' |
plotOptions.radialColumn.valueAxis.labels.readability.enabled |
boolean |
false switches the treatment off for this label kind |
plotOptions.radialColumn.valueAxis.labels.readability.contrast |
boolean |
swap the text to light/dark when it misses minRatio against what is under it (any mode) |
plotOptions.radialColumn.valueAxis.labels.readability.minRatio |
number |
WCAG 2 contrast ratio to reach. Default 4.5 |
plotOptions.radialColumn.valueAxis.labels.readability.light |
string |
text/backdrop colour pair used by contrast and 'auto' fills. Defaults '#ffffff' / '#111827' |
plotOptions.radialColumn.valueAxis.labels.readability.dark |
string |
Dark colour of the pair. Default: '#111827'. |
plotOptions.radialColumn.valueAxis.labels.readability.background |
'auto' | string |
colour under the chart; 'auto' = chart.background, else the first opaque ancestor |
plotOptions.radialColumn.valueAxis.labels.readability.halo |
object |
outline behind the glyphs; blur > 0 makes it a soft glow. Defaults width 3, color 'auto' (chart background), opacity 0.92 |
plotOptions.radialColumn.valueAxis.labels.readability.halo.width |
number |
Outline width in pixels. Default: 3. |
plotOptions.radialColumn.valueAxis.labels.readability.halo.color |
'auto' | string |
Outline colour; 'auto' uses the colour under the label or a contrasting one. Default: 'auto'. |
plotOptions.radialColumn.valueAxis.labels.readability.halo.opacity |
number |
Outline opacity (0 to 1). Default: 0.92. |
plotOptions.radialColumn.valueAxis.labels.readability.halo.blur |
number |
Blur in pixels; above 0 the outline becomes a soft glow. Default: 0. |
plotOptions.radialColumn.valueAxis.labels.readability.pill |
object |
backdrop box. padding = [vertical, horizontal]; offset = [dx, dy] px. Defaults fill 'auto', opacity 0.9, radius 4, padding [1, 4] |
plotOptions.radialColumn.valueAxis.labels.readability.pill.fill |
'auto' | string |
Box colour; 'auto' uses the colour under the label or a contrasting one. Default: 'auto'. |
plotOptions.radialColumn.valueAxis.labels.readability.pill.opacity |
number |
Box opacity (0 to 1). Default: 0.9. |
plotOptions.radialColumn.valueAxis.labels.readability.pill.radius |
number |
Corner radius in pixels. Default: 4. |
plotOptions.radialColumn.valueAxis.labels.readability.pill.padding |
number | [number, number] |
Space around the text in pixels: one number, or [vertical, horizontal]. Default: [1, 4]. |
plotOptions.radialColumn.valueAxis.labels.readability.pill.stroke |
string |
Outline colour of the box. Default: 'none'. |
plotOptions.radialColumn.valueAxis.labels.readability.pill.strokeWidth |
number |
Outline width in pixels. Default: 1. |
plotOptions.radialColumn.valueAxis.labels.readability.pill.offset |
[number, number] |
Shift of the box as [dx, dy] in pixels. Default: [0, 0]. |
plotOptions.radialColumn.valueAxis.labels.readability.shadow |
object | boolean |
drop shadow on the pill (on the text in halo mode) |
plotOptions.radialColumn.valueAxis.labels.readability.shadow.dx |
number |
Horizontal shadow offset in pixels. Default: 0. |
plotOptions.radialColumn.valueAxis.labels.readability.shadow.dy |
number |
Vertical shadow offset in pixels. Default: 1. |
plotOptions.radialColumn.valueAxis.labels.readability.shadow.blur |
number |
Shadow blur in pixels. Default: 2. |
plotOptions.radialColumn.valueAxis.labels.readability.shadow.color |
string |
Shadow colour. Default: '#000000'. |
plotOptions.radialColumn.valueAxis.labels.readability.shadow.opacity |
number |
Shadow opacity (0 to 1). Default: 0.35. |
plotOptions.radialColumn.valueAxis.labels.readability.raise |
boolean |
axis labels sitting on marks are moved above the series (default true) |
plotOptions.radialColumn.valueAxis.labels.readability.each |
(info: WccReadabilityInfo) => WccReadability | null | undefined |
per label: return an override (or 'none') for this one label; called only when set |
plotOptions.radialColumn.valueAxis.labels.angle |
number | 'auto' |
where the scale sits: degrees (startAngle convention, 0 = 12 o'clock) or 'auto' = the slot boundary with the shortest bars on both sides. Default: the start of the range |
plotOptions.radialColumn.valueAxis.labels.pinAngle |
boolean |
'auto' keeps the first angle it found across updates (no jumping scale). Default true |
plotOptions.radialColumn.categoryLabels |
object |
Category names around the ring. |
plotOptions.radialColumn.categoryLabels.show |
boolean |
Shows the category names. Default: true. |
plotOptions.radialColumn.categoryLabels.orientation |
'auto' | 'horizontal' | 'radial' |
'horizontal' or along the 'radial' direction; 'auto' keeps names horizontal when they fit their slot. Default: 'auto'. |
plotOptions.radialColumn.categoryLabels.offset |
number |
Distance from the bars in px. Default: 8. |
plotOptions.radialColumn.categoryLabels.maxWidth |
number |
Longest name in px before it is shortened. Default: 110. |
plotOptions.radialColumn.categoryLabels.step |
number |
label every n-th category (disables automatic thinning) |
plotOptions.radialColumn.categoryLabels.maxCount |
number |
most labels to show; default from the ring length (one per ~4 font sizes, 4-24) |
plotOptions.radialColumn.categoryLabels.formatter |
(category: string, opts: { index: number }) => string |
(category, { index }) => string for the name. |
plotOptions.radialColumn.center |
object |
Value and label in the hole. |
plotOptions.radialColumn.center.readability |
RadialReadability |
centre value + label readability (explicit modes; default none) |
plotOptions.radialColumn.center.readability.mode |
'none' | 'halo' | 'pill' | 'auto' | 'hide' |
'auto' (default where on): nothing for labels off the marks, a contrasting text colour over one fill, a pill over mixed fills; 'hide' = skip labels that sit on marks |
plotOptions.radialColumn.center.readability.fallback |
'pill' | 'halo' | 'hide' |
what 'auto' escalates to over mixed fills or when no text colour reaches minRatio. Default 'pill' |
plotOptions.radialColumn.center.readability.enabled |
boolean |
false switches the treatment off for this label kind |
plotOptions.radialColumn.center.readability.contrast |
boolean |
swap the text to light/dark when it misses minRatio against what is under it (any mode) |
plotOptions.radialColumn.center.readability.minRatio |
number |
WCAG 2 contrast ratio to reach. Default 4.5 |
plotOptions.radialColumn.center.readability.light |
string |
text/backdrop colour pair used by contrast and 'auto' fills. Defaults '#ffffff' / '#111827' |
plotOptions.radialColumn.center.readability.dark |
string |
Dark colour of the pair. Default: '#111827'. |
plotOptions.radialColumn.center.readability.background |
'auto' | string |
colour under the chart; 'auto' = chart.background, else the first opaque ancestor |
plotOptions.radialColumn.center.readability.halo |
object |
outline behind the glyphs; blur > 0 makes it a soft glow. Defaults width 3, color 'auto' (chart background), opacity 0.92 |
plotOptions.radialColumn.center.readability.halo.width |
number |
Outline width in pixels. Default: 3. |
plotOptions.radialColumn.center.readability.halo.color |
'auto' | string |
Outline colour; 'auto' uses the colour under the label or a contrasting one. Default: 'auto'. |
plotOptions.radialColumn.center.readability.halo.opacity |
number |
Outline opacity (0 to 1). Default: 0.92. |
plotOptions.radialColumn.center.readability.halo.blur |
number |
Blur in pixels; above 0 the outline becomes a soft glow. Default: 0. |
plotOptions.radialColumn.center.readability.pill |
object |
backdrop box. padding = [vertical, horizontal]; offset = [dx, dy] px. Defaults fill 'auto', opacity 0.9, radius 4, padding [1, 4] |
plotOptions.radialColumn.center.readability.pill.fill |
'auto' | string |
Box colour; 'auto' uses the colour under the label or a contrasting one. Default: 'auto'. |
plotOptions.radialColumn.center.readability.pill.opacity |
number |
Box opacity (0 to 1). Default: 0.9. |
plotOptions.radialColumn.center.readability.pill.radius |
number |
Corner radius in pixels. Default: 4. |
plotOptions.radialColumn.center.readability.pill.padding |
number | [number, number] |
Space around the text in pixels: one number, or [vertical, horizontal]. Default: [1, 4]. |
plotOptions.radialColumn.center.readability.pill.stroke |
string |
Outline colour of the box. Default: 'none'. |
plotOptions.radialColumn.center.readability.pill.strokeWidth |
number |
Outline width in pixels. Default: 1. |
plotOptions.radialColumn.center.readability.pill.offset |
[number, number] |
Shift of the box as [dx, dy] in pixels. Default: [0, 0]. |
plotOptions.radialColumn.center.readability.shadow |
object | boolean |
drop shadow on the pill (on the text in halo mode) |
plotOptions.radialColumn.center.readability.shadow.dx |
number |
Horizontal shadow offset in pixels. Default: 0. |
plotOptions.radialColumn.center.readability.shadow.dy |
number |
Vertical shadow offset in pixels. Default: 1. |
plotOptions.radialColumn.center.readability.shadow.blur |
number |
Shadow blur in pixels. Default: 2. |
plotOptions.radialColumn.center.readability.shadow.color |
string |
Shadow colour. Default: '#000000'. |
plotOptions.radialColumn.center.readability.shadow.opacity |
number |
Shadow opacity (0 to 1). Default: 0.35. |
plotOptions.radialColumn.center.readability.raise |
boolean |
axis labels sitting on marks are moved above the series (default true) |
plotOptions.radialColumn.center.readability.each |
(info: WccReadabilityInfo) => WccReadability | null | undefined |
per label: return an override (or 'none') for this one label; called only when set |
plotOptions.radialColumn.center.show |
boolean | 'auto' |
true always shows the centre; 'auto' shows it when the hole is at least 34 px. Default: 'auto'. |
plotOptions.radialColumn.center.label |
string |
Label under the value; not set uses the gauge layer name, 'Total' with columns, or the first layer name. |
plotOptions.radialColumn.center.value |
number | string | (() => string) |
Fixed value or text, or a function returning text; not set uses the gauge value or the total. |
plotOptions.radialColumn.center.formatter |
(value: number) => string |
(value, { w }) => string for a numeric centre value. |
plotOptions.radialColumn.center.hover |
boolean |
show the hovered slot / segment in the centre |
plotOptions.radialColumn.layers |
RadialColumnLayer[] |
Inner layers, innermost first. Default: []. |
plotOptions.radialColumn.layers[].type |
'pie' | 'donut' | 'nestedDonut' | 'sunburst' | 'arc' | 'radialBar' | 'polarArea' | 'heatmap' | 'chord' | 'goals' | 'gauge' | 'wave' | 'matrix' | 'incident' | 'bands' | 'trace' | 'span' | 'vitalsNow' |
'radialBar' is an alias of 'arc'; 'chord' is best as the innermost layer (its ribbons fill the centre) |
plotOptions.radialColumn.layers[].name |
string |
Layer name (legend, tooltip, centre label of a gauge). |
plotOptions.radialColumn.layers[].data |
RadialLayerDatum[] | Array<{ /** Ring name. / name?: string /* Segments or cells of the ring (inner first). */ data: Array<RadialLayerDatum | null> }> | Ar… |
pie/donut/arc/polarArea: segments; nestedDonut and heatmap: rings [{ name, data }] or number[][] (innermost first, heatmap cells may be null); sunburst: a node tree; chord: flows [from, to, value] or { from, to, value }; wave: rows RadialWaveSeries[] (or one plain number array = one row) matrix: rows × cols values or status names, flows [row, col, value], or RadialMatrixCell objects incident (west-coast-charts/layers/quint): RadialIncident windows, a wedge across every ring each |
plotOptions.radialColumn.layers[].data[].x |
string |
Name of the segment (alias of name). |
plotOptions.radialColumn.layers[].data[].name |
string |
Name of the segment. |
plotOptions.radialColumn.layers[].data[].y |
number |
Value of the segment (alias of value). |
plotOptions.radialColumn.layers[].data[].value |
number |
Value of the segment. |
plotOptions.radialColumn.layers[].data[].color |
string |
Colour of the segment. |
plotOptions.radialColumn.layers[].data[].max |
number |
Arc and goals layers: value of a full arc for this point. |
plotOptions.radialColumn.layers[].data[].target |
number |
goals: the ring's target (alias of max) |
plotOptions.radialColumn.layers[].data[].trackColor |
string |
goals: track colour of this ring (default: derived from the ring colour) |
plotOptions.radialColumn.layers[].data[].label |
string |
goals: ring label (default: the name) |
plotOptions.radialColumn.layers[].data[].children |
RadialLayerDatum[] |
Sunburst: child segments on the next ring. |
plotOptions.radialColumn.layers[].data[].link |
Array<number | string> |
linked categories (indices or names) |
plotOptions.radialColumn.layers[].data[].keys |
string[] |
semantic keys (e.g. a service id): marks of other layers sharing a key light together; a sunburst parent takes the union of its children |
plotOptions.radialColumn.layers[].data[].values |
Array<number | null> |
this segment's own outer values (filter interaction) |
plotOptions.radialColumn.layers[].data[].from |
string |
Source group id. |
plotOptions.radialColumn.layers[].data[].to |
string |
Target group id. |
plotOptions.radialColumn.layers[].data[].data |
Array<number | null | [unknown, number | null] | { y: number | null }> |
One value per point; null = gap. Numbers, [x, y] or { y }. |
plotOptions.radialColumn.layers[].data[].envelope |
object |
Normal range per point: a soft band behind the wave; points outside it are anomalies. |
plotOptions.radialColumn.layers[].data[].envelope.lo |
Array<number | null> |
Lower bound per point. |
plotOptions.radialColumn.layers[].data[].envelope.hi |
Array<number | null> |
Upper bound per point. |
plotOptions.radialColumn.layers[].data[].forecast |
object |
Forecast per point (usually null up to now): dashed crest, optional hatched range. |
plotOptions.radialColumn.layers[].data[].forecast.data |
Array<number | null> |
Forecast values. |
plotOptions.radialColumn.layers[].data[].forecast.lo |
Array<number | null> |
Lower bound of the forecast range. |
plotOptions.radialColumn.layers[].data[].forecast.hi |
Array<number | null> |
Upper bound of the forecast range. |
plotOptions.radialColumn.layers[].data[].anomalies |
RadialWaveAnomaly[] |
Anomalies of this row (as layer anomalies, without series). |
plotOptions.radialColumn.layers[].data[].anomalies[].series |
string |
Row name (layer-level lists; not set = every row). |
plotOptions.radialColumn.layers[].data[].anomalies[].at |
number | string |
Point index, or a point label (e.g. 'Wed 18:00'). |
plotOptions.radialColumn.layers[].data[].anomalies[].label |
string |
Text in the tooltip, data table and rim marks. |
plotOptions.radialColumn.layers[].data[].anomalies[].kind |
string |
Kind shown when there is no label. Default: 'Anomaly' ('Above normal' / 'Below normal' for automatic ones). |
plotOptions.radialColumn.layers[].data[].anomalies[].color |
string |
Spike colour. Default: a rose red (lighter in dark mode). |
plotOptions.radialColumn.layers[].data[].row |
string |
Row id (or name). |
plotOptions.radialColumn.layers[].data[].col |
string |
Column id (or name). |
plotOptions.radialColumn.layers[].data[].status |
string |
Status name (ok, info, warn, crit, unknown or one of statuses). |
plotOptions.radialColumn.layers[].series |
number | string |
take the data from config.series (index or name) instead; that series leaves the column ring |
plotOptions.radialColumn.layers[].labels |
string[] |
segment names for plain number data; wave: point labels, one per point (e.g. '14:00 Tue') or one per sector point ('14:00', shown as 'Tue 14:00') |
plotOptions.radialColumn.layers[].thickness |
number | string |
ring thickness: px, '30%' of the available radius, or a fraction (0..1) |
plotOptions.radialColumn.layers[].gap |
number |
px between this layer and the one inside it (default 6) |
plotOptions.radialColumn.layers[].ringGap |
number |
px between the rings of a nestedDonut / sunburst / arc layer (default 2) |
plotOptions.radialColumn.layers[].padding |
number |
constant px gap between neighbouring segments |
plotOptions.radialColumn.layers[].corner |
number |
corner radius of segment ends, px |
plotOptions.radialColumn.layers[].colors |
string[] |
Own palette of the layer; heatmap: two or more colours are the ramp stops, low to high. |
plotOptions.radialColumn.layers[].colorBy |
'spectrum' |
colour segments from the column ring's spectrum by angle |
plotOptions.radialColumn.layers[].legend |
boolean |
keep this layer's segments out of the legend |
plotOptions.radialColumn.layers[].link |
RadialColumnLink | boolean | RadialLinkMode |
link to the column ring for this layer: false = none, a mode, or options overriding plotOptions.radialColumn.link |
plotOptions.radialColumn.layers[].link.mode |
'none' | 'category' | 'angle' | 'map' | 'auto' |
auto (default): a datum's own link, else matching category names, else the angle span |
plotOptions.radialColumn.layers[].link.map |
((segment: RadialLinkSegment) => Array<number | string> | null | undefined) | Record<string, Array<number | string>> |
map mode: a function or an object keyed by 'A › B' path or name; values are category indices or names |
plotOptions.radialColumn.layers[].link.interaction |
'highlight' | 'filter' | 'both' |
highlight on hover, filter (cross-filter / values) on click, or both. Default 'highlight' |
plotOptions.radialColumn.layers[].link.bidirectional |
boolean |
hovering a bar also lights its segments (default true) |
plotOptions.radialColumn.layers[].link.align |
boolean |
segments span exactly the angle of their linked bars (default false) |
plotOptions.radialColumn.layers[].link.indicator |
boolean |
bracket arc on the outer edge over the linked bars (default true) |
plotOptions.radialColumn.layers[].link.unit |
string |
what a category is, for tooltips and announcements ('18 of 72 time slots'). Default 'categories'. Name the real unit: categories that combine several things (service × day) are 'service-days', not 'days'. |
plotOptions.radialColumn.layers[].link.basis |
string |
how the categories are composed, appended in brackets ('18 of 140 service-days (10 services × 14 days)'). Default: none |
plotOptions.radialColumn.layers[].align |
boolean |
shorthand for link.align |
plotOptions.radialColumn.layers[].trackColor |
string |
Track colour of arc, goals and gauge layers; not set uses a faint text tone (goals: a tone of the ring colour). |
plotOptions.radialColumn.layers[].startAngle |
number |
degrees, 0 = 12 o'clock, clockwise; default: the chart's range |
plotOptions.radialColumn.layers[].endAngle |
number |
End angle in degrees (same convention as startAngle); not set uses the chart's range. |
plotOptions.radialColumn.layers[].min |
number |
arc layers: value range of a full arc (default 0..100; per point via datum.max); wave: base of the height scale (default min(0, data)) |
plotOptions.radialColumn.layers[].max |
number |
Arc layers: value of a full arc. Default: 100. Wave: top of the height scale (default: the data, envelopes and forecasts rounded up to a nice tick). |
plotOptions.radialColumn.layers[].color |
RadialMatrixScale | string |
heatmap / matrix: base colour of the default ramp (surface tone -> colour -> towards the text colour); colors (2+) overrides the ramp. matrix (value mode) also takes a colour scale. |
plotOptions.radialColumn.layers[].color.scale |
'sequential' | 'diverging' |
'sequential' (low to high) or 'diverging' around mid. Default: 'sequential'. |
plotOptions.radialColumn.layers[].color.domain |
number[] |
[lo, hi] or [lo, mid, hi]; default: data extent. |
plotOptions.radialColumn.layers[].color.mid |
number |
Diverging centre. Default: 0. |
plotOptions.radialColumn.layers[].color.stops |
string[] |
Colour stops, low to high. |
plotOptions.radialColumn.layers[].color.reverse |
boolean |
Reverses the colour stops. Default: false. |
plotOptions.radialColumn.layers[].groups |
RadialChordGroup[] |
chord: group definitions (order, names, colours, linked categories) |
plotOptions.radialColumn.layers[].groups[].id |
string |
Group id used in the flows. |
plotOptions.radialColumn.layers[].groups[].name |
string |
Shown name; not set uses the id. |
plotOptions.radialColumn.layers[].groups[].color |
string |
Group colour. |
plotOptions.radialColumn.layers[].groups[].values |
number[] |
per-group values (shown in its tooltip) |
plotOptions.radialColumn.layers[].groups[].link |
string | number | Array<string | number> |
categories (names or indices) of the column ring this group links to (overrides link.map) |
plotOptions.radialColumn.layers[].matrix |
number[][] |
chord: a square flow matrix instead of data; row = source, column = target (with labels) |
plotOptions.radialColumn.layers[].directed |
boolean |
chord: directed flows give each end its own share (A->B and B->A differ) |
plotOptions.radialColumn.layers[].sort |
'none' | 'asc' | 'desc' |
chord: order of the groups around the ring (default: as given) |
plotOptions.radialColumn.layers[].ringWidth |
number |
chord: px width of the group arcs (default: the layer thickness) |
plotOptions.radialColumn.layers[].ribbon |
object |
chord ribbons |
plotOptions.radialColumn.layers[].ribbon.opacity |
number |
Ribbon opacity; not set uses 0.52 (0.6 in dark mode). |
plotOptions.radialColumn.layers[].ribbon.colorMode |
'source' | 'target' | 'gradient' |
Ribbon colour from the 'source' group, the 'target' group, or a 'gradient' between both. Default: 'source'. |
plotOptions.radialColumn.layers[].ribbon.padding |
number |
Gap between the group arcs and the ribbon ends in px. Default: 2. |
plotOptions.radialColumn.layers[].target |
number |
goals: default target of every ring (datum target/max wins; default 100) |
plotOptions.radialColumn.layers[].maxLaps |
number |
goals: laps drawn past 100 % (default 2, i.e. up to 300 %) |
plotOptions.radialColumn.layers[].ringLabels |
boolean |
curved labels on the segments: goals from the ring start (default true); any other layer centred on each segment, upright in the lower half (default false) |
plotOptions.radialColumn.layers[].ringTitles |
boolean |
incident: name the heatmap rings (curved, in the gap outside each ring, at 12 o'clock) and add their colour scales to the key under the ring (default true) |
plotOptions.radialColumn.layers[].legendTitle |
string |
header of this layer's entries in a right-hand legend (e.g. 'Regions'); entries of consecutive layers sharing a title form one group |
plotOptions.radialColumn.layers[].rows |
Array<string | RadialMatrixHeader | RadialVitalsRow> |
matrix: row headers (ids, or definitions with keys / link); default: the ids used in flow data |
plotOptions.radialColumn.layers[].cols |
Array<string | RadialMatrixHeader> |
matrix: column headers; default: the rows (square adjacency matrix) |
plotOptions.radialColumn.layers[].statuses |
Record<string, RadialMatrixStatus> |
matrix: adds or overrides statuses (built in: ok, info, warn, crit, unknown) |
plotOptions.radialColumn.layers[].headers |
object | boolean |
matrix: row / column header labels (false hides them) |
plotOptions.radialColumn.layers[].headers.show |
boolean |
false hides the headers. Default: true. |
plotOptions.radialColumn.layers[].headers.fontSize |
number |
Largest header font size in px; it shrinks to 9 px before labels are cut. Default: theme font size − 1. |
plotOptions.radialColumn.layers[].headers.readability |
RadialReadability |
Label readability of the headers (explicit modes only, e.g. 'pill' / 'halo'). |
plotOptions.radialColumn.layers[].headers.readability.mode |
'none' | 'halo' | 'pill' | 'auto' | 'hide' |
'auto' (default where on): nothing for labels off the marks, a contrasting text colour over one fill, a pill over mixed fills; 'hide' = skip labels that sit on marks |
plotOptions.radialColumn.layers[].headers.readability.fallback |
'pill' | 'halo' | 'hide' |
what 'auto' escalates to over mixed fills or when no text colour reaches minRatio. Default 'pill' |
plotOptions.radialColumn.layers[].headers.readability.enabled |
boolean |
false switches the treatment off for this label kind |
plotOptions.radialColumn.layers[].headers.readability.contrast |
boolean |
swap the text to light/dark when it misses minRatio against what is under it (any mode) |
plotOptions.radialColumn.layers[].headers.readability.minRatio |
number |
WCAG 2 contrast ratio to reach. Default 4.5 |
plotOptions.radialColumn.layers[].headers.readability.light |
string |
text/backdrop colour pair used by contrast and 'auto' fills. Defaults '#ffffff' / '#111827' |
plotOptions.radialColumn.layers[].headers.readability.dark |
string |
Dark colour of the pair. Default: '#111827'. |
plotOptions.radialColumn.layers[].headers.readability.background |
'auto' | string |
colour under the chart; 'auto' = chart.background, else the first opaque ancestor |
plotOptions.radialColumn.layers[].headers.readability.halo |
object |
outline behind the glyphs; blur > 0 makes it a soft glow. Defaults width 3, color 'auto' (chart background), opacity 0.92 |
plotOptions.radialColumn.layers[].headers.readability.halo.width |
number |
Outline width in pixels. Default: 3. |
plotOptions.radialColumn.layers[].headers.readability.halo.color |
'auto' | string |
Outline colour; 'auto' uses the colour under the label or a contrasting one. Default: 'auto'. |
plotOptions.radialColumn.layers[].headers.readability.halo.opacity |
number |
Outline opacity (0 to 1). Default: 0.92. |
plotOptions.radialColumn.layers[].headers.readability.halo.blur |
number |
Blur in pixels; above 0 the outline becomes a soft glow. Default: 0. |
plotOptions.radialColumn.layers[].headers.readability.pill |
object |
backdrop box. padding = [vertical, horizontal]; offset = [dx, dy] px. Defaults fill 'auto', opacity 0.9, radius 4, padding [1, 4] |
plotOptions.radialColumn.layers[].headers.readability.pill.fill |
'auto' | string |
Box colour; 'auto' uses the colour under the label or a contrasting one. Default: 'auto'. |
plotOptions.radialColumn.layers[].headers.readability.pill.opacity |
number |
Box opacity (0 to 1). Default: 0.9. |
plotOptions.radialColumn.layers[].headers.readability.pill.radius |
number |
Corner radius in pixels. Default: 4. |
plotOptions.radialColumn.layers[].headers.readability.pill.padding |
number | [number, number] |
Space around the text in pixels: one number, or [vertical, horizontal]. Default: [1, 4]. |
plotOptions.radialColumn.layers[].headers.readability.pill.stroke |
string |
Outline colour of the box. Default: 'none'. |
plotOptions.radialColumn.layers[].headers.readability.pill.strokeWidth |
number |
Outline width in pixels. Default: 1. |
plotOptions.radialColumn.layers[].headers.readability.pill.offset |
[number, number] |
Shift of the box as [dx, dy] in pixels. Default: [0, 0]. |
plotOptions.radialColumn.layers[].headers.readability.shadow |
object | boolean |
drop shadow on the pill (on the text in halo mode) |
plotOptions.radialColumn.layers[].headers.readability.shadow.dx |
number |
Horizontal shadow offset in pixels. Default: 0. |
plotOptions.radialColumn.layers[].headers.readability.shadow.dy |
number |
Vertical shadow offset in pixels. Default: 1. |
plotOptions.radialColumn.layers[].headers.readability.shadow.blur |
number |
Shadow blur in pixels. Default: 2. |
plotOptions.radialColumn.layers[].headers.readability.shadow.color |
string |
Shadow colour. Default: '#000000'. |
plotOptions.radialColumn.layers[].headers.readability.shadow.opacity |
number |
Shadow opacity (0 to 1). Default: 0.35. |
plotOptions.radialColumn.layers[].headers.readability.raise |
boolean |
axis labels sitting on marks are moved above the series (default true) |
plotOptions.radialColumn.layers[].headers.readability.each |
(info: WccReadabilityInfo) => WccReadability | null | undefined |
per label: return an override (or 'none') for this one label; called only when set |
plotOptions.radialColumn.layers[].values |
boolean | 'auto' |
matrix: print the value inside a cell ('auto': when it fits). Default: 'auto'. |
plotOptions.radialColumn.layers[].minCell |
number |
matrix: smallest cell in px before rows / columns are merged or dropped. Default: 6. |
plotOptions.radialColumn.layers[].overflow |
'aggregate' | 'truncate' |
matrix: rows / columns past minCell merge into one '+N' row / column ('aggregate'), or are dropped with a '+N' note ('truncate'). Default: 'aggregate'. |
plotOptions.radialColumn.layers[].aggregate |
'sum' | 'max' | 'mean' | 'min' | 'median' | 'last' |
matrix: how merged cells and row / column headers combine values (statuses: always the worst). Default: 'sum' (header tooltip 'Total'); use 'max' / 'mean' / 'min' for non-additive cells such as latencies or rates ('Highest', 'Average', 'Lowest'). |
plotOptions.radialColumn.layers[].inset |
number |
matrix: px between the grid (with its headers) and the edge of the centre disc. Default: 6. |
plotOptions.radialColumn.layers[].unit |
string |
matrix: appended to values in cells, tooltip and table; heatmap: appended to the value in the slot tooltip |
plotOptions.radialColumn.layers[].value |
number |
gauge: the value (else data[0]) |
plotOptions.radialColumn.layers[].follow |
string | number | boolean |
gauge: take the latest value of this column series (name, index or true = first); it stays in the ring |
plotOptions.radialColumn.layers[].bandsLow |
RadialVitalsBand[] |
gauge: colour by value band, ascending: [{ to: 60, color }] Span lower-value bands. Missing keeps the generic shared fallback; choose a policy explicitly to avoid a warning. |
plotOptions.radialColumn.layers[].bandsLow[].to |
number |
Upper value of the band (inclusive); omitted on the last band. |
plotOptions.radialColumn.layers[].bandsLow[].level |
0 | 1 | 2 | 3 |
0 = normal ... 3 = highest; colour + pattern. |
plotOptions.radialColumn.layers[].bandsLow[].label |
string |
Text of the band in tooltip and table. |
plotOptions.radialColumn.layers[].bandsLowPolicy |
'high-only' | 'shared' |
Span classification when bandsLow is absent; generic span default is shared, VitalsClock defaults high-only. |
plotOptions.radialColumn.layers[].bands |
RadialVitalsBand[] | Array<{ /** Upper value of the band (inclusive). / to: number /* Arc colour for values in the band. */ color: string }> |
|
plotOptions.radialColumn.layers[].bands[].to |
number |
Upper value of the band (inclusive); omitted on the last band. |
plotOptions.radialColumn.layers[].bands[].level |
0 | 1 | 2 | 3 |
0 = normal ... 3 = highest; colour + pattern. |
plotOptions.radialColumn.layers[].bands[].label |
string |
Text of the band in tooltip and table. |
plotOptions.radialColumn.layers[].formatter |
(value: number) => string |
gauge: value formatter (centre, min/max ticks, tooltip) |
plotOptions.radialColumn.layers[].center |
boolean |
gauge: show the value in the chart centre (default true) |
plotOptions.radialColumn.layers[].scale |
boolean | 'linear' | 'log' |
gauge: min/max labels at the ends of a partial arc (boolean, default true); heatmap: colour scale, 'log' spaces the ramp by ratio (positive values; default 'linear') |
plotOptions.radialColumn.layers[].now |
object | boolean | number | string |
gauge with follow: the 'now' tick over the newest slot (default true) |
plotOptions.radialColumn.layers[].now.label |
string |
Text of the tick. Default: 'now'. |
plotOptions.radialColumn.layers[].now.color |
string |
Tick colour; not set uses the gauge colour. |
plotOptions.radialColumn.layers[].time |
object |
trace / span / vitalsNow (layers/vitals): the window the ring shows, ms or ISO. |
plotOptions.radialColumn.layers[].time.start |
number | string |
|
plotOptions.radialColumn.layers[].time.end |
number | string |
|
plotOptions.radialColumn.layers[].upto |
number |
bands / trace / span (layers/vitals): index of the current slot; later slots are "no data yet". |
plotOptions.radialColumn.layers[].endLabel |
string |
bands (layers/vitals): end label of the last slot (e.g. '24:00'); not set uses the last slot label. |
plotOptions.radialColumn.layers[].gapAfter |
number |
trace / span (layers/vitals): a gap longer than this many minutes breaks the line. Default: 3 slots. |
plotOptions.radialColumn.layers[].alarms |
Array<{ from: number | string, to?: number | string, label?: string }> |
vitalsNow (layers/vitals): caller alarm windows, drawn as wedges. |
plotOptions.radialColumn.layers[].status |
Array<{ name: string, text: string, ago?: number, stale?: boolean }> |
vitalsNow (layers/vitals): last value per parameter in the strip under the ring. |
plotOptions.radialColumn.layers[].note |
string |
vitalsNow (layers/vitals): a note in the strip, e.g. 'Demo data'. |
plotOptions.radialColumn.layers[].mode |
'ridge' | 'overlay' | 'stack' | 'auto' | 'value' | 'status' |
wave: 'ridge' (default) staggers the rows in lanes that rise into the lane behind them; 'overlay' shares one translucent band; 'stack' piles the rows. matrix: 'status' colours cells by severity with patterns; 'auto' (default) = status once any cell has one; 'value' = value scale. |
plotOptions.radialColumn.layers[].overlap |
number |
wave ridge: how far a wave may rise into the lanes behind it, in lane steps (default 0.8; 0 = no overlap) |
plotOptions.radialColumn.layers[].sectors |
number | Array<string | RadialWaveSector> |
wave: the equal sectors (cycles) of the ring - a count, or names / objects in order (default 1) |
plotOptions.radialColumn.layers[].sectorLabels |
boolean |
wave: curved sector names on a band at the inner edge (default true when there are 2+ sectors and room) |
plotOptions.radialColumn.layers[].depth |
number |
wave: shading from crest to base, 0 = flat .. 1 = deep (default 0.55) |
plotOptions.radialColumn.layers[].curve |
'smooth' | 'linear' |
wave: 'smooth' monotone cubic that never overshoots the data (default) or 'linear' |
plotOptions.radialColumn.layers[].anomalies |
RadialWaveAnomaly | false |
wave: anomaly spikes. Default: points outside their envelope. A list adds or relabels points; false = none; { color } recolours the automatic ones |
plotOptions.radialColumn.layers[].anomalies.series |
string |
Row name (layer-level lists; not set = every row). |
plotOptions.radialColumn.layers[].anomalies.at |
number | string |
Point index, or a point label (e.g. 'Wed 18:00'). |
plotOptions.radialColumn.layers[].anomalies.label |
string |
Text in the tooltip, data table and rim marks. |
plotOptions.radialColumn.layers[].anomalies.kind |
string |
Kind shown when there is no label. Default: 'Anomaly' ('Above normal' / 'Below normal' for automatic ones). |
plotOptions.radialColumn.layers[].anomalies.color |
string |
Spike colour. Default: a rose red (lighter in dark mode). |
plotOptions.radialColumn.layerGap |
number |
px between the outermost inner layer and the column ring |
plotOptions.radialColumn.hole |
'auto' | number | string |
radius of the empty centre: 'auto', px, '%' or fraction of the space inside the column ring |
plotOptions.radialColumn.legend |
object |
Legend of series and layer items. |
plotOptions.radialColumn.legend.show |
boolean | 'auto' |
true always shows it; 'auto' from two items. Default: 'auto'. |
plotOptions.radialColumn.legend.position |
'auto' | 'right' | 'bottom' |
'right' or 'bottom'; 'auto' uses the right on wide plots. Default: 'auto'. |
plotOptions.radialColumn.layers[]
One inner layer (RadialColumnLayer), innermost first.
| Option | Type | Description |
|---|---|---|
plotOptions.radialColumn.layers[].type |
'pie' | 'donut' | 'nestedDonut' | 'sunburst' | 'arc' | 'radialBar' | 'polarArea' | 'heatmap' | 'chord' | 'goals' | 'gauge' | 'wave' | 'matrix' | 'incident' | 'bands' | 'trace' | 'span' | 'vitalsNow' |
'radialBar' is an alias of 'arc'; 'chord' is best as the innermost layer (its ribbons fill the centre) |
plotOptions.radialColumn.layers[].name |
string |
Layer name (legend, tooltip, centre label of a gauge). |
plotOptions.radialColumn.layers[].data |
RadialLayerDatum[] | Array<{ /** Ring name. / name?: string /* Segments or cells of the ring (inner first). */ data: Array<RadialLayerDatum | null> }> | Ar… |
pie/donut/arc/polarArea: segments; nestedDonut and heatmap: rings [{ name, data }] or number[][] (innermost first, heatmap cells may be null); sunburst: a node tree; chord: flows [from, to, value] or { from, to, value }; wave: rows RadialWaveSeries[] (or one plain number array = one row) matrix: rows × cols values or status names, flows [row, col, value], or RadialMatrixCell objects incident (west-coast-charts/layers/quint): RadialIncident windows, a wedge across every ring each |
plotOptions.radialColumn.layers[].data[].x |
string |
Name of the segment (alias of name). |
plotOptions.radialColumn.layers[].data[].name |
string |
Name of the segment. |
plotOptions.radialColumn.layers[].data[].y |
number |
Value of the segment (alias of value). |
plotOptions.radialColumn.layers[].data[].value |
number |
Value of the segment. |
plotOptions.radialColumn.layers[].data[].color |
string |
Colour of the segment. |
plotOptions.radialColumn.layers[].data[].max |
number |
Arc and goals layers: value of a full arc for this point. |
plotOptions.radialColumn.layers[].data[].target |
number |
goals: the ring's target (alias of max) |
plotOptions.radialColumn.layers[].data[].trackColor |
string |
goals: track colour of this ring (default: derived from the ring colour) |
plotOptions.radialColumn.layers[].data[].label |
string |
goals: ring label (default: the name) |
plotOptions.radialColumn.layers[].data[].children |
RadialLayerDatum[] |
Sunburst: child segments on the next ring. |
plotOptions.radialColumn.layers[].data[].link |
Array<number | string> |
linked categories (indices or names) |
plotOptions.radialColumn.layers[].data[].keys |
string[] |
semantic keys (e.g. a service id): marks of other layers sharing a key light together; a sunburst parent takes the union of its children |
plotOptions.radialColumn.layers[].data[].values |
Array<number | null> |
this segment's own outer values (filter interaction) |
plotOptions.radialColumn.layers[].data[].from |
string |
Source group id. |
plotOptions.radialColumn.layers[].data[].to |
string |
Target group id. |
plotOptions.radialColumn.layers[].data[].data |
Array<number | null | [unknown, number | null] | { y: number | null }> |
One value per point; null = gap. Numbers, [x, y] or { y }. |
plotOptions.radialColumn.layers[].data[].envelope |
object |
Normal range per point: a soft band behind the wave; points outside it are anomalies. |
plotOptions.radialColumn.layers[].data[].envelope.lo |
Array<number | null> |
Lower bound per point. |
plotOptions.radialColumn.layers[].data[].envelope.hi |
Array<number | null> |
Upper bound per point. |
plotOptions.radialColumn.layers[].data[].forecast |
object |
Forecast per point (usually null up to now): dashed crest, optional hatched range. |
plotOptions.radialColumn.layers[].data[].forecast.data |
Array<number | null> |
Forecast values. |
plotOptions.radialColumn.layers[].data[].forecast.lo |
Array<number | null> |
Lower bound of the forecast range. |
plotOptions.radialColumn.layers[].data[].forecast.hi |
Array<number | null> |
Upper bound of the forecast range. |
plotOptions.radialColumn.layers[].data[].anomalies |
RadialWaveAnomaly[] |
Anomalies of this row (as layer anomalies, without series). |
plotOptions.radialColumn.layers[].data[].anomalies[].series |
string |
Row name (layer-level lists; not set = every row). |
plotOptions.radialColumn.layers[].data[].anomalies[].at |
number | string |
Point index, or a point label (e.g. 'Wed 18:00'). |
plotOptions.radialColumn.layers[].data[].anomalies[].label |
string |
Text in the tooltip, data table and rim marks. |
plotOptions.radialColumn.layers[].data[].anomalies[].kind |
string |
Kind shown when there is no label. Default: 'Anomaly' ('Above normal' / 'Below normal' for automatic ones). |
plotOptions.radialColumn.layers[].data[].anomalies[].color |
string |
Spike colour. Default: a rose red (lighter in dark mode). |
plotOptions.radialColumn.layers[].data[].row |
string |
Row id (or name). |
plotOptions.radialColumn.layers[].data[].col |
string |
Column id (or name). |
plotOptions.radialColumn.layers[].data[].status |
string |
Status name (ok, info, warn, crit, unknown or one of statuses). |
plotOptions.radialColumn.layers[].series |
number | string |
take the data from config.series (index or name) instead; that series leaves the column ring |
plotOptions.radialColumn.layers[].labels |
string[] |
segment names for plain number data; wave: point labels, one per point (e.g. '14:00 Tue') or one per sector point ('14:00', shown as 'Tue 14:00') |
plotOptions.radialColumn.layers[].thickness |
number | string |
ring thickness: px, '30%' of the available radius, or a fraction (0..1) |
plotOptions.radialColumn.layers[].gap |
number |
px between this layer and the one inside it (default 6) |
plotOptions.radialColumn.layers[].ringGap |
number |
px between the rings of a nestedDonut / sunburst / arc layer (default 2) |
plotOptions.radialColumn.layers[].padding |
number |
constant px gap between neighbouring segments |
plotOptions.radialColumn.layers[].corner |
number |
corner radius of segment ends, px |
plotOptions.radialColumn.layers[].colors |
string[] |
Own palette of the layer; heatmap: two or more colours are the ramp stops, low to high. |
plotOptions.radialColumn.layers[].colorBy |
'spectrum' |
colour segments from the column ring's spectrum by angle |
plotOptions.radialColumn.layers[].legend |
boolean |
keep this layer's segments out of the legend |
plotOptions.radialColumn.layers[].link |
RadialColumnLink | boolean | RadialLinkMode |
link to the column ring for this layer: false = none, a mode, or options overriding plotOptions.radialColumn.link |
plotOptions.radialColumn.layers[].link.mode |
'none' | 'category' | 'angle' | 'map' | 'auto' |
auto (default): a datum's own link, else matching category names, else the angle span |
plotOptions.radialColumn.layers[].link.map |
((segment: RadialLinkSegment) => Array<number | string> | null | undefined) | Record<string, Array<number | string>> |
map mode: a function or an object keyed by 'A › B' path or name; values are category indices or names |
plotOptions.radialColumn.layers[].link.interaction |
'highlight' | 'filter' | 'both' |
highlight on hover, filter (cross-filter / values) on click, or both. Default 'highlight' |
plotOptions.radialColumn.layers[].link.bidirectional |
boolean |
hovering a bar also lights its segments (default true) |
plotOptions.radialColumn.layers[].link.align |
boolean |
segments span exactly the angle of their linked bars (default false) |
plotOptions.radialColumn.layers[].link.indicator |
boolean |
bracket arc on the outer edge over the linked bars (default true) |
plotOptions.radialColumn.layers[].link.unit |
string |
what a category is, for tooltips and announcements ('18 of 72 time slots'). Default 'categories'. Name the real unit: categories that combine several things (service × day) are 'service-days', not 'days'. |
plotOptions.radialColumn.layers[].link.basis |
string |
how the categories are composed, appended in brackets ('18 of 140 service-days (10 services × 14 days)'). Default: none |
plotOptions.radialColumn.layers[].align |
boolean |
shorthand for link.align |
plotOptions.radialColumn.layers[].trackColor |
string |
Track colour of arc, goals and gauge layers; not set uses a faint text tone (goals: a tone of the ring colour). |
plotOptions.radialColumn.layers[].startAngle |
number |
degrees, 0 = 12 o'clock, clockwise; default: the chart's range |
plotOptions.radialColumn.layers[].endAngle |
number |
End angle in degrees (same convention as startAngle); not set uses the chart's range. |
plotOptions.radialColumn.layers[].min |
number |
arc layers: value range of a full arc (default 0..100; per point via datum.max); wave: base of the height scale (default min(0, data)) |
plotOptions.radialColumn.layers[].max |
number |
Arc layers: value of a full arc. Default: 100. Wave: top of the height scale (default: the data, envelopes and forecasts rounded up to a nice tick). |
plotOptions.radialColumn.layers[].color |
RadialMatrixScale | string |
heatmap / matrix: base colour of the default ramp (surface tone -> colour -> towards the text colour); colors (2+) overrides the ramp. matrix (value mode) also takes a colour scale. |
plotOptions.radialColumn.layers[].color.scale |
'sequential' | 'diverging' |
'sequential' (low to high) or 'diverging' around mid. Default: 'sequential'. |
plotOptions.radialColumn.layers[].color.domain |
number[] |
[lo, hi] or [lo, mid, hi]; default: data extent. |
plotOptions.radialColumn.layers[].color.mid |
number |
Diverging centre. Default: 0. |
plotOptions.radialColumn.layers[].color.stops |
string[] |
Colour stops, low to high. |
plotOptions.radialColumn.layers[].color.reverse |
boolean |
Reverses the colour stops. Default: false. |
plotOptions.radialColumn.layers[].groups |
RadialChordGroup[] |
chord: group definitions (order, names, colours, linked categories) |
plotOptions.radialColumn.layers[].groups[].id |
string |
Group id used in the flows. |
plotOptions.radialColumn.layers[].groups[].name |
string |
Shown name; not set uses the id. |
plotOptions.radialColumn.layers[].groups[].color |
string |
Group colour. |
plotOptions.radialColumn.layers[].groups[].values |
number[] |
per-group values (shown in its tooltip) |
plotOptions.radialColumn.layers[].groups[].link |
string | number | Array<string | number> |
categories (names or indices) of the column ring this group links to (overrides link.map) |
plotOptions.radialColumn.layers[].matrix |
number[][] |
chord: a square flow matrix instead of data; row = source, column = target (with labels) |
plotOptions.radialColumn.layers[].directed |
boolean |
chord: directed flows give each end its own share (A->B and B->A differ) |
plotOptions.radialColumn.layers[].sort |
'none' | 'asc' | 'desc' |
chord: order of the groups around the ring (default: as given) |
plotOptions.radialColumn.layers[].ringWidth |
number |
chord: px width of the group arcs (default: the layer thickness) |
plotOptions.radialColumn.layers[].ribbon |
object |
chord ribbons |
plotOptions.radialColumn.layers[].ribbon.opacity |
number |
Ribbon opacity; not set uses 0.52 (0.6 in dark mode). |
plotOptions.radialColumn.layers[].ribbon.colorMode |
'source' | 'target' | 'gradient' |
Ribbon colour from the 'source' group, the 'target' group, or a 'gradient' between both. Default: 'source'. |
plotOptions.radialColumn.layers[].ribbon.padding |
number |
Gap between the group arcs and the ribbon ends in px. Default: 2. |
plotOptions.radialColumn.layers[].target |
number |
goals: default target of every ring (datum target/max wins; default 100) |
plotOptions.radialColumn.layers[].maxLaps |
number |
goals: laps drawn past 100 % (default 2, i.e. up to 300 %) |
plotOptions.radialColumn.layers[].ringLabels |
boolean |
curved labels on the segments: goals from the ring start (default true); any other layer centred on each segment, upright in the lower half (default false) |
plotOptions.radialColumn.layers[].ringTitles |
boolean |
incident: name the heatmap rings (curved, in the gap outside each ring, at 12 o'clock) and add their colour scales to the key under the ring (default true) |
plotOptions.radialColumn.layers[].legendTitle |
string |
header of this layer's entries in a right-hand legend (e.g. 'Regions'); entries of consecutive layers sharing a title form one group |
plotOptions.radialColumn.layers[].rows |
Array<string | RadialMatrixHeader | RadialVitalsRow> |
matrix: row headers (ids, or definitions with keys / link); default: the ids used in flow data |
plotOptions.radialColumn.layers[].cols |
Array<string | RadialMatrixHeader> |
matrix: column headers; default: the rows (square adjacency matrix) |
plotOptions.radialColumn.layers[].statuses |
Record<string, RadialMatrixStatus> |
matrix: adds or overrides statuses (built in: ok, info, warn, crit, unknown) |
plotOptions.radialColumn.layers[].headers |
object | boolean |
matrix: row / column header labels (false hides them) |
plotOptions.radialColumn.layers[].headers.show |
boolean |
false hides the headers. Default: true. |
plotOptions.radialColumn.layers[].headers.fontSize |
number |
Largest header font size in px; it shrinks to 9 px before labels are cut. Default: theme font size − 1. |
plotOptions.radialColumn.layers[].headers.readability |
RadialReadability |
Label readability of the headers (explicit modes only, e.g. 'pill' / 'halo'). |
plotOptions.radialColumn.layers[].headers.readability.mode |
'none' | 'halo' | 'pill' | 'auto' | 'hide' |
'auto' (default where on): nothing for labels off the marks, a contrasting text colour over one fill, a pill over mixed fills; 'hide' = skip labels that sit on marks |
plotOptions.radialColumn.layers[].headers.readability.fallback |
'pill' | 'halo' | 'hide' |
what 'auto' escalates to over mixed fills or when no text colour reaches minRatio. Default 'pill' |
plotOptions.radialColumn.layers[].headers.readability.enabled |
boolean |
false switches the treatment off for this label kind |
plotOptions.radialColumn.layers[].headers.readability.contrast |
boolean |
swap the text to light/dark when it misses minRatio against what is under it (any mode) |
plotOptions.radialColumn.layers[].headers.readability.minRatio |
number |
WCAG 2 contrast ratio to reach. Default 4.5 |
plotOptions.radialColumn.layers[].headers.readability.light |
string |
text/backdrop colour pair used by contrast and 'auto' fills. Defaults '#ffffff' / '#111827' |
plotOptions.radialColumn.layers[].headers.readability.dark |
string |
Dark colour of the pair. Default: '#111827'. |
plotOptions.radialColumn.layers[].headers.readability.background |
'auto' | string |
colour under the chart; 'auto' = chart.background, else the first opaque ancestor |
plotOptions.radialColumn.layers[].headers.readability.halo |
object |
outline behind the glyphs; blur > 0 makes it a soft glow. Defaults width 3, color 'auto' (chart background), opacity 0.92 |
plotOptions.radialColumn.layers[].headers.readability.halo.width |
number |
Outline width in pixels. Default: 3. |
plotOptions.radialColumn.layers[].headers.readability.halo.color |
'auto' | string |
Outline colour; 'auto' uses the colour under the label or a contrasting one. Default: 'auto'. |
plotOptions.radialColumn.layers[].headers.readability.halo.opacity |
number |
Outline opacity (0 to 1). Default: 0.92. |
plotOptions.radialColumn.layers[].headers.readability.halo.blur |
number |
Blur in pixels; above 0 the outline becomes a soft glow. Default: 0. |
plotOptions.radialColumn.layers[].headers.readability.pill |
object |
backdrop box. padding = [vertical, horizontal]; offset = [dx, dy] px. Defaults fill 'auto', opacity 0.9, radius 4, padding [1, 4] |
plotOptions.radialColumn.layers[].headers.readability.pill.fill |
'auto' | string |
Box colour; 'auto' uses the colour under the label or a contrasting one. Default: 'auto'. |
plotOptions.radialColumn.layers[].headers.readability.pill.opacity |
number |
Box opacity (0 to 1). Default: 0.9. |
plotOptions.radialColumn.layers[].headers.readability.pill.radius |
number |
Corner radius in pixels. Default: 4. |
plotOptions.radialColumn.layers[].headers.readability.pill.padding |
number | [number, number] |
Space around the text in pixels: one number, or [vertical, horizontal]. Default: [1, 4]. |
plotOptions.radialColumn.layers[].headers.readability.pill.stroke |
string |
Outline colour of the box. Default: 'none'. |
plotOptions.radialColumn.layers[].headers.readability.pill.strokeWidth |
number |
Outline width in pixels. Default: 1. |
plotOptions.radialColumn.layers[].headers.readability.pill.offset |
[number, number] |
Shift of the box as [dx, dy] in pixels. Default: [0, 0]. |
plotOptions.radialColumn.layers[].headers.readability.shadow |
object | boolean |
drop shadow on the pill (on the text in halo mode) |
plotOptions.radialColumn.layers[].headers.readability.shadow.dx |
number |
Horizontal shadow offset in pixels. Default: 0. |
plotOptions.radialColumn.layers[].headers.readability.shadow.dy |
number |
Vertical shadow offset in pixels. Default: 1. |
plotOptions.radialColumn.layers[].headers.readability.shadow.blur |
number |
Shadow blur in pixels. Default: 2. |
plotOptions.radialColumn.layers[].headers.readability.shadow.color |
string |
Shadow colour. Default: '#000000'. |
plotOptions.radialColumn.layers[].headers.readability.shadow.opacity |
number |
Shadow opacity (0 to 1). Default: 0.35. |
plotOptions.radialColumn.layers[].headers.readability.raise |
boolean |
axis labels sitting on marks are moved above the series (default true) |
plotOptions.radialColumn.layers[].headers.readability.each |
(info: WccReadabilityInfo) => WccReadability | null | undefined |
per label: return an override (or 'none') for this one label; called only when set |
plotOptions.radialColumn.layers[].values |
boolean | 'auto' |
matrix: print the value inside a cell ('auto': when it fits). Default: 'auto'. |
plotOptions.radialColumn.layers[].minCell |
number |
matrix: smallest cell in px before rows / columns are merged or dropped. Default: 6. |
plotOptions.radialColumn.layers[].overflow |
'aggregate' | 'truncate' |
matrix: rows / columns past minCell merge into one '+N' row / column ('aggregate'), or are dropped with a '+N' note ('truncate'). Default: 'aggregate'. |
plotOptions.radialColumn.layers[].aggregate |
'sum' | 'max' | 'mean' | 'min' | 'median' | 'last' |
matrix: how merged cells and row / column headers combine values (statuses: always the worst). Default: 'sum' (header tooltip 'Total'); use 'max' / 'mean' / 'min' for non-additive cells such as latencies or rates ('Highest', 'Average', 'Lowest'). |
plotOptions.radialColumn.layers[].inset |
number |
matrix: px between the grid (with its headers) and the edge of the centre disc. Default: 6. |
plotOptions.radialColumn.layers[].unit |
string |
matrix: appended to values in cells, tooltip and table; heatmap: appended to the value in the slot tooltip |
plotOptions.radialColumn.layers[].value |
number |
gauge: the value (else data[0]) |
plotOptions.radialColumn.layers[].follow |
string | number | boolean |
gauge: take the latest value of this column series (name, index or true = first); it stays in the ring |
plotOptions.radialColumn.layers[].bandsLow |
RadialVitalsBand[] |
gauge: colour by value band, ascending: [{ to: 60, color }] Span lower-value bands. Missing keeps the generic shared fallback; choose a policy explicitly to avoid a warning. |
plotOptions.radialColumn.layers[].bandsLow[].to |
number |
Upper value of the band (inclusive); omitted on the last band. |
plotOptions.radialColumn.layers[].bandsLow[].level |
0 | 1 | 2 | 3 |
0 = normal ... 3 = highest; colour + pattern. |
plotOptions.radialColumn.layers[].bandsLow[].label |
string |
Text of the band in tooltip and table. |
plotOptions.radialColumn.layers[].bandsLowPolicy |
'high-only' | 'shared' |
Span classification when bandsLow is absent; generic span default is shared, VitalsClock defaults high-only. |
plotOptions.radialColumn.layers[].bands |
RadialVitalsBand[] | Array<{ /** Upper value of the band (inclusive). / to: number /* Arc colour for values in the band. */ color: string }> |
|
plotOptions.radialColumn.layers[].bands[].to |
number |
Upper value of the band (inclusive); omitted on the last band. |
plotOptions.radialColumn.layers[].bands[].level |
0 | 1 | 2 | 3 |
0 = normal ... 3 = highest; colour + pattern. |
plotOptions.radialColumn.layers[].bands[].label |
string |
Text of the band in tooltip and table. |
plotOptions.radialColumn.layers[].formatter |
(value: number) => string |
gauge: value formatter (centre, min/max ticks, tooltip) |
plotOptions.radialColumn.layers[].center |
boolean |
gauge: show the value in the chart centre (default true) |
plotOptions.radialColumn.layers[].scale |
boolean | 'linear' | 'log' |
gauge: min/max labels at the ends of a partial arc (boolean, default true); heatmap: colour scale, 'log' spaces the ramp by ratio (positive values; default 'linear') |
plotOptions.radialColumn.layers[].now |
object | boolean | number | string |
gauge with follow: the 'now' tick over the newest slot (default true) |
plotOptions.radialColumn.layers[].now.label |
string |
Text of the tick. Default: 'now'. |
plotOptions.radialColumn.layers[].now.color |
string |
Tick colour; not set uses the gauge colour. |
plotOptions.radialColumn.layers[].time |
object |
trace / span / vitalsNow (layers/vitals): the window the ring shows, ms or ISO. |
plotOptions.radialColumn.layers[].time.start |
number | string |
|
plotOptions.radialColumn.layers[].time.end |
number | string |
|
plotOptions.radialColumn.layers[].upto |
number |
bands / trace / span (layers/vitals): index of the current slot; later slots are "no data yet". |
plotOptions.radialColumn.layers[].endLabel |
string |
bands (layers/vitals): end label of the last slot (e.g. '24:00'); not set uses the last slot label. |
plotOptions.radialColumn.layers[].gapAfter |
number |
trace / span (layers/vitals): a gap longer than this many minutes breaks the line. Default: 3 slots. |
plotOptions.radialColumn.layers[].alarms |
Array<{ from: number | string, to?: number | string, label?: string }> |
vitalsNow (layers/vitals): caller alarm windows, drawn as wedges. |
plotOptions.radialColumn.layers[].status |
Array<{ name: string, text: string, ago?: number, stale?: boolean }> |
vitalsNow (layers/vitals): last value per parameter in the strip under the ring. |
plotOptions.radialColumn.layers[].note |
string |
vitalsNow (layers/vitals): a note in the strip, e.g. 'Demo data'. |
plotOptions.radialColumn.layers[].mode |
'ridge' | 'overlay' | 'stack' | 'auto' | 'value' | 'status' |
wave: 'ridge' (default) staggers the rows in lanes that rise into the lane behind them; 'overlay' shares one translucent band; 'stack' piles the rows. matrix: 'status' colours cells by severity with patterns; 'auto' (default) = status once any cell has one; 'value' = value scale. |
plotOptions.radialColumn.layers[].overlap |
number |
wave ridge: how far a wave may rise into the lanes behind it, in lane steps (default 0.8; 0 = no overlap) |
plotOptions.radialColumn.layers[].sectors |
number | Array<string | RadialWaveSector> |
wave: the equal sectors (cycles) of the ring - a count, or names / objects in order (default 1) |
plotOptions.radialColumn.layers[].sectorLabels |
boolean |
wave: curved sector names on a band at the inner edge (default true when there are 2+ sectors and room) |
plotOptions.radialColumn.layers[].depth |
number |
wave: shading from crest to base, 0 = flat .. 1 = deep (default 0.55) |
plotOptions.radialColumn.layers[].curve |
'smooth' | 'linear' |
wave: 'smooth' monotone cubic that never overshoots the data (default) or 'linear' |
plotOptions.radialColumn.layers[].anomalies |
RadialWaveAnomaly | false |
wave: anomaly spikes. Default: points outside their envelope. A list adds or relabels points; false = none; { color } recolours the automatic ones |
plotOptions.radialColumn.layers[].anomalies.series |
string |
Row name (layer-level lists; not set = every row). |
plotOptions.radialColumn.layers[].anomalies.at |
number | string |
Point index, or a point label (e.g. 'Wed 18:00'). |
plotOptions.radialColumn.layers[].anomalies.label |
string |
Text in the tooltip, data table and rim marks. |
plotOptions.radialColumn.layers[].anomalies.kind |
string |
Kind shown when there is no label. Default: 'Anomaly' ('Above normal' / 'Below normal' for automatic ones). |
plotOptions.radialColumn.layers[].anomalies.color |
string |
Spike colour. Default: a rose red (lighter in dark mode). |
Layer data
A segment datum of an inner layer (RadialLayerDatum, object form).
| Option | Type | Description |
|---|---|---|
datum.x |
string |
Name of the segment (alias of name). |
datum.name |
string |
Name of the segment. |
datum.y |
number |
Value of the segment (alias of value). |
datum.value |
number |
Value of the segment. |
datum.color |
string |
Colour of the segment. |
datum.max |
number |
Arc and goals layers: value of a full arc for this point. |
datum.target |
number |
goals: the ring's target (alias of max) |
datum.trackColor |
string |
goals: track colour of this ring (default: derived from the ring colour) |
datum.label |
string |
goals: ring label (default: the name) |
datum.children |
RadialLayerDatum[] |
Sunburst: child segments on the next ring. |
datum.link |
Array<number | string> |
linked categories (indices or names) |
datum.keys |
string[] |
semantic keys (e.g. a service id): marks of other layers sharing a key light together; a sunburst parent takes the union of its children |
datum.values |
Array<number | null> |
this segment's own outer values (filter interaction) |
Chord groups
layers[].groups[] of a chord layer (RadialChordGroup).
| Option | Type | Description |
|---|---|---|
groups[].id |
string |
Group id used in the flows. |
groups[].name |
string |
Shown name; not set uses the id. |
groups[].color |
string |
Group colour. |
groups[].values |
number[] |
per-group values (shown in its tooltip) |
groups[].link |
string | number | Array<string | number> |
categories (names or indices) of the column ring this group links to (overrides link.map) |
plotOptions.quint
Chart types quintTimeline and quintConvergence (WccQuintOptions), premium type module west-coast-charts/layers/quint.
| Option | Type | Description |
|---|---|---|
plotOptions.quint.plugins |
WccPremiumPluginRef[] |
Plugins of this chart: plugin objects, registered names, or [nameOrPlugin, options]. |
plotOptions.quint.plugins[].name |
string |
Plugin id (state key and warnings); not set uses plugin-<index>. |
plotOptions.quint.plugins[].defaults |
object |
Default options of the plugin; the [nameOrPlugin, options] form overrides them. |
plotOptions.quint.plugins[].reserve() |
(p: any): { top?: number; right?: number; bottom?: number; left?: number } | void |
(p) => { top, right, bottom, left }: space in px taken from the plot before layout. |
plotOptions.quint.plugins[].afterRender() |
(p: any): void |
(p): called after each render; draw into p.layer() and bind events with p.on(). |
plotOptions.quint.plugins[].event() |
(name: string, e: Event | null, payload: any, p: any): boolean | void |
(name, e, payload, p): called for every chart event; returning false cancels a cancelable one. |
plotOptions.quint.plugins[].tooltip() |
(content: any, p: any): any |
(content, p) => content: changes the tooltip content (rows, footer, …). |
plotOptions.quint.plugins[].describe() |
(p: any): string |
(p) => string appended to the screen-reader summary. |
plotOptions.quint.plugins[].destroy() |
(p: any): void |
(p): called before each redraw and on destroy. |
plotOptions.quint.time |
object |
The slots: slot i covers start + i × step to start + (i + 1) × step. |
plotOptions.quint.time.start |
string | number |
First slot: ISO string or ms. |
plotOptions.quint.time.step |
number |
Slot length in ms. |
plotOptions.quint.lanes |
WccQuintLane[] |
The lanes, top to bottom. |
plotOptions.quint.lanes[].id |
string |
Lane id; series name it in lane. |
plotOptions.quint.lanes[].kind |
'events' | 'heatmap' | 'budget' | 'lines' | 'stacked' |
'events' columns (counts per slot, colour = error rate), 'heatmap' one strip per series, 'budget' error budget left per series (%), 'lines', 'stacked' areas. |
plotOptions.quint.lanes[].title |
string |
Lane title. Default: the kind's name. |
plotOptions.quint.lanes[].unit |
string |
Unit of the values, used on the lane, in tooltips, the CSV export and describe(): 'requests / 10 min', '€ / h', 'ms', '%'. |
plotOptions.quint.lanes[].aggregate |
'sum' | 'mean' | 'max' | 'min' | 'last' |
How the values add up over time in describe() and the a11y items. Default: events 'sum', budget 'last', others 'mean'. |
plotOptions.quint.lanes[].color |
string |
Lane colour (events columns without errorRate, heatmap ramp). |
plotOptions.quint.lanes[].max |
number |
Upper end of the value axis; not set uses the data. |
plotOptions.quint.lanes[].height |
number |
Lane height in px; not set shares the free height (events 1, lines 1.25, stacked 1). |
plotOptions.quint.markers |
object[] |
Deploys (◆) and pipeline runs (●) on the events lane. The deploy within 2 h before the first incident that shares one of its keys is marked as the likely cause. |
plotOptions.quint.markers[].time |
string | number |
|
plotOptions.quint.markers[].kind |
'deploy' | 'pipeline' |
|
plotOptions.quint.markers[].label |
string |
|
plotOptions.quint.markers[].keys |
string[] | string |
|
plotOptions.quint.markers[].emphasis |
boolean |
|
plotOptions.quint.incidents |
object[] |
Incident bands across all lanes. |
plotOptions.quint.incidents[].from |
string | number |
|
plotOptions.quint.incidents[].to |
string | number |
|
plotOptions.quint.incidents[].label |
string |
|
plotOptions.quint.incidents[].keys |
string[] | string |
|
plotOptions.quint.utc |
boolean |
Time labels in UTC (with "UTC" in the export header) or local time. Default: true. |
plotOptions.quint.errorRate |
object |
Error-rate classes of the events columns in %: below warn, warn–critical, above. Default: { warn: 1, critical: 5 }. |
plotOptions.quint.errorRate.warn |
number |
|
plotOptions.quint.errorRate.critical |
number |
|
plotOptions.quint.lens |
object |
Focus lens: magnifies the time axis between from and to (default: the first incident ± max(3 slots, 30 min)) by factor relative to the rest of the axis (1.5–12, default 4). Values are never changed. Shown as a header chip (a button: click or L toggles it), on the axis and in describe(). Default: on for quintConvergence, off for quintTimeline. |
plotOptions.quint.lens.enabled |
boolean |
|
plotOptions.quint.lens.factor |
number |
|
plotOptions.quint.lens.from |
string | number |
|
plotOptions.quint.lens.to |
string | number |
|
plotOptions.quint.lens.pad |
number |
|
plotOptions.quint.focus |
object |
Incident callouts: one value per lane at the incident, wired to its start. Default: on for quintConvergence. |
plotOptions.quint.focus.enabled |
boolean |
|
plotOptions.quint.crosshair |
boolean |
Shared crosshair over all lanes. Default: true. |
plotOptions.quint.legend |
object |
Legend below the lanes. Default: { show: true }. |
plotOptions.quint.legend.show |
boolean |
plotOptions.quint.lanes[]
One lane (WccQuintLane), top to bottom.
| Option | Type | Description |
|---|---|---|
plotOptions.quint.lanes[].id |
string |
Lane id; series name it in lane. |
plotOptions.quint.lanes[].kind |
'events' | 'heatmap' | 'budget' | 'lines' | 'stacked' |
'events' columns (counts per slot, colour = error rate), 'heatmap' one strip per series, 'budget' error budget left per series (%), 'lines', 'stacked' areas. |
plotOptions.quint.lanes[].title |
string |
Lane title. Default: the kind's name. |
plotOptions.quint.lanes[].unit |
string |
Unit of the values, used on the lane, in tooltips, the CSV export and describe(): 'requests / 10 min', '€ / h', 'ms', '%'. |
plotOptions.quint.lanes[].aggregate |
'sum' | 'mean' | 'max' | 'min' | 'last' |
How the values add up over time in describe() and the a11y items. Default: events 'sum', budget 'last', others 'mean'. |
plotOptions.quint.lanes[].color |
string |
Lane colour (events columns without errorRate, heatmap ramp). |
plotOptions.quint.lanes[].max |
number |
Upper end of the value axis; not set uses the data. |
plotOptions.quint.lanes[].height |
number |
Lane height in px; not set shares the free height (events 1, lines 1.25, stacked 1). |
plotOptions.vitalsClock
Chart type vitalsClock (WccVitalsClockOptions), premium type module west-coast-charts/layers/vitals (guide).
| Option | Type | Description |
|---|---|---|
plotOptions.vitalsClock.plugins |
WccPremiumPluginRef[] |
Plugins of this chart: plugin objects, registered names, or [nameOrPlugin, options]. |
plotOptions.vitalsClock.plugins[].name |
string |
Plugin id (state key and warnings); not set uses plugin-<index>. |
plotOptions.vitalsClock.plugins[].defaults |
object |
Default options of the plugin; the [nameOrPlugin, options] form overrides them. |
plotOptions.vitalsClock.plugins[].reserve() |
(p: any): { top?: number; right?: number; bottom?: number; left?: number } | void |
(p) => { top, right, bottom, left }: space in px taken from the plot before layout. |
plotOptions.vitalsClock.plugins[].afterRender() |
(p: any): void |
(p): called after each render; draw into p.layer() and bind events with p.on(). |
plotOptions.vitalsClock.plugins[].event() |
(name: string, e: Event | null, payload: any, p: any): boolean | void |
(name, e, payload, p): called for every chart event; returning false cancels a cancelable one. |
plotOptions.vitalsClock.plugins[].tooltip() |
(content: any, p: any): any |
(content, p) => content: changes the tooltip content (rows, footer, …). |
plotOptions.vitalsClock.plugins[].describe() |
(p: any): string |
(p) => string appended to the screen-reader summary. |
plotOptions.vitalsClock.plugins[].destroy() |
(p: any): void |
(p): called before each redraw and on destroy. |
plotOptions.vitalsClock.time |
object |
The window: start (ms or ISO), span ('24h', '12h') and slot length ('60min'). |
plotOptions.vitalsClock.time.start |
number | string |
|
plotOptions.vitalsClock.time.span |
string |
|
plotOptions.vitalsClock.time.step |
string |
|
plotOptions.vitalsClock.now |
number | string |
Snapshot cutoff for all measurement channels; future measurements are excluded. |
plotOptions.vitalsClock.followNow |
boolean |
Advance now to later appended measurements. Historical arrivals never move it backwards. Default: false. |
plotOptions.vitalsClock.timeZone |
string |
IANA zone of the labels. Default: the runtime's zone. |
plotOptions.vitalsClock.params |
WccVitalsParam[] |
The parameters, outermost ring first. |
plotOptions.vitalsClock.params[].id |
string |
Parameter id. |
plotOptions.vitalsClock.params[].title |
string |
Ring title, e.g. 'Herzfrequenz'. |
plotOptions.vitalsClock.params[].short |
string |
Short name in the status strip and describe(), e.g. 'HF'. |
plotOptions.vitalsClock.params[].unit |
string |
Unit, e.g. '/min', '%', 'mmHg'. |
plotOptions.vitalsClock.params[].kind |
'columns' | 'cells' | 'trace' | 'range' |
'columns' = the column ring (median per slot), 'cells' = band cells, 'trace' = line at true times, 'range' = high / low pairs. |
plotOptions.vitalsClock.params[].aggregate |
'median' | 'min' | 'max' | 'last' | 'mean' |
Per-slot aggregation for columns and cells. Default: 'median'. |
plotOptions.vitalsClock.params[].bands |
RadialVitalsBand[] |
The caller's threshold bands (no built-in clinical thresholds). |
plotOptions.vitalsClock.params[].bands[].to |
number |
Upper value of the band (inclusive); omitted on the last band. |
plotOptions.vitalsClock.params[].bands[].level |
0 | 1 | 2 | 3 |
0 = normal ... 3 = highest; colour + pattern. |
plotOptions.vitalsClock.params[].bands[].label |
string |
Text of the band in tooltip and table. |
plotOptions.vitalsClock.params[].data |
Array<[number | string, number] | [number | string, number, number]> |
Measurements: [time, value] or, for 'range', [time, high, low]; time = ms or ISO. |
plotOptions.vitalsClock.params[].staleAfter |
number | string |
After this long the last value is shown as stale: minutes, or a duration such as '4h'. |
plotOptions.vitalsClock.params[].decimals |
number |
Decimals at most in labels and tooltips. Default: 1. |
plotOptions.vitalsClock.params[].color |
string |
Ring colour; not set uses the palette. |
plotOptions.vitalsClock.params[].bandsLow |
RadialVitalsBand[] |
'range': caller-supplied bands for the low value, independent of the high-value bands. |
plotOptions.vitalsClock.params[].bandsLow[].to |
number |
Upper value of the band (inclusive); omitted on the last band. |
plotOptions.vitalsClock.params[].bandsLow[].level |
0 | 1 | 2 | 3 |
0 = normal ... 3 = highest; colour + pattern. |
plotOptions.vitalsClock.params[].bandsLow[].label |
string |
Text of the band in tooltip and table. |
plotOptions.vitalsClock.params[].bandsLowPolicy |
'high-only' | 'shared' |
Missing low bands: classify only high (default) or explicitly share high bands. An implicit high-only fallback warns once. |
plotOptions.vitalsClock.params[].gapAfter |
number |
'trace' / 'range': a gap longer than this many minutes breaks the line. Default: 3 slots. |
plotOptions.vitalsClock.params[].min |
number |
Lower end of the value scale. |
plotOptions.vitalsClock.params[].max |
number |
Upper end of the value scale. |
plotOptions.vitalsClock.events |
Array<{ at: number | string, kind?: string, label?: string }> |
Event markers on the dial, e.g. medication. |
plotOptions.vitalsClock.alarms |
Array<{ from: number | string, to?: number | string, label?: string }> |
Caller alarm windows (wedges); never computed by the chart. |
plotOptions.vitalsClock.core |
RadialColumnLayer |
Any radialColumn layer from the caller for the centre, e.g. a 'matrix' of the caller's own scores. |
plotOptions.vitalsClock.core.type |
'pie' | 'donut' | 'nestedDonut' | 'sunburst' | 'arc' | 'radialBar' | 'polarArea' | 'heatmap' | 'chord' | 'goals' | 'gauge' | 'wave' | 'matrix' | 'incident' | 'bands' | 'trace' | 'span' | 'vitalsNow' |
'radialBar' is an alias of 'arc'; 'chord' is best as the innermost layer (its ribbons fill the centre) |
plotOptions.vitalsClock.core.name |
string |
Layer name (legend, tooltip, centre label of a gauge). |
plotOptions.vitalsClock.core.data |
RadialLayerDatum[] | Array<{ /** Ring name. / name?: string /* Segments or cells of the ring (inner first). */ data: Array<RadialLayerDatum | null> }> | Ar… |
pie/donut/arc/polarArea: segments; nestedDonut and heatmap: rings [{ name, data }] or number[][] (innermost first, heatmap cells may be null); sunburst: a node tree; chord: flows [from, to, value] or { from, to, value }; wave: rows RadialWaveSeries[] (or one plain number array = one row) matrix: rows × cols values or status names, flows [row, col, value], or RadialMatrixCell objects incident (west-coast-charts/layers/quint): RadialIncident windows, a wedge across every ring each |
plotOptions.vitalsClock.core.data[].x |
string |
Name of the segment (alias of name). |
plotOptions.vitalsClock.core.data[].name |
string |
Name of the segment. |
plotOptions.vitalsClock.core.data[].y |
number |
Value of the segment (alias of value). |
plotOptions.vitalsClock.core.data[].value |
number |
Value of the segment. |
plotOptions.vitalsClock.core.data[].color |
string |
Colour of the segment. |
plotOptions.vitalsClock.core.data[].max |
number |
Arc and goals layers: value of a full arc for this point. |
plotOptions.vitalsClock.core.data[].target |
number |
goals: the ring's target (alias of max) |
plotOptions.vitalsClock.core.data[].trackColor |
string |
goals: track colour of this ring (default: derived from the ring colour) |
plotOptions.vitalsClock.core.data[].label |
string |
goals: ring label (default: the name) |
plotOptions.vitalsClock.core.data[].children |
RadialLayerDatum[] |
Sunburst: child segments on the next ring. |
plotOptions.vitalsClock.core.data[].link |
Array<number | string> |
linked categories (indices or names) |
plotOptions.vitalsClock.core.data[].keys |
string[] |
semantic keys (e.g. a service id): marks of other layers sharing a key light together; a sunburst parent takes the union of its children |
plotOptions.vitalsClock.core.data[].values |
Array<number | null> |
this segment's own outer values (filter interaction) |
plotOptions.vitalsClock.core.data[].from |
string |
Source group id. |
plotOptions.vitalsClock.core.data[].to |
string |
Target group id. |
plotOptions.vitalsClock.core.data[].data |
Array<number | null | [unknown, number | null] | { y: number | null }> |
One value per point; null = gap. Numbers, [x, y] or { y }. |
plotOptions.vitalsClock.core.data[].envelope |
object |
Normal range per point: a soft band behind the wave; points outside it are anomalies. |
plotOptions.vitalsClock.core.data[].envelope.lo |
Array<number | null> |
Lower bound per point. |
plotOptions.vitalsClock.core.data[].envelope.hi |
Array<number | null> |
Upper bound per point. |
plotOptions.vitalsClock.core.data[].forecast |
object |
Forecast per point (usually null up to now): dashed crest, optional hatched range. |
plotOptions.vitalsClock.core.data[].forecast.data |
Array<number | null> |
Forecast values. |
plotOptions.vitalsClock.core.data[].forecast.lo |
Array<number | null> |
Lower bound of the forecast range. |
plotOptions.vitalsClock.core.data[].forecast.hi |
Array<number | null> |
Upper bound of the forecast range. |
plotOptions.vitalsClock.core.data[].anomalies |
RadialWaveAnomaly[] |
Anomalies of this row (as layer anomalies, without series). |
plotOptions.vitalsClock.core.data[].anomalies[].series |
string |
Row name (layer-level lists; not set = every row). |
plotOptions.vitalsClock.core.data[].anomalies[].at |
number | string |
Point index, or a point label (e.g. 'Wed 18:00'). |
plotOptions.vitalsClock.core.data[].anomalies[].label |
string |
Text in the tooltip, data table and rim marks. |
plotOptions.vitalsClock.core.data[].anomalies[].kind |
string |
Kind shown when there is no label. Default: 'Anomaly' ('Above normal' / 'Below normal' for automatic ones). |
plotOptions.vitalsClock.core.data[].anomalies[].color |
string |
Spike colour. Default: a rose red (lighter in dark mode). |
plotOptions.vitalsClock.core.data[].row |
string |
Row id (or name). |
plotOptions.vitalsClock.core.data[].col |
string |
Column id (or name). |
plotOptions.vitalsClock.core.data[].status |
string |
Status name (ok, info, warn, crit, unknown or one of statuses). |
plotOptions.vitalsClock.core.series |
number | string |
take the data from config.series (index or name) instead; that series leaves the column ring |
plotOptions.vitalsClock.core.labels |
string[] |
segment names for plain number data; wave: point labels, one per point (e.g. '14:00 Tue') or one per sector point ('14:00', shown as 'Tue 14:00') |
plotOptions.vitalsClock.core.thickness |
number | string |
ring thickness: px, '30%' of the available radius, or a fraction (0..1) |
plotOptions.vitalsClock.core.gap |
number |
px between this layer and the one inside it (default 6) |
plotOptions.vitalsClock.core.ringGap |
number |
px between the rings of a nestedDonut / sunburst / arc layer (default 2) |
plotOptions.vitalsClock.core.padding |
number |
constant px gap between neighbouring segments |
plotOptions.vitalsClock.core.corner |
number |
corner radius of segment ends, px |
plotOptions.vitalsClock.core.colors |
string[] |
Own palette of the layer; heatmap: two or more colours are the ramp stops, low to high. |
plotOptions.vitalsClock.core.colorBy |
'spectrum' |
colour segments from the column ring's spectrum by angle |
plotOptions.vitalsClock.core.legend |
boolean |
keep this layer's segments out of the legend |
plotOptions.vitalsClock.core.link |
RadialColumnLink | boolean | RadialLinkMode |
link to the column ring for this layer: false = none, a mode, or options overriding plotOptions.radialColumn.link |
plotOptions.vitalsClock.core.link.mode |
'none' | 'category' | 'angle' | 'map' | 'auto' |
auto (default): a datum's own link, else matching category names, else the angle span |
plotOptions.vitalsClock.core.link.map |
((segment: RadialLinkSegment) => Array<number | string> | null | undefined) | Record<string, Array<number | string>> |
map mode: a function or an object keyed by 'A › B' path or name; values are category indices or names |
plotOptions.vitalsClock.core.link.interaction |
'highlight' | 'filter' | 'both' |
highlight on hover, filter (cross-filter / values) on click, or both. Default 'highlight' |
plotOptions.vitalsClock.core.link.bidirectional |
boolean |
hovering a bar also lights its segments (default true) |
plotOptions.vitalsClock.core.link.align |
boolean |
segments span exactly the angle of their linked bars (default false) |
plotOptions.vitalsClock.core.link.indicator |
boolean |
bracket arc on the outer edge over the linked bars (default true) |
plotOptions.vitalsClock.core.link.unit |
string |
what a category is, for tooltips and announcements ('18 of 72 time slots'). Default 'categories'. Name the real unit: categories that combine several things (service × day) are 'service-days', not 'days'. |
plotOptions.vitalsClock.core.link.basis |
string |
how the categories are composed, appended in brackets ('18 of 140 service-days (10 services × 14 days)'). Default: none |
plotOptions.vitalsClock.core.align |
boolean |
shorthand for link.align |
plotOptions.vitalsClock.core.trackColor |
string |
Track colour of arc, goals and gauge layers; not set uses a faint text tone (goals: a tone of the ring colour). |
plotOptions.vitalsClock.core.startAngle |
number |
degrees, 0 = 12 o'clock, clockwise; default: the chart's range |
plotOptions.vitalsClock.core.endAngle |
number |
End angle in degrees (same convention as startAngle); not set uses the chart's range. |
plotOptions.vitalsClock.core.min |
number |
arc layers: value range of a full arc (default 0..100; per point via datum.max); wave: base of the height scale (default min(0, data)) |
plotOptions.vitalsClock.core.max |
number |
Arc layers: value of a full arc. Default: 100. Wave: top of the height scale (default: the data, envelopes and forecasts rounded up to a nice tick). |
plotOptions.vitalsClock.core.color |
RadialMatrixScale | string |
heatmap / matrix: base colour of the default ramp (surface tone -> colour -> towards the text colour); colors (2+) overrides the ramp. matrix (value mode) also takes a colour scale. |
plotOptions.vitalsClock.core.color.scale |
'sequential' | 'diverging' |
'sequential' (low to high) or 'diverging' around mid. Default: 'sequential'. |
plotOptions.vitalsClock.core.color.domain |
number[] |
[lo, hi] or [lo, mid, hi]; default: data extent. |
plotOptions.vitalsClock.core.color.mid |
number |
Diverging centre. Default: 0. |
plotOptions.vitalsClock.core.color.stops |
string[] |
Colour stops, low to high. |
plotOptions.vitalsClock.core.color.reverse |
boolean |
Reverses the colour stops. Default: false. |
plotOptions.vitalsClock.core.groups |
RadialChordGroup[] |
chord: group definitions (order, names, colours, linked categories) |
plotOptions.vitalsClock.core.groups[].id |
string |
Group id used in the flows. |
plotOptions.vitalsClock.core.groups[].name |
string |
Shown name; not set uses the id. |
plotOptions.vitalsClock.core.groups[].color |
string |
Group colour. |
plotOptions.vitalsClock.core.groups[].values |
number[] |
per-group values (shown in its tooltip) |
plotOptions.vitalsClock.core.groups[].link |
string | number | Array<string | number> |
categories (names or indices) of the column ring this group links to (overrides link.map) |
plotOptions.vitalsClock.core.matrix |
number[][] |
chord: a square flow matrix instead of data; row = source, column = target (with labels) |
plotOptions.vitalsClock.core.directed |
boolean |
chord: directed flows give each end its own share (A->B and B->A differ) |
plotOptions.vitalsClock.core.sort |
'none' | 'asc' | 'desc' |
chord: order of the groups around the ring (default: as given) |
plotOptions.vitalsClock.core.ringWidth |
number |
chord: px width of the group arcs (default: the layer thickness) |
plotOptions.vitalsClock.core.ribbon |
object |
chord ribbons |
plotOptions.vitalsClock.core.ribbon.opacity |
number |
Ribbon opacity; not set uses 0.52 (0.6 in dark mode). |
plotOptions.vitalsClock.core.ribbon.colorMode |
'source' | 'target' | 'gradient' |
Ribbon colour from the 'source' group, the 'target' group, or a 'gradient' between both. Default: 'source'. |
plotOptions.vitalsClock.core.ribbon.padding |
number |
Gap between the group arcs and the ribbon ends in px. Default: 2. |
plotOptions.vitalsClock.core.target |
number |
goals: default target of every ring (datum target/max wins; default 100) |
plotOptions.vitalsClock.core.maxLaps |
number |
goals: laps drawn past 100 % (default 2, i.e. up to 300 %) |
plotOptions.vitalsClock.core.ringLabels |
boolean |
curved labels on the segments: goals from the ring start (default true); any other layer centred on each segment, upright in the lower half (default false) |
plotOptions.vitalsClock.core.ringTitles |
boolean |
incident: name the heatmap rings (curved, in the gap outside each ring, at 12 o'clock) and add their colour scales to the key under the ring (default true) |
plotOptions.vitalsClock.core.legendTitle |
string |
header of this layer's entries in a right-hand legend (e.g. 'Regions'); entries of consecutive layers sharing a title form one group |
plotOptions.vitalsClock.core.rows |
Array<string | RadialMatrixHeader | RadialVitalsRow> |
matrix: row headers (ids, or definitions with keys / link); default: the ids used in flow data |
plotOptions.vitalsClock.core.cols |
Array<string | RadialMatrixHeader> |
matrix: column headers; default: the rows (square adjacency matrix) |
plotOptions.vitalsClock.core.statuses |
Record<string, RadialMatrixStatus> |
matrix: adds or overrides statuses (built in: ok, info, warn, crit, unknown) |
plotOptions.vitalsClock.core.headers |
object | boolean |
matrix: row / column header labels (false hides them) |
plotOptions.vitalsClock.core.headers.show |
boolean |
false hides the headers. Default: true. |
plotOptions.vitalsClock.core.headers.fontSize |
number |
Largest header font size in px; it shrinks to 9 px before labels are cut. Default: theme font size − 1. |
plotOptions.vitalsClock.core.headers.readability |
RadialReadability |
Label readability of the headers (explicit modes only, e.g. 'pill' / 'halo'). |
plotOptions.vitalsClock.core.headers.readability.mode |
'none' | 'halo' | 'pill' | 'auto' | 'hide' |
'auto' (default where on): nothing for labels off the marks, a contrasting text colour over one fill, a pill over mixed fills; 'hide' = skip labels that sit on marks |
plotOptions.vitalsClock.core.headers.readability.fallback |
'pill' | 'halo' | 'hide' |
what 'auto' escalates to over mixed fills or when no text colour reaches minRatio. Default 'pill' |
plotOptions.vitalsClock.core.headers.readability.enabled |
boolean |
false switches the treatment off for this label kind |
plotOptions.vitalsClock.core.headers.readability.contrast |
boolean |
swap the text to light/dark when it misses minRatio against what is under it (any mode) |
plotOptions.vitalsClock.core.headers.readability.minRatio |
number |
WCAG 2 contrast ratio to reach. Default 4.5 |
plotOptions.vitalsClock.core.headers.readability.light |
string |
text/backdrop colour pair used by contrast and 'auto' fills. Defaults '#ffffff' / '#111827' |
plotOptions.vitalsClock.core.headers.readability.dark |
string |
Dark colour of the pair. Default: '#111827'. |
plotOptions.vitalsClock.core.headers.readability.background |
'auto' | string |
colour under the chart; 'auto' = chart.background, else the first opaque ancestor |
plotOptions.vitalsClock.core.headers.readability.halo |
object |
outline behind the glyphs; blur > 0 makes it a soft glow. Defaults width 3, color 'auto' (chart background), opacity 0.92 |
plotOptions.vitalsClock.core.headers.readability.halo.width |
number |
Outline width in pixels. Default: 3. |
plotOptions.vitalsClock.core.headers.readability.halo.color |
'auto' | string |
Outline colour; 'auto' uses the colour under the label or a contrasting one. Default: 'auto'. |
plotOptions.vitalsClock.core.headers.readability.halo.opacity |
number |
Outline opacity (0 to 1). Default: 0.92. |
plotOptions.vitalsClock.core.headers.readability.halo.blur |
number |
Blur in pixels; above 0 the outline becomes a soft glow. Default: 0. |
plotOptions.vitalsClock.core.headers.readability.pill |
object |
backdrop box. padding = [vertical, horizontal]; offset = [dx, dy] px. Defaults fill 'auto', opacity 0.9, radius 4, padding [1, 4] |
plotOptions.vitalsClock.core.headers.readability.pill.fill |
'auto' | string |
Box colour; 'auto' uses the colour under the label or a contrasting one. Default: 'auto'. |
plotOptions.vitalsClock.core.headers.readability.pill.opacity |
number |
Box opacity (0 to 1). Default: 0.9. |
plotOptions.vitalsClock.core.headers.readability.pill.radius |
number |
Corner radius in pixels. Default: 4. |
plotOptions.vitalsClock.core.headers.readability.pill.padding |
number | [number, number] |
Space around the text in pixels: one number, or [vertical, horizontal]. Default: [1, 4]. |
plotOptions.vitalsClock.core.headers.readability.pill.stroke |
string |
Outline colour of the box. Default: 'none'. |
plotOptions.vitalsClock.core.headers.readability.pill.strokeWidth |
number |
Outline width in pixels. Default: 1. |
plotOptions.vitalsClock.core.headers.readability.pill.offset |
[number, number] |
Shift of the box as [dx, dy] in pixels. Default: [0, 0]. |
plotOptions.vitalsClock.core.headers.readability.shadow |
object | boolean |
drop shadow on the pill (on the text in halo mode) |
plotOptions.vitalsClock.core.headers.readability.shadow.dx |
number |
Horizontal shadow offset in pixels. Default: 0. |
plotOptions.vitalsClock.core.headers.readability.shadow.dy |
number |
Vertical shadow offset in pixels. Default: 1. |
plotOptions.vitalsClock.core.headers.readability.shadow.blur |
number |
Shadow blur in pixels. Default: 2. |
plotOptions.vitalsClock.core.headers.readability.shadow.color |
string |
Shadow colour. Default: '#000000'. |
plotOptions.vitalsClock.core.headers.readability.shadow.opacity |
number |
Shadow opacity (0 to 1). Default: 0.35. |
plotOptions.vitalsClock.core.headers.readability.raise |
boolean |
axis labels sitting on marks are moved above the series (default true) |
plotOptions.vitalsClock.core.headers.readability.each |
(info: WccReadabilityInfo) => WccReadability | null | undefined |
per label: return an override (or 'none') for this one label; called only when set |
plotOptions.vitalsClock.core.values |
boolean | 'auto' |
matrix: print the value inside a cell ('auto': when it fits). Default: 'auto'. |
plotOptions.vitalsClock.core.minCell |
number |
matrix: smallest cell in px before rows / columns are merged or dropped. Default: 6. |
plotOptions.vitalsClock.core.overflow |
'aggregate' | 'truncate' |
matrix: rows / columns past minCell merge into one '+N' row / column ('aggregate'), or are dropped with a '+N' note ('truncate'). Default: 'aggregate'. |
plotOptions.vitalsClock.core.aggregate |
'sum' | 'max' | 'mean' | 'min' | 'median' | 'last' |
matrix: how merged cells and row / column headers combine values (statuses: always the worst). Default: 'sum' (header tooltip 'Total'); use 'max' / 'mean' / 'min' for non-additive cells such as latencies or rates ('Highest', 'Average', 'Lowest'). |
plotOptions.vitalsClock.core.inset |
number |
matrix: px between the grid (with its headers) and the edge of the centre disc. Default: 6. |
plotOptions.vitalsClock.core.unit |
string |
matrix: appended to values in cells, tooltip and table; heatmap: appended to the value in the slot tooltip |
plotOptions.vitalsClock.core.value |
number |
gauge: the value (else data[0]) |
plotOptions.vitalsClock.core.follow |
string | number | boolean |
gauge: take the latest value of this column series (name, index or true = first); it stays in the ring |
plotOptions.vitalsClock.core.bandsLow |
RadialVitalsBand[] |
gauge: colour by value band, ascending: [{ to: 60, color }] Span lower-value bands. Missing keeps the generic shared fallback; choose a policy explicitly to avoid a warning. |
plotOptions.vitalsClock.core.bandsLow[].to |
number |
Upper value of the band (inclusive); omitted on the last band. |
plotOptions.vitalsClock.core.bandsLow[].level |
0 | 1 | 2 | 3 |
0 = normal ... 3 = highest; colour + pattern. |
plotOptions.vitalsClock.core.bandsLow[].label |
string |
Text of the band in tooltip and table. |
plotOptions.vitalsClock.core.bandsLowPolicy |
'high-only' | 'shared' |
Span classification when bandsLow is absent; generic span default is shared, VitalsClock defaults high-only. |
plotOptions.vitalsClock.core.bands |
RadialVitalsBand[] | Array<{ /** Upper value of the band (inclusive). / to: number /* Arc colour for values in the band. */ color: string }> |
|
plotOptions.vitalsClock.core.bands[].to |
number |
Upper value of the band (inclusive); omitted on the last band. |
plotOptions.vitalsClock.core.bands[].level |
0 | 1 | 2 | 3 |
0 = normal ... 3 = highest; colour + pattern. |
plotOptions.vitalsClock.core.bands[].label |
string |
Text of the band in tooltip and table. |
plotOptions.vitalsClock.core.formatter |
(value: number) => string |
gauge: value formatter (centre, min/max ticks, tooltip) |
plotOptions.vitalsClock.core.center |
boolean |
gauge: show the value in the chart centre (default true) |
plotOptions.vitalsClock.core.scale |
boolean | 'linear' | 'log' |
gauge: min/max labels at the ends of a partial arc (boolean, default true); heatmap: colour scale, 'log' spaces the ramp by ratio (positive values; default 'linear') |
plotOptions.vitalsClock.core.now |
object | boolean | number | string |
gauge with follow: the 'now' tick over the newest slot (default true) |
plotOptions.vitalsClock.core.now.label |
string |
Text of the tick. Default: 'now'. |
plotOptions.vitalsClock.core.now.color |
string |
Tick colour; not set uses the gauge colour. |
plotOptions.vitalsClock.core.time |
object |
trace / span / vitalsNow (layers/vitals): the window the ring shows, ms or ISO. |
plotOptions.vitalsClock.core.time.start |
number | string |
|
plotOptions.vitalsClock.core.time.end |
number | string |
|
plotOptions.vitalsClock.core.upto |
number |
bands / trace / span (layers/vitals): index of the current slot; later slots are "no data yet". |
plotOptions.vitalsClock.core.endLabel |
string |
bands (layers/vitals): end label of the last slot (e.g. '24:00'); not set uses the last slot label. |
plotOptions.vitalsClock.core.gapAfter |
number |
trace / span (layers/vitals): a gap longer than this many minutes breaks the line. Default: 3 slots. |
plotOptions.vitalsClock.core.alarms |
Array<{ from: number | string, to?: number | string, label?: string }> |
vitalsNow (layers/vitals): caller alarm windows, drawn as wedges. |
plotOptions.vitalsClock.core.status |
Array<{ name: string, text: string, ago?: number, stale?: boolean }> |
vitalsNow (layers/vitals): last value per parameter in the strip under the ring. |
plotOptions.vitalsClock.core.note |
string |
vitalsNow (layers/vitals): a note in the strip, e.g. 'Demo data'. |
plotOptions.vitalsClock.core.mode |
'ridge' | 'overlay' | 'stack' | 'auto' | 'value' | 'status' |
wave: 'ridge' (default) staggers the rows in lanes that rise into the lane behind them; 'overlay' shares one translucent band; 'stack' piles the rows. matrix: 'status' colours cells by severity with patterns; 'auto' (default) = status once any cell has one; 'value' = value scale. |
plotOptions.vitalsClock.core.overlap |
number |
wave ridge: how far a wave may rise into the lanes behind it, in lane steps (default 0.8; 0 = no overlap) |
plotOptions.vitalsClock.core.sectors |
number | Array<string | RadialWaveSector> |
wave: the equal sectors (cycles) of the ring - a count, or names / objects in order (default 1) |
plotOptions.vitalsClock.core.sectorLabels |
boolean |
wave: curved sector names on a band at the inner edge (default true when there are 2+ sectors and room) |
plotOptions.vitalsClock.core.depth |
number |
wave: shading from crest to base, 0 = flat .. 1 = deep (default 0.55) |
plotOptions.vitalsClock.core.curve |
'smooth' | 'linear' |
wave: 'smooth' monotone cubic that never overshoots the data (default) or 'linear' |
plotOptions.vitalsClock.core.anomalies |
RadialWaveAnomaly | false |
wave: anomaly spikes. Default: points outside their envelope. A list adds or relabels points; false = none; { color } recolours the automatic ones |
plotOptions.vitalsClock.core.anomalies.series |
string |
Row name (layer-level lists; not set = every row). |
plotOptions.vitalsClock.core.anomalies.at |
number | string |
Point index, or a point label (e.g. 'Wed 18:00'). |
plotOptions.vitalsClock.core.anomalies.label |
string |
Text in the tooltip, data table and rim marks. |
plotOptions.vitalsClock.core.anomalies.kind |
string |
Kind shown when there is no label. Default: 'Anomaly' ('Above normal' / 'Below normal' for automatic ones). |
plotOptions.vitalsClock.core.anomalies.color |
string |
Spike colour. Default: a rose red (lighter in dark mode). |
plotOptions.vitalsClock.demo |
boolean | string |
Marks the chart as demo data (status strip and describe()). |
plotOptions.vitalsClock.radialColumn |
RadialColumnOptions |
radialColumn options passed through. |
plotOptions.vitalsClock.radialColumn.readabilityWarnings |
boolean |
Warn once if inner rings are thinner than 8 px or heat cells below 2 px per slot. No values/layers are removed. Default: true. |
plotOptions.vitalsClock.radialColumn.aggregate |
'sum' | 'mean' | 'max' | 'min' | 'none' |
how the column values combine in the centre, the generated description, tooltip footers and the filter note. 'sum' (default) adds them into a Total — right for counts and amounts only. Use 'max' / 'min' for latencies and percentiles ('Highest p95 latency (ms): 412 (Matching · 20:00)'), 'mean' for rates, percentages and scores, 'none' to name no combined number at all. |
plotOptions.vitalsClock.radialColumn.link |
RadialColumnLink | RadialLinkMode |
links between inner layers and the column ring (a mode string or options) |
plotOptions.vitalsClock.radialColumn.link.mode |
'none' | 'category' | 'angle' | 'map' | 'auto' |
auto (default): a datum's own link, else matching category names, else the angle span |
plotOptions.vitalsClock.radialColumn.link.map |
((segment: RadialLinkSegment) => Array<number | string> | null | undefined) | Record<string, Array<number | string>> |
map mode: a function or an object keyed by 'A › B' path or name; values are category indices or names |
plotOptions.vitalsClock.radialColumn.link.interaction |
'highlight' | 'filter' | 'both' |
highlight on hover, filter (cross-filter / values) on click, or both. Default 'highlight' |
plotOptions.vitalsClock.radialColumn.link.bidirectional |
boolean |
hovering a bar also lights its segments (default true) |
plotOptions.vitalsClock.radialColumn.link.align |
boolean |
segments span exactly the angle of their linked bars (default false) |
plotOptions.vitalsClock.radialColumn.link.indicator |
boolean |
bracket arc on the outer edge over the linked bars (default true) |
plotOptions.vitalsClock.radialColumn.link.unit |
string |
what a category is, for tooltips and announcements ('18 of 72 time slots'). Default 'categories'. Name the real unit: categories that combine several things (service × day) are 'service-days', not 'days'. |
plotOptions.vitalsClock.radialColumn.link.basis |
string |
how the categories are composed, appended in brackets ('18 of 140 service-days (10 services × 14 days)'). Default: none |
plotOptions.vitalsClock.radialColumn.encode |
RadialColumnEncode |
bind colour / delta / length to separate metrics |
plotOptions.vitalsClock.radialColumn.encode.angle |
string |
name of the angular dimension for the guide (default: xaxis.title.text or 'Category') |
plotOptions.vitalsClock.radialColumn.encode.length |
'value' | string |
bar length: 'value' (default) or a datum field |
plotOptions.vitalsClock.radialColumn.encode.color |
RadialEncodeChannel | string |
bar colour = a separate metric |
plotOptions.vitalsClock.radialColumn.encode.color.field |
string |
Datum field of the metric (datum.meta[field] or datum[field]). |
plotOptions.vitalsClock.radialColumn.encode.color.values |
Array<number | null> |
One value per category instead of a field. |
plotOptions.vitalsClock.radialColumn.encode.color.name |
string |
legend / tooltip name (default: the field) |
plotOptions.vitalsClock.radialColumn.encode.color.unit |
string |
appended to values: '%' sticks, other units get a space |
plotOptions.vitalsClock.radialColumn.encode.color.decimals |
number |
Decimals of the shown values; not set uses 0 from 100, 1 from 10, else 2. |
plotOptions.vitalsClock.radialColumn.encode.color.format |
(value: number) => string |
(value) => string for the shown values (wins over decimals and unit). |
plotOptions.vitalsClock.radialColumn.encode.color.legend |
boolean |
false: no key in the strip under the ring (default true) |
plotOptions.vitalsClock.radialColumn.encode.color.show |
boolean |
false switches the channel off. Default: true. |
plotOptions.vitalsClock.radialColumn.encode.color.scale |
'sequential' | 'diverging' |
'sequential' (low to high) or 'diverging' around mid. Default: 'sequential'. |
plotOptions.vitalsClock.radialColumn.encode.color.domain |
number[] |
[lo, hi] or [lo, mid, hi]; default: data extent (diverging: symmetric around mid) |
plotOptions.vitalsClock.radialColumn.encode.color.mid |
number |
diverging centre (default 0) |
plotOptions.vitalsClock.radialColumn.encode.color.stops |
string[] |
Colour stops; not set uses ['#2dd4bf', '#facc15', '#f43f5e'] (diverging: blue, a neutral tone, orange). |
plotOptions.vitalsClock.radialColumn.encode.color.reverse |
boolean |
Reverses the colour stops. Default: false. |
plotOptions.vitalsClock.radialColumn.encode.delta |
RadialEncodeChannel | string |
change vs a previous period outside the bars |
plotOptions.vitalsClock.radialColumn.encode.delta.field |
string |
Datum field of the metric (datum.meta[field] or datum[field]). |
plotOptions.vitalsClock.radialColumn.encode.delta.values |
Array<number | null> |
One value per category instead of a field. |
plotOptions.vitalsClock.radialColumn.encode.delta.name |
string |
legend / tooltip name (default: the field) |
plotOptions.vitalsClock.radialColumn.encode.delta.unit |
string |
appended to values: '%' sticks, other units get a space |
plotOptions.vitalsClock.radialColumn.encode.delta.decimals |
number |
Decimals of the shown values; not set uses 0 from 100, 1 from 10, else 2. |
plotOptions.vitalsClock.radialColumn.encode.delta.format |
(value: number) => string |
(value) => string for the shown values (wins over decimals and unit). |
plotOptions.vitalsClock.radialColumn.encode.delta.legend |
boolean |
false: no key in the strip under the ring (default true) |
plotOptions.vitalsClock.radialColumn.encode.delta.show |
boolean |
false switches the channel off. Default: true. |
plotOptions.vitalsClock.radialColumn.encode.delta.style |
'band' | 'ticks' | 'bars' |
band: thin coloured ring; ticks: marks at the bar tips; bars: signed mini bars (out = up, in = down) |
plotOptions.vitalsClock.radialColumn.encode.delta.colors |
object |
Colours of increases and decreases. |
plotOptions.vitalsClock.radialColumn.encode.delta.colors.up |
string |
Colour of increases. Default: '#22c55e'. |
plotOptions.vitalsClock.radialColumn.encode.delta.colors.down |
string |
Colour of decreases. Default: '#f43f5e'. |
plotOptions.vitalsClock.radialColumn.encode.delta.max |
number |
|value| of full intensity / length (default: largest |value|) |
plotOptions.vitalsClock.radialColumn.encode.guide |
object | boolean |
'?' button with a 'how to read' panel listing every bound channel |
plotOptions.vitalsClock.radialColumn.encode.guide.show |
boolean |
false hides the guide button. Default: true. |
plotOptions.vitalsClock.radialColumn.encode.guide.open |
boolean | 'always' |
start open (true: only when the chart is >= 560 px wide; 'always') |
plotOptions.vitalsClock.radialColumn.markers |
Array<{ at: number | string label?: string kind?: string color?: string shape?: 'dot' | 'diamond' }> |
rim marks (deploys, pipeline runs, incidents): a small glyph outside the bars at a slot, a tooltip row on that slot and a guide row |
plotOptions.vitalsClock.radialColumn.startAngle |
number |
degrees, 0 = 12 o'clock, clockwise; a partial range gives a gauge |
plotOptions.vitalsClock.radialColumn.endAngle |
number |
End of the range in degrees (same convention as startAngle). Default: 360. |
plotOptions.vitalsClock.radialColumn.innerRadius |
'auto' | number | string |
base radius of the bars: 'auto', px, '40%' or a fraction of the outer radius |
plotOptions.vitalsClock.radialColumn.barPadding |
'auto' | number |
gap between neighbouring slots: 'auto' or a fraction of the slot (0..0.9) |
plotOptions.vitalsClock.radialColumn.groupPadding |
number |
gap between the bars of one slot when grouped (fraction) |
plotOptions.vitalsClock.radialColumn.stacked |
boolean |
stack series outward (falls back to chart.stacked) |
plotOptions.vitalsClock.radialColumn.stackGap |
number |
Gap between stacked segments in px. Default: 1. |
plotOptions.vitalsClock.radialColumn.rounded |
boolean |
rounded bar ends |
plotOptions.vitalsClock.radialColumn.fill |
object |
Bar colours. |
plotOptions.vitalsClock.radialColumn.fill.type |
'auto' | 'spectrum' | 'series' | 'value' |
auto: spectrum for one uncoloured series, else series colours |
plotOptions.vitalsClock.radialColumn.fill.stops |
string[] |
gradient stops (spectrum by angle, value by magnitude) |
plotOptions.vitalsClock.radialColumn.fill.ranges |
object[] |
type 'value': fixed colours for value ranges (inclusive); values outside every range use the stops |
plotOptions.vitalsClock.radialColumn.fill.ranges[].from |
number |
Lowest value of the range (inclusive). |
plotOptions.vitalsClock.radialColumn.fill.ranges[].to |
number |
Highest value of the range (inclusive). |
plotOptions.vitalsClock.radialColumn.fill.ranges[].color |
string |
Colour of bars in the range. |
plotOptions.vitalsClock.radialColumn.fill.fade |
number |
inner fade of the bars, 0..1 (0 = off) |
plotOptions.vitalsClock.radialColumn.track |
object |
Background track behind the bars. |
plotOptions.vitalsClock.radialColumn.track.show |
boolean |
Shows the track. Default: false. |
plotOptions.vitalsClock.radialColumn.track.color |
string |
Track colour; not set uses a faint text tone. |
plotOptions.vitalsClock.radialColumn.baseline |
object |
Zero ring. |
plotOptions.vitalsClock.radialColumn.baseline.show |
boolean |
Draws the ring at value 0. Default: true. |
plotOptions.vitalsClock.radialColumn.valueAxis |
object |
Value scale of the bars. |
plotOptions.vitalsClock.radialColumn.valueAxis.show |
boolean |
false hides the grid rings and value labels. Default: true. |
plotOptions.vitalsClock.radialColumn.valueAxis.min |
number |
Fixed lower end; not set uses the data. |
plotOptions.vitalsClock.radialColumn.valueAxis.max |
number |
Fixed upper end; not set uses the data. |
plotOptions.vitalsClock.radialColumn.valueAxis.tickAmount |
number |
Target number of tick steps. Default: 4. |
plotOptions.vitalsClock.radialColumn.valueAxis.nice |
boolean |
round free ends to the tightest whole tick step (3-6 ticks); false = data extent. Default true |
plotOptions.vitalsClock.radialColumn.valueAxis.rings |
boolean |
Draws the grid rings at the ticks (the value labels sit on them). Default: true. |
plotOptions.vitalsClock.radialColumn.valueAxis.labels |
object |
Tick labels of the value scale. |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.show |
boolean |
Shows the tick labels. Default: true. |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.formatter |
(value: number) => string |
(value, { w }) => string; not set uses a compact number. |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.readability |
RadialReadability |
labels that sit on bars: 'auto' (default) = untouched off the bars, contrasting colour over one fill, pill over mixed fills; 'none' = off. Layered over chart.readability |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.readability.mode |
'none' | 'halo' | 'pill' | 'auto' | 'hide' |
'auto' (default where on): nothing for labels off the marks, a contrasting text colour over one fill, a pill over mixed fills; 'hide' = skip labels that sit on marks |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.readability.fallback |
'pill' | 'halo' | 'hide' |
what 'auto' escalates to over mixed fills or when no text colour reaches minRatio. Default 'pill' |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.readability.enabled |
boolean |
false switches the treatment off for this label kind |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.readability.contrast |
boolean |
swap the text to light/dark when it misses minRatio against what is under it (any mode) |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.readability.minRatio |
number |
WCAG 2 contrast ratio to reach. Default 4.5 |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.readability.light |
string |
text/backdrop colour pair used by contrast and 'auto' fills. Defaults '#ffffff' / '#111827' |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.readability.dark |
string |
Dark colour of the pair. Default: '#111827'. |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.readability.background |
'auto' | string |
colour under the chart; 'auto' = chart.background, else the first opaque ancestor |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.readability.halo |
object |
outline behind the glyphs; blur > 0 makes it a soft glow. Defaults width 3, color 'auto' (chart background), opacity 0.92 |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.readability.halo.width |
number |
Outline width in pixels. Default: 3. |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.readability.halo.color |
'auto' | string |
Outline colour; 'auto' uses the colour under the label or a contrasting one. Default: 'auto'. |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.readability.halo.opacity |
number |
Outline opacity (0 to 1). Default: 0.92. |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.readability.halo.blur |
number |
Blur in pixels; above 0 the outline becomes a soft glow. Default: 0. |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.readability.pill |
object |
backdrop box. padding = [vertical, horizontal]; offset = [dx, dy] px. Defaults fill 'auto', opacity 0.9, radius 4, padding [1, 4] |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.readability.pill.fill |
'auto' | string |
Box colour; 'auto' uses the colour under the label or a contrasting one. Default: 'auto'. |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.readability.pill.opacity |
number |
Box opacity (0 to 1). Default: 0.9. |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.readability.pill.radius |
number |
Corner radius in pixels. Default: 4. |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.readability.pill.padding |
number | [number, number] |
Space around the text in pixels: one number, or [vertical, horizontal]. Default: [1, 4]. |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.readability.pill.stroke |
string |
Outline colour of the box. Default: 'none'. |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.readability.pill.strokeWidth |
number |
Outline width in pixels. Default: 1. |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.readability.pill.offset |
[number, number] |
Shift of the box as [dx, dy] in pixels. Default: [0, 0]. |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.readability.shadow |
object | boolean |
drop shadow on the pill (on the text in halo mode) |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.readability.shadow.dx |
number |
Horizontal shadow offset in pixels. Default: 0. |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.readability.shadow.dy |
number |
Vertical shadow offset in pixels. Default: 1. |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.readability.shadow.blur |
number |
Shadow blur in pixels. Default: 2. |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.readability.shadow.color |
string |
Shadow colour. Default: '#000000'. |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.readability.shadow.opacity |
number |
Shadow opacity (0 to 1). Default: 0.35. |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.readability.raise |
boolean |
axis labels sitting on marks are moved above the series (default true) |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.readability.each |
(info: WccReadabilityInfo) => WccReadability | null | undefined |
per label: return an override (or 'none') for this one label; called only when set |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.angle |
number | 'auto' |
where the scale sits: degrees (startAngle convention, 0 = 12 o'clock) or 'auto' = the slot boundary with the shortest bars on both sides. Default: the start of the range |
plotOptions.vitalsClock.radialColumn.valueAxis.labels.pinAngle |
boolean |
'auto' keeps the first angle it found across updates (no jumping scale). Default true |
plotOptions.vitalsClock.radialColumn.categoryLabels |
object |
Category names around the ring. |
plotOptions.vitalsClock.radialColumn.categoryLabels.show |
boolean |
Shows the category names. Default: true. |
plotOptions.vitalsClock.radialColumn.categoryLabels.orientation |
'auto' | 'horizontal' | 'radial' |
'horizontal' or along the 'radial' direction; 'auto' keeps names horizontal when they fit their slot. Default: 'auto'. |
plotOptions.vitalsClock.radialColumn.categoryLabels.offset |
number |
Distance from the bars in px. Default: 8. |
plotOptions.vitalsClock.radialColumn.categoryLabels.maxWidth |
number |
Longest name in px before it is shortened. Default: 110. |
plotOptions.vitalsClock.radialColumn.categoryLabels.step |
number |
label every n-th category (disables automatic thinning) |
plotOptions.vitalsClock.radialColumn.categoryLabels.maxCount |
number |
most labels to show; default from the ring length (one per ~4 font sizes, 4-24) |
plotOptions.vitalsClock.radialColumn.categoryLabels.formatter |
(category: string, opts: { index: number }) => string |
(category, { index }) => string for the name. |
plotOptions.vitalsClock.radialColumn.center |
object |
Value and label in the hole. |
plotOptions.vitalsClock.radialColumn.center.readability |
RadialReadability |
centre value + label readability (explicit modes; default none) |
plotOptions.vitalsClock.radialColumn.center.readability.mode |
'none' | 'halo' | 'pill' | 'auto' | 'hide' |
'auto' (default where on): nothing for labels off the marks, a contrasting text colour over one fill, a pill over mixed fills; 'hide' = skip labels that sit on marks |
plotOptions.vitalsClock.radialColumn.center.readability.fallback |
'pill' | 'halo' | 'hide' |
what 'auto' escalates to over mixed fills or when no text colour reaches minRatio. Default 'pill' |
plotOptions.vitalsClock.radialColumn.center.readability.enabled |
boolean |
false switches the treatment off for this label kind |
plotOptions.vitalsClock.radialColumn.center.readability.contrast |
boolean |
swap the text to light/dark when it misses minRatio against what is under it (any mode) |
plotOptions.vitalsClock.radialColumn.center.readability.minRatio |
number |
WCAG 2 contrast ratio to reach. Default 4.5 |
plotOptions.vitalsClock.radialColumn.center.readability.light |
string |
text/backdrop colour pair used by contrast and 'auto' fills. Defaults '#ffffff' / '#111827' |
plotOptions.vitalsClock.radialColumn.center.readability.dark |
string |
Dark colour of the pair. Default: '#111827'. |
plotOptions.vitalsClock.radialColumn.center.readability.background |
'auto' | string |
colour under the chart; 'auto' = chart.background, else the first opaque ancestor |
plotOptions.vitalsClock.radialColumn.center.readability.halo |
object |
outline behind the glyphs; blur > 0 makes it a soft glow. Defaults width 3, color 'auto' (chart background), opacity 0.92 |
plotOptions.vitalsClock.radialColumn.center.readability.halo.width |
number |
Outline width in pixels. Default: 3. |
plotOptions.vitalsClock.radialColumn.center.readability.halo.color |
'auto' | string |
Outline colour; 'auto' uses the colour under the label or a contrasting one. Default: 'auto'. |
plotOptions.vitalsClock.radialColumn.center.readability.halo.opacity |
number |
Outline opacity (0 to 1). Default: 0.92. |
plotOptions.vitalsClock.radialColumn.center.readability.halo.blur |
number |
Blur in pixels; above 0 the outline becomes a soft glow. Default: 0. |
plotOptions.vitalsClock.radialColumn.center.readability.pill |
object |
backdrop box. padding = [vertical, horizontal]; offset = [dx, dy] px. Defaults fill 'auto', opacity 0.9, radius 4, padding [1, 4] |
plotOptions.vitalsClock.radialColumn.center.readability.pill.fill |
'auto' | string |
Box colour; 'auto' uses the colour under the label or a contrasting one. Default: 'auto'. |
plotOptions.vitalsClock.radialColumn.center.readability.pill.opacity |
number |
Box opacity (0 to 1). Default: 0.9. |
plotOptions.vitalsClock.radialColumn.center.readability.pill.radius |
number |
Corner radius in pixels. Default: 4. |
plotOptions.vitalsClock.radialColumn.center.readability.pill.padding |
number | [number, number] |
Space around the text in pixels: one number, or [vertical, horizontal]. Default: [1, 4]. |
plotOptions.vitalsClock.radialColumn.center.readability.pill.stroke |
string |
Outline colour of the box. Default: 'none'. |
plotOptions.vitalsClock.radialColumn.center.readability.pill.strokeWidth |
number |
Outline width in pixels. Default: 1. |
plotOptions.vitalsClock.radialColumn.center.readability.pill.offset |
[number, number] |
Shift of the box as [dx, dy] in pixels. Default: [0, 0]. |
plotOptions.vitalsClock.radialColumn.center.readability.shadow |
object | boolean |
drop shadow on the pill (on the text in halo mode) |
plotOptions.vitalsClock.radialColumn.center.readability.shadow.dx |
number |
Horizontal shadow offset in pixels. Default: 0. |
plotOptions.vitalsClock.radialColumn.center.readability.shadow.dy |
number |
Vertical shadow offset in pixels. Default: 1. |
plotOptions.vitalsClock.radialColumn.center.readability.shadow.blur |
number |
Shadow blur in pixels. Default: 2. |
plotOptions.vitalsClock.radialColumn.center.readability.shadow.color |
string |
Shadow colour. Default: '#000000'. |
plotOptions.vitalsClock.radialColumn.center.readability.shadow.opacity |
number |
Shadow opacity (0 to 1). Default: 0.35. |
plotOptions.vitalsClock.radialColumn.center.readability.raise |
boolean |
axis labels sitting on marks are moved above the series (default true) |
plotOptions.vitalsClock.radialColumn.center.readability.each |
(info: WccReadabilityInfo) => WccReadability | null | undefined |
per label: return an override (or 'none') for this one label; called only when set |
plotOptions.vitalsClock.radialColumn.center.show |
boolean | 'auto' |
true always shows the centre; 'auto' shows it when the hole is at least 34 px. Default: 'auto'. |
plotOptions.vitalsClock.radialColumn.center.label |
string |
Label under the value; not set uses the gauge layer name, 'Total' with columns, or the first layer name. |
plotOptions.vitalsClock.radialColumn.center.value |
number | string | (() => string) |
Fixed value or text, or a function returning text; not set uses the gauge value or the total. |
plotOptions.vitalsClock.radialColumn.center.formatter |
(value: number) => string |
(value, { w }) => string for a numeric centre value. |
plotOptions.vitalsClock.radialColumn.center.hover |
boolean |
show the hovered slot / segment in the centre |
plotOptions.vitalsClock.radialColumn.layers |
RadialColumnLayer[] |
Inner layers, innermost first. Default: []. |
plotOptions.vitalsClock.radialColumn.layers[].type |
'pie' | 'donut' | 'nestedDonut' | 'sunburst' | 'arc' | 'radialBar' | 'polarArea' | 'heatmap' | 'chord' | 'goals' | 'gauge' | 'wave' | 'matrix' | 'incident' | 'bands' | 'trace' | 'span' | 'vitalsNow' |
'radialBar' is an alias of 'arc'; 'chord' is best as the innermost layer (its ribbons fill the centre) |
plotOptions.vitalsClock.radialColumn.layers[].name |
string |
Layer name (legend, tooltip, centre label of a gauge). |
plotOptions.vitalsClock.radialColumn.layers[].data |
RadialLayerDatum[] | Array<{ /** Ring name. / name?: string /* Segments or cells of the ring (inner first). */ data: Array<RadialLayerDatum | null> }> | Ar… |
pie/donut/arc/polarArea: segments; nestedDonut and heatmap: rings [{ name, data }] or number[][] (innermost first, heatmap cells may be null); sunburst: a node tree; chord: flows [from, to, value] or { from, to, value }; wave: rows RadialWaveSeries[] (or one plain number array = one row) matrix: rows × cols values or status names, flows [row, col, value], or RadialMatrixCell objects incident (west-coast-charts/layers/quint): RadialIncident windows, a wedge across every ring each |
plotOptions.vitalsClock.radialColumn.layers[].data[].x |
string |
Name of the segment (alias of name). |
plotOptions.vitalsClock.radialColumn.layers[].data[].name |
string |
Name of the segment. |
plotOptions.vitalsClock.radialColumn.layers[].data[].y |
number |
Value of the segment (alias of value). |
plotOptions.vitalsClock.radialColumn.layers[].data[].value |
number |
Value of the segment. |
plotOptions.vitalsClock.radialColumn.layers[].data[].color |
string |
Colour of the segment. |
plotOptions.vitalsClock.radialColumn.layers[].data[].max |
number |
Arc and goals layers: value of a full arc for this point. |
plotOptions.vitalsClock.radialColumn.layers[].data[].target |
number |
goals: the ring's target (alias of max) |
plotOptions.vitalsClock.radialColumn.layers[].data[].trackColor |
string |
goals: track colour of this ring (default: derived from the ring colour) |
plotOptions.vitalsClock.radialColumn.layers[].data[].label |
string |
goals: ring label (default: the name) |
plotOptions.vitalsClock.radialColumn.layers[].data[].children |
RadialLayerDatum[] |
Sunburst: child segments on the next ring. |
plotOptions.vitalsClock.radialColumn.layers[].data[].link |
Array<number | string> |
linked categories (indices or names) |
plotOptions.vitalsClock.radialColumn.layers[].data[].keys |
string[] |
semantic keys (e.g. a service id): marks of other layers sharing a key light together; a sunburst parent takes the union of its children |
plotOptions.vitalsClock.radialColumn.layers[].data[].values |
Array<number | null> |
this segment's own outer values (filter interaction) |
plotOptions.vitalsClock.radialColumn.layers[].data[].from |
string |
Source group id. |
plotOptions.vitalsClock.radialColumn.layers[].data[].to |
string |
Target group id. |
plotOptions.vitalsClock.radialColumn.layers[].data[].data |
Array<number | null | [unknown, number | null] | { y: number | null }> |
One value per point; null = gap. Numbers, [x, y] or { y }. |
plotOptions.vitalsClock.radialColumn.layers[].data[].envelope |
object |
Normal range per point: a soft band behind the wave; points outside it are anomalies. |
plotOptions.vitalsClock.radialColumn.layers[].data[].envelope.lo |
Array<number | null> |
Lower bound per point. |
plotOptions.vitalsClock.radialColumn.layers[].data[].envelope.hi |
Array<number | null> |
Upper bound per point. |
plotOptions.vitalsClock.radialColumn.layers[].data[].forecast |
object |
Forecast per point (usually null up to now): dashed crest, optional hatched range. |
plotOptions.vitalsClock.radialColumn.layers[].data[].forecast.data |
Array<number | null> |
Forecast values. |
plotOptions.vitalsClock.radialColumn.layers[].data[].forecast.lo |
Array<number | null> |
Lower bound of the forecast range. |
plotOptions.vitalsClock.radialColumn.layers[].data[].forecast.hi |
Array<number | null> |
Upper bound of the forecast range. |
plotOptions.vitalsClock.radialColumn.layers[].data[].anomalies |
RadialWaveAnomaly[] |
Anomalies of this row (as layer anomalies, without series). |
plotOptions.vitalsClock.radialColumn.layers[].data[].anomalies[].series |
string |
Row name (layer-level lists; not set = every row). |
plotOptions.vitalsClock.radialColumn.layers[].data[].anomalies[].at |
number | string |
Point index, or a point label (e.g. 'Wed 18:00'). |
plotOptions.vitalsClock.radialColumn.layers[].data[].anomalies[].label |
string |
Text in the tooltip, data table and rim marks. |
plotOptions.vitalsClock.radialColumn.layers[].data[].anomalies[].kind |
string |
Kind shown when there is no label. Default: 'Anomaly' ('Above normal' / 'Below normal' for automatic ones). |
plotOptions.vitalsClock.radialColumn.layers[].data[].anomalies[].color |
string |
Spike colour. Default: a rose red (lighter in dark mode). |
plotOptions.vitalsClock.radialColumn.layers[].data[].row |
string |
Row id (or name). |
plotOptions.vitalsClock.radialColumn.layers[].data[].col |
string |
Column id (or name). |
plotOptions.vitalsClock.radialColumn.layers[].data[].status |
string |
Status name (ok, info, warn, crit, unknown or one of statuses). |
plotOptions.vitalsClock.radialColumn.layers[].series |
number | string |
take the data from config.series (index or name) instead; that series leaves the column ring |
plotOptions.vitalsClock.radialColumn.layers[].labels |
string[] |
segment names for plain number data; wave: point labels, one per point (e.g. '14:00 Tue') or one per sector point ('14:00', shown as 'Tue 14:00') |
plotOptions.vitalsClock.radialColumn.layers[].thickness |
number | string |
ring thickness: px, '30%' of the available radius, or a fraction (0..1) |
plotOptions.vitalsClock.radialColumn.layers[].gap |
number |
px between this layer and the one inside it (default 6) |
plotOptions.vitalsClock.radialColumn.layers[].ringGap |
number |
px between the rings of a nestedDonut / sunburst / arc layer (default 2) |
plotOptions.vitalsClock.radialColumn.layers[].padding |
number |
constant px gap between neighbouring segments |
plotOptions.vitalsClock.radialColumn.layers[].corner |
number |
corner radius of segment ends, px |
plotOptions.vitalsClock.radialColumn.layers[].colors |
string[] |
Own palette of the layer; heatmap: two or more colours are the ramp stops, low to high. |
plotOptions.vitalsClock.radialColumn.layers[].colorBy |
'spectrum' |
colour segments from the column ring's spectrum by angle |
plotOptions.vitalsClock.radialColumn.layers[].legend |
boolean |
keep this layer's segments out of the legend |
plotOptions.vitalsClock.radialColumn.layers[].link |
RadialColumnLink | boolean | RadialLinkMode |
link to the column ring for this layer: false = none, a mode, or options overriding plotOptions.radialColumn.link |
plotOptions.vitalsClock.radialColumn.layers[].link.mode |
'none' | 'category' | 'angle' | 'map' | 'auto' |
auto (default): a datum's own link, else matching category names, else the angle span |
plotOptions.vitalsClock.radialColumn.layers[].link.map |
((segment: RadialLinkSegment) => Array<number | string> | null | undefined) | Record<string, Array<number | string>> |
map mode: a function or an object keyed by 'A › B' path or name; values are category indices or names |
plotOptions.vitalsClock.radialColumn.layers[].link.interaction |
'highlight' | 'filter' | 'both' |
highlight on hover, filter (cross-filter / values) on click, or both. Default 'highlight' |
plotOptions.vitalsClock.radialColumn.layers[].link.bidirectional |
boolean |
hovering a bar also lights its segments (default true) |
plotOptions.vitalsClock.radialColumn.layers[].link.align |
boolean |
segments span exactly the angle of their linked bars (default false) |
plotOptions.vitalsClock.radialColumn.layers[].link.indicator |
boolean |
bracket arc on the outer edge over the linked bars (default true) |
plotOptions.vitalsClock.radialColumn.layers[].link.unit |
string |
what a category is, for tooltips and announcements ('18 of 72 time slots'). Default 'categories'. Name the real unit: categories that combine several things (service × day) are 'service-days', not 'days'. |
plotOptions.vitalsClock.radialColumn.layers[].link.basis |
string |
how the categories are composed, appended in brackets ('18 of 140 service-days (10 services × 14 days)'). Default: none |
plotOptions.vitalsClock.radialColumn.layers[].align |
boolean |
shorthand for link.align |
plotOptions.vitalsClock.radialColumn.layers[].trackColor |
string |
Track colour of arc, goals and gauge layers; not set uses a faint text tone (goals: a tone of the ring colour). |
plotOptions.vitalsClock.radialColumn.layers[].startAngle |
number |
degrees, 0 = 12 o'clock, clockwise; default: the chart's range |
plotOptions.vitalsClock.radialColumn.layers[].endAngle |
number |
End angle in degrees (same convention as startAngle); not set uses the chart's range. |
plotOptions.vitalsClock.radialColumn.layers[].min |
number |
arc layers: value range of a full arc (default 0..100; per point via datum.max); wave: base of the height scale (default min(0, data)) |
plotOptions.vitalsClock.radialColumn.layers[].max |
number |
Arc layers: value of a full arc. Default: 100. Wave: top of the height scale (default: the data, envelopes and forecasts rounded up to a nice tick). |
plotOptions.vitalsClock.radialColumn.layers[].color |
RadialMatrixScale | string |
heatmap / matrix: base colour of the default ramp (surface tone -> colour -> towards the text colour); colors (2+) overrides the ramp. matrix (value mode) also takes a colour scale. |
plotOptions.vitalsClock.radialColumn.layers[].color.scale |
'sequential' | 'diverging' |
'sequential' (low to high) or 'diverging' around mid. Default: 'sequential'. |
plotOptions.vitalsClock.radialColumn.layers[].color.domain |
number[] |
[lo, hi] or [lo, mid, hi]; default: data extent. |
plotOptions.vitalsClock.radialColumn.layers[].color.mid |
number |
Diverging centre. Default: 0. |
plotOptions.vitalsClock.radialColumn.layers[].color.stops |
string[] |
Colour stops, low to high. |
plotOptions.vitalsClock.radialColumn.layers[].color.reverse |
boolean |
Reverses the colour stops. Default: false. |
plotOptions.vitalsClock.radialColumn.layers[].groups |
RadialChordGroup[] |
chord: group definitions (order, names, colours, linked categories) |
plotOptions.vitalsClock.radialColumn.layers[].groups[].id |
string |
Group id used in the flows. |
plotOptions.vitalsClock.radialColumn.layers[].groups[].name |
string |
Shown name; not set uses the id. |
plotOptions.vitalsClock.radialColumn.layers[].groups[].color |
string |
Group colour. |
plotOptions.vitalsClock.radialColumn.layers[].groups[].values |
number[] |
per-group values (shown in its tooltip) |
plotOptions.vitalsClock.radialColumn.layers[].groups[].link |
string | number | Array<string | number> |
categories (names or indices) of the column ring this group links to (overrides link.map) |
plotOptions.vitalsClock.radialColumn.layers[].matrix |
number[][] |
chord: a square flow matrix instead of data; row = source, column = target (with labels) |
plotOptions.vitalsClock.radialColumn.layers[].directed |
boolean |
chord: directed flows give each end its own share (A->B and B->A differ) |
plotOptions.vitalsClock.radialColumn.layers[].sort |
'none' | 'asc' | 'desc' |
chord: order of the groups around the ring (default: as given) |
plotOptions.vitalsClock.radialColumn.layers[].ringWidth |
number |
chord: px width of the group arcs (default: the layer thickness) |
plotOptions.vitalsClock.radialColumn.layers[].ribbon |
object |
chord ribbons |
plotOptions.vitalsClock.radialColumn.layers[].ribbon.opacity |
number |
Ribbon opacity; not set uses 0.52 (0.6 in dark mode). |
plotOptions.vitalsClock.radialColumn.layers[].ribbon.colorMode |
'source' | 'target' | 'gradient' |
Ribbon colour from the 'source' group, the 'target' group, or a 'gradient' between both. Default: 'source'. |
plotOptions.vitalsClock.radialColumn.layers[].ribbon.padding |
number |
Gap between the group arcs and the ribbon ends in px. Default: 2. |
plotOptions.vitalsClock.radialColumn.layers[].target |
number |
goals: default target of every ring (datum target/max wins; default 100) |
plotOptions.vitalsClock.radialColumn.layers[].maxLaps |
number |
goals: laps drawn past 100 % (default 2, i.e. up to 300 %) |
plotOptions.vitalsClock.radialColumn.layers[].ringLabels |
boolean |
curved labels on the segments: goals from the ring start (default true); any other layer centred on each segment, upright in the lower half (default false) |
plotOptions.vitalsClock.radialColumn.layers[].ringTitles |
boolean |
incident: name the heatmap rings (curved, in the gap outside each ring, at 12 o'clock) and add their colour scales to the key under the ring (default true) |
plotOptions.vitalsClock.radialColumn.layers[].legendTitle |
string |
header of this layer's entries in a right-hand legend (e.g. 'Regions'); entries of consecutive layers sharing a title form one group |
plotOptions.vitalsClock.radialColumn.layers[].rows |
Array<string | RadialMatrixHeader | RadialVitalsRow> |
matrix: row headers (ids, or definitions with keys / link); default: the ids used in flow data |
plotOptions.vitalsClock.radialColumn.layers[].cols |
Array<string | RadialMatrixHeader> |
matrix: column headers; default: the rows (square adjacency matrix) |
plotOptions.vitalsClock.radialColumn.layers[].statuses |
Record<string, RadialMatrixStatus> |
matrix: adds or overrides statuses (built in: ok, info, warn, crit, unknown) |
plotOptions.vitalsClock.radialColumn.layers[].headers |
object | boolean |
matrix: row / column header labels (false hides them) |
plotOptions.vitalsClock.radialColumn.layers[].headers.show |
boolean |
false hides the headers. Default: true. |
plotOptions.vitalsClock.radialColumn.layers[].headers.fontSize |
number |
Largest header font size in px; it shrinks to 9 px before labels are cut. Default: theme font size − 1. |
plotOptions.vitalsClock.radialColumn.layers[].headers.readability |
RadialReadability |
Label readability of the headers (explicit modes only, e.g. 'pill' / 'halo'). |
plotOptions.vitalsClock.radialColumn.layers[].headers.readability.mode |
'none' | 'halo' | 'pill' | 'auto' | 'hide' |
'auto' (default where on): nothing for labels off the marks, a contrasting text colour over one fill, a pill over mixed fills; 'hide' = skip labels that sit on marks |
plotOptions.vitalsClock.radialColumn.layers[].headers.readability.fallback |
'pill' | 'halo' | 'hide' |
what 'auto' escalates to over mixed fills or when no text colour reaches minRatio. Default 'pill' |
plotOptions.vitalsClock.radialColumn.layers[].headers.readability.enabled |
boolean |
false switches the treatment off for this label kind |
plotOptions.vitalsClock.radialColumn.layers[].headers.readability.contrast |
boolean |
swap the text to light/dark when it misses minRatio against what is under it (any mode) |
plotOptions.vitalsClock.radialColumn.layers[].headers.readability.minRatio |
number |
WCAG 2 contrast ratio to reach. Default 4.5 |
plotOptions.vitalsClock.radialColumn.layers[].headers.readability.light |
string |
text/backdrop colour pair used by contrast and 'auto' fills. Defaults '#ffffff' / '#111827' |
plotOptions.vitalsClock.radialColumn.layers[].headers.readability.dark |
string |
Dark colour of the pair. Default: '#111827'. |
plotOptions.vitalsClock.radialColumn.layers[].headers.readability.background |
'auto' | string |
colour under the chart; 'auto' = chart.background, else the first opaque ancestor |
plotOptions.vitalsClock.radialColumn.layers[].headers.readability.halo |
object |
outline behind the glyphs; blur > 0 makes it a soft glow. Defaults width 3, color 'auto' (chart background), opacity 0.92 |
plotOptions.vitalsClock.radialColumn.layers[].headers.readability.halo.width |
number |
Outline width in pixels. Default: 3. |
plotOptions.vitalsClock.radialColumn.layers[].headers.readability.halo.color |
'auto' | string |
Outline colour; 'auto' uses the colour under the label or a contrasting one. Default: 'auto'. |
plotOptions.vitalsClock.radialColumn.layers[].headers.readability.halo.opacity |
number |
Outline opacity (0 to 1). Default: 0.92. |
plotOptions.vitalsClock.radialColumn.layers[].headers.readability.halo.blur |
number |
Blur in pixels; above 0 the outline becomes a soft glow. Default: 0. |
plotOptions.vitalsClock.radialColumn.layers[].headers.readability.pill |
object |
backdrop box. padding = [vertical, horizontal]; offset = [dx, dy] px. Defaults fill 'auto', opacity 0.9, radius 4, padding [1, 4] |
plotOptions.vitalsClock.radialColumn.layers[].headers.readability.pill.fill |
'auto' | string |
Box colour; 'auto' uses the colour under the label or a contrasting one. Default: 'auto'. |
plotOptions.vitalsClock.radialColumn.layers[].headers.readability.pill.opacity |
number |
Box opacity (0 to 1). Default: 0.9. |
plotOptions.vitalsClock.radialColumn.layers[].headers.readability.pill.radius |
number |
Corner radius in pixels. Default: 4. |
plotOptions.vitalsClock.radialColumn.layers[].headers.readability.pill.padding |
number | [number, number] |
Space around the text in pixels: one number, or [vertical, horizontal]. Default: [1, 4]. |
plotOptions.vitalsClock.radialColumn.layers[].headers.readability.pill.stroke |
string |
Outline colour of the box. Default: 'none'. |
plotOptions.vitalsClock.radialColumn.layers[].headers.readability.pill.strokeWidth |
number |
Outline width in pixels. Default: 1. |
plotOptions.vitalsClock.radialColumn.layers[].headers.readability.pill.offset |
[number, number] |
Shift of the box as [dx, dy] in pixels. Default: [0, 0]. |
plotOptions.vitalsClock.radialColumn.layers[].headers.readability.shadow |
object | boolean |
drop shadow on the pill (on the text in halo mode) |
plotOptions.vitalsClock.radialColumn.layers[].headers.readability.shadow.dx |
number |
Horizontal shadow offset in pixels. Default: 0. |
plotOptions.vitalsClock.radialColumn.layers[].headers.readability.shadow.dy |
number |
Vertical shadow offset in pixels. Default: 1. |
plotOptions.vitalsClock.radialColumn.layers[].headers.readability.shadow.blur |
number |
Shadow blur in pixels. Default: 2. |
plotOptions.vitalsClock.radialColumn.layers[].headers.readability.shadow.color |
string |
Shadow colour. Default: '#000000'. |
plotOptions.vitalsClock.radialColumn.layers[].headers.readability.shadow.opacity |
number |
Shadow opacity (0 to 1). Default: 0.35. |
plotOptions.vitalsClock.radialColumn.layers[].headers.readability.raise |
boolean |
axis labels sitting on marks are moved above the series (default true) |
plotOptions.vitalsClock.radialColumn.layers[].headers.readability.each |
(info: WccReadabilityInfo) => WccReadability | null | undefined |
per label: return an override (or 'none') for this one label; called only when set |
plotOptions.vitalsClock.radialColumn.layers[].values |
boolean | 'auto' |
matrix: print the value inside a cell ('auto': when it fits). Default: 'auto'. |
plotOptions.vitalsClock.radialColumn.layers[].minCell |
number |
matrix: smallest cell in px before rows / columns are merged or dropped. Default: 6. |
plotOptions.vitalsClock.radialColumn.layers[].overflow |
'aggregate' | 'truncate' |
matrix: rows / columns past minCell merge into one '+N' row / column ('aggregate'), or are dropped with a '+N' note ('truncate'). Default: 'aggregate'. |
plotOptions.vitalsClock.radialColumn.layers[].aggregate |
'sum' | 'max' | 'mean' | 'min' | 'median' | 'last' |
matrix: how merged cells and row / column headers combine values (statuses: always the worst). Default: 'sum' (header tooltip 'Total'); use 'max' / 'mean' / 'min' for non-additive cells such as latencies or rates ('Highest', 'Average', 'Lowest'). |
plotOptions.vitalsClock.radialColumn.layers[].inset |
number |
matrix: px between the grid (with its headers) and the edge of the centre disc. Default: 6. |
plotOptions.vitalsClock.radialColumn.layers[].unit |
string |
matrix: appended to values in cells, tooltip and table; heatmap: appended to the value in the slot tooltip |
plotOptions.vitalsClock.radialColumn.layers[].value |
number |
gauge: the value (else data[0]) |
plotOptions.vitalsClock.radialColumn.layers[].follow |
string | number | boolean |
gauge: take the latest value of this column series (name, index or true = first); it stays in the ring |
plotOptions.vitalsClock.radialColumn.layers[].bandsLow |
RadialVitalsBand[] |
gauge: colour by value band, ascending: [{ to: 60, color }] Span lower-value bands. Missing keeps the generic shared fallback; choose a policy explicitly to avoid a warning. |
plotOptions.vitalsClock.radialColumn.layers[].bandsLow[].to |
number |
Upper value of the band (inclusive); omitted on the last band. |
plotOptions.vitalsClock.radialColumn.layers[].bandsLow[].level |
0 | 1 | 2 | 3 |
0 = normal ... 3 = highest; colour + pattern. |
plotOptions.vitalsClock.radialColumn.layers[].bandsLow[].label |
string |
Text of the band in tooltip and table. |
plotOptions.vitalsClock.radialColumn.layers[].bandsLowPolicy |
'high-only' | 'shared' |
Span classification when bandsLow is absent; generic span default is shared, VitalsClock defaults high-only. |
plotOptions.vitalsClock.radialColumn.layers[].bands |
RadialVitalsBand[] | Array<{ /** Upper value of the band (inclusive). / to: number /* Arc colour for values in the band. */ color: string }> |
|
plotOptions.vitalsClock.radialColumn.layers[].bands[].to |
number |
Upper value of the band (inclusive); omitted on the last band. |
plotOptions.vitalsClock.radialColumn.layers[].bands[].level |
0 | 1 | 2 | 3 |
0 = normal ... 3 = highest; colour + pattern. |
plotOptions.vitalsClock.radialColumn.layers[].bands[].label |
string |
Text of the band in tooltip and table. |
plotOptions.vitalsClock.radialColumn.layers[].formatter |
(value: number) => string |
gauge: value formatter (centre, min/max ticks, tooltip) |
plotOptions.vitalsClock.radialColumn.layers[].center |
boolean |
gauge: show the value in the chart centre (default true) |
plotOptions.vitalsClock.radialColumn.layers[].scale |
boolean | 'linear' | 'log' |
gauge: min/max labels at the ends of a partial arc (boolean, default true); heatmap: colour scale, 'log' spaces the ramp by ratio (positive values; default 'linear') |
plotOptions.vitalsClock.radialColumn.layers[].now |
object | boolean | number | string |
gauge with follow: the 'now' tick over the newest slot (default true) |
plotOptions.vitalsClock.radialColumn.layers[].now.label |
string |
Text of the tick. Default: 'now'. |
plotOptions.vitalsClock.radialColumn.layers[].now.color |
string |
Tick colour; not set uses the gauge colour. |
plotOptions.vitalsClock.radialColumn.layers[].time |
object |
trace / span / vitalsNow (layers/vitals): the window the ring shows, ms or ISO. |
plotOptions.vitalsClock.radialColumn.layers[].time.start |
number | string |
|
plotOptions.vitalsClock.radialColumn.layers[].time.end |
number | string |
|
plotOptions.vitalsClock.radialColumn.layers[].upto |
number |
bands / trace / span (layers/vitals): index of the current slot; later slots are "no data yet". |
plotOptions.vitalsClock.radialColumn.layers[].endLabel |
string |
bands (layers/vitals): end label of the last slot (e.g. '24:00'); not set uses the last slot label. |
plotOptions.vitalsClock.radialColumn.layers[].gapAfter |
number |
trace / span (layers/vitals): a gap longer than this many minutes breaks the line. Default: 3 slots. |
plotOptions.vitalsClock.radialColumn.layers[].alarms |
Array<{ from: number | string, to?: number | string, label?: string }> |
vitalsNow (layers/vitals): caller alarm windows, drawn as wedges. |
plotOptions.vitalsClock.radialColumn.layers[].status |
Array<{ name: string, text: string, ago?: number, stale?: boolean }> |
vitalsNow (layers/vitals): last value per parameter in the strip under the ring. |
plotOptions.vitalsClock.radialColumn.layers[].note |
string |
vitalsNow (layers/vitals): a note in the strip, e.g. 'Demo data'. |
plotOptions.vitalsClock.radialColumn.layers[].mode |
'ridge' | 'overlay' | 'stack' | 'auto' | 'value' | 'status' |
wave: 'ridge' (default) staggers the rows in lanes that rise into the lane behind them; 'overlay' shares one translucent band; 'stack' piles the rows. matrix: 'status' colours cells by severity with patterns; 'auto' (default) = status once any cell has one; 'value' = value scale. |
plotOptions.vitalsClock.radialColumn.layers[].overlap |
number |
wave ridge: how far a wave may rise into the lanes behind it, in lane steps (default 0.8; 0 = no overlap) |
plotOptions.vitalsClock.radialColumn.layers[].sectors |
number | Array<string | RadialWaveSector> |
wave: the equal sectors (cycles) of the ring - a count, or names / objects in order (default 1) |
plotOptions.vitalsClock.radialColumn.layers[].sectorLabels |
boolean |
wave: curved sector names on a band at the inner edge (default true when there are 2+ sectors and room) |
plotOptions.vitalsClock.radialColumn.layers[].depth |
number |
wave: shading from crest to base, 0 = flat .. 1 = deep (default 0.55) |
plotOptions.vitalsClock.radialColumn.layers[].curve |
'smooth' | 'linear' |
wave: 'smooth' monotone cubic that never overshoots the data (default) or 'linear' |
plotOptions.vitalsClock.radialColumn.layers[].anomalies |
RadialWaveAnomaly | false |
wave: anomaly spikes. Default: points outside their envelope. A list adds or relabels points; false = none; { color } recolours the automatic ones |
plotOptions.vitalsClock.radialColumn.layers[].anomalies.series |
string |
Row name (layer-level lists; not set = every row). |
plotOptions.vitalsClock.radialColumn.layers[].anomalies.at |
number | string |
Point index, or a point label (e.g. 'Wed 18:00'). |
plotOptions.vitalsClock.radialColumn.layers[].anomalies.label |
string |
Text in the tooltip, data table and rim marks. |
plotOptions.vitalsClock.radialColumn.layers[].anomalies.kind |
string |
Kind shown when there is no label. Default: 'Anomaly' ('Above normal' / 'Below normal' for automatic ones). |
plotOptions.vitalsClock.radialColumn.layers[].anomalies.color |
string |
Spike colour. Default: a rose red (lighter in dark mode). |
plotOptions.vitalsClock.radialColumn.layerGap |
number |
px between the outermost inner layer and the column ring |
plotOptions.vitalsClock.radialColumn.hole |
'auto' | number | string |
radius of the empty centre: 'auto', px, '%' or fraction of the space inside the column ring |
plotOptions.vitalsClock.radialColumn.legend |
object |
Legend of series and layer items. |
plotOptions.vitalsClock.radialColumn.legend.show |
boolean | 'auto' |
true always shows it; 'auto' from two items. Default: 'auto'. |
plotOptions.vitalsClock.radialColumn.legend.position |
'auto' | 'right' | 'bottom' |
'right' or 'bottom'; 'auto' uses the right on wide plots. Default: 'auto'. |
plotOptions.vitalsClock.params[]
One parameter (WccVitalsParam), outermost ring first.
| Option | Type | Description |
|---|---|---|
plotOptions.vitalsClock.params[].id |
string |
Parameter id. |
plotOptions.vitalsClock.params[].title |
string |
Ring title, e.g. 'Herzfrequenz'. |
plotOptions.vitalsClock.params[].short |
string |
Short name in the status strip and describe(), e.g. 'HF'. |
plotOptions.vitalsClock.params[].unit |
string |
Unit, e.g. '/min', '%', 'mmHg'. |
plotOptions.vitalsClock.params[].kind |
'columns' | 'cells' | 'trace' | 'range' |
'columns' = the column ring (median per slot), 'cells' = band cells, 'trace' = line at true times, 'range' = high / low pairs. |
plotOptions.vitalsClock.params[].aggregate |
'median' | 'min' | 'max' | 'last' | 'mean' |
Per-slot aggregation for columns and cells. Default: 'median'. |
plotOptions.vitalsClock.params[].bands |
RadialVitalsBand[] |
The caller's threshold bands (no built-in clinical thresholds). |
plotOptions.vitalsClock.params[].bands[].to |
number |
Upper value of the band (inclusive); omitted on the last band. |
plotOptions.vitalsClock.params[].bands[].level |
0 | 1 | 2 | 3 |
0 = normal ... 3 = highest; colour + pattern. |
plotOptions.vitalsClock.params[].bands[].label |
string |
Text of the band in tooltip and table. |
plotOptions.vitalsClock.params[].data |
Array<[number | string, number] | [number | string, number, number]> |
Measurements: [time, value] or, for 'range', [time, high, low]; time = ms or ISO. |
plotOptions.vitalsClock.params[].staleAfter |
number | string |
After this long the last value is shown as stale: minutes, or a duration such as '4h'. |
plotOptions.vitalsClock.params[].decimals |
number |
Decimals at most in labels and tooltips. Default: 1. |
plotOptions.vitalsClock.params[].color |
string |
Ring colour; not set uses the palette. |
plotOptions.vitalsClock.params[].bandsLow |
RadialVitalsBand[] |
'range': caller-supplied bands for the low value, independent of the high-value bands. |
plotOptions.vitalsClock.params[].bandsLow[].to |
number |
Upper value of the band (inclusive); omitted on the last band. |
plotOptions.vitalsClock.params[].bandsLow[].level |
0 | 1 | 2 | 3 |
0 = normal ... 3 = highest; colour + pattern. |
plotOptions.vitalsClock.params[].bandsLow[].label |
string |
Text of the band in tooltip and table. |
plotOptions.vitalsClock.params[].bandsLowPolicy |
'high-only' | 'shared' |
Missing low bands: classify only high (default) or explicitly share high bands. An implicit high-only fallback warns once. |
plotOptions.vitalsClock.params[].gapAfter |
number |
'trace' / 'range': a gap longer than this many minutes breaks the line. Default: 3 slots. |
plotOptions.vitalsClock.params[].min |
number |
Lower end of the value scale. |
plotOptions.vitalsClock.params[].max |
number |
Upper end of the value scale. |
plotOptions.schedule
Chart type schedule (WccScheduleOptions), premium type module west-coast-charts/layers/schedule (guide).
| Option | Type | Description |
|---|---|---|
plotOptions.schedule.plugins |
WccPremiumPluginRef[] |
Plugins of this chart: plugin objects, registered names, or [nameOrPlugin, options]. |
plotOptions.schedule.plugins[].name |
string |
Plugin id (state key and warnings); not set uses plugin-<index>. |
plotOptions.schedule.plugins[].defaults |
object |
Default options of the plugin; the [nameOrPlugin, options] form overrides them. |
plotOptions.schedule.plugins[].reserve() |
(p: any): { top?: number; right?: number; bottom?: number; left?: number } | void |
(p) => { top, right, bottom, left }: space in px taken from the plot before layout. |
plotOptions.schedule.plugins[].afterRender() |
(p: any): void |
(p): called after each render; draw into p.layer() and bind events with p.on(). |
plotOptions.schedule.plugins[].event() |
(name: string, e: Event | null, payload: any, p: any): boolean | void |
(name, e, payload, p): called for every chart event; returning false cancels a cancelable one. |
plotOptions.schedule.plugins[].tooltip() |
(content: any, p: any): any |
(content, p) => content: changes the tooltip content (rows, footer, …). |
plotOptions.schedule.plugins[].describe() |
(p: any): string |
(p) => string appended to the screen-reader summary. |
plotOptions.schedule.plugins[].destroy() |
(p: any): void |
(p): called before each redraw and on destroy. |
plotOptions.schedule.date |
string |
The day shown (YYYY-MM-DD in timeZone; a week starts on its Monday). |
plotOptions.schedule.range |
'day' | 'week' |
Default: 'day'. |
plotOptions.schedule.timeZone |
string |
IANA zone of the wall-clock times. |
plotOptions.schedule.now |
number | string |
The current time (now line). |
plotOptions.schedule.resources |
Array<{ id: string, name?: string, kind?: 'room' | 'device' | 'staff' }> |
|
plotOptions.schedule.people |
Array<{ id: string, name?: string, role?: string, color?: string, dash?: string }> |
Doctors and staff: colour + dash identify a person's route. |
plotOptions.schedule.items |
Array<{ id: string, resource: string, start: number | string, end: number | string, people?: string[], patient?: string, label?: string, status?: 'confirmed'… |
Appointments; start / end as ms, ISO or 'HH:MM' on date. patient is a pseudonymous id, hidden unless redact: false. |
plotOptions.schedule.hours |
object |
Opening hours: closed time and breaks are hatched; appointments outside are a warning. |
plotOptions.schedule.hours.open |
string |
|
plotOptions.schedule.hours.close |
string |
|
plotOptions.schedule.hours.days |
number[] |
|
plotOptions.schedule.hours.breaks |
Array<[string, string]> |
|
plotOptions.schedule.rules |
object |
A changeover between two rooms below minTransfer is a warning. Default: '5min'. |
plotOptions.schedule.rules.minTransfer |
string | number |
|
plotOptions.schedule.view |
'auto' | 'lanes' | 'board' |
'lanes' (horizontal), 'board' (vertical), 'auto' = board below 560 px. Default: 'auto'. |
plotOptions.schedule.lanes |
'resources' | 'people' |
Lanes per resource or per person. Default: 'resources'. |
plotOptions.schedule.routes |
boolean |
Draw a route per person. Default: true. |
plotOptions.schedule.snap |
number |
Snap of drag / keyboard moves in minutes. Default: 15. |
plotOptions.schedule.editable |
boolean |
Drag / resize / keyboard moves emit 'scheduleChange' proposals (data is never changed). Default: true. |
plotOptions.schedule.redact |
boolean |
Keep patient ids out of describe(), tooltips and the table. Default: true. |
plotOptions.schedule.filter |
object |
Only appointments of these people. |
plotOptions.schedule.filter.people |
string | string[] |
|
plotOptions.schedule.legend |
object |
|
plotOptions.schedule.legend.show |
boolean |
|
plotOptions.schedule.conflicts |
object |
Conflict summary in the header and the number of listed conflicts. Default: { show: true, list: 3 }. |
plotOptions.schedule.conflicts.show |
boolean |
|
plotOptions.schedule.conflicts.list |
number |
Runtime API: common commands
premium.api(chart) returns these for every premium type (PremiumApiBase), plus the commands of the type below. commands lists the names the current renderer offers.
| Option | Type | Description |
|---|---|---|
api.type |
T |
The chart type the commands belong to. |
api.describe() |
(): string |
the generated screen-reader summary |
api.dataTable() |
(): { head: string[]; rows: any[][] } | null |
the rows of the accessible data table (also used for CSV) |
api.clearHighlight() |
(): void |
Removes the current hover or keyboard highlight. |
Runtime API: drill-down (map, sankey)
DrillApi.
| Option | Type | Description |
|---|---|---|
api.drillDown() |
(id: Id): Promise<boolean> |
open the level of a drillable item; false when it is not drillable or the drill was cancelled |
api.drillUp() |
(depth?: number): Promise<boolean> |
Goes back to an earlier level: depth 0 is the top level; no argument goes up one level. Resolves to false when already at the top or when the drillup event cancels it. |
api.drillPath() |
(): string[] |
Breadcrumb labels from the top level to the open level; [] at the top level. |
Runtime API: sankey
premium.api<SankeyApi>(chart).
| Option | Type | Description |
|---|---|---|
api.highlight() |
(id: Id | null): void |
highlight the flows of a node; null clears |
api.resetPositions() |
(): Promise<void> |
drop dragged node offsets |
api.nodes() |
(): { id: Id; name: string; value: number; column: number; color: string }[] |
Every laid-out node with its value, column index and fill colour. |
api.nodeBox() |
(id: Id): { x: number; y: number; width: number; height: number } | null |
a node's box in chart coordinates |
Runtime API: gantt
premium.api<GanttApi>(chart).
| Option | Type | Description |
|---|---|---|
api.scrollTo() |
(id: Id): boolean |
Opens the task's collapsed group, scrolls the task into view (rows and time) and highlights it; false when the id is unknown. |
api.select() |
(id: Id | Id[] | null): void |
Replaces the selection with one id, a list of ids, or nothing (null). |
api.selected() |
(): Id[] |
Ids of the selected tasks. |
api.toggleGroup() |
(name: string): void |
Collapses or expands a group row by name. |
api.expandAll() |
(): void |
Expands every group. |
api.collapseAll() |
(): void |
Collapses every group. |
api.setView() |
(min: WccDate, max: WccDate, animate?: boolean): void |
Sets the visible time window; animated unless animate is false. Ignored when max is not after min. |
api.view() |
(): [number, number] | null |
The visible time window as [min, max] timestamps; null before the first render. |
api.fit() |
(): void |
Animates the view back to the window that fits every task. |
api.zoomBy() |
(factor: number): void |
Zooms the time axis around the centre of the view; factor > 1 zooms in, < 1 zooms out. |
api.addTask() |
(task: { seriesIndex?: number; index?: number; name?: string; start?: WccDate; end?: WccDate; duration?: number; data?: any }): Promise<any> |
Adds a task (end from end, or start plus duration days, default 1, working days under a calendar) through the taskCreate event and the undo history; resolves to the new item or null. |
api.updateTask() |
(id: Id, patch: { start?: WccDate; end?: WccDate; name?: string }): any |
Changes a task's start, end or name as an edit (taskChange event, undo history); false when the id is unknown or the change was cancelled. |
api.removeTask() |
(id: Id): Promise<any> |
Deletes a task through the taskDelete event; resolves to false when the id is unknown or the event cancels it. |
api.rename() |
(id: Id): void |
open the inline name editor |
api.undo() |
(): any |
Reverts the last edit; resolves to false when there is nothing to undo. |
api.redo() |
(): any |
Repeats the last undone edit; resolves to false when there is nothing to redo. |
api.canUndo() |
(): boolean |
true when there is an edit to undo. |
api.canRedo() |
(): boolean |
true when there is an undone edit to repeat. |
api.history() |
(): { undo: any[]; redo: any[] } |
Copies of the undo and redo stacks. |
api.clearHistory() |
(): void |
Empties both stacks and emits a history change. |
api.workDays() |
(a: WccDate, b: WccDate): number |
working days between two dates (calendar aware) |
api.dependencies() |
(): GanttDependency[] |
Every dependency link of the chart. |
api.addDependency() |
(from: Id, to: Id, opts?: { type?: GanttDependency['type']; lag?: number }): Promise<boolean> |
Adds a link between two tasks (default type 'FS', lag 0 days); resolves to false for an unknown id, an existing link, a cycle or a cancelled dependencyCreate. |
api.removeDependency() |
(from: Id, to: Id): Promise<boolean> |
Removes the link between two tasks; resolves to false when there is none or dependencyDelete cancels it. |
api.outOfBounds() |
(): Id[] |
ids of tasks outside plotOptions.gantt.boundary |
api.saveState() |
(): void |
Writes the persisted state (view, collapsed groups, optionally the selection) to localStorage now; does nothing unless plotOptions.gantt.persist sets a key. |
api.clearSavedState() |
(): void |
Removes the saved state from localStorage. |
Runtime API: tree
premium.api<TreeApi>(chart).
| Option | Type | Description |
|---|---|---|
api.expandAll() |
(): void |
Expands every node and refits the view. |
api.collapseAll() |
(depth?: number): void |
Collapses every node at depth or deeper and refits; the default 1 leaves only the root's children visible. |
api.toggle() |
(id: Id): void |
Collapses or expands one node (as a click on its toggle). |
api.focus() |
(id: Id): void |
open collapsed ancestors, select the node and pan to it |
api.select() |
(id: Id | null): void |
Selects a visible node (as a click); null is ignored. |
api.selected() |
(): Id | null |
Id of the selected node, or null. |
api.zoomBy() |
(factor: number): void |
Zooms around the centre of the plot; factor > 1 zooms in. |
api.fit() |
(): void |
Animates the view back to fit the whole tree. |
Runtime API: stock
premium.api<StockApi>(chart).
| Option | Type | Description |
|---|---|---|
api.range() |
(label: string): void |
apply a range-selector button by label |
api.setRange() |
(from: WccDate, to: WccDate, animate?: boolean): void |
Shows the candles between two dates; animated unless animate is false. |
api.timeframe() |
(tf: 'day' | 'week' | 'month'): void |
'day' | 'week' | 'month' |
api.view() |
(): { from: number; to: number; candles: number } |
First and last timestamp of the view and the number of candles shown. |
api.zoomBy() |
(factor: number): void |
f > 1 zooms in |
api.tool() |
(name?: string | null): string | null |
get the active drawing tool, or set it (null turns it off) |
api.drawings() |
(): WccStockDrawing[] |
Every drawing as plain objects. |
api.addDrawing() |
(d: WccStockDrawing): any |
Adds a drawing (undoable); returns it, or null when it is invalid. |
api.updateDrawing() |
(id: Id, patch: Partial<WccStockDrawing>): any |
Merges patch into a drawing; returns the drawing, or null when the id is unknown or the result is invalid. |
api.removeDrawing() |
(id: Id): any |
Removes a drawing; false when the id is unknown. |
api.clearDrawings() |
(): any |
Removes every drawing; false when there are none. |
api.selectDrawing() |
(id: Id | null): any |
Selects a drawing (shows its handles); null clears the selection. |
api.serializeDrawings() |
(): string |
JSON string of every drawing |
api.loadDrawings() |
(jsonOrArray: string | WccStockDrawing[]): any |
Replaces every drawing with an array or its JSON string; false when the JSON does not parse. |
Runtime API: map
premium.api<MapApi>(chart).
| Option | Type | Description |
|---|---|---|
api.unmatched() |
(): Array<{ id: string; seriesIndex: number; dataIndex: number; value: unknown }> |
Data rows lacking a geometry in the registered map; returns copied records. |
api.zoomTo() |
(id: Id): boolean |
Zooms to a region by id, name or ISO/postal code (case-insensitive); false when it is not found. |
api.select() |
(id: Id | null): boolean |
Selects a region by id, name or ISO/postal code, null clears; false when it is not found. |
api.selected() |
(): Id | null |
Id of the selected region, or null. |
api.zoomBy() |
(factor: number): void |
Zooms around the centre of the map; factor > 1 zooms in. |
api.reset() |
(): void |
Resets zoom and pan to the whole map. |
api.rotate() |
(lonLat: [number, number]): void |
globe projection: centre [lon, lat] |
api.palettes() |
(): string[] |
names of the built-in colour ramps |
Runtime API: network
premium.api<NetworkApi>(chart).
| Option | Type | Description |
|---|---|---|
api.performanceStats() |
(): { modelMs: number; layoutMs: number; drawMs: number; labelsMs: number; renderMs: number; frames: number; settled: boolean; layout: 'force' | 'preset' | '… |
Cumulative renderer phase timings, useful only when compared in the same environment. |
api.highlightKeys() |
(keys: string | string[] | null): boolean |
Lights every node that carries one of the keys (null clears); facet and force layouts. Pinned: survives pointer leave and redraws. false when nothing matched. |
api.highlightPath() |
(path: string | number | null): boolean |
Facet layout: highlights a causal path by name or index (null clears). Pinned like highlightKeys. false when there is no such path. |
api.select() |
(id: string | number | null): { [key: string]: unknown } | null |
Lights one node and its neighbours (pinned; null clears); returns the node's tooltip payload or null. |
api.layout() |
(): { type: 'facet'; levels: string[]; sides: number; nodes: NetworkFacetNode[] } | null |
Facet layout: the computed geometry; null for the force layout or no data. |
Runtime API: radialColumn
premium.api<RadialColumnApi>(chart).
| Option | Type | Description |
|---|---|---|
api.type |
'radialColumn' |
The chart type, 'radialColumn'. |
api.describe() |
(category?: string): string | null |
no argument: the chart summary; a category: every bound channel as one line ('13:20 · 412 Requests · 3.4% Error rate · +12% vs last week') |
api.dataTable() |
(): { head: string[]; rows: string[][] } | null |
Rows of the accessible data table and CSV: one row per category (series values and the color/delta channels), then the segments of the inner layers; null before the first render. |
api.clearHighlight() |
(): void |
Removes the hover or keyboard highlight. |
api.toggle() |
(id: string): void |
Hides or shows a column series ('s:<series>', the last visible one stays), a segment ('c:<segment name>') or the cells of a matrix status ('x:<status>'), as a legend click. |
api.highlightCategory() |
(name: string): boolean |
Highlights one category across every ring; an unknown name clears and returns false. |
api.layers() |
(): Array<{ index: number; type: RadialColumnLayer['type']; name: string; rings: number; radii: Array<[number, number]>; link?: RadialLinkMode; mode?: 'ridge… |
Summary of the inner layers: index, type, name, ring count, radii and link mode. wave layers add mode, sectors, points, domain and their anomalies |
api.links() |
(segment: string): string[] |
category names linked to a segment (name or 'A › B' path) |
api.matrix() |
(): { name: string; mode: 'value' | 'status'; rows: string[]; cols: string[]; cells: Array<{ row: string; col: string; value: number | null; status?: string … |
The centre matrix as drawn (after overflow): row / column names ('+N' for a merged one), cells row-major and how many rows / columns were merged or dropped; null without a matrix layer. |
api.select() |
(nameOrPath: string): boolean |
sticky selection of a category, segment or matrix cell ('Row → Col') (as a click); false when not found |
api.selected() |
(): { slot?: number; key?: string; rib?: string } | null |
The sticky selection: { slot } for a category, { key } for a segment, { rib } for a chord ribbon; null when nothing is selected. |
api.clearSelection() |
(): void |
Clears the sticky selection (and the link filter it set). |
api.channels() |
(): Array<[string, string]> |
[channel, meaning] rows of the bound encodings |
Runtime API: quintTimeline / quintConvergence
premium.api<QuintApi>(chart).
| Option | Type | Description |
|---|---|---|
api.lens() |
(on?: boolean): { from: number; to: number; factor: number } | null | void |
without an argument: the focus lens ({ from, to, factor } in ms) or null; lens(true | false) switches it |
api.pin() |
(time: string | number | null): void |
pins the slot that contains the time (ms or ISO); null unpins |
api.select() |
(keys: string | string[] | null): void |
highlights the keys in every lane; null clears |
api.clear() |
(): void |
clears selection and pin (as Esc) |
api.selection() |
(): { keys: string[] | null; pinned: number | null } |
current selection: keys and the pinned slot start (ms) |
api.ticks() |
(): string[] |
the time-axis labels as drawn (one per instant) |
The premium plugin object
Default export of west-coast-charts/premium (WestCoastChartsPremium).
| Option | Type | Description |
|---|---|---|
premium.name |
'west-coast-charts/premium' |
Package name of the plugin. |
premium.types |
ReadonlyArray<PremiumChartType> |
The chart types the plugin adds. |
premium.install() |
(lib: unknown, hook: object): void |
Called by WestCoastCharts.use(premium); throws when called otherwise or with a core older than 1.0.0. |
premium.setLicenseKey() |
(key: string): Promise<ApexCharts.WestCoastChartsLicense | null> |
same as WestCoastCharts.setLicenseKey (docs/spec/06-premium-types.md §10); no dev-host exemption, so it also checks a key on localhost |
premium.api() |
(chart: ApexCharts): (A & { readonly commands: string[] }) | null |
the runtime commands of a rendered premium chart; null for other charts. The object always talks to the chart's current renderer, so it stays valid across updates. Narrow it with the type parameter: premium.api<GanttApi>(chart) |
premium.registerPlugin() |
(name: string, plugin: P): P |
register a plugin under a name for plotOptions.<type>.plugins: ['name'] |
premium.plugins() |
(): string[] |
names of the registered plugins |
premium.registerLayer() |
(module: WccLayerModule): boolean |
register a layer module (west-coast-charts/layers/<name>); same as WestCoastCharts.use(module). true when registered (or already registered), false for a module of another major version. |
premium.layers() |
(): string[] |
names of the registered layer modules ('west-coast-charts/layers/wave-ring', ...) |
premium.autoload |
boolean |
a chart that needs a layer module that is not registered loads it by itself (default true); otherwise it warns once and draws without it |
premium.layerBase |
string |
where autoload finds the modules (URL or path; default: dist/layers/ next to the premium file) |
premium.setLayerLoader() |
(loader: ((name: WccLayerName) => WccLayerModule | { default: WccLayerModule } | void | Promise<WccLayerModule | { default: WccLayerModule } | void>) | null)… |
own loader for autoload: (name, e.g. 'wave-ring') => the module (or a promise of it / of its ES module namespace); null = built-in |
Premium plugins
An entry of plotOptions.<type>.plugins or premium.registerPlugin(name, plugin) (WccPremiumPlugin). Every hook is optional.
| Option | Type | Description |
|---|---|---|
plugin.name |
string |
Plugin id (state key and warnings); not set uses plugin-<index>. |
plugin.defaults |
object |
Default options of the plugin; the [nameOrPlugin, options] form overrides them. |
plugin.reserve() |
(p: any): { top?: number; right?: number; bottom?: number; left?: number } | void |
(p) => { top, right, bottom, left }: space in px taken from the plot before layout. |
plugin.afterRender() |
(p: any): void |
(p): called after each render; draw into p.layer() and bind events with p.on(). |
plugin.event() |
(name: string, e: Event | null, payload: any, p: any): boolean | void |
(name, e, payload, p): called for every chart event; returning false cancels a cancelable one. |
plugin.tooltip() |
(content: any, p: any): any |
(content, p) => content: changes the tooltip content (rows, footer, …). |
plugin.describe() |
(p: any): string |
(p) => string appended to the screen-reader summary. |
plugin.destroy() |
(p: any): void |
(p): called before each redraw and on destroy. |
Licence key payload
WestCoastCharts.setLicenseKey(key) resolves to this object (WestCoastChartsLicense) or null.
| Option | Type | Description |
|---|---|---|
payload.l |
string |
licensee |
payload.t |
'premium' | 'oem' |
product tier |
payload.e |
number |
expiry, ms since 1970; 0 = perpetual |
payload.v |
[number, number] |
covered major versions, inclusive |
payload.i |
number |
issued, ms since 1970 |
payload.d |
string[] |
host patterns the key is bound to ('acme.com', '.acme.com', '10.20.'); absent = any host |
WestCoast Charts 1.1.5 · generated from the library guide at commit 95f093ba. Code examples in the guide are executed by the library's docs check.