Tabellen B — Document: tabel en tijdlijn invoegen zonder dialoog #2053

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

Onderdeel van #2051.

Wat je wilt bereiken

Een tabel (of document-tijdlijn) invoegen in een document is één toets/klik: er verschijnt ter plekke een lege spreadsheet-tabel met de cursor in de eerste cel. Geen dialoog, geen Toepassen, geen TableEditor.

Dit is B in de serie (#2051). Hangt af van #2052 alleen in zoverre dat het raster ergens vandaan moet komen — visueel is dat al TableEmbedBuilder. Deze issue raakt het invoegpad, niet de tabeleditor van een dia.

Wat er nu is

In lib/widgets/parts/document_editor_inserts.dart:

  • _insertTable opent showEmbedEditorDialog met TableEditor (leeg 2×2), en schrijft pas bij Toepassen een GFM-tabel op de cursor.
  • _insertTimeline / _timelineBlockFromEditor doen hetzelfde, met koppen Tijd / Gebeurtenis / Status, en weigeren Toepassen tot er een gebeurtenis in staat.

In Visueel is de tabel ná invoegen wél het rekenblad (TableEmbedBuilder). De gebruiker ziet dus eerst de oude velden-dialoog en daarna het spreadsheet. Dat is de inconsistentie bij aanmaken.

In Bron is een dialoog verdedigbaar (je zit in platte tekst), maar een GFM-stub op de cursor is korter en past bij hoe mermaid al wordt ingevoegd (_insertMermaid schrijft gewoon een fence, zonder dialoog).

Wat je bouwt

Visueel

  • Invoegen → Tabel zet een lege 2×2 GFM-tabel op de cursor (encodeMarkdownTable van een 2×2 leeg raster, zelfde start als TableEditController._adopt).
  • Focus landt in cel (0, 0) van die embed, zodat je meteen typt. Geen dialoog.
  • Invoegen → Tijdlijn zet de gemarkeerde tabel neer met de drie koppen en één lege body-rij, cursor in de eerste gebeurteniscel. De snackbar “voeg eerst een gebeurtenis toe” vervalt: een lege tijdlijn is geldig om later te vullen, net als een lege gewone tabel. (Een malgevormde marker blijft visueel bewerkbaar, dat pad bestaat al in TimelineTableEmbedBuilder.)

Bron

  • Zelfde GFM (of gemarkeerde GFM) op de cursor, geen dialoog. De live preview rechts toont de tabel; bewerken in Bron zelf blijft de pijplijnen, tot #2054 de preview invulbaar maakt.

Wat je niet doet

  • De visuele tabeleditor zelf (TableEmbedBuilder) herschrijven — die is de maatstaf.
  • Presenteren.
  • Slide-tabel invoegen (nieuwe dia van type tabel) — dat is #2052.
  • Bestandsformaat: de marker <!-- timeline --> en GFM blijven zoals ze zijn.

Klaar als

  • Invoegen → Tabel in Visueel: geen dialoog; cursor in de eerste cel van een 2×2-tabel in het document.
  • Tab vanaf de laatste cel groeit die nieuwe tabel (bestaand embed-gedrag, toetsen in de test).
  • Invoegen → Tijdlijn in Visueel: geen dialoog; koppen aanwezig; typen in een cel schrijft de gemarkeerde tabel terug.
  • Annuleren bestaat niet meer als stap: invoegen is een gewone edit, Undo (Cmd/Ctrl+Z) haalt het blok weg.
  • Tests: test/document_table_edit_test.dart / visuele invoeg-tests — pad zonder TableEditor/showEmbedEditorDialog.
  • docs/USER_GUIDE.md + .nl.md (document-invoegen) en docs/design/DOCUMENT_MODE.md § invoegen: geen “TableEditor-dialoog” meer voor een verse tabel.

Kosten

Mogelijk één l10n-string minder (de tijdlijn-snackbar). Geen nieuwe dependency. TableEditor blijft tot #2052/#2054 nog bestaan voor slides en voor de potlood-dialoog in Bron.

Onderdeel van #2051. ## Wat je wilt bereiken Een tabel (of document-tijdlijn) **invoegen** in een document is één toets/klik: er verschijnt ter plekke een lege spreadsheet-tabel met de cursor in de eerste cel. Geen dialoog, geen *Toepassen*, geen `TableEditor`. Dit is **B** in de serie (#2051). Hangt af van #2052 alleen in zoverre dat het raster ergens vandaan moet komen — visueel is dat al `TableEmbedBuilder`. Deze issue raakt het **invoegpad**, niet de tabeleditor van een dia. ## Wat er nu is In `lib/widgets/parts/document_editor_inserts.dart`: - `_insertTable` opent `showEmbedEditorDialog` met `TableEditor` (leeg 2×2), en schrijft pas bij *Toepassen* een GFM-tabel op de cursor. - `_insertTimeline` / `_timelineBlockFromEditor` doen hetzelfde, met koppen Tijd / Gebeurtenis / Status, en weigeren Toepassen tot er een gebeurtenis in staat. In **Visueel** is de tabel ná invoegen wél het rekenblad (`TableEmbedBuilder`). De gebruiker ziet dus eerst de oude velden-dialoog en daarna het spreadsheet. Dat is de inconsistentie bij *aanmaken*. In **Bron** is een dialoog verdedigbaar (je zit in platte tekst), maar een GFM-stub op de cursor is korter en past bij hoe mermaid al wordt ingevoegd (`_insertMermaid` schrijft gewoon een fence, zonder dialoog). ## Wat je bouwt **Visueel** - Invoegen → Tabel zet een lege 2×2 GFM-tabel op de cursor (`encodeMarkdownTable` van een 2×2 leeg raster, zelfde start als `TableEditController._adopt`). - Focus landt in cel (0, 0) van die embed, zodat je meteen typt. Geen dialoog. - Invoegen → Tijdlijn zet de gemarkeerde tabel neer met de drie koppen en één lege body-rij, cursor in de eerste gebeurteniscel. De snackbar *“voeg eerst een gebeurtenis toe”* vervalt: een lege tijdlijn is geldig om later te vullen, net als een lege gewone tabel. (Een malgevormde marker blijft visueel bewerkbaar, dat pad bestaat al in `TimelineTableEmbedBuilder`.) **Bron** - Zelfde GFM (of gemarkeerde GFM) op de cursor, geen dialoog. De live preview rechts toont de tabel; bewerken in Bron zelf blijft de pijplijnen, tot #2054 de preview invulbaar maakt. ## Wat je niet doet - De visuele tabeleditor zelf (`TableEmbedBuilder`) herschrijven — die is de maatstaf. - Presenteren. - Slide-tabel invoegen (nieuwe dia van type tabel) — dat is #2052. - Bestandsformaat: de marker `<!-- timeline -->` en GFM blijven zoals ze zijn. ## Klaar als - [ ] Invoegen → Tabel in Visueel: geen dialoog; cursor in de eerste cel van een 2×2-tabel in het document. - [ ] Tab vanaf de laatste cel groeit die nieuwe tabel (bestaand embed-gedrag, toetsen in de test). - [ ] Invoegen → Tijdlijn in Visueel: geen dialoog; koppen aanwezig; typen in een cel schrijft de gemarkeerde tabel terug. - [ ] Annuleren bestaat niet meer als stap: invoegen is een gewone edit, Undo (`Cmd/Ctrl+Z`) haalt het blok weg. - [ ] Tests: `test/document_table_edit_test.dart` / visuele invoeg-tests — pad zonder `TableEditor`/`showEmbedEditorDialog`. - [ ] `docs/USER_GUIDE.md` + `.nl.md` (document-invoegen) en `docs/design/DOCUMENT_MODE.md` § invoegen: geen “TableEditor-dialoog” meer voor een verse tabel. ## Kosten Mogelijk één l10n-string minder (de tijdlijn-snackbar). Geen nieuwe dependency. `TableEditor` blijft tot #2052/#2054 nog bestaan voor slides en voor de potlood-dialoog in Bron.
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

Op main: 952223b87. Invoegen van tabel of tijdlijn zet een leeg GFM-blok op de cursor, zonder dialoog. Geen voorzet-knop. Niet in: presenteren; de tijdlijn-dia blijft een gebeurtenislijst.

Op main: 952223b87. Invoegen van tabel of tijdlijn zet een leeg GFM-blok op de cursor, zonder dialoog. Geen voorzet-knop. Niet in: presenteren; de tijdlijn-dia blijft een gebeurtenislijst.
brenno 2026-09-11 07:40:46 +00:00
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#2053
No description provided.