Legacy dashboard components
Legacy dashboards (dashboard node, DashboardVersion="Legacy", ui/legacy) render widgets from a fixed registry of mount identifiers. The runner publishes JSON keyed by data payload keys; the layout references mount ids. Those strings are often different.
How wiring works
- The
dashboardnode storeslayoutConfiguration(array of rows) and a payload object (e.g.Map,TimelineChart, …). - Each column sets
"component": "<MountId>"(case-sensitive). layout-gridcallsgetComponentByIdfromsession-detail/index.tsx.- Unknown mount ids render nothing (
default: return null).
Mount ids are not inferred from data keys or runner names.
Layout mount identifiers
Update this table when adding a case to getComponentById in session-detail/index.tsx.
Mount id (layoutConfiguration.cols[].component) | Data key (if documented) | Notes |
|---|---|---|
LandingScore | ||
PerformanceScore | ||
MapTimeline | Older map + timeline (MapWithControls); not heat-next | |
OverallScore | ||
CockpitTimeline | ||
RadarChart | Renders ScoreRadarChart | |
CognitiveLoad | heat-next import | |
DigitalSignatureExposure | heat-next import | |
ColumnEyeTracking | heat-next import | |
EyeTrackingContainer | heat-next import | |
EyeTracking | heat-next import | |
EyeTrackingCanvasXCognitiveLoad | Dual component | |
FlightPathXEyeTrackingCanvas | Dual component | |
FlightPathXCognitiveLoad | Dual component | |
AltitudeFlightPathXEyeTrackingCanvas | Dual component | |
MultiFlightPathCanvasXAltitudeGrid | Dual component | |
FlightPath | Flight path with playback | |
FlightCircuit | ||
FlightPathCanvas | Alias → FlightPathAndEyeTracking | |
FlightPathAndEyeTracking | ||
MapDisplay | Map | Current map (heat-next); MapDisplay |
Results | Was QuestionResults | |
RecognitionScore | Was RecognitionScoring | |
TimelineChart | combined-custom-charts | Optional configuration.graphOnTop (area above scatter bands) |
ComposableChart | combined-custom-charts | heat-next ComposableChartLegacy; ComposableChart (Legacy) |
CustomRenderer | (layout only) | Escape hatch , not recommended for production; heat-next; CustomRenderer. payload = v1 dashboardData; $session works in sandbox (default) and inline |
BarChart | ||
ImpactHeatmap | ||
CrewCognitiveLoad | ||
CognitiveLoadBreakdown | ||
CognitiveLoadTimeline | ||
ResponseTime | Was CommunicationTimeline | |
ColorPhaseScore | ||
OverallPhaseScore | ||
StatsSummary | ||
StatsSummaryWithDropdown | ||
StatsSummaryWithModalReport | ||
ProgressScore | ||
ProgressScoreTable | ||
CycleContainer | ||
PhaseSummary | ||
LineProcess |
Mount id vs data payload key
| Concept | Where it appears | Example (map) |
|---|---|---|
| Mount id | layoutConfiguration only | MapDisplay |
| Data key | Dashboard node output JSON (legacy facade APIs) | Map |
Example layout snippet
{
"layoutConfiguration": [
{
"cols": [
{
"component": "MapDisplay",
"colspan": 12,
"marginBottom": 24
}
]
}
]
}Documented components
- MapDisplay , tactical map with routes, cones, playback
- ComposableChart , multi-slice chart via legacy manifest + v1
combined-custom-charts
Authoring new pages
Copy the structure from _page-template. Add a row to the mount registry when you add a switch case.