Parcourir la source

P2-24 B af: categoriedropdown horeca-overzicht is tab-bewust en filtert

Opties+labels per tab via horcatOptiesVoorTab/horcatLabelsVoorTab
(respons = Horecacategorieen Response, tabIndex = TabBar Current Index),
On Selected zet categorieFilterActiviteiten, On Tab Change reset die page
state en de dropdown zelf. Hint "Alle categorieen", volle breedte.
Export-geverifieerd en op emulator-5554 (Amsterdam) getest.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bob il y a 9 heures
Parent
commit
5c2c28934f
1 fichiers modifiés avec 45 ajouts et 27 suppressions
  1. 45 27
      TASKS.md

+ 45 - 27
TASKS.md

@@ -22,7 +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** (2026-09-19). 98A en 98B zijn af; alleen de knop op `EventCurrent` rest nog |
 | **65** | Release-build doorloop | ✅ **Uitgelogde deel af 2026-09-19** (0 crashes; 65a, 65b en 65d-kleur opgelost; 65c + 65e open). Rest = ingelogd + Xiaomi → Bob |
-| **P2-24 B** | Categoriedropdown horeca-overzicht | 🟡 **grotendeels af** — endpoint live, API Call, 4 custom functions en de dropdown staan er en zijn export-geverifieerd. Alléén de `tabIndex`-binding lukt Claude niet → **4 stappen voor Bob**, zie P2-24 B hieronder |
+| ~~P2-24 B~~ | Categoriedropdown horeca-overzicht | ✅ **AF 2026-09-19** (Claude, export-geverifieerd): opties+labels per tab, On Selected zet de page state, On Tab Change reset beide, hint "Alle categorieën", volle breedte |
 | ~~99/100/101~~ | Loginvelden · drawer-logo · Crashlytics-console | ✅ **ALLE DRIE AF 2026-09-19** (export-geverifieerd). ⚠️ Crashtest-knop opruimen blijft open: staat op `Favorieten`, pagina van 88B |
 | **102** | Ontbrekend asset `logo_1080x2160.png` in de projectmap | 🔴 **Nieuw 2026-09-19** — zie het eigen blok; raakt elke lokale build |
 | **G0.6** | Play-screenshots schieten | Browserloos op beide AVD's, ±10 min — zeg het en het gebeurt |
@@ -35,7 +35,7 @@ oppakken.
 | ~~B1b~~ | Splashscreen | ✅ **AF** (Bob 2026-09-19, export-geverifieerd): `nav.dart` toont `logo_1080x2160.png`; op telefoon, 9:20, tablet staand én liggend volledig leesbaar |
 | **G** | Google Play-checklist G0–G4 | Volledige checklist hieronder, afvinkbaar |
 | **66** | Crashlytics: Firebase-console nakijken + Crashtest-knop opruimen | App-kant is bewezen (rapport met status 200); alleen de console-check en het opruimen zijn nog van jou |
-| **P2-24 B** | 4 laatste builder-stappen op de categoriedropdown + Cloudflare-cacheregel | Claude komt niet door de `tabIndex`-binding; exacte stappen staan bij P2-24 B |
+| **P2-24 B** | Alleen nog: de Cloudflare-regelvoorwaarden over alle drie de groepen trekken | Kanttekening bij P2-24 B; niet blokkerend |
 | **P1-17** | Engelse vertalingen, één ronde | 46 velden op de twee aanmaakpagina's + 3 losse |
 | **Bij livegang** | Zes schakelaars en opruimklussen | Eigen blok hieronder |
 | **Drupal** | taak 56, P2-25 | Eigen blokken hieronder (P1-42/P1-43 zijn af, nagemeten 2026-09-19) |
@@ -1190,31 +1190,49 @@ gebruikersafhankelijk endpoint stil in een gedeelde cache.
 ⚠️ Die filter vergelijkt op **labels** (de `categorie`-array van een zaak), niet
 op tids; daarom leveren mijn functies labels als dropdown-*waarde*.
 
-**⛔ Waar Claude vastliep — 4 resterende stappen, voor Bob:**
-
-*Het probleem:* in **Define Options → `horcatOptiesVoorTab` → argument
-`tabIndex` (Integer)** blijft de binding aan *Widget State → TabBar Current
-Index* niet staan. De optie rendert en is aanklikbaar, maar het Value-veld
-blijft leeg; na Confirm staat `horcatOptiesVoorTab()` rood en springt de
-Issues-teller van 2 naar 3 — en dat blokkeert de export project-breed. Ik heb
-de binding daarom met **Remove** teruggedraaid: de dropdown staat weer op de
-statische `Option 1/2/3` en het project is schoon. Het argument `respons`
-binden lukte wél (Horecacategorieen Response → JSON Body → No Further Changes).
-
-1. **Define Options** → `horcatOptiesVoorTab`; `respons` = *Horecacategorieen
-   Response → JSON Body → No Further Changes*, `tabIndex` = *Widget State →
-   TabBar Current Index*.
-2. **Add Option Labels** aan → **Define Options Labels** → idem, maar met
-   `horcatLabelsVoorTab`.
-3. **DropDown → Actions → On Selected** → *Update Page State* →
-   `categorieFilterActiviteiten` = de dropdown-waarde (Widget State).
-4. **TabBar → Actions → On Tab Change** → *Update Page State* →
-   `categorieFilterActiviteiten` → **Clear Value**. Zonder deze stap lekt een
-   gekozen categorie door naar de volgende tab. Overweeg daarbij een **Value
-   Key** op de DropDown = *TabBar Current Index*, zodat ook de zichtbare
-   selectie leegt bij een tabwissel.
-
-**Hint Text** staat nog op "Select..." — mag "Alle categorieën" worden.
+**✅ Alle vier de resterende stappen zijn AF (Claude, 2026-09-19, export-geverifieerd):**
+
+1. ✅ **Define Options Values** = `horcatOptiesVoorTab(respons, tabIndex)` —
+   `respons` = *Horecacategorieen Response → JSON Body → No Further Changes*,
+   `tabIndex` = *Widget State → TabBar Current Index* (die binding zette Bob).
+2. ✅ **Add Option Labels** aan, **Define Options Labels** = `horcatLabelsVoorTab`
+   met dezelfde twee argumenten.
+3. ✅ **DropDown → On Selected** → *Update Page State*
+   `categorieFilterActiviteiten` = *Widget State → DropDown*, Rebuild Current Page.
+   Export: `_model.categorieFilterActiviteiten = _model.dropDownValue;`
+4. ✅ **TabBar → On Tab Change** → twee acties: *Update Page State*
+   `categorieFilterActiviteiten` → **Reset Value**, en *Reset Form Fields* →
+   DropDown_1, Rebuild. Export: `categorieFilterActiviteiten = null` +
+   `dropDownValueController?.reset()`.
+5. ✅ **Hint Text** = "Alle categorieën", **Width** = `double.infinity`
+   (gelijk aan het zoekveld erboven).
+
+**⚠️ Twee valkuilen die hierbij tijd kostten (ook naar `CLAUDE.md`):**
+- Het aanzetten van **Add Option Labels** verplaatst je bestaande binding naar de
+  *Labels*-slot en zet *Values* terug op statische `Option 1/2/3`. Zet daarna dus
+  **beide** opnieuw.
+- Een **half gebonden** functie-argument in zo'n slot (functie gekozen, argumenten
+  leeg) **blokkeert de export project-breed** (`Status: 400`). Kom je er niet uit:
+  **Remove** vóór je de pagina verlaat.
+- Die Confirm-knop van de geneste Set-Variable-dialoog kan **volledig dood** raken
+  (5 pogingen, geen foutmelding, dialoog blijft staan). **Een paginaherlaad
+  herstelt het**; daarna lukte exact dezelfde reeks in één keer.
+
+**✅ Op toestel getest (profile-build, emulator-5554, Amsterdam 28695, 2026-09-19):**
+- Tab *Activiteiten* → dropdown toont de 26 Activiteit-subcategorieën met
+  "Alle categorieen" bovenaan; *Entertainment Centre* filtert, *Bowling* geeft
+  de lege-lijst-afbeelding.
+- Tabwissel naar *Cultuur* → dropdown springt terug op "Alle categorieen", lijst
+  onfiltered, en de opties zijn nu de 15 Cultuur-subcategorieën. *Museum* geeft
+  0 — **klopt met de data** (nagemeten: de 42 Cultuur-zaken in Amsterdam hebben
+  dat label niet; wel Theater 26 en Kunst & Cultuur 26). Dat is precies de
+  bekende datakwestie hieronder, geen bug.
+
+**Restpunten (klein):**
+- `horcatLabelsVoorTab` geeft de eerste optie als **"Alle categorieen"** (zonder
+  trema) — cosmetisch, alleen in de dropdownlijst zelf; de hint heeft wél "ë".
+- De Engelse vertaling van de nieuwe hint (`6mmrjr12`) is leeg → mee in P1-17.
+
 
 **Bekende datakwestie, geen blokkade:** een tab toont álle subcategorieën uit de
 taxonomie, ook die in de gekozen plaats geen enkele zaak hebben (Amsterdam: