Sfoglia il codice sorgente

Wachtrij herschreven: taken 19/20/21 uitgeschreven voor Bob

Taak 19 (P1-42b, zaakagenda), 20 (P1-5 Thuis bezorgen) en 21 (P2-1
datumfilter) staan nu als concrete Views-instructies, met de valkuilen
erbij: override-per-display, en de controle met een verzonnen parameter.

Bij taak 19 een waarschuwing: negen geteste zaken geven nu 0 events, dus
controleer eerst of de ingreep nog nodig is.

Ook vastgelegd: Bob's tekst voor P0-12, taak 18 (route omzetten +
hernoemen naar Current / kanweg), en het besluit om alle vertalingen in
een ronde bij livegang te doen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bob 4 giorni fa
parent
commit
e98c35071f
1 ha cambiato i file con 105 aggiunte e 164 eliminazioni
  1. 105 164
      TASKS.md

+ 105 - 164
TASKS.md

@@ -1,167 +1,108 @@
-# Uitgaanskrant — takenlijst
-
-## ▶ Nu aan de beurt (stand 2026-09-08)
-
-Puur de wachtrij; de volledige beschrijving staat bij elke taak zelf
-verderop.
-
-### 1. Eén Drupal/views-ronde — nog vier taken
-
-**Afgerond 2026-09-08:** **P1-45** (Bob, in de custom module: `categorie`
-van komma-string naar array) en **P1-44** (één binding in de builder).
-Beide op productie geverifieerd, en op de tablet-AVD end-to-end: de vijf
-Home-tabs tonen nu elk hun eigen display mét werkende groene labels, en
-geen enkele `has no instance method`-fout in de run-log. **Bijvangst:
-`services_2` is daarmee een weesdisplay** — geen enkele app-plek leest
-'m nog, dus daar hoeft geen sorteerwerk in.
-
-Wat er nog ligt, allemaal in dezelfde views:
-
-- ~~**P1-42** — alle zeven displays sorteren op `created DESC`.~~
-  **BLIJKT AF (geverifieerd 2026-09-09 op productie).** De view-export van
-  `flutterflowmobiel1` toont in de Master een sortering op
-  `field_date_value` (oplopend, geen DESC) én een filter
-  `field_date_value >= -2 hours`; de displays zetten `defaults['sorts']`
-  niet uit, dus ze erven die sortering allemaal. Live nagemeten op
-  services_1/3/5: alle items beginnen op de dag van meten en lopen
-  oplopend door, geen enkel item in het verleden. **Wel een nieuw signaal,
-  zie hieronder.**
-- **⚠️ NIEUW (2026-09-09) — drie Home-tabs zijn nu leeg.** Landelijk
-  gemeten (geen `townid`), pagina 0: services_1 (homeslider) 7 items,
-  services_5 (cultuurinfo) 6, services_3 (uitgaan) **1**, en
-  services_4 (stadsactiviteiten), services_6 (films) en services_7 (jeugd)
-  **0**. Dat is het spiegelbeeld van het oude probleem: met het
-  datumfilter erin blijft er bijna niets over.
-  **Bob 2026-09-09: services_4 (stadsactiviteiten) klopt** — die worden
-  handmatig aangemaakt en zijn er dus nauwelijks. **Maar de rest is
-  daarmee niet verklaard**, want uitgaansevenementen worden juist
-  automatisch geïmporteerd en dan zou `services_3` (uitgaan, tid `17998`)
-  meer dan **1** item moeten hebben. Extra meting op dezelfde dag:
-  `flutterflowmobiel_establishment_events` geeft **0 toekomstige events**
-  voor drie grote Amsterdamse zalen (Tolhuistuin `75547`, Rialto VU
-  `75670`, Supper club `91145`) — zalen die wél in de
-  establishments-view staan. Er zit dus landelijk vrijwel geen
-  toekomstige eventdata in het systeem.
-  **Twee kandidaten, allebei voor Bob (Drupal-kant):** (a) de
-  import staat stil of loopt achter, of (b) de import zet geen
-  `go_out_event_category`-term, waardoor geïmporteerde events buiten
-  élke display vallen (alle zeven filteren hard op tids). (b) is te
-  testen door één geïmporteerd event in Drupal open te slaan en te
-  kijken of het categorieveld gevuld is.
-  **Bob 2026-09-10: geen bug.** Op productie importeert hij gewoon; de
-  aantallen zijn simpelweg laag. (Devbob loopt achter, maar daar is niet
-  tegen gemeten — alle metingen hierboven gingen tegen productie.) De
-  leegte is dus de echte stand van zaken, geen storing.
-
-- ~~**P1-48** — Home-tabs missen de lege-staat.~~ **AFGEROND 2026-09-10.**
-  *(Was eerst als P1-46 genummerd; dat nummer was al in gebruik door een
-  andere sessie, vandaar hernummerd.)* Nu er drie tabs
-  structureel leeg zijn (films, jeugd, stadsactiviteiten) is dit
-  zichtbaar geworden: `HomeUitgaantabelKaartComponent` heeft **0**
-  `isEmpty`-guards, dus een lege tab toont domweg niets — een leeg vlak
-  zonder uitleg. Ter vergelijking: `HorecagelegenhedenOverzichtCopy3`
-  heeft er 4 en toont
-  `if (<lijst>.isEmpty) { return Image.asset('assets/images/logo800px.png'); }`.
-  **Waarom dit gat bestaat:** P1-1 gaf op 2026-08-10 vier componenten een
-  lege-staat (`HomeUitgaanSliderComponent`, `PUitgaanSliderComponent`,
-  `EvenementComponent`, `horecagelegenheidCurrent`), maar toen bestond de
-  per-tab-splitsing nog niet — die kwam pas met P1-44 op 2026-09-08.
-  **AFGEROND 2026-09-10 (Claude, builder).** Bob koos het logo. Gezet via
-  `StaggeredView` → sectie **Empty List Widget** → *Show Empty List
-  Widget* aan → Widget Type **Image** → Image Type **Asset** →
-  `logo800px.png` → *Center Image* aan. Verse export bevestigt:
-  `noItemsFoundIndicatorBuilder: (_) => Center(child: Image.asset('assets/images/logo800px.png'))`.
-  `dart analyze` 0 errors. Eén fix dekt alle vijf de Home-tabs, want ze
-  delen dit component.
-  **⚠️ Correctie op `CLAUDE.md`:** de "Show Empty List Widget"-checkbox
-  stond genoteerd als structureel onbereikbaar voor Claude (augustus,
-  bevestigd op vier componenten). Dat klopt niet meer — hij is gewoon
-  klikbaar, als sectie in het rechterpaneel. Let op de zoekterm bij het
-  verifiëren: dit component gebruikt `noItemsFoundIndicatorBuilder`
-  (paginering-variant), niet `if (x.isEmpty)` zoals de niet-pagineerde
-  lijsten. Grep je alleen op `isEmpty`, dan lijkt het ten onrechte
-  mislukt.
-**P1-47 · Eigenaar: Bob — twee horeca-titels met een onzichtbaar teken
-vooraan breken de alfabetische sortering.** Gevonden 2026-09-09 direct na
-taak 6 (sortering op titel, live). In `horcat=34` + `townid=25434`
-(Arnhem) staan **nid 51094 "Café Arnhem"** en **nid 50093 "La Cubanita
-Arnhem"** vóór alle andere, terwijl de rest van die lijst foutloos
-alfabetisch is. **Aanvulling 2026-09-10: er is er minstens een derde** — in Amsterdam
-(`horcat=34&townid=28695`) staat **nid 49978 "Restaurant Adam"** vóór
-"A la Ferme" en "Anne&Max". Zelfde patroon.
-In de JSON zien die titels er schoon uit — logisch, want
-`_custom_clean_html` in de custom module draait **ná** de query, terwijl
-MySQL op de rauwe `node.title` sorteert. Er zit dus een spatie of ander
-onzichtbaar teken vooraan in de opgeslagen titel. Fix: die twee nodes
-openen en de titel opnieuw intypen. **Loont een bredere check**: een
-`SELECT nid, title FROM node WHERE title <> TRIM(title)` laat in één keer
-zien of er meer zijn.
-
-**Losse contentnetjes, gevonden in dezelfde lijst (2026-09-09):**
-- **New York Pizza Arnhem Centrum** en **Arnhem Zuid** staan allebei
-  dubbel (nids 50583/53454 en 50584/53455) — het bekende
-  duplicatenpatroon uit `CLAUDE.md`, nu met concrete nids.
-- **"Subway Winkelcentrum Enschede Zuid"** (nid 50770) heeft
-  `plaats: Arnhem` en komt dus in de Arnhemse lijst terecht.
-
-**P1-46 · Eigenaar: Bob — er staat vrijwel geen toekomstige content in
-het systeem, en dat is nu zichtbaar.** Gevonden 2026-09-09 direct na de
-P1-42-deploy. Complete tellingen op productie: 1 toekomstig Uitgaan-event
-landelijk, 0 Activiteiten, 0 Films, 0 Jeugd; de zaakagenda's tonen bij 6
-van de 7 gemeten zaken uitsluitend verleden. **Dit is een inhoudelijke
-vraag, geen bug:** loopt de contentaanvoer (de importer) nog? Van de 500
-meest recent aangemaakte events zijn er 25 toekomstig, waarvan 14
-"Tweedehands markt" — er wordt dus nog wél iets toegevoegd, maar
-nauwelijks vooruitkijkende agenda. Zolang dit zo staat, opent de app op
-drie lege tabs. **Dit weegt zwaarder dan welk app-werk dan ook op de
-lijst** — een technisch perfecte app zonder programma is leeg.
-
-- **P1-42b (nieuw afgesplitst)** — `flutterflowmobiel_establishment_events`,
-  de agenda op een horecapagina: geen datumfilter, niet chronologisch,
-  max 10 items. In een steekproef van 15 zaken toonden er 4 uitsluitend
-  verlopen evenementen. Zelfde ingreep als P1-42.
-- ~~**Horeca-overzicht sorteren**~~ **AF — alfabetisch en live
-  (geverifieerd 2026-09-10).** Arnhem én Amsterdam komen allebei
-  alfabetisch terug uit `services_1`. Een eerdere meting die nog
-  nid-volgorde toonde was van vóór jouw view-wijziging. *(Oude notitie
-  hieronder ter historie.)* **Herbevestigd 2026-09-09:** Amsterdam/Eetgelegenheden geeft nid 91145, 75670, 75547 —
-  dus nog steeds aflopend op nid. Voorstel: alfabetisch op naam; sluit aan
-  op het zoekveld uit P2-6. Let op: dit is een **andere view** dan
-  `flutterflowmobiel1`, met een eigen pager van **100** per pagina.
-- **P2-1** — datumfilter (Vandaag / Dit weekend / Deze week). Vergt een
-  exposed date-filter; pas zinvol ná P1-42.
-- **P1-5** — "Thuis bezorgen". De data bestaat al (`afhaalopties` bevat
-  de term "Bezorgen"), maar de establishments-view geeft 'm niet terug.
-  Extra display met een filter op die term.
-
-### 2. Losse builder-taken, in willekeurige volgorde
-
-- **P0-12 restpunt (wording, Bob)** — bij het gemeentehartje in
-  `select_state_drop_down_component_widget.dart` (regel ~340, label
-  "Toevoegen favoriet") de reden erbij die de site wél geeft: dat je die
-  gemeente donderdags in de agendamail krijgt. Nu is "gemeente volgen"
-  een knop zonder zichtbaar nut. Engelse vertaling niet vergeten.
-- ~~**P0-13** — favorieten-hartjes zonder login-guard.~~ **AFGEROND
-  2026-09-09.** Gemeente-hartje en horeca-detailpagina hebben nu een
-  `userSessionid`-guard; het hartje op de horeca-overzichtskaart is op
-  Bob's beslissing volledig verwijderd (favorieten alleen nog op de
-  establishment-pagina zelf).
-- **P1-17** — nog 46 velden, en alleen nog in `stadsactiviteitAanmaken`
-  (27) en `uitgaansevenementAanmaken` (19): de twee aanmaak-formulieren
-  die alleen een stadseditor ziet. De hele publieksgerichte UI
-  (hoofdmenu, horeca-detailpagina, gemeentekeuze, favorieten) is
-  2026-09-08 vertaald en via een verse export geverifieerd — details en
-  de gekozen woordenlijst staan bij de taak zelf. De twee formulieren
-  delen vrijwel dezelfde veldnamen, dus het is 2x dezelfde lijst.
-- ~~**P2-20** — serif koppen.~~ **Afgewezen 2026-09-08 door Bob: niet
-  doen.** De app houdt Roboto voor de koppen; het verschil met de site
-  (Droid Serif) is een bewuste keuze.
-
-### 3. Bij livegang
-
-- **P1-30** — de Cloudflare rate limiting rule staat klaar maar op
-  Disabled. Bij het aanzetten óók de twee rate-limiting-vinkjes weghalen
-  uit de bestaande custom rule `flutterflow`, anders skipt die de limiet.
+## ▶ Nu aan de beurt (stand 2026-09-10)
+
+### Voor Bob — drie Drupal-taken, uitgeschreven
+
+**Taak 19 (P1-42b) · view `flutterflowmobiel_establishment_events`, display
+`services_1` — de agenda op een horecapagina.**
+Deze view mist wat `flutterflowmobiel1` wél heeft. Doe precies dezelfde
+ingreep die je bij P1-42 hebt gedaan:
+1. **Sort criteria** → verwijder wat er nu staat → *+ Add* → **Content:
+   Datum - start date (field_date)** → **Ascending** (oplopend).
+2. **Filter criteria** → *+ Add* → **Content: Datum - start date
+   (field_date)** → operator **"Is greater than or equal to"** →
+   *Granularity* **hour** → *Default date* **`-2 hours`**. Exact dezelfde
+   waarden als in de Master van `flutterflowmobiel1`.
+3. **Pager** staat op **10 items** — dat is krap voor een zaak met een
+   volle agenda. Voorstel: 25.
+4. ⚠️ Let bij elke stap op de knop **"For: This services (override)"** vs
+   **"All displays"**. Deze view heeft meerdere displays; kies bewust.
+⚠️ **Niet te reproduceren op 2026-09-10:** alle negen door Claude
+geteste zaken (o.a. Tolhuistuin `75547`, Rialto VU `75670`, Supper club
+`91145`, Brasserie Thialf `50980`) geven **0 events**. De audit van
+2026-09-08 vond nog 4 zaken met uitsluitend verlopen agenda. Óf die zaken
+hebben helemaal geen events, óf er is intussen al iets gewijzigd —
+**controleer dus eerst of de ingreep überhaupt nog nodig is** voor je 'm
+doet.
+
+**Taak 20 (P1-5) · view `flutterflowmobiel_establishments` — "Thuis
+bezorgen".**
+Het drawer-menu heeft een item *Thuis bezorgen* dat nu nergens heen kan.
+De data bestaat: de vocabulaire **`thuisbezorgen_afhaalbezorgen`** heeft
+een term **"Bezorgen"**.
+1. Maak een **nieuwe Services-display** op deze view (wordt
+   `services_8` of hoger).
+2. Zet **Filter criteria** voor die display op **override** (anders raak je
+   alle andere displays!) en voeg toe: **Content: Has taxonomy terms** →
+   vocabulaire **`thuisbezorgen_afhaalbezorgen`** → term **"Bezorgen"**.
+3. De overige filters (published, type, `townid` exposed als
+   `term_node_tid_depth`) moeten blijven zoals in `services_1`, anders
+   werkt de plaatskeuze niet.
+4. **Velden hoeven niet aangepast**: de app heeft aan de bestaande set
+   genoeg (`nid, titel, adres, plaats, logo, categorie` — nagemeten
+   2026-09-10). Je hoeft `afhaalopties` dus niet toe te voegen; het
+   filter doet het werk.
+5. Geef Claude daarna het **`display_id`** door, dan koppelt die het
+   drawer-item eraan (het horeca-overzicht accepteert al een
+   `display_id`-parameter).
+
+**Taak 21 (P2-1) · view `flutterflowmobiel1` — datumfilter Vandaag / Dit
+weekend / Deze week.**
+Er staat nu één datumfilter (`>= -2 hours`) dat **niet exposed** is. Voor
+een keuzefilter in de app is een tweede, wél exposed filter nodig:
+1. **Filter criteria** → *+ Add* → **Content: Datum - start date
+   (field_date)** → operator **"Is between"** → vink **"Expose this
+   filter to visitors"** aan.
+2. Zet de **identifier** op iets voorspelbaars, bv. **`datum_van`** en
+   **`datum_tot`** (een between-filter geeft twee invoervelden en dus twee
+   identifiers).
+3. Laat het bestaande `>= -2 hours`-filter gewoon staan — dat blijft de
+   ondergrens zodat verleden events nooit terugkomen.
+4. Doe dit op **alle zeven** de services-displays, of op de Master als de
+   displays hun filters niet overriden. Let op: `services_1`, `_3`, `_4`,
+   `_5`, `_6` en `_7` hebben `defaults['filters'] = FALSE`, dus die
+   **overriden wél** — je moet ze dan stuk voor stuk langs.
+5. **Controleer met een verzonnen parameter** dat het filter echt
+   aankomt (staande regel uit `CLAUDE.md`): Views negeert onbekende
+   query-parameters stil, dus `?onzin_param=123` moet hetzelfde resultaat
+   geven en `?datum_van=…` een ánder. Zonder die controle bewijst een
+   uitkomst niets.
+Daarna kan Claude de drie knoppen in de app bouwen.
+
+### Voor Claude — nog open uit deze sessie
+
+- **Taak 18 · route omzetten + hernoemen.** Bob's akkoord 2026-09-10.
+  (a) Twee `Navigate To`'s naar `HorecagelegenhedenOverzichtCopy3`:
+  `drawer_component_widget.dart:690` en
+  `horecagelegenheid_current_widget.dart:1562`.
+  (b) Daarna **`Copy3` hernoemen naar een `...Current`-suffix**
+  (Bob's wens: consistent met `horecagelegenheidCurrent`).
+  (c) De oude `HorecagelegenhedenOverzicht` hernoemen naar
+  `kanweg...` **en verplaatsen naar de map `kanweg`**. Hernoemen en
+  verplaatsen mag Claude; weggooien niet.
+- **Taak 22 · P0-12-tekst.** Bob leverde de inhoud 2026-09-10:
+  *"Bij favoriete gemeenten krijg je een agenda per mail met daarin alle
+  evenementen uit die favoriete gemeenten."* Plan: het label bij het
+  gemeentehartje (`SelectStateDropDownComponent`, de `Row` met key
+  `nosgkxy0`) wordt **"Gemeente volgen"**, met de uitleg als **aparte
+  `Text` onder de `Row`** — de volle zin naast het hartje in dezelfde
+  `Row` geeft gegarandeerd overflow. Engelse vertaling gaat mee in de
+  vertaalronde bij livegang (zie hieronder).
+
+### Bij livegang
+
+- **P1-17 · alle Engelse vertalingen in één ronde** (Bob's besluit
+  2026-09-10: niet nu, want er komen onderweg nog teksten bij). Nu open:
+  46 velden in `stadsactiviteitAanmaken` (27) en
+  `uitgaansevenementAanmaken` (19), plus de nieuwe P0-12-zin hierboven.
+- **P1-30 · Cloudflare rate limiting** aanzetten, en dan óók de twee
+  rate-limiting-vinkjes weghalen uit de custom rule `flutterflow`.
+- **Max items + tab 6** (P2-24 A en C) — geparkeerd, zie daar. Melden bij
+  FlutterFlow-support is de enige overgebleven route.
+
+**Afgerond 2026-09-10:** taak 16 (drie titels met onzichtbaar teken —
+geverifieerd: "Café Arnhem" staat nu alfabetisch juist), taak 17
+(contentfoutjes), P0-13 (login-guards op de hartjes), P1-48 (lege-staat
+op de Home-tabs), en de horeca-sortering (alfabetisch, live).
 
 ---