Add cell copy/paste, multi-row edits and a context menu to the circuit grid

Ctrl+C/Ctrl+V copy and paste grid cells without opening an editor, using
the document copy/paste events so it also works over plain HTTP in the
LAN. Protection and cable summaries copy the complete circuit record;
tab-separated blocks from Excel spread over visible rows and columns.
With a Ctrl/Shift multi-selection, typing, pasting and the protection
dialog apply to every selected row that can take the value, including
device power and GZF; other cells are skipped and reported.

All of these writes use the new circuit-list.bulk-update command. It
carries complete circuit.update, circuit-device-row.update and
circuit-protection.update commands, applies them with the single-command
rules in one transaction and stores the reversed inverses, so each edit
is one undo step. The single-command apply logic is extracted for reuse.

A right-click menu (also context-menu key / Shift+F10) offers copy,
paste, edit, protection, cable sizing, insert circuit below, add device
and delete. The protection summary is now selected by click and opened
by double click, Enter or F2. Existing numbers open in the inline editor
with a decimal comma, so confirming an unchanged decimal no longer fails.

Refs #26

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Julian Appel 2026-10-30 07:38:28 +01:00
parent 07bc52a134
commit 17a3945813
18 changed files with 2548 additions and 391 deletions

View file

@ -186,6 +186,22 @@ Keyboard behavior:
Support Ctrl+Plus and Ctrl+Shift+Plus for insertion.
Ctrl+C/Ctrl+V copy and paste selected cells without opening an editor
(document `copy`/`paste` events, no secure-context clipboard API). Protection
and cable summaries copy the complete circuit record. With a Ctrl/Shift
multi-selection, typing, pasting and the protection dialog apply to every
selected row that can take the value; everything is one
`circuit-list.bulk-update` command and one undo step. A right-click context
menu (also context-menu key / Shift+F10) offers copy, paste, edit, protection,
cable sizing, insert circuit below, add device and delete. The protection
summary cell is selected by click and opened by double click/Enter/F2.
The circuit editor page fills the viewport; only the grid scrolls so the
column headers stay pinned. The compact title bar holds the back link, board
number/name, toolbar and power summary. Inside a project the sidebar shows only
the active project with its sections, an expandable board list (current board
highlighted), Revit and Seitenansicht; `/projects` keeps the project list.
Editor actions use `IconButton` (`src/frontend/components/icon-button.tsx`,
`lucide-react` icons). The German action text is always the accessible name and
tooltip; the toolbar shows icon plus text, group headers and rows show icons