@using ZB.MOM.WW.ScadaBridge.Commons.Messages.Streaming @using ZB.MOM.WW.ScadaBridge.Commons.Types.Enums @* ── Alarm leaf badge cluster ── *@ @* State / kind / native sub-state / severity / HiLo level badges for one alarm. *@ @* Lifted verbatim from DebugView so the Alarm Summary page renders identically. *@ @Alarm.State @FormatKind(Alarm.Kind) @if (Alarm.Kind != AlarmKind.Computed) { @if (Alarm.Condition.Active && !Alarm.Condition.Acknowledged) { Unacked } @if (Alarm.Condition.Shelve != AlarmShelveState.Unshelved) { Shelved } @if (Alarm.Condition.Suppressed) { Suppressed } } sev @Alarm.Condition.Severity @if (Alarm.Level != AlarmLevel.None) { @FormatLevel(Alarm.Level) } @code { /// The alarm condition whose badges this component renders. [Parameter] public AlarmStateChanged Alarm { get; set; } = default!; private static string GetAlarmStateBadge(AlarmState state) => state switch { AlarmState.Active => "bg-danger", AlarmState.Normal => "bg-success", _ => "bg-secondary" }; /// /// Severity-tinted badge class for HiLo alarm levels. The critical bands /// (HighHigh / LowLow) get the danger class; warning bands get amber. /// private static string GetAlarmLevelBadge(AlarmLevel level) => level switch { AlarmLevel.HighHigh or AlarmLevel.LowLow => "bg-danger", AlarmLevel.High or AlarmLevel.Low => "bg-warning text-dark", _ => "bg-secondary" }; /// Badge class distinguishing computed (neutral) from native (info) alarms. private static string GetKindBadge(AlarmKind kind) => kind switch { AlarmKind.Computed => "bg-secondary", _ => "bg-info text-dark" }; /// Short display label for the alarm kind. private static string FormatKind(AlarmKind kind) => kind switch { AlarmKind.NativeOpcUa => "OPC UA", AlarmKind.NativeMxAccess => "MxAccess", _ => "Computed" }; private static string FormatLevel(AlarmLevel level) => level switch { AlarmLevel.HighHigh => "HiHi", AlarmLevel.High => "Hi", AlarmLevel.Low => "Lo", AlarmLevel.LowLow => "LoLo", _ => "—" }; }