Bläddra i källkod

Taken P2-45b, P2-45c en 76 af — datumkiezer-annuleren, chiplabel, agendapadding

- P2-45b: nieuwe custom function `datumFilterVanPicker(DateTime?)` (non-nullable
  String) vervangt de `dateTimeFormat`-binding op de Update-App-State-actie van
  de kalenderknop op Home. Annuleren van de kiezer zet `datumFilter` nu leeg
  (chip "Alles") in plaats van op vandaag; FlutterFlow's eigen else-tak zet
  `datePicked` bij annuleren op `getCurrentTimestamp`, dus de functie herkent
  een geannuleerde keuze aan de niet-middernacht tijdcomponent.
- P2-45c: chiplabel "Dit weekend" -> "Weekend" (nl en en). `filterDatumVan`/
  `filterDatumTot` matchen op `contains('weekend')`, dus de filterlogica blijft
  werken.
- 76: bleek al gefixt in FlutterFlow (12px links/rechts op de horeca-agendakaart),
  geverifieerd met een verse export.

Alle drie geverifieerd met een verse export; `dart analyze lib/` geeft 0 errors.

CLAUDE.md: vier nieuwe valkuilen/recepten vastgelegd (palet-typing dat in de
code-editor landt, nieuwe custom function = tijdelijke rode Issue, custom
function binden in de Action Flow Editor, non-nullable return-type).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bob 18 timmar sedan
förälder
incheckning
3cf9504056
2 ändrade filer med 47 tillägg och 14 borttagningar
  1. 43 0
      CLAUDE.md
  2. 4 14
      TASKS.md

+ 43 - 0
CLAUDE.md

@@ -3704,6 +3704,49 @@ verwachte regel, i.p.v. blind op de "Synced"-badge te vertrouwen.
   blijvende schade). Sluit dus eerst met Escape elk open contextmenu
   vóór je `⌘+K` gebruikt.
 
+**⚠️ Het ⌘+K-commandopalet negeert de eerste typ-actie — en die tekst landt dan
+in de CUSTOM CODE-EDITOR eronder.** Bevestigd 2026-09-19: twee keer "home" getypt
+om naar de Home-pagina te springen; het palet bleef leeg en `home` `home` werd
+aan een regel Dart-code geplakt (`...padLeft(2, '0');homehome`). Dat gaf meteen
+een derde, rode Issue en de navigatie werkte niet meer. **Herstel is schoon en
+zonder verlies:** Cancel rechtsboven in de Custom-Code-editor → "Discard current
+changes to custom code?" → **Yes** — de opgeslagen versie komt ongeschonden
+terug. **Voorkom het:** klik het palet aan, maak een `zoom` van het zoekveld, en
+typ pas als je jouw tekst er écht ziet staan. Of nog simpeler: het palet toont
+zonder zoekterm al een lijstje met o.a. `Page: home` en `Tabs: Custom Code` —
+vaak kun je gewoon meteen klikken.
+
+**Een NIEUWE Custom Function levert zelf een rode Issue op tot je 'm één keer
+laat controleren.** De melding luidt *"Custom functions need to be checked for
+errors. Click here to check for errors."* Klik die regel in het Issues-paneel (of
+het vinkje linksboven in de code-editor) en de teller valt terug. Niet schrikken:
+de export werkt intussen gewoon, dit blokkeert niets.
+
+**Een custom function als waarde van een `Update App State`-actie binden LUKT wel
+— mits je het in de Action Flow Editor doet.** Volledig recept, 2026-09-19 in één
+ronde gelukt (P2-45b, kalenderknop op Home):
+1. Widget → Actions-tab → klik het blok **"On Tap · N actions"** → de Action Flow
+   Editor opent; klap de trigger-kolom in met het **"|<"** linksboven, dan staat
+   het rechterpaneel volledig in beeld.
+2. Klik de actie-node → **Value to set** → het **potlood** rechts in het veld.
+3. In "Set Variable" het **potlood naast "Variable"** → bronnenlijst.
+4. **Zoek op een term die 2+ bronnen overhoudt** (`datumFilter` gaf App State én
+   Custom Functions; de volledige functienaam laat er één over en rendert leeg).
+5. Hover-truc in **één** batch: hover ver weg → hover op de rij → wacht 10 s →
+   klik dezelfde coördinaat.
+6. Het argument: potlood naast **Value** onder "Set Function Arguments". Valt de
+   gewenste optie onder de onderrand, **sleep de dialoog aan zijn onderrand
+   omlaag** — dan staan alle opties er (de niet-passende types staan grijs, de
+   juiste wit).
+7. Nested dialoog sluiten met de **X**, dán **Confirm** in een eigen tool-aanroep.
+
+**Wil je dat een lege waarde ook écht leeg blijft: maak het return-type van de
+custom function NON-nullable.** Bij een `String?` eist FlutterFlow een "Default
+Variable Value", en `valueOrDefault` substitueert die óók bij een **lege string**
+— je functie kan dan nooit "niets" teruggeven. Met een non-nullable `String`
+(vinkje *Nullable* uit bij Return Value) genereert de export een kale
+`functions.mijnFunctie(x)` zonder wrapper.
+
 **Widget Tree/canvas: klik-coördinaten zijn NIET betrouwbaar 1-op-1
 met wat een screenshot toont, en dit is geen vast te rekenen offset.**
 Los van de al bekende rechterpaneel-breedte-clipping (hierboven) bleek

+ 4 - 14
TASKS.md

@@ -22,10 +22,7 @@ oppakken.
 | ~~88B~~ | Pagina "Mijn aanmeldingen" | ⚠️ **Al geclaimd** door de sessie 'taken-B1-B7' — niet oppakken |
 | **98** | "Zet in mijn agenda"-knop op een evenement (`add_2_calendar`) | Claude — **BEZIG** (sessie 2026-09-19). Blokkeert op Drupal-deel bij Bob, zie 98A |
 | **65** | Functionele doorloop van de release-build | Build draait al op emulator-5556; de checklist is nog niet afgelopen |
-| **P2-45b** | Datumkiezer annuleren → terug naar "Alles" — **Claude BEZIG (sessie autonoom 2026-09-19)** | In de On-Pressed-keten van de kalenderknop op Home: de else-tak (`datePicked = getCurrentTimestamp`) vervangen door Update App State `datumFilter` → Clear Value, en de daaropvolgende `datumFilter = format(datePicked)` alleen in de gekozen-tak laten lopen. Nu: `home_widget.dart` r.401-410 |
 | **P2-24 B** | Categoriedropdown horeca-overzicht, tab-bewust (Bob 2026-09-19) | Custom function + dropdown op `horecagelegenhedenOverzichtCurrent`; zie P2-24 voor de hoofd-/subcategorie-nuance |
-| **P2-45c** | Chiplabels op Home korter — **Claude BEZIG (sessie autonoom 2026-09-19)** | Ze wrappen met de kalenderknop erbij naar twee regels |
-| **76** | Linkerpadding op de horeca-agendakaart — **Claude BEZIG (sessie autonoom 2026-09-19)** | Klein, cosmetisch |
 | **G0.6** | Play-screenshots schieten | Browserloos op beide AVD's, ±10 min — zeg het en het gebeurt |
 
 ## 👤 BOB — OPEN, in volgorde van wat de livegang blokkeert
@@ -197,17 +194,10 @@ dit endpoint zit in de 5-minuten Cache Rule.
 
 ### 🔧 Kleine open restpunten (app)
 
-- **P2-45b · annuleren van de datumkiezer · Eigenaar: Claude (besluit
-  Bob 2026-09-19: terugvallen op de standaard "Alles", niet op vandaag).**
-  Nu (`home_widget.dart` r.393-410): kiezer geannuleerd nádat er eerder een
-  datum gekozen was → `datePicked = getCurrentTimestamp` → `datumFilter` =
-  vandaag. Gewenst: annuleren → `datumFilter` leeg (= chip "Alles"), en de
-  `dateTimeFormat`-stap alleen uitvoeren als er echt een datum gekozen is.
-- **P2-45c · chiplabels korter.** De vier chiplabels wrapten met het zoekicoon
-  al naar twee regels; met de kalenderknop erbij is er nóg minder ruimte.
-  Suggestie: "Vandaag / Weekend / Deze week / Alles".
-- **76 · linkerpadding op de horeca-agendakaart** — klein, cosmetisch,
-  eigenaar onbepaald.
+*(P2-45b, P2-45c en 76 zijn op 2026-09-19 afgerond en geverifieerd met een
+verse export — zie de commit van die datum.)*
+
+
 
 ---