Interaktives Abhängigkeiten-Panel (Vorgänger/Nachfolger, andockbar)

Rechtsklick auf eine Zelle → "🕸 Abhängigkeiten anzeigen" öffnet ein an der
rechten Seite angedocktes Panel (wie das Einstellungen-Panel links) mit den
direkten Vorgängern (was die Zelle liest) und Nachfolgern (was sie liest),
auch über Tabellen-/Blattgrenzen hinweg. Ein Klick auf einen Eintrag
navigiert wirklich dorthin: wählt die echte Zelle im Dokument aus, wechselt
bei Bedarf das Blatt-Tab, und das Panel zentriert sich neu — Blatt-Tabs,
Canvas, Formel- und Statusleiste bleiben dabei die ganze Zeit sichtbar und
bedienbar (kein Vollbild-Dialog). Jeder Eintrag zeigt immer den Blattnamen,
nie nur implizit. Zirkelbezüge werden rot markiert.

Neu in der Engine: Workbook.graphPrecedents/graphDependents, dünne
öffentliche Wrapper um den bereits vorhandenen DependencyGraph. Im Store:
cellGraphSelf/cellGraphNeighbors (Anreicherung für die Anzeige) sowie
openDependencyGraph/closeDependencyGraph (dokumentweiter UI-State, ruft
intern das bestehende selectCell auf).

424 Tests (Engine-/Store-Ebene vollständig abgedeckt), vue-tsc/eslint/build
sauber. Das Panel selbst nur live per Playwright verifiziert (kein
Komponenten-Test-Setup vorhanden, in README dokumentiert).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
wkh
2026-09-08 23:19:42 +02:00
co-authored by Claude Sonnet 5
parent 6a62dccedd
commit f45fbab945
12 changed files with 712 additions and 3 deletions
+8 -2
View File
@@ -74,7 +74,7 @@ function selectObj(id: string) {
<template>
<div
class="canvas-wrap"
:class="{ 'drawer-open': store.ui.settingsOpen }"
:class="{ 'drawer-open': store.ui.settingsOpen, 'dep-open': store.ui.depGraph }"
:style="appearance"
>
<div
@@ -118,15 +118,21 @@ function selectObj(id: string) {
position: relative;
height: 100%;
overflow: hidden;
transition: margin-left 0.18s ease;
transition: margin-left 0.18s ease, margin-right 0.18s ease;
}
.canvas-wrap.drawer-open {
margin-left: 320px;
}
.canvas-wrap.dep-open {
margin-right: 380px;
}
@media (max-width: 640px) {
.canvas-wrap.drawer-open {
margin-left: 0; /* drawer overlays on narrow screens */
}
.canvas-wrap.dep-open {
margin-right: 0;
}
}
.canvas-scroll {
position: absolute;