|
|
@@ -43,14 +43,138 @@ tegelijk in bouwen:*
|
|
|
|
|
|
*Niet geraakt (bewust): de twee aanmaakpagina's (P2-29, andere sessie).*
|
|
|
|
|
|
+### 🟢 AFGEROND 2026-09-16 (Claude, sessie "taal-cluster") — browserloos, geen builder aangeraakt
|
|
|
+
|
|
|
+*Geclaimd en uitgevoerd terwijl twee andere sessies in de builder zaten. Dit
|
|
|
+cluster raakt géén FlutterFlow-pagina en géén Chrome — alles is meting +
|
|
|
+kant-en-klare code. Er staat nog **één ding open dat Bob (of een sessie met de
|
|
|
+browser) moet doen**: de twee functie-bodies hieronder plakken.*
|
|
|
+
|
|
|
+**1 · `filterDatumVan` / `filterDatumTot` taalonafhankelijk — code klaar, moet
|
|
|
+nog in de Custom Code-editor.** Dit blokkeerde Bob's taak 3 (vertaalronde): de
|
|
|
+functies matchten letterlijk op `Vandaag`/`Dit weekend`/`Deze week`, dus zodra
|
|
|
+de chips een Engelse tekst krijgen doet het datumfilter niets meer. De nieuwe
|
|
|
+versie herkent op **kernwoord** i.p.v. op de hele zin, en dus NL + EN +
|
|
|
+hoofdletters/spaties + de interne sleutels (`vandaag`/`weekend`/`week`) tegelijk.
|
|
|
+Getest met `fvm dart` tegen de oude versie: **op elke Nederlandse invoer exact
|
|
|
+dezelfde uitkomst**, en `Today`/`This weekend`/`This week` werken er nu bij.
|
|
|
+Volgorde is belangrijk — `weekend` moet vóór `week` getest worden, want
|
|
|
+"This weekend" bevat ook "week".
|
|
|
+
|
|
|
+*Plakken in FlutterFlow → Custom Code → Functions → `filterDatumVan`. **Alleen de
|
|
|
+body**, FlutterFlow schrijft de signature zelf (zie `CLAUDE.md`). Daarna Ctrl+S.*
|
|
|
+```dart
|
|
|
+ final k = (keuze ?? '').toLowerCase().trim();
|
|
|
+ String soort = '';
|
|
|
+ if (k.contains('weekend')) {
|
|
|
+ soort = 'weekend';
|
|
|
+ } else if (k.contains('vandaag') || k.contains('today')) {
|
|
|
+ soort = 'vandaag';
|
|
|
+ } else if (k.contains('week')) {
|
|
|
+ soort = 'week';
|
|
|
+ }
|
|
|
+ if (soort == '') {
|
|
|
+ return '';
|
|
|
+ }
|
|
|
+ final nu = DateTime.now();
|
|
|
+ int extra = 0;
|
|
|
+ if (soort == 'weekend' && nu.weekday < 6) {
|
|
|
+ extra = 6 - nu.weekday;
|
|
|
+ }
|
|
|
+ final start = DateTime(nu.year, nu.month, nu.day + extra);
|
|
|
+ final maand = start.month.toString().padLeft(2, '0');
|
|
|
+ final dag = start.day.toString().padLeft(2, '0');
|
|
|
+ return '${start.year}-$maand-$dag 00:00:00';
|
|
|
+```
|
|
|
+*En in `filterDatumTot`:*
|
|
|
+```dart
|
|
|
+ final k = (keuze ?? '').toLowerCase().trim();
|
|
|
+ String soort = '';
|
|
|
+ if (k.contains('weekend')) {
|
|
|
+ soort = 'weekend';
|
|
|
+ } else if (k.contains('vandaag') || k.contains('today')) {
|
|
|
+ soort = 'vandaag';
|
|
|
+ } else if (k.contains('week')) {
|
|
|
+ soort = 'week';
|
|
|
+ }
|
|
|
+ if (soort == '') {
|
|
|
+ return '';
|
|
|
+ }
|
|
|
+ final nu = DateTime.now();
|
|
|
+ int extra = 0;
|
|
|
+ if (soort != 'vandaag' && nu.weekday < 7) {
|
|
|
+ extra = 7 - nu.weekday;
|
|
|
+ }
|
|
|
+ final eind = DateTime(nu.year, nu.month, nu.day + extra);
|
|
|
+ final maand = eind.month.toString().padLeft(2, '0');
|
|
|
+ final dag = eind.day.toString().padLeft(2, '0');
|
|
|
+ return '${eind.year}-$maand-$dag 23:59:59';
|
|
|
+```
|
|
|
+⚠️ **Koppeling met de vertaalronde:** de Engelse chip-teksten moeten
|
|
|
+**`All` / `Today` / `This weekend` / `This week`** worden. Elke andere Engelse
|
|
|
+formulering mag, zolang "today", "weekend" of "week" erin voorkomt — staat er
|
|
|
+iets als "Upcoming" dan filtert de chip niets. Dit staat ook in het werkblad.
|
|
|
+
|
|
|
+**2 · P1-17 volledig geïnventariseerd — werkblad ligt klaar in
|
|
|
+`TAAK-P1-17-vertalingen.md`.** Bob's taak 3 is daarmee puur uitvoerwerk: 80
|
|
|
+regels, elk met sleutel + Nederlandse tekst + wat er nu in EN staat + een
|
|
|
+voorgestelde Engelse tekst. Gesplitst in **Deel A (21 regels, nu al te doen —
|
|
|
+die schermen veranderen niet meer)** en **Deel B (59 regels, pas ná P2-29)**.
|
|
|
+Gemeten op de schermen die vanaf de startpagina bereikbaar zijn; de dode
|
|
|
+kopieën (`favorietenCopy`, `drawerComponentCopy`, `kanwegTestUpload`) zaten in
|
|
|
+de oude telling van 134/99 en zijn er nu uit.
|
|
|
+Werkelijke omvang in levende code: **26 leeg, 58 gelijk aan NL, 8 fout**.
|
|
|
+
|
|
|
+**3 · Nieuw gevonden: 8 sleutels hebben geen lege maar een FOUTE Engelse
|
|
|
+vertaling** — die vallen in geen enkele telling op en zijn erger dan leeg, want
|
|
|
+de gebruiker krijgt een tekst die iets anders betekent. Oorzaak is het bekende
|
|
|
+`Duplicate`-patroon (een kopie erft de EN-tekst van het origineel):
|
|
|
+| sleutel | scherm | Nederlands | staat er nu in EN |
|
|
|
+|---|---|---|---|
|
|
|
+| `vnwx710y` | drawerComponent | Terug | Favorite |
|
|
|
+| `pj545url` | login | Veld wissen | Favorite |
|
|
|
+| `n3cyffso` | login | Wachtwoord tonen/verbergen | Favorite |
|
|
|
+| `nosgkxy0` | SelectStateDropDown | Gemeente volgen | Add to favorites |
|
|
|
+| `elx7kse2` | SelectStateDropDown | Je volgt deze gemeente | Add to favorites |
|
|
|
+| `qsf2va25` | uitgaansevenementAanmaken | Website van het evenement | Website van de activiteit |
|
|
|
+| `nzaqrq0w` | uitgaansevenementAanmaken | Link om kaarten te kopen | Website van de activiteit |
|
|
|
+| `9qx16tm9` | uitgaansevenementAanmaken | Evenement indienen | Activiteit indienen |
|
|
|
+
|
|
|
+Plus één inhoudelijke fout op `wachtwoordVergeten` (`503u6v73`): de Engelse zin
|
|
|
+zegt *"Use your username or password to recieve an email"* — verkeerde betekenis
|
|
|
+én een typefout. Correctie staat in het werkblad.
|
|
|
+
|
|
|
+**4 · Wezenlijst opnieuw gemeten (aanvulling op P2-7 / Bob's taak 4).**
|
|
|
+Reproduceerbaar bepaald door vanaf de startpagina de widget-graaf te volgen:
|
|
|
+**31 van de 50 widgets zijn bereikbaar, 19 niet.** Drie namen die nog niet in
|
|
|
+de P2-7-lijst stonden: **`EvenementComponent`**, **`HeaderCurrent`** en
|
|
|
+**`HomeUitgaanSliderComponentCopy`**. De eerste twee worden *alleen* door de
|
|
|
+pagina `Event` gebruikt, dus die vallen vanzelf vrij zodra `Event` weg is.
|
|
|
+Handige volgorde voor de opruimronde — gooi eerst de pagina weg, dan de
|
|
|
+componenten die eraan hingen:
|
|
|
+- `Event` → daarna vallen `EvenementComponent` + `HeaderCurrent` vrij
|
|
|
+- `drawer_component_copy` + `kanweghorecagelegenheid_current_copy` → daarna
|
|
|
+ `KanwegHorecagelegenhedenOverzicht`
|
|
|
+- `slider_uitgaan_component_small_current` → daarna `KaartSliderUitgaanSComp`
|
|
|
+- zonder afhankelijkheden, kunnen meteen: `FavorietenCopy`, `HomeCopy`,
|
|
|
+ `KanwegHomeCopy`, `KanwegTestUpload`, `HeaderButtonsComponentCopymethartje`,
|
|
|
+ `KanwegHeaderButtonsComponentCopy`, `KaartTabelUitgaanComp`,
|
|
|
+ `KaartTabelUitgaanSComp`, `HomeUitgaantabelKaartComponentCopy`,
|
|
|
+ `HomeUitgaanSliderComponentCopy`, `PUitgaantabelKaartComponentOrgineelMetKaartjeerin`
|
|
|
+
|
|
|
+*Twee namen uit de oude P2-7-lijst bestaan niet meer op schijf
|
|
|
+(`kanwaeg_select_state_drop_down_component_copy`,
|
|
|
+`kanweg_home_uitgaantabel_kaart_component_copy`) — in de builder mogelijk nog
|
|
|
+wel, daar niet gecontroleerd (geen browser gebruikt).*
|
|
|
+
|
|
|
### 📋 Bob's 7 — de geordende lijst van 2026-09-15 (laat), max. 7, niets anders oppakken
|
|
|
|
|
|
*Stand bij afsluiten 2026-09-15 23:30: taak 1 af; 2 t/m 7 zijn voor morgen,
|
|
|
-in deze volgorde. Voor Claude ligt er los één klein ding klaar (niet geclaimd):
|
|
|
-**`filterDatumVan`/`filterDatumTot` taalonafhankelijk maken** (nu matchen ze
|
|
|
-op de Nederlandse chip-labels `Vandaag`/`Dit weekend`/`Deze week`; met EN
|
|
|
-erbij moeten ook `Today`/`This weekend`/`This week` werken, of de chips
|
|
|
-moeten interne sleutels zetten) — nodig vóór taak 3. Standaardzin voor morgen:*
|
|
|
+in deze volgorde. **Update 2026-09-16: het losse klusje voor Claude
|
|
|
+(`filterDatumVan`/`filterDatumTot` taalonafhankelijk) is klaar** — de code staat
|
|
|
+in het groene blok hierboven en hoeft alleen nog geplakt te worden. Taak 3 is
|
|
|
+daarmee niet meer geblokkeerd en heeft nu een kant-en-klaar werkblad
|
|
|
+(`TAAK-P1-17-vertalingen.md`). Standaardzin voor morgen:*
|
|
|
|
|
|
> Pak Bob's 7-lijst bovenin `TASKS.md` op, in volgorde. Ik doe de Drupal- en
|
|
|
> Play-Console-stappen zelf; jij verifieert met een verse export/curl en noemt
|
|
|
@@ -79,11 +203,15 @@ moeten interne sleutels zetten) — nodig vóór taak 3. Standaardzin voor morge
|
|
|
FlutterFlow-deploy (dan hoeft er lokaal niets) of lokaal (dan keystore +
|
|
|
`android/key.properties`, want release staat op `signingConfigs.debug`).
|
|
|
iOS wel/niet in scope.
|
|
|
-3. **P1-17 · Engelse vertalingen in één ronde** — pas ná P2-29 (aanmaak-
|
|
|
- pagina's), anders vertaal je twee keer. Omvang:
|
|
|
- 134 lege + 99 gelijk aan NL. Zwaartepunt: `stadsactiviteitAanmaken`,
|
|
|
- `uitgaansevenementAanmaken`, Home-chips, `Selectprovinciegemeente`.
|
|
|
- Claude maakt vooraf de chip-functie taalonafhankelijk.
|
|
|
+3. **P1-17 · Engelse vertalingen** — werkblad ligt klaar in
|
|
|
+ **`TAAK-P1-17-vertalingen.md`** (sleutel + NL + huidige EN + voorgestelde EN
|
|
|
+ per regel). **Deel A (21 regels) kan nu al**: Home-chips, drawer, login,
|
|
|
+ horeca-overzicht, `Selectprovinciegemeente`, gemeentehartje. **Deel B (59
|
|
|
+ regels)** pas ná P2-29, want de twee aanmaakpagina's zijn nog in bewerking.
|
|
|
+ Echte omvang in levende code: 26 leeg + 58 gelijk aan NL + **8 fout** (de
|
|
|
+ oude telling 134/99 bevatte dode kopieën). De chip-functie is al
|
|
|
+ taalonafhankelijk gemaakt — mits de chips exact
|
|
|
+ `All`/`Today`/`This weekend`/`This week` krijgen.
|
|
|
4. **Builder-opruimronde.** P2-7 (21 dode eenheden; begin met
|
|
|
`drawer_component_copy` + `kanweghorecagelegenheid_current_copy`),
|
|
|
`HorecagelegenhedenOverzichtCopy3Copy`, `homeCopy` (het datumfilter is af en op een toestel getest, dus mag weg),
|
|
|
@@ -1160,6 +1288,26 @@ aan de app-kant niets te veranderen.
|
|
|
|
|
|
7. Geef Claude daarna het **`display_id`** door (= taak 26).
|
|
|
|
|
|
+✅ **Nagemeten op PRODUCTIE 2026-09-16 (Claude) — de Drupal-kant is af en live.**
|
|
|
+`display_id=services_2` + `townid=28695` geeft 19 bezorgers in Amsterdam,
|
|
|
+`categorie` komt als **array** (niet de P1-45-komma-string), titels schoon. Het
|
|
|
+`horcat`-filter is er echt af: `horcat=17967`, lege `horcat` en geen `horcat`
|
|
|
+geven alle drie 19 items. Aan Drupal hoeft niets meer.
|
|
|
+
|
|
|
+❌ **De app-kant is nog nergens aangesloten.** (a) De `ListTile` "Thuis
|
|
|
+bezorgen" (`t46xiboh`) in `lib/shared/drawer_component/drawer_component_widget.dart:744`
|
|
|
+heeft **geen** omhullende `InkWell`/`onTap` — alle 16 andere menu-items wél;
|
|
|
+tikken doet niets. (b) Geen enkele pagina vraagt `services_2` op:
|
|
|
+`horecagelegenhedenOverzichtCurrent` heeft alleen parameter `plaats` en
|
|
|
+hardcodeert 6× `'services_1'` (regels 57, 414, 430, 447, 464, 481). Let op: de
|
|
|
+`services_2` in `api_calls.dart:248` hoort bij **`flutterflowmobiel1`** (events,
|
|
|
+Home-tab) — ander ding, zelfde displaynummer.
|
|
|
+
|
|
|
+➡️ **De ontwerpvraag hieronder is hiermee beslecht: het moet een LOSSE
|
|
|
+lijstpagina worden.** Omdat `horcat` genegeerd wordt, zouden de zes
|
|
|
+categorietabs van de bestaande pagina alle zes dezelfde 19 items tonen; een
|
|
|
+`displayId`-page-parameter op die pagina is dus geen optie.
|
|
|
+
|
|
|
**Open ontwerpvraag voor Bob:** "Thuis bezorgen" is één lijst, terwijl
|
|
|
`horecagelegenhedenOverzichtCurrent` uit zes categorietabs bestaat. Wil je
|
|
|
die tabs daar ook, of liever een aparte, simpele lijstpagina? Dat bepaalt of
|