Tabellen bij het bouwen: één rekenblad-UX (seriekaart) #2051

Closed
opened 2026-09-11 06:13:35 +00:00 by brenno · 2 comments
Owner

Wat je wilt bereiken

Overal waar je bij het bouwen een raster van cellen invult, is de look-and-feel die van de visuele documenttabel: een spreadsheet. Eén toetsenbordcontract, één huisstijl, soepel rijen/kolommen groeien terwijl je typt.

Dit issue is de kaart van de serie, geen bouwwerk. Pak een van de vijf onderdelen hieronder.

De maatstaf (niet opnieuw ontwerpen)

De visuele documenttabel is af. Code:

  • lib/widgets/reader/table_edit_controller.dart
  • lib/widgets/reader/table_edit_scaffold.dart
  • lib/widgets/reader/table_editable_cell.dart
  • lib/widgets/reader/parts/document_markdown_table.dart
  • lib/utils/table_cell_navigation.dart
  • lib/utils/table_clipboard.dart

Toetsen:

  • Tab / Shift+Tab door de cellen; Tab op de laatste cel maakt een rij.
  • Enter = een rij lager (onderaan groeit de tabel). Shift+Enter = regeleinde in de cel (<br>).
  • Pijlen: eerst door de celtekst, aan de rand naar de buurcel; nooit de tabel uit (tableArrowTarget).
  • Cmd/Ctrl+C zonder selectie in de cel = hele raster als TSV. Met selectie = die tekst.
  • Cmd/Ctrl+V (en Shift+Insert) = spreadsheet/CSV/GFM-tabel vanaf deze cel, raster groeit; anders tekst in de cel.
  • Werkbalk verschijnt bij de actieve cel: rij/kolom in, uit, verplaatsen, uitlijnen, sorteren.

Uiterlijk: chroomloze cellen in de gelezen tabel (zebra, randen, kolombreedte volgt inhoud). Inactieve cel toont gerenderde Markdown; de actieve cel toont de bron en een lichte tint.

Waar het nu uiteenloopt

  1. Slide-tabel + GanttTableEditor: gelijke Material-velden, Enter = regeleinde. → onderdeel A.
  2. Document invoegen — verse tabel/tijdlijn opent diezelfde TableEditor in een dialoog, terwijl bewerken in Visueel al het rekenblad is. → onderdeel B.
  3. Document Bron — preview is alleen-lezen; potlood/dubbelklik opent de dialoog. → onderdeel C.
  4. Grafiekdatachart_editor_grid.dart: Outline-velden, Tab verlaat het raster. → onderdeel D.
  5. Matrix (SIPOC/FMEA/RACI) — 110 px Outline-velden, plakken alleen via een knop. → onderdeel E.

Al goed, niet opnieuw doen:

  • Visuele documenteditor (TableEmbedBuilder) en document-tijdlijn in Visueel.
  • Notities-editor op een dia (zelfde embed-bouwer).
  • Presenteren (presenter_table.dart, _TableEditHost) — bewust buiten deze serie.
  • Formulier-editors op tabelopslag (checklist, scorecard, discoveries, assets, finding, scope matrix, control status). Geen raster voor de gebruiker; niet “omzetten naar spreadsheet”.
  • Tijdlijn-dia (TimelineEditor) is een gebeurtenislijst, geen celraster.

Bestandsformaat

Ongewijzigd. GFM-pijptabellen, bestaande slide-directives (tableNumberColumns, ocideck_template, grafiek-data/*.json). Geen nieuw token.

Volgorde

A → B en C (B/C mogen parallel ná of naast A). D en E zijn onafhankelijk.

Bouwen gebeurt op de vijf deelissues, niet hier.

Deelissues

  • A: #2052 — Slide-tabel en Gantt
  • B: #2053 — Document invoegen zonder dialoog
  • C: #2054 — Document Bron ter plekke
  • D: #2055 — Grafiekdataraster
  • E: #2056 — Matrix-editor

Extra die in de deelissues hoort (geen eigen issue)

  • Handleiding beschrijft nog een voorzet-knop voor Actie/Eigenaar/Deadline/Status; die is uit de code. Schrappen in #2052, niet terugbouwen.
  • TableEditor kan tot één rij krimpen; het document-rekenblad eist kop + body. Bij samenvoegen wint GFM (twee rijen).
  • Shift+Insert staat in SHORTCUTS als app-breed, maar zit alleen in TableEditor. Hoort in de gedeelde controller (#2052).
## Wat je wilt bereiken Overal waar je bij het **bouwen** een raster van cellen invult, is de look-and-feel die van de visuele documenttabel: een spreadsheet. Eén toetsenbordcontract, één huisstijl, soepel rijen/kolommen groeien terwijl je typt. Dit issue is de **kaart van de serie**, geen bouwwerk. Pak een van de vijf onderdelen hieronder. ## De maatstaf (niet opnieuw ontwerpen) De visuele documenttabel is af. Code: - `lib/widgets/reader/table_edit_controller.dart` - `lib/widgets/reader/table_edit_scaffold.dart` - `lib/widgets/reader/table_editable_cell.dart` - `lib/widgets/reader/parts/document_markdown_table.dart` - `lib/utils/table_cell_navigation.dart` - `lib/utils/table_clipboard.dart` Toetsen: - Tab / Shift+Tab door de cellen; Tab op de laatste cel maakt een rij. - Enter = een rij lager (onderaan groeit de tabel). Shift+Enter = regeleinde in de cel (`<br>`). - Pijlen: eerst door de celtekst, aan de rand naar de buurcel; nooit de tabel uit (`tableArrowTarget`). - Cmd/Ctrl+C zonder selectie in de cel = hele raster als TSV. Met selectie = die tekst. - Cmd/Ctrl+V (en Shift+Insert) = spreadsheet/CSV/GFM-tabel vanaf deze cel, raster groeit; anders tekst in de cel. - Werkbalk verschijnt bij de actieve cel: rij/kolom in, uit, verplaatsen, uitlijnen, sorteren. Uiterlijk: chroomloze cellen in de **gelezen** tabel (zebra, randen, kolombreedte volgt inhoud). Inactieve cel toont gerenderde Markdown; de actieve cel toont de bron en een lichte tint. ## Waar het nu uiteenloopt 1. **Slide-tabel + Gantt** — `TableEditor`: gelijke Material-velden, Enter = regeleinde. → onderdeel A. 2. **Document invoegen** — verse tabel/tijdlijn opent diezelfde `TableEditor` in een dialoog, terwijl bewerken in Visueel al het rekenblad is. → onderdeel B. 3. **Document Bron** — preview is alleen-lezen; potlood/dubbelklik opent de dialoog. → onderdeel C. 4. **Grafiekdata** — `chart_editor_grid.dart`: Outline-velden, Tab verlaat het raster. → onderdeel D. 5. **Matrix (SIPOC/FMEA/RACI)** — 110 px Outline-velden, plakken alleen via een knop. → onderdeel E. Al goed, niet opnieuw doen: - Visuele documenteditor (`TableEmbedBuilder`) en document-tijdlijn in Visueel. - Notities-editor op een dia (zelfde embed-bouwer). - **Presenteren** (`presenter_table.dart`, `_TableEditHost`) — bewust buiten deze serie. - Formulier-editors op tabelopslag (checklist, scorecard, discoveries, assets, finding, scope matrix, control status). Geen raster voor de gebruiker; niet “omzetten naar spreadsheet”. - Tijdlijn-*dia* (`TimelineEditor`) is een gebeurtenislijst, geen celraster. ## Bestandsformaat Ongewijzigd. GFM-pijptabellen, bestaande slide-directives (`tableNumberColumns`, `ocideck_template`, grafiek-`data/*.json`). Geen nieuw token. ## Volgorde A → B en C (B/C mogen parallel ná of naast A). D en E zijn onafhankelijk. Bouwen gebeurt op de vijf deelissues, niet hier. ## Deelissues - A: #2052 — Slide-tabel en Gantt - B: #2053 — Document invoegen zonder dialoog - C: #2054 — Document Bron ter plekke - D: #2055 — Grafiekdataraster - E: #2056 — Matrix-editor ## Extra die in de deelissues hoort (geen eigen issue) - Handleiding beschrijft nog een **voorzet-knop** voor Actie/Eigenaar/Deadline/Status; die is uit de code. Schrappen in #2052, niet terugbouwen. - `TableEditor` kan tot **één rij** krimpen; het document-rekenblad eist kop + body. Bij samenvoegen wint GFM (twee rijen). - `Shift+Insert` staat in SHORTCUTS als app-breed, maar zit alleen in `TableEditor`. Hoort in de gedeelde controller (#2052).
Author
Owner

Opgepakt. Tak: feature/table-spreadsheet-ux. Hele serie A–E op één tak. Reikwijdte: table_editor, table_edit_controller, document_editor_inserts, document_editor_layouts, chart_editor_grid, matrix_editor, USER_GUIDE, SHORTCUTS.

Opgepakt. Tak: feature/table-spreadsheet-ux. Hele serie A–E op één tak. Reikwijdte: table_editor, table_edit_controller, document_editor_inserts, document_editor_layouts, chart_editor_grid, matrix_editor, USER_GUIDE, SHORTCUTS.
Author
Owner

Landed in 9feb33085c via PR #2057 (merge 3eb3444ff). A–E op main. Niet in: presenteren, formulier-editors over tabelopslag, tijdlijn-dia.

Landed in 9feb33085caf1f5af4206dcdedbfb6a2214a8a41 via PR #2057 (merge 3eb3444ff). A–E op main. Niet in: presenteren, formulier-editors over tabelopslag, tijdlijn-dia.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#2051
No description provided.