Phase 2: dashboard tabs + popups, chart fixes, shell relocation

Built via parallel Workflow (5 builders + adversarial verifiers), then
live-rendered and fixed in a headless browser against the running gateway.

Tabs (PrimeControls/Tabs/*):
- Overview: priority cards, KPI status row, alarm-rate timeline, insights, top-5
- Analysis: hour x day heatmap, priority donut vs ISA 80/15/5, MTTA/MTTR, floods
- BadActors: chattering/standing/fleeting tables, focus chip, AlarmDetail wiring
- Journal: paginated getJournalPage table, CSV export, EventDetail wiring

Popups (PrimeControls/Popups/*): HealthScore, ShiftReport, AlarmDetail, EventDetail

Chart fixes (verified rendering in-browser):
- Overview timeline: seeded dataSources.rate, switched to static fills, split
  flood bins into their own red stacked series (per-point deriveFieldsFromData
  fill was crashing render with React.cloneElement null).
- BadActors: removed the dual-axis Pareto XY chart (scaling was unusable);
  replaced with a ranked "Top Sources" table (share-of-total progress bar +
  cumulative %). Same insight, no axis scaling to break.

Structural / hygiene:
- Relocated Header + FilterBar from Dashboard/ to Shell/ and updated the two
  embed paths. A Perspective view cannot resolve sub-views nested inside another
  view's folder, so both were rendering as "view does not exist" placeholders.
- Set persistent:false on all view input params. persistent:true caused the
  gateway to bake the live bundle (with sim tag paths) into Tabs/Analysis on
  render; nulled that baked data and reset the session query range to 0.

lint_project.py: 0 failures / 0 warnings.

Verified in-browser: Overview, BadActors. NOT yet live-verified: Analysis,
Journal, and the four popups (schema-verified only). Header content is next
phase (renders now, but a benign cloneElement console warning remains).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-16 14:45:17 -05:00
parent ecb10b9b7b
commit 83b23431c6
30 changed files with 8678 additions and 312 deletions

View File

@@ -2,18 +2,18 @@
"custom": {
"PrimeControls": {
"query": {
"startMs": 0,
"endMs": 0,
"rangePreset": "8h",
"priorities": [],
"areas": [],
"states": [],
"endMs": 0,
"priorities": [],
"rangePreset": "8h",
"refreshToken": 0,
"search": "",
"refreshToken": 0
"startMs": 0,
"states": []
},
"ui": {
"selectedTab": 0,
"badActorFocus": ""
"badActorFocus": "",
"selectedTab": 0
}
}
},
@@ -68,15 +68,28 @@
"props.lastActivity": {
"access": "SYSTEM",
"persistent": false
},
"props.offline.capable": {
"access": "SYSTEM",
"persistent": false
},
"props.offline.enabled": {
"access": "SYSTEM",
"persistent": false
},
"props.offline.lastSynced": {
"access": "SYSTEM",
"persistent": false
}
},
"props": {
"address": "172.18.0.5",
"address": "172.23.0.1",
"device": {},
"geolocation": {},
"locale": "en-US",
"offline": {},
"securityLevels": [],
"theme": "light-cool",
"timeZoneId": "America/Los_Angeles"
"timeZoneId": "America/Chicago"
}
}
}