Phases 4-6: Complete Central UI — Admin, Design, Deployment, and Operations pages

Phase 4 — Operator/Admin UI:
- Sites, DataConnections, Areas (hierarchical), API Keys (auto-generated) CRUD
- Health Dashboard (live refresh, per-site metrics from CentralHealthAggregator)
- Instance list with filtering/staleness/lifecycle actions
- Deployment status tracking with auto-refresh

Phase 5 — Authoring UI:
- Template authoring with inheritance tree, tabs (attrs/alarms/scripts/compositions)
- Lock indicators, on-demand validation, collision detection
- Shared scripts with syntax check
- External systems, DB connections, notification lists, Inbound API methods

Phase 6 — Deployment Operations UI:
- Staleness indicators, validation gating
- Debug view (instance selection, attribute/alarm live tables)
- Site event log viewer (filters, keyword search, keyset pagination)
- Parked message management, Audit log viewer with JSON state

Shared components: DataTable, ConfirmDialog, ToastNotification, LoadingSpinner, TimestampDisplay
623 tests pass, zero warnings. All Bootstrap 5, clean corporate design.
This commit is contained in:
Joseph Doherty
2026-03-16 21:47:37 -04:00
parent 6ea38faa6f
commit 3b2320bd35
22 changed files with 4821 additions and 32 deletions

View File

@@ -20,9 +20,15 @@
<li class="nav-item">
<NavLink class="nav-link" href="admin/sites">Sites</NavLink>
</li>
<li class="nav-item">
<NavLink class="nav-link" href="admin/data-connections">Data Connections</NavLink>
</li>
<li class="nav-item">
<NavLink class="nav-link" href="admin/areas">Areas</NavLink>
</li>
<li class="nav-item">
<NavLink class="nav-link" href="admin/api-keys">API Keys</NavLink>
</li>
</Authorized>
</AuthorizeView>
@@ -58,11 +64,26 @@
</Authorized>
</AuthorizeView>
@* Health — visible to all authenticated users *@
@* Monitoring — visible to all authenticated users *@
<li class="nav-section-header">Monitoring</li>
<li class="nav-item">
<NavLink class="nav-link" href="monitoring/health">Health Dashboard</NavLink>
</li>
<li class="nav-item">
<NavLink class="nav-link" href="monitoring/event-logs">Event Logs</NavLink>
</li>
<li class="nav-item">
<NavLink class="nav-link" href="monitoring/parked-messages">Parked Messages</NavLink>
</li>
@* Audit Log — Admin only *@
<AuthorizeView Policy="@AuthorizationPolicies.RequireAdmin">
<Authorized Context="auditContext">
<li class="nav-item">
<NavLink class="nav-link" href="monitoring/audit-log">Audit Log</NavLink>
</li>
</Authorized>
</AuthorizeView>
</Authorized>
</AuthorizeView>
</ul>