Ver código fonte

TASKS.md: P1-7 snelkeuzelijst favoriete gemeenten afgerond

Snelkeuzelijst met favoriete gemeenten op SelectStateDropDownComponent
(Select gemeente/provincie-pagina): custom action getFavorieteGemeenten,
Local Component State Variable, Wrap + Generate Dynamic Children, tap
zet gemeenteSelectId/Naam en navigeert naar Home. Bevestigd via verse
export + flutter analyze (0 errors) + live check op emulator-5556.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
bob 3 semanas atrás
pai
commit
839dd0c1ec
1 arquivos alterados com 59 adições e 33 exclusões
  1. 59 33
      TASKS.md

+ 59 - 33
TASKS.md

@@ -1203,9 +1203,7 @@ widget-canvas-rechterpaneel). **Niet aanraken:** de "Translate All"/
 "Translate Page"-knoppen (betaalde Growth/Business-upgrade) en de 7
 gekoppelde sleutels hierboven (apart traject).
 
-**P1-7 · Eigenaar: Claude — bezig (sessie 43, 2e blok, snelkeuzelijst
-favoriete gemeenten op de select-provincie/gemeente-pagina, zie
-"Nog open" onderaan voor scope/status).** "Favorieten pagina maken"
+**P1-7 · Eigenaar: Claude.** "Favorieten pagina maken"
 (Bob's naam voor deze taak, 2026-08-13 — was P0-4, samengevoegd met het
 oude P1-7 favorieten/profielscherm-werk + P2-8 gemeente-favoriet). Bob
 bouwt de Drupal-kant (views/endpoints) zelf, apart; Claude/deze sessie
@@ -1276,36 +1274,64 @@ zelfde fix als eerder al op de On-Page-Load-trigger. Bevestigd via
 verse export: beide `drupalRequest`-aanroepen in
 `favorieten_widget.dart` (regel 44 en 253) staan nu op `'GET'`.)*
 
-**Nog open:**
-- **Snelkeuzelijst favoriete gemeenten — in aanbouw, sessie 43 (2e
-  blok, na Bob's antwoord op de scope-vraag hierboven).** Bob wil dit
-  **niet** op Favorieten-Tab 2 zelf, maar op de
-  "Select gemeente/provincie"-pagina
-  (`lib/selecteer_plaats/selectprovinciegemeente/`, component
-  `SelectStateDropDownComponent`): meteen bij binnenkomst je favoriete
-  gemeenten als snelkeuze zien, i.p.v. eerst provincie én gemeente los
-  te moeten kiezen. **Bob's keuzes (bevestigd in de chat):** tik op een
-  favoriet = **direct naar Home** met die gemeente actief gekozen (niet
-  alleen de dropdowns invullen); lijst komt **onderaan**, ná de
-  dropdowns/"Toepassen"-knop (niet bovenaan). **Technische aanpak:**
-  `favorieteGemeenteIds` bevat alleen ID's, geen namen/provincie — er
-  is geen "alle gemeenten van heel NL in 1 call"-Drupal-endpoint, dus
-  namen resolven vraagt een loop over alle provincies. **Nieuwe custom
-  action `getFavorieteGemeenten(List<String>? favorieteGemeenteIds) ->
-  List<GemeenteModelStruct>`** (`lib/custom_code/actions/
-  get_favoriete_gemeenten.dart`, afgerond + gecommit `c6c3439`): haalt
-  `ProvinciesCall`, loopt alle provincies langs met `GemeentenCall`, en
-  verzamelt de gemeenten waarvan `gemeenteid` in `favorieteGemeenteIds`
-  voorkomt. Bevestigd via verse export + `flutter analyze` (0 errors).
-  **Nog te doen:** in de builder op `SelectStateDropDownComponent` een
-  Local Component State Variable toevoegen (`List<GemeenteModel>`) +
-  "On Page Load"/na provincielijst-fetch de custom action aanroepen en
-  het resultaat daarin zetten, dan onderaan (na de "Toepassen"-knop)
-  een Wrap/ListView met "Generate Dynamic Children" over die variabele
-  (chips met gemeentenaam), en per chip een tik-actie die
-  `gemeenteSelectId`/`gemeenteSelectNaam` (en `provincieSelectId`/
-  `provincieSelectName`, voor consistentie met de bestaande
-  dropdown-flow) zet en naar Home navigeert.
+*(Snelkeuzelijst favoriete gemeenten — volledig afgerond, sessie 43,
+bevestigd via verse export + `flutter analyze` (0 errors) + live check
+op emulator-5556 (profile mode, geen crash, dropdowns/Toepassen
+renderen correct met een lege favorietenlijst).** Op Bob's expliciete
+verzoek (niet op Favorieten-Tab 2, maar direct op de
+"Select gemeente/provincie"-pagina,
+`lib/selecteer_plaats/selectprovinciegemeente/`, component
+`SelectStateDropDownComponent`): meteen bij binnenkomst je favoriete
+gemeenten als snelkeuze zien. Bob's keuzes: tik op een favoriet =
+**direct naar Home** met die gemeente actief; lijst staat **onderaan**,
+ná de dropdowns/"Toepassen"-knop. **Bouwstappen (herbruikbaar
+patroon):**
+1. Custom action `getFavorieteGemeenten(List<String>?
+   favorieteGemeenteIds) -> List<GemeenteModelStruct>`
+   (`lib/custom_code/actions/get_favoriete_gemeenten.dart`, commit
+   `c6c3439`) — geen "alle gemeenten van heel NL"-Drupal-endpoint
+   beschikbaar, dus deze haalt `ProvinciesCall`, loopt alle provincies
+   langs met `GemeentenCall`, en verzamelt de gemeenten waarvan
+   `gemeenteid` in `favorieteGemeenteIds` voorkomt.
+2. Local Component State Variable `favorieteGemeentenLijst`
+   (`List<Data(GemeenteModel)>`) op `SelectStateDropDownComponent`.
+3. Twee acties toegevoegd aan het **einde** van de bestaande
+   "On Initialization"-flow (ná de 16 bestaande acties, via de Action
+   Flow Editor's "+"-connector onder het laatste blok — niet het
+   compacte Actions-paneel, dat toont geen "volgende actie
+   toevoegen"-knop meer na de eerste actie): Custom Action
+   `getFavorieteGemeenten` (argument = App State
+   `favorieteGemeenteIds`) → Update Component State (`favorieteGemeentenLijst`
+   = Action Outputs-resultaat).
+4. Onder de bestaande "Toepassen"-knop: **Wrap** ingevoegd (rechtsklik
+   Column → Insert Widget → koos per ongeluk eerst ListView; **Replace
+   Widget** naar Wrap behoudt eventuele latere Generate-Dynamic-
+   Children-config, zie CLAUDE.md) → **Generate Dynamic Children**
+   (4e icoontje) met Variable Name `favorieteGemeenteItem`, Value =
+   Component State `favorieteGemeentenLijst`, "No Further Changes".
+5. Kind-`Container` + `Text` toegevoegd; Text's waarde via Set from
+   Variable → `favorieteGemeenteItem` → Available Options **"Data
+   Structure Field"** → `gemeentename` (dit type, een Data-typed loop-
+   item i.p.v. een raw JSON-item, biedt wél een directe
+   veld-picker — geen JSON Path nodig).
+6. Container's **On Tap** (Actions-tab, 2e icoontje): Update App State
+   (`gemeenteSelectId`/`gemeenteSelectNaam`, elk Set Value → Data
+   Structure Field `gemeenteid`/`gemeentename` op hetzelfde loop-item)
+   → Navigate To Home (Allow Back Navigation aan, zelfde patroon als de
+   bestaande "Toepassen"-knop: `context.pushNamed`).
+Gegenereerde code geverifieerd: correcte
+`Wrap(children: List.generate(...))` met `InkWell.onTap` die
+`FFAppState().gemeenteSelectId`/`gemeenteSelectNaam` zet en
+`context.pushNamed(HomeWidget.routeName)` aanroept. **Bewust niet
+meegenomen:** `provincieSelectId`/`provincieSelectName` zetten —
+`GemeenteModelStruct` bevat geen provincie-veld (alleen
+`gemeentename`/`gemeenteid`), en de bestaande gemeente-dropdown's eigen
+`onChanged` zet die twee provincie-velden ook al niet, dus dit blijft
+consistent met het bestaande gedrag. **Nog niet visueel gestyled**
+(kale Container zonder chip-vormgeving/padding/afronding — puur
+functioneel getest) — cosmetische afwerking (padding, pill-vorm,
+spacing tussen chips) is een kleine, losse vervolgtaak als Bob dat
+wil.)*
 - **Tab 1 "Persoonlijke agenda" — bleek al gebouwd (niet door deze
   lijst gedekt, `TASKS.md` liep achter), en kreeg 2026-08-17 avond
   2 bugfixes (Claude, builder, bevestigd via verse export +