docs(uns): document the equipment page tabs; repoint alarm-editing surface

Update Uns.md to show Equipment as a leaf in the browse tree (Area → Line →
Equipment), add the /uns/equipment/{id} page with its Details/Tags/Virtual
Tags/Alarms tabs, and adjust the actions table and sub-sections accordingly.
ScriptedAlarms.md and AlarmTracking.md required no changes — neither
referenced the standalone /scripted-alarms editing page.
This commit is contained in:
Joseph Doherty
2026-06-11 15:14:09 -04:00
parent f1c4392b0d
commit a0f3f4ab89
+33 -17
View File
@@ -8,16 +8,16 @@ global master tree.
## The tree ## The tree
The page shows every layer of the UNS as one expandable tree: The page shows every layer of the UNS as one expandable tree. Equipment is a
**leaf** in the tree — tags, virtual tags, and alarms live on a dedicated
equipment page, not inline:
``` ```
Enterprise (read-only grouping — ServerCluster.Enterprise) Enterprise (read-only grouping — ServerCluster.Enterprise)
└─ Site / Cluster (read-only grouping — a ServerCluster row) └─ Site / Cluster (read-only grouping — a ServerCluster row)
└─ Area (editable — UnsArea) └─ Area (editable — UnsArea)
└─ Line (editable — UnsLine) └─ Line (editable — UnsLine)
└─ Equipment (editable — Equipment) └─ Equipment (leaf — Equipment; opens its own page)
├─ Tag (editable — equipment-bound Tag)
└─ Virtual tag (editable — VirtualTag)
``` ```
**Enterprise and Site/Cluster are read-only here.** They are derived from **Enterprise and Site/Cluster are read-only here.** They are derived from
@@ -31,27 +31,40 @@ equipment, the combined tag + virtual-tag count).
### Navigating ### Navigating
- **Expand all / Collapse all** toggle the structural levels. Equipment - **Expand all / Collapse all** toggle the structural levels.
nodes are left collapsed by Expand-all because their tags/virtual-tags are
**lazy-loaded** — they fetch on first expand (you'll see a brief spinner).
- **Filter by name** does a case-insensitive substring match on the names of - **Filter by name** does a case-insensitive substring match on the names of
a node's direct children. a node's direct children.
## Creating and editing ## Creating and editing
Every editable row has inline actions; clicking one opens a modal: Every editable row has inline actions:
| Node | Actions | | Node | Actions |
|---|---| |---|---|
| Cluster | **+ Area** | | Cluster | **+ Area** |
| Area | **+ Line**, Edit, Delete | | Area | **+ Line**, Edit, Delete |
| Line | **+ Equipment**, Edit, Delete | | Line | **+ Equipment**, Edit, Delete |
| Equipment | **+ Tag**, **+ Virtual tag**, Edit, Delete | | Equipment | **Open**, Delete |
| Tag / Virtual tag | Edit, Delete |
A **+ Child** action pre-fills the parent for you (e.g. **+ Line** on an A **+ Child** action pre-fills the parent for you (e.g. **+ Line** on an
area opens the Line modal with that area already selected). Build a branch area opens the Line modal with that area already selected). Build a branch
top-down: Area → Line → Equipment Tag / Virtual tag. top-down: Area → Line → Equipment. Tags, virtual tags, and scripted alarms
are managed on the equipment page (see below).
## Equipment page (`/uns/equipment/{id}`)
Clicking **Open** on an Equipment row (or **+ Equipment** on a Line) navigates
to the equipment page. The page is organised into four tabs:
| Tab | Content |
|---|---|
| **Details** | Equipment identity — name, description, OPC-40010 namespace fields, driver binding, and served-by cluster. (This is the former EquipmentModal, now a full page.) |
| **Tags** | Equipment-bound driver tags. Each tag uses the driver-typed config editor (same editors as before — Modbus, S7, AB CIP, etc.) with the same client-side validation. |
| **Virtual Tags** | Virtual tags driven by C# scripts. The inline Monaco script editor with Roslyn IntelliSense, completions, and live diagnostics is available here per tag. |
| **Alarms** | Scripted-alarm definitions bound to this equipment. Create, edit, or delete predicates here; the Monaco editor is available for each predicate script. |
**"Add equipment"** under a Line uses the URL `/uns/equipment/new?lineId=...`,
pre-filling the parent line. Saving redirects to the new equipment's page.
### Served-by cluster ### Served-by cluster
@@ -63,10 +76,11 @@ it is simply `UnsArea.ClusterId`.
### Tags vs. Galaxy / SystemPlatform tags ### Tags vs. Galaxy / SystemPlatform tags
Tags created here are **equipment-bound** and require a driver instance. Tags created on the equipment page are **equipment-bound** and require a driver
The driver list in the Tag modal is scoped to the equipment's cluster and to instance. The driver list on the Tags tab is scoped to the equipment's cluster
drivers on an **Equipment-kind** namespace, so a driver-less equipment shows and to drivers on an **Equipment-kind** namespace, so a driver-less equipment
no eligible drivers until you bind one (edit the equipment and pick a driver). shows no eligible drivers until you bind one (edit the equipment on the Details
tab and pick a driver).
**Galaxy / AVEVA System Platform tags are not shown in this tree.** They hang **Galaxy / AVEVA System Platform tags are not shown in this tree.** They hang
off the driver's folder path and are auto-materialised from the Galaxy off the driver's folder path and are auto-materialised from the Galaxy
@@ -77,8 +91,9 @@ the live Galaxy hierarchy.
### Virtual tags ### Virtual tags
A virtual tag is bound to an equipment and driven by a **script** (no driver). A virtual tag is bound to an equipment and driven by a **script** (no driver).
Pick its script in the Virtual tag modal; the data type is chosen from the Add and edit virtual tags on the equipment page's **Virtual Tags** tab; the
standard OPC UA type list. data type is chosen from the standard OPC UA type list and the Monaco script
editor is available inline.
## Bulk import ## Bulk import
@@ -95,4 +110,5 @@ page) to push them into the running address space.
- [Configuration.md](Configuration.md) — the underlying config entities. - [Configuration.md](Configuration.md) — the underlying config entities.
- [VirtualTags.md](VirtualTags.md) — the scripting/virtual-tag engine. - [VirtualTags.md](VirtualTags.md) — the scripting/virtual-tag engine.
- [ScriptedAlarms.md](ScriptedAlarms.md) — scripted-alarm engine internals (predicates, state machine, ack/shelve).
- Design + decision log: [plans/2026-06-08-global-uns-management-design.md](plans/2026-06-08-global-uns-management-design.md). - Design + decision log: [plans/2026-06-08-global-uns-management-design.md](plans/2026-06-08-global-uns-management-design.md).