feat(adminui): typed native-alarm section in the raw tag modal (#642)

NativeAlarmModel: IsAlarm=false now removes the alarm key; advisory Warnings, driver gating, order-safe Edit.

Claude-Session: https://claude.ai/code/session_01Ef2ozxS7QPanGT8uoATbTe
This commit is contained in:
Joseph Doherty
2026-10-08 16:52:55 -04:00
parent a8b07ae12d
commit 6951faa08f
6 changed files with 305 additions and 0 deletions
+10
View File
@@ -68,6 +68,16 @@ removed later.
auto-creates nested groups; typed columns win over `TagConfigJson` on conflict (flagged in
the review grid). **Import is all-or-nothing** — any invalid row blocks the whole commit.
Export round-trips the same shape.
- **Native alarm section (Gitea #642)** — the Edit-tag modal carries a shared `NativeAlarmEditor`
below the per-driver editor / JSON textarea: a "Native alarm (Part 9 condition)" switch plus
`alarmType`, `severity` (1..1000) and `historizeToAveva` (default/yes/no), writing the
driver-agnostic `alarm` object of `TagConfig`. Offered only for `IAlarmSource` drivers (MTConnect,
AbCip, FOCAS, OpcUaClient, Galaxy — `NativeAlarmModel.SupportsNativeAlarms`); on any other driver an
existing `alarm` object is shown with a "no effect" note and a Remove button, never silently
dropped. Switching it off REMOVES the `alarm` key. Validation is advisory only (warnings) — the
deploy gate has no `alarm` rule and the server clamps severity, so the editor is never stricter.
Every edit re-parses the latest `ConfigJson` (`NativeAlarmModel.Edit`), so it composes with the
driver editor in either order. Not yet on the manual-entry grid (use JSON/CSV there).
- **Browse device…** — enabled per the two-tier resolution (bespoke `IDriverBrowser` →
universal `DiscoveryDriverBrowser` when the driver's `ITagDiscovery.SupportsOnlineDiscovery`
is true → grayed out otherwise). Multi-selected leaves become raw `Tag` rows under the