81 lines
3.0 KiB
Plaintext
81 lines
3.0 KiB
Plaintext
@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. *@
|
|
<span class="badge @GetAlarmStateBadge(Alarm.State) me-1"
|
|
aria-label="@($"Alarm state: {Alarm.State}")">@Alarm.State</span>
|
|
<span class="badge @GetKindBadge(Alarm.Kind) me-1"
|
|
aria-label="@($"Alarm kind: {Alarm.Kind}")">@FormatKind(Alarm.Kind)</span>
|
|
@if (Alarm.Kind != AlarmKind.Computed)
|
|
{
|
|
@if (Alarm.Condition.Active && !Alarm.Condition.Acknowledged)
|
|
{
|
|
<span class="badge bg-warning text-dark me-1" aria-label="Unacknowledged">Unacked</span>
|
|
}
|
|
@if (Alarm.Condition.Shelve != AlarmShelveState.Unshelved)
|
|
{
|
|
<span class="badge bg-info text-dark me-1" title="@Alarm.Condition.Shelve"
|
|
aria-label="@($"Shelved: {Alarm.Condition.Shelve}")">Shelved</span>
|
|
}
|
|
@if (Alarm.Condition.Suppressed)
|
|
{
|
|
<span class="badge bg-info text-dark me-1" aria-label="Suppressed">Suppressed</span>
|
|
}
|
|
}
|
|
<span class="font-monospace small text-muted me-1"
|
|
aria-label="@($"Severity: {Alarm.Condition.Severity}")">sev @Alarm.Condition.Severity</span>
|
|
@if (Alarm.Level != AlarmLevel.None)
|
|
{
|
|
<span class="badge @GetAlarmLevelBadge(Alarm.Level) me-1"
|
|
aria-label="@($"Alarm level: {Alarm.Level}")">@FormatLevel(Alarm.Level)</span>
|
|
}
|
|
|
|
@code {
|
|
/// <summary>The alarm condition whose badges this component renders.</summary>
|
|
[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"
|
|
};
|
|
|
|
/// <summary>
|
|
/// Severity-tinted badge class for HiLo alarm levels. The critical bands
|
|
/// (HighHigh / LowLow) get the danger class; warning bands get amber.
|
|
/// </summary>
|
|
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"
|
|
};
|
|
|
|
/// <summary>Badge class distinguishing computed (neutral) from native (info) alarms.</summary>
|
|
private static string GetKindBadge(AlarmKind kind) => kind switch
|
|
{
|
|
AlarmKind.Computed => "bg-secondary",
|
|
_ => "bg-info text-dark"
|
|
};
|
|
|
|
/// <summary>Short display label for the alarm kind.</summary>
|
|
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",
|
|
_ => "—"
|
|
};
|
|
}
|