onu detail polish + clickable OLT detail modal
- Fix alarm card overflow: alarm rows stack (severity+text on one line that
wraps, meta below) instead of squeezing the text to ~0 width next to the
nowrap meta — which had made long alarm text render one char per line in
narrow columns. Also min-width:0 on cards/kv so long IPv6/descr strings
don't blow out the grid track.
- Combine Parent OLT + Upstream switch into one "Parent OLT & uplink" card.
- ONU list/search de-compacted: add equipment/version + PON-mode filters;
two-line rows (serial+status, then equipment · version · last-seen).
- UNI card labels the speed as configured ("cfg Auto/Auto"); negotiated
speed isn't in the payloads — link up/down still comes from LAN-LOS.
Clickable parent OLT -> OLT detail modal (showOltModal):
- new src/oltdetail.js (pure, shared; reuses summarizeAlarms) + getOltState
/ getOltAlarms client methods + api:getOltDetail (main + web + bridges).
- shows identity, traffic + util, ASIC temperature, ONU counts, laser,
alarms, upstream switch; plus a connected-ONU list with per-ONU
FEC/optical built from the loaded fleet (filtered by _status.oltMac),
each row clickable back into that ONU's detail.
Docs: CLAUDE.md §17 + IPC table.
Verified: node --check; oltdetail.js unit-tested 9/9 (fw active-bank,
traffic down=TX/up=RX, util, ASIC temp, ONU counts, laser, LLDP, alarms);
rendered the OLT modal + richer list offscreen and confirmed the alarm-text
wrap fix (alarm head ~1-2 lines, not vertical).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
276c3e9faa
commit
2046fad0f8
11 changed files with 321 additions and 59 deletions
24
CLAUDE.md
24
CLAUDE.md
|
|
@ -121,6 +121,7 @@ stream progress events back to the renderer.
|
|||
| `api:listOnuConfigs` / `api:getOnuConfig` | direct CFG access | — |
|
||||
| `api:getOnuCpe` | CPE (router) DHCP lease health + OUI vendor | — |
|
||||
| `api:getOnuDetail` | rich ONU detail: firmware/UNI/alarms/OLT/switch/traffic/CPE | — |
|
||||
| `api:getOltDetail` | OLT detail: traffic/temp/ONU-counts/laser/alarms/switch | — |
|
||||
| `api:listOnuFirmware` / `api:uploadFirmware` | firmware inventory | — |
|
||||
| `api:planUpgrade` | dry-run plan for selected ONUs | — |
|
||||
| `api:executePerOnu` | Procedure 7 — per-ONU PUTs | `upgrade:progress` |
|
||||
|
|
@ -870,6 +871,11 @@ from `state.fleet` (`onuClientStats`); the rest streams from one
|
|||
**not** TTL-cached (live detail). Dashboard abnormal-Rx/Tx drill-downs (§15)
|
||||
deep-link here via `openOnuInfo`.
|
||||
|
||||
The left list/search supports name/address/serial + equipment/version +
|
||||
PON-mode + status filters; rows are two-line (serial+status, then
|
||||
equipment · version · last-seen). Parent OLT and upstream switch are one
|
||||
combined card.
|
||||
|
||||
### Single-ONU upgrade
|
||||
|
||||
The Firmware card has a firmware picker + "Upgrade this ONU" button that
|
||||
|
|
@ -877,6 +883,24 @@ reuses the bulk per-ONU path — `executePerOnu({ onuIds: [id], … })`
|
|||
(Procedure 7, inactive-bank write via `bank-strategy`). Two-step `UPGRADE`
|
||||
typed confirm; streams `upgrade:progress`; refreshes the detail on success.
|
||||
|
||||
### Clickable parent OLT → OLT detail modal
|
||||
|
||||
The OLT name (and "View OLT details") opens `showOltModal` →
|
||||
`api:getOltDetail` → `src/oltdetail.js` (pure, shared; reuses
|
||||
`summarizeAlarms`): identity, traffic (OLT TX=down / RX=up) + util,
|
||||
**ASIC temperature**, ONU counts (total/online/offline), laser, alarms, and
|
||||
the upstream switch. The **connected-ONU list** (per-ONU FEC/optical, each
|
||||
clickable back into the ONU detail) is built **client-side from the loaded
|
||||
`state.fleet`** filtered by `_status.oltMac` — no extra per-ONU fetch; it
|
||||
prompts to load the fleet if empty. `getOltDetail` fans out `getOltConfig` +
|
||||
`getOltState` + `getOltAlarms`.
|
||||
|
||||
**Caveat — UNI link speed is the *configured* value** (`UNI-ETH n`.Speed,
|
||||
usually `Auto`), shown as "cfg Auto/Auto". A negotiated link speed isn't in
|
||||
the ONU-CFG / alarm / stats payloads inspected so far; link up/down comes
|
||||
from the `LAN-LOS` alarm instead. Wire negotiated speed if a future
|
||||
ONU-STATE sample exposes a per-UNI operational field.
|
||||
|
||||
### CPE (customer router)
|
||||
|
||||
`api:getOnuCpe` → `McmsClient.getCpe` (`GET /api/cpe/onu/<id>/` — unversioned,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue