dashboard-v2 (Aggregation Node)
The dashboard-v2 node consumes JSON from an upstream node and publishes a dashboard dimension using the Heat Next format for ui/dashboard.
Use this node when your upstream payload follows $heat-dataservice and your layout uses components.rows.
Configuration Schema
| Property | Type | Required | Description |
|---|---|---|---|
dataSourceName | string | Yes | Data source where the node output JSON is stored. |
layoutConfiguration | object | Yes | V2 layout config with components.rows. |
dashboardName | string | Yes | Display name for the created/updated dashboard dimension. |
dashboardVersion | "Next" | "Legacy" | No | Dashboard version written by node. Defaults to "Next". |
autoCreateScenarioInstance | boolean | No | If true, creates a scenario instance when none exists. Defaults to false. |
scenarioName | string | No | Optional name for an auto-created scenario instance. |
scenarioFromIsoKey | string | No | Optional dotted payload path used to infer scenario start timestamp. |
scenarioToIsoKey | string | No | Optional dotted payload path used to infer scenario end timestamp. |
Input Payload Requirements
dashboard-v2 requires a top-level $heat-dataservice object and supports user attribution with dashboard_users.
{
"$heat-dataservice": {
"version": "1.0",
"groups": [{ "id": "performance", "name": "Performance Metrics" }],
"channels": [
{
"id": "cognitive-load",
"name": "Mental Workload",
"groupId": "performance",
"shape": "series",
"data": [{ "timeMs": 1000, "value": 0.75 }]
}
]
},
"dashboard_users": ["<external-user-guid-1>", "<external-user-guid-2>"]
}Required $heat-dataservice fields:
version(string)groups(array)channels(array)
Supported channel shapes:
seriestimestampsvalueeventsranges
Runtime Behavior
At runtime, the processor:
- Fetches latest upstream JSON payload.
- Validates top-level
$heat-dataservicepresence and structure. - Validates
layoutConfigurationas v2components.rowsshape. - Submits payload as node output.
- Resolves scenario instance from session metadata, existing instances, or optional auto-create config.
- Maps
dashboard_usersvalues to internal user IDs. - Creates or updates a dimension with
DashboardVersion="Next".
This node is idempotent. Re-running appends a new node output and updates/creates the dimension using current payload/config.
User Attribution and Existing Fallbacks
The attribution logic matches dashboard (v1):
- Missing or non-array
dashboard_usersis treated as[](with log error). - Unknown GUIDs are ignored (only matched users are attributed).
- If no users are mapped and dimensions already exist, the first existing dimension is updated.
- If exactly one user is mapped on dimension creation, metadata stores
grouping.role -> dimension.id.