style: stack per-class override rows instead of a wide table (REQ-181 layout)

The width:100% table plus the new MaxBox column let the Class column absorb
the slack, stranding the Container checkbox away from its class. One block
per class now: name + Container checkbox on the first line, Conf/IoU/MinBox/
MaxBox inputs in a wrapping grid below. Behavior identical - KEYS,
buildClassParams, compose() copy line, toggleContainer revert, aria labels.
This commit is contained in:
asus committed 2026-10-05 11:01:26 +07:00
1 parent d3a6aa49b6
commit 2971f9192c
4 files changed
+75 -61

No files matched your search

+10 -6
View File
@@ -449,9 +449,13 @@ Two columns inside one dialog (920 px wide, max 96 vw / 90 vh, scrollable).
- Confidence threshold — 0.05…0.95 step 0.05, default 0.35.
- NMS IoU threshold — 0…0.9 step 0.05, default 0.0.
- Min box size (fraction of frame) — 0…0.5 step 0.005, default 0, shown as a percentage.
- **Per-class overrides** (REQ-181) — a compact table below the sliders, one row per currently
selected class: `Conf` / `IoU` / `MinBox` / `MaxBox` number inputs and a **Container** checkbox
(REQ-184). Each input's placeholder shows the current global value and an empty input
- **Per-class overrides** (REQ-181) — one **stacked block** per currently selected class
below the sliders: the class name on the first line with its **Container** checkbox
(REQ-184) at the right, then a wrapping grid of `Conf` / `IoU` / `MinBox` / `MaxBox`
number inputs, each labelled in its own colour. No column headers, no wide table — a
narrow modal wraps the grid instead of squeezing the numbers, and the checkbox never
drifts away from its class. Each input's placeholder shows the current global value and
an empty input
inherits it; only filled cells are sent, as
`class_params` on **both** the preview and the job request, so preview and run cannot
disagree. Classes without an override behave exactly as before. The checkbox marks the
@@ -462,7 +466,7 @@ Two columns inside one dialog (920 px wide, max 96 vw / 90 vh, scrollable).
unmarked classes are governed by IoU alone. Toggling is optimistic
`PATCH /projects/{id} { containers: { [classId]: bool } }` into `project_classes.container`
with revert on rejection — preview and batch job read the same stored flag.
- **Copy (REQ-186)** — small right-aligned ghost button above the overrides table; label
- **Copy (REQ-186)** — small right-aligned ghost button above the overrides block; label
`Copy`, flips to `Copied` for 1.5 s inside an `aria-live` span, and on failure silently
stays `Copy`. One line per selected class, e.g.
`class sack conf 0.4 iou 0.6 minbox 0.005 maxbox 1 container false` — an empty input copies the
@@ -537,8 +541,8 @@ Same anatomy, wider (1040 px), with three differences:
must not abort the rest; the backend GPU lock serialises the real work anyway. Progress is
reported as `done/total (failed)` and the result message is `Queued N auto-annotation job(s)`.
The per-class overrides table (REQ-181) appears here too, below the sliders — same columns
including the **Container** checkbox (REQ-184) — and its
The per-class overrides block (REQ-181) appears here too, below the sliders — the same
stacked rows, **Container** checkbox (REQ-184) included — and its
`class_params` ride along on every preview and start request — one set of overrides applies
to all selected batches.