Skip to Content
This documentation is provided with the HEAT environment and is relevant for this HEAT instance only.
Dashboard ComponentsNextNext dashboard components

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

  1. Runners publish $heat-dataservice (see dashboard-v2 upstream contract).
  2. Layout rows set "component": "<ComponentId>" (e.g. MapDisplay) plus a configuration block (channels, titles, widget-specific options).
  3. MapDisplayDS (and similar) loads channel data at playback time via useDataServiceData.
  4. Widget config (e.g. mapConfig) usually lives in layout configuration.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 mapdisplay channels
  • ComposableChart — multi-slice synchronized chart via D3 + $heat-dataservice channels (Legacy bridge for v1 dashboards)
  • CustomRendererescape 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.