Größenänderung einer "Feste Größe"-Tabelle steuert Zeilen-/Spaltenzahl

Der SE-Griff einer Tabelle im "Feste Größe"-Modus ändert nicht mehr nur
den scrollbaren Pixel-Viewport, sondern direkt die Zeilen-/Spaltenzahl:
Vergrößern fügt leere Zeilen/Spalten hinzu, Verkleinern entfernt sie —
aber nie über echten Zellinhalt hinweg (klemmt auf die kleinste Größe,
die den vorhandenen Inhalt noch vollständig zeigt). Live-Vorschau während
des Ziehens bleibt der günstige reine Viewport-Resize (kein Workbook-
Rebuild pro Mausbewegung); die eigentliche Zeilen-/Spaltenänderung
committet erst beim Loslassen. Reine UI-Änderung (CanvasObject.vue),
nutzt die bestehenden setTableRows/setTableCols weiter.

Playwright-live-verifiziert, kein Komponenten-Test-Setup vorhanden
(README dokumentiert die Lücke).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
wkh
2026-09-08 22:50:27 +02:00
co-authored by Claude Sonnet 5
parent aef8f1349c
commit 76587c1cee
2 changed files with 93 additions and 4 deletions
+18 -3
View File
@@ -34,9 +34,18 @@ scroll- und zoombare Fläche, die **Objekte** trägt:
Kopfleiste). Zwei Darstellungen:
- **Automatisch** — so groß wie die Zellen, alle Zeilen sichtbar; der SE-Griff
skaliert die Spaltenbreiten proportional.
- **Feste Größe** — fester Viewport, **intern scrollbar**, mit frei wählbarer
Zahl **fixierter Kopfzeilen und fixierter Spalten** (`position: sticky`
gegen den Scroll-Container). Der SE-Griff zieht dann den Viewport auf.
- **Feste Größe** — mit frei wählbarer Zahl **fixierter Kopfzeilen und
fixierter Spalten** (`position: sticky` gegen den Scroll-Container, falls
der Inhalt doch mal über die Boxgröße hinauswächst — etwa durch Tippen
über den Rand hinaus). Der SE-Griff zieht hier **direkt an Zeilen-/
Spaltenzahl**: Vergrößern fügt leere Zeilen/Spalten hinzu, Verkleinern
entfernt sie — aber **nie** über echten Zellinhalt hinweg. Beim Loslassen
wird auf die kleinste Größe geklemmt, die den vorhandenen Inhalt noch
vollständig zeigt; die Box passt sich exakt an (kein Leerraum, kein
Scrollen nötig, solange nicht direkt über die Boxgröße hinaus getippt
wird). Die Breiten-/Höhenfelder im Einstellungen-Panel (⚙, s. u.) bleiben
davon unabhängig — reine Pixelmaße, ohne Rückwirkung auf Zeilen-/
Spaltenzahl.
Spaltenbreite per Drag am Spaltenkopf (ab **24 px**), **Zeilenhöhe** per Drag
an der Unterkante des Zeilenkopfs (Standard + je Zeile).
- **Diagramm-Objekt** — Chart.js (Balken/Linie), frei positionier- **und**
@@ -1028,6 +1037,12 @@ Grundrechenarten: `Übersicht!B2 = =SUM(Umsatz!B2:E2)`, `D2 = =B2-C2`,
`OFFSET`/`INDEX`-Äquivalent — ein `#REF`, das aus einer gelöschten Zeile
entsteht, muss von Hand korrigiert werden, es gibt keine „nächstbeste
Zelle"-Heuristik.
- **Größenänderung einer „Feste Größe"-Tabelle** (SE-Griff → Zeilen-/
Spaltenzahl, s. o. „Das Canvas-Modell") ist rein UI-seitig (`CanvasObject.vue`)
implementiert, ohne eigene Unit-Tests — das Projekt hat (noch) kein
Komponenten-Test-Setup (z. B. Vue Test Utils), nur Engine-/Store-Tests.
Nur live per Playwright verifiziert (Wachsen, Schrumpfen mit
Inhaltsschutz, deutliches Überschreiten der bestehenden Größe).
- **Objekt-Bezüge beim Anhängen.** Beim JSON-*Anhängen* zweier Dokumente werden
nur Blatt-/Objekt-IDs neu vergeben, nicht Tabellennamen. Kollidiert ein
angehängter Tabellenname mit einem bestehenden, gewinnt bei der Auflösung der