+
+
Alarm Summary
+
+ @if (_selectedSiteId != null)
+ {
+ Auto-refresh: @(_autoRefreshSeconds)s
+ }
+
+
+
+
+ @* ── Site picker ── *@
+
+
+
+
+
+
+
+
+
+
+
+ @if (_selectedSiteId == null)
+ {
+
Select a site to view its current alarms.
+ }
+ else
+ {
+ @* ── Roll-up tiles ── *@
+
+
+
+
+
@_rollup.TotalActive
+ Active Alarms
+
+
+
+
+
+
+
@_rollup.WorstSeverity
+ Worst Severity
+
+
+
+
+
+
+
@_rollup.UnackedCount
+ Unacknowledged
+
+
+
+
+
+
+
@_rows.Count
+
+ Total Rows
+ @if (_rollup.CountsByKind.Count > 0)
+ {
+ ·
+ @string.Join(" / ", _rollup.CountsByKind
+ .OrderBy(kv => kv.Key)
+ .Select(kv => $"{KindLabel(kv.Key)} {kv.Value}"))
+
+ }
+
+
+
+
+
+
+ @if (_notReporting.Count > 0)
+ {
+
+ Not reporting (@_notReporting.Count): @string.Join(", ", _notReporting)
+
+ }
+
+ @* ── Filters ── *@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ @* ── Alarm table ── *@
+ @if (_rows.Count == 0)
+ {
+
No alarms reported across this site's enabled instances.
+ }
+ else
+ {
+ var filtered = FilteredRows().ToList();
+
Showing @filtered.Count of @_rows.Count
+
+
+
+
+ | SortBy("instance")'>Instance @SortGlyph("instance") |
+ SortBy("name")'>Alarm @SortGlyph("name") |
+ State / Kind |
+ SortBy("severity")'>Severity @SortGlyph("severity") |
+
+
+
+ @foreach (var row in filtered)
+ {
+
+ | @row.InstanceUniqueName |
+ @row.Alarm.AlarmName |
+ |
+ @row.Alarm.Condition.Severity |
+
+ }
+
+
+
+ }
+ }
+
+
+@code {
+ private IReadOnlyList