Next dashboard components
Next dashboards (dashboard-v2 node, DashboardVersion="Next", ui/dashboard) bind widgets through v2 layout (components.rows) and the Heat data service ($heat-dataservice channels). Configuration and payloads differ from Legacy components even when the same React component renders underneath.
How wiring works
- Runners publish
$heat-dataservice(see dashboard-v2 upstream contract). - Layout rows set
"component": "<ComponentId>"(e.g.MapDisplay) plus aconfigurationblock (channels, titles, widget-specific options). MapDisplayDS(and similar) loads channel data at playback time viauseDataServiceData.- Widget config (e.g.
mapConfig) usually lives in layoutconfiguration.mapDisplayItem, not in the channel payload.
Component ids in layout are not the same as Legacy mount ids in all cases, but many names match (e.g. MapDisplay).
Component manifest (build-time)
Building ui/dashboard runs npm run build:manifest, which writes dist/dashboard-component-manifest.json. That file is a single catalog for third-party authoring tools: every v2 layout widget (id, displayName), capability features (playback, timeseries, static, geospatial, event data), supported channelShapes, layout binding hints, and the full inlined layoutSchema (heat-layout-schema.json). Source of truth in-repo: ui/dashboard/src/dashboard-manifest/registry.ts.
Documented components
- MapDisplay — tactical map via
mapdisplaychannels - ComposableChart — multi-slice synchronized chart via D3 +
$heat-dataservicechannels (Legacy bridge for v1 dashboards) - CustomRenderer — escape hatch only (not recommended for production); arbitrary HTML/CSS/JS +
window.$session(works in sandbox and inline)
Authoring new pages
Copy _page-template. Document layout configuration, channel shape, and payload fields separately.