فهرست منبع

Sessie afgesloten: 88B-claim vrijgegeven + EventCurrent-bevinding vastgelegd (99)

88B stap 1-4 staan (API Call geverifieerd, pagina, AppBar-slot, Drawer-slot);
stap 5-7 en het vullen van beide slots resten nog. Claim vrijgegeven zodat een
andere sessie verder kan.

Nieuw blok 99: EventCurrent is generiek voor activity en go_out_event
(flutterflow_events filtert op beide types; custom.module voegt de c/g-veldparen
samen; het horeca-blok zit al achter een Visibility op horecaid). Enige gat:
het veld organisator wordt nergens getoond.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bob 19 ساعت پیش
والد
کامیت
2e1e017b17
1فایلهای تغییر یافته به همراه63 افزوده شده و 9 حذف شده
  1. 63 9
      TASKS.md

+ 63 - 9
TASKS.md

@@ -19,7 +19,7 @@ oppakken.
 
 | # | Taak | Kort |
 |---|---|---|
-| ~~88B~~ | Pagina "Mijn aanmeldingen" | ⚠️ **Al geclaimd** door de sessie 'taken-B1-B7' — niet oppakken |
+| **88B** | Pagina "Mijn aanmeldingen" | 🔓 **Claim vrijgegeven 2026-09-19** (sessie afgesloten). Stap 1-4 staan, zie het blok — vrij op te pakken |
 | **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 | ✅ **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 |
@@ -42,7 +42,52 @@ oppakken.
 ---
 #
 
-### 🆕 88 · "Mijn aanmeldingen" + kloonknop · deel A ✅ AF · **deel B: Claude — BEZIG (sessie 'taken-B1-B7', 2026-09-19)**
+### 🆕 99 · `EventCurrent` is generiek voor evenement ÉN activiteit — één veld mist · Eigenaar: Bob (besluit) / Claude (uitvoering)
+
+**Uitgezocht en gemeten 2026-09-19** (sessie 'taken-B1-B7'), n.a.v. Bob's vraag.
+Vastgelegd omdat een andere sessie hier ook aan werkte.
+
+**Bevestigd: `EventCurrent` werkt voor beide contenttypes.**
+- `EvenementCall` = `flutterflow_events.json?display_id=services_1&nid=X`. De view
+  filtert op `type IN (activity, go_out_event)` — beide zitten erin.
+- Gemeten op een echte activiteit (nid `222158`): de view geeft 'm gewoon terug.
+- `custom.module` voegt de **`c`/`g`-veldparen** uit die view samen tot één uniforme
+  stream: `logoc`(field_logo2)/`logog`(field_logo4) → `logo`;
+  `field_address1`/`field_address2` → `adres`; `entreeprijsc`/`entreeprijsg` →
+  `entreeprijs`; `entreetoelichtingc`/`g` → `entreetoelichting`;
+  `websitec`/`websiteg` → `website`; `fotooc`/`fotoog` → `fotos`.
+- Het horeca-blok op `EventCurrent` zit al achter
+  `Visibility(visible: widget!.horecaid != null && widget!.horecaid != '')` — bij een
+  activiteit is `horecagelegenheidnid` leeg en verdwijnt het blok vanzelf.
+- **Volledige veldenlijst die de view levert (16):** `adres, body, categorie,
+  contact, datum, datum_iso, entreeprijs, entreetoelichting, fotos,
+  horecagelegenheidnid, logo, nid, organisator, plaats, title, website`.
+
+🔴 **Het gat: `organisator` wordt NERGENS in de app getoond.** Er is geen
+`eventOrganisator`-getter op `EvenementCall`, geen parameter op `EvenementInfo` en
+geen weergave. Het veld komt in de hele levende code alleen voor in
+`stadsactiviteit_create.dart` (invoer) en in één helptekst. Een gebruiker vult bij
+"Stadsactiviteit aanmaken" dus een organisator in die daarna onzichtbaar is.
+**Fix (klein):** getter `$[0].organisator` op `EvenementCall` → parameter op
+`EvenementInfo` → een `Text` met een **Is Set**-conditie (bij een evenement is het
+veld leeg). *Nog niet uitgevoerd — wacht op Bob's besluit.*
+
+**Twee dingen die verdacht lijken maar in orde zijn (niet "fixen"):**
+- `EvenementCall.eventLogog` en `eventWebsiteg` dragen nog de oude `g`-suffix van
+  *gooutevent*, maar wijzen correct naar de samengevoegde `$[0].logo` /
+  `$[0].website`. Alleen de namen zijn historisch.
+- `EvenementInfo` krijgt 12 parameters en leest er 6 (`adres`, `plaats`,
+  `entreetoelichting`, `entreeprijs`, `website`, `contact`). De andere zes (`nid`,
+  `fotoos`, `title`, `date`, `categories`, `logo`) worden wél getoond, maar
+  rechtstreeks op `EventCurrent` i.p.v. in de Info-tab. Rommel, geen zichtbaar gat —
+  dit is het P1-44-patroon maar hier onschadelijk.
+
+⚠️ **Mogelijk nog te meten:** de view zet op het `categorie`-veld (`term_node_tid_1`)
+alléén de vocabulary `go_out_event_category` aan, niet `activity_category`. Of een
+activiteit daardoor een lege `categorie` krijgt is **niet** nagemeten — de gemeten
+activiteit had wel een categorie, maar dat bewijst niet dat het altijd goed gaat.
+
+### 🆕 88 · "Mijn aanmeldingen" + kloonknop · deel A ✅ AF · **deel B: deels gebouwd, CLAIM VRIJ**
 
 **📍 Voortgang deel B (2026-09-19, sessie 'taken-B1-B7'):**
 1. ✅ **API Call `MijnAanmeldingen`** aangemaakt en export-geverifieerd —
@@ -50,17 +95,26 @@ oppakken.
    header `Cookie: '${sessionName}=${sessid}'` (echte interpolatie), query-params
    `page`+`limit` From Variable, `cache: false`.
 2. ✅ **Pagina `MijnAanmeldingen`** aangemaakt (blanco), route `/mijnAanmeldingen`.
-3. 🔵 **AppBar toegevoegd** aan de Scaffold — eigenschappen nog te zetten volgens
-   het header-recept in `CLAUDE.md` (Info / Elevation 2 / Show Default Button uit /
-   80 PX / Toolbar 25 % / Bottom Section / Center Title / Flexible Space /
-   Background Widget → `HeaderButtonsComponent` met `showBackButton` AAN).
-4. ⬜ Drawer + `drawerComponent`
+3. ✅ **AppBar-slot** toegevoegd aan de Scaffold (leeg — eigenschappen nog te zetten
+   volgens het header-recept in `CLAUDE.md`: Info / Elevation 2 / Show Default Button
+   uit / 80 PX / Toolbar 25 % / Bottom Section / Center Title / Flexible Space /
+   Background Widget → `HeaderButtonsComponent` met `showBackButton` **AAN**).
+4. ✅ **Drawer-slot** toegevoegd (leeg — `drawerComponent` moet er nog in via
+   *Edit Drawer* → "+" op de Drawer-rij; zonder Edit Drawer registreert de klik niet).
+   Widget tree nu: `MijnAanmeldingen → [Column, AppBar, Drawer]`.
 5. ⬜ StaggeredView 1/1/2/3 + Backend Query + Generate Dynamic Children
    (⚠️ JSON Path `$`, **niet** Predefined Path — gepagineerde lijst, zie `CLAUDE.md`)
-6. ⬜ Kaart: titel, datum, statuslabel, knop *Bekijken*
+6. ⬜ Kaart: titel, datum, statuslabel, knop *Bekijken* → `EventCurrent` met **twee**
+   parameters: `nid` → `$.nid` én `horecaid` → `$.horecagelegenheidnid`.
+   ⚠️ **Geldt voor BEIDE types** — `EventCurrent` is generiek (zie het blok 99
+   hieronder). Bij een activiteit is `horecagelegenheidnid` leeg en verdwijnt het
+   horeca-blok vanzelf.
+   ⚠️ **A1 geeft `horecagelegenheidnid` nog NIET terug** — één regel toevoegen aan
+   `custom.mijn_aanmeldingen.inc` (het veld staat al in de veldkaart als `horeca`,
+   machine name `field_horecagelegeheid1`, let op de typo in die veldnaam).
 7. ⬜ Ingang op Favorieten tab 4 (Ctrl+D op een bestaande rij, binnen de login-guard)
 
-⚠️ **Deel B is geclaimd — niet ook oppakken.** Deel A (beide Drupal-endpoints)
+🔓 **Claim vrijgegeven** (sessie 'taken-B1-B7' afgesloten 2026-09-19). Deel A (beide Drupal-endpoints)
 draait op **productie**, getest 2026-09-19: A1 geeft 122 aanmeldingen voor
 `bobhoreca`, A2 geeft 200 op eigen nodes en **403 op andermans** (bevestigd op
 vier vreemde nids). `?limit=` en `?page=` werken allebei.