|
@@ -21,6 +21,8 @@ klopt sinds je 'm las.*
|
|
|
`/nl/node/add/horecagelegenheid` (die geeft anoniem een 301 naar de login, dus
|
|
`/nl/node/add/horecagelegenheid` (die geeft anoniem een 301 naar de login, dus
|
|
|
dáár niet rechtstreeks naartoe linken vanuit de app).
|
|
dáár niet rechtstreeks naartoe linken vanuit de app).
|
|
|
3. **76 · linkerpadding op de horeca-agendakaart** (klein, eigenaar onbepaald).
|
|
3. **76 · linkerpadding op de horeca-agendakaart** (klein, eigenaar onbepaald).
|
|
|
|
|
+ En **62a · linkstijl van de twee links op de Login-pagina** (keuze voor Bob,
|
|
|
|
|
+ cosmetisch) — zie het blok verderop.
|
|
|
4. **88 · "Mijn aanmeldingen" + kloonknop** — nieuw 2026-09-18, zie het blok
|
|
4. **88 · "Mijn aanmeldingen" + kloonknop** — nieuw 2026-09-18, zie het blok
|
|
|
hieronder. Deel A (Drupal) bij Bob, deel B (app) bij Claude.
|
|
hieronder. Deel A (Drupal) bij Bob, deel B (app) bij Claude.
|
|
|
5. **P2-44 · datum-icoon zonder datum op `EventCurrent`** — ⚠️ niet gelukt via
|
|
5. **P2-44 · datum-icoon zonder datum op `EventCurrent`** — ⚠️ niet gelukt via
|
|
@@ -29,6 +31,11 @@ klopt sinds je 'm las.*
|
|
|
2026-09-18 op Bob's vraag, zie het uitgeschreven blok verderop. Feature, dus
|
|
2026-09-18 op Bob's vraag, zie het uitgeschreven blok verderop. Feature, dus
|
|
|
geen livegang-blokker; Claude kan dit zelf in de builder doen. **De Row die
|
|
geen livegang-blokker; Claude kan dit zelf in de builder doen. **De Row die
|
|
|
hij nodig heeft ligt er al** (taak 90); let wel op de chipbreedte.
|
|
hij nodig heeft ligt er al** (taak 90); let wel op de chipbreedte.
|
|
|
|
|
+8. **91 · meer omschrijvingstekst op de evenementkaart bij een breder scherm ·
|
|
|
|
|
+ Eigenaar: Claude — bezig (2026-09-18).** `HomeUitgaantabelKaartComponent`,
|
|
|
|
|
+ de `Text` van `$.inhoud`: Max Lines binden aan een Responsive Value i.p.v.
|
|
|
|
|
+ leeg laten. Zie het blok verderop.
|
|
|
|
|
+
|
|
|
7. **89a · kopie-component `HeaderButtonsComponentCopy` opruimen · Eigenaar:
|
|
7. **89a · kopie-component `HeaderButtonsComponentCopy` opruimen · Eigenaar:
|
|
|
Bob.** Taak 89 (logo boven de gemeentenaam in de header) is **af** en
|
|
Bob.** Taak 89 (logo boven de gemeentenaam in de header) is **af** en
|
|
|
gecommit (`4c3f0aa`); deze kopie is vooraf op Bob's verzoek als vangnet
|
|
gecommit (`4c3f0aa`); deze kopie is vooraf op Bob's verzoek als vangnet
|
|
@@ -260,12 +267,16 @@ aantal labels niet beperken, wel afkorten. Reeks 103 → 63 → 21 → **0**:
|
|
|
- Hoogtes gelijkgetrokken: Carousel 180/220/260/300 → **4× 240**, Home-container
|
|
- Hoogtes gelijkgetrokken: Carousel 180/220/260/300 → **4× 240**, Home-container
|
|
|
**250 → 280**. Alle vier labels staan nu op de kaart.
|
|
**250 → 280**. Alle vier labels staan nu op de kaart.
|
|
|
|
|
|
|
|
-**Twee punten die nog bij Bob liggen:**
|
|
|
|
|
-- Het zoekveld staat nu op **width 260** (was 200, tussenstap na het terugdraaien
|
|
|
|
|
- van full-width). Prima zo, of terug naar 200?
|
|
|
|
|
-- App State **`zoekActief`** (Boolean) is aangemaakt maar uiteindelijk niet
|
|
|
|
|
- gebruikt — Rebuild Page bleek genoeg. Laten staan of opruimen? *(Claude ruimt
|
|
|
|
|
- niets op.)*
|
|
|
|
|
|
|
+**Twee punten die bij Bob lagen — allebei beantwoord 2026-09-18, geen actie meer:**
|
|
|
|
|
+- **Zoekveld width 260: zo laten.** Bob vroeg terecht of dit nog met het
|
|
|
|
|
+ toetsenbordprobleem te maken had — dat is niet zo. Dat is opgelost door de drie
|
|
|
|
|
+ andere ingrepen (`resizeToAvoidBottomInset: false`, de slider die wijkt bij
|
|
|
|
|
+ focus, en de Rebuild-Page-actie); de breedte speelde daar geen rol in. 260 is
|
|
|
|
|
+ puur een tussenstap die is blijven staan, werkt goed, en een zoekterm is er
|
|
|
|
|
+ beter leesbaar op dan bij 200. Niet aanpassen.
|
|
|
|
|
+- **App State `zoekActief`: Bob hernoemt hem naar `kanweg`** (besluit 2026-09-18).
|
|
|
|
|
+ Het veld heeft 0 lezers en 0 schrijvers in de levende code — zie ook de
|
|
|
|
|
+ wezenlijst verderop. *(Claude ruimt zelf niets op.)*
|
|
|
|
|
|
|
|
*Terzijde, geen regressie: zoeken op Home geeft landelijke treffers (Rotterdam,
|
|
*Terzijde, geen regressie: zoeken op Home geeft landelijke treffers (Rotterdam,
|
|
|
Maastricht) terwijl de header Amsterdam toont — Home is bewust landelijk, Bob
|
|
Maastricht) terwijl de header Amsterdam toont — Home is bewust landelijk, Bob
|
|
@@ -331,28 +342,15 @@ de website-homepage; `/nl/user/register` is anoniem bereikbaar (200).
|
|
|
korte **witte flits** van de Android-native launch screen (`?android:colorBackground`)
|
|
korte **witte flits** van de Android-native launch screen (`?android:colorBackground`)
|
|
|
vóór de Flutter-splash — die stelt FlutterFlow niet in, dus dat is geen builder-werk.
|
|
vóór de Flutter-splash — die stelt FlutterFlow niet in, dus dat is geen builder-werk.
|
|
|
|
|
|
|
|
-- **62 · P1-57 · ✅ AF 2026-09-18 (Claude, builder + verse export, `dart analyze`
|
|
|
|
|
- 0 errors).** Onder *Wachtwoord vergeten?* op de Login-pagina staat nu
|
|
|
|
|
- **"Nog geen account? Registreren"** met `launchURL(
|
|
|
|
|
- 'https://uitgaanskrant.com/nl/user/register')`. Nieuwe vertaalsleutel
|
|
|
|
|
- `pq12hujc`, EN = "No account yet? Register"; de sleutel van *Wachtwoord
|
|
|
|
|
- vergeten?* (`utppw2si`) is ongemoeid gebleven. Gebouwd door de bestaande
|
|
|
|
|
- link-`Text` te dupliceren — let op de bekende valkuil, die trad hier ook op:
|
|
|
|
|
- **de kopie erfde de Engelse vertaling van het origineel** ("Forgot password?"),
|
|
|
|
|
- dus die moest los rechtgezet worden via het globe-icoontje.
|
|
|
|
|
-
|
|
|
|
|
- **Kleine open keuze voor Bob (cosmetisch, geen bug).** De taakomschrijving ging
|
|
|
|
|
- ervan uit dat de bestaande link-`Text` de app-brede linkstijl had (`secondary` +
|
|
|
|
|
- onderstreept, uit P1-23). Dat is niet zo: *Wachtwoord vergeten?* staat gewoon op
|
|
|
|
|
- `bodyMedium` / Text Color **Primary Text**, zonder onderstreping. De nieuwe link
|
|
|
|
|
- is daarom een exacte kopie van zijn buurman, zodat de twee regels er op hetzelfde
|
|
|
|
|
- scherm gelijk uitzien. Wil je ze allebei in de app-brede linkstijl, dan is dat
|
|
|
|
|
- één ronde op deze twee `Text`-nodes — zeg het en ik doe het. `Login` heeft alleen *Inloggen* en *Wachtwoord vergeten?*;
|
|
|
|
|
- de helppagina belooft een "gratis account", maar in de app kun je er geen
|
|
|
|
|
- maken. Toevoegen onder *Wachtwoord vergeten?*: een `Text` "Nog geen account?
|
|
|
|
|
- Registreren" (dupliceer de bestaande link-`Text`, zelfde stijl `secondary` +
|
|
|
|
|
- onderstreept) met `Launch URL` → `https://uitgaanskrant.com/nl/user/register`
|
|
|
|
|
- (anoniem 200). Engelse vertaling meteen meegeven ("No account yet? Register").
|
|
|
|
|
|
|
+- **62a · Login-pagina: linkstijl van de twee links · Eigenaar: Bob (keuze,
|
|
|
|
|
+ cosmetisch).** Taak 62 is af (de registratielink staat er), maar onderweg bleek
|
|
|
|
|
+ iets dat nog een besluit vraagt: *Wachtwoord vergeten?* staat op `bodyMedium`
|
|
|
|
|
+ met Text Color **Primary Text**, dus **niet** in de app-brede linkstijl
|
|
|
|
|
+ (`secondary` + onderstreept) die P1-23 elders heeft doorgevoerd. De nieuwe link
|
|
|
|
|
+ *Nog geen account? Registreren* is bewust een exacte kopie van zijn buurman,
|
|
|
|
|
+ zodat de twee regels op hetzelfde scherm gelijk ogen. Wil je ze allebei in de
|
|
|
|
|
+ app-brede linkstijl, dan is dat één ronde op deze twee `Text`-nodes op de
|
|
|
|
|
+ Login-pagina — Claude kan dat zelf doen.
|
|
|
- **63 · Play Console — aanvulling op Bob's taak 2. Eigenaar: Bob.** Naast
|
|
- **63 · Play Console — aanvulling op Bob's taak 2. Eigenaar: Bob.** Naast
|
|
|
(a) t/m (e) daar:
|
|
(a) t/m (e) daar:
|
|
|
- **(f) App access / testaccount — taak 86, kan NU al, los van D-U-N-S.** De
|
|
- **(f) App access / testaccount — taak 86, kan NU al, los van D-U-N-S.** De
|
|
@@ -387,37 +385,6 @@ de website-homepage; `/nl/user/register` is anoniem bereikbaar (200).
|
|
|
er hangt dan niets meer van af. *Verificatie: `account-verwijderen` mag niet meer
|
|
er hangt dan niets meer van af. *Verificatie: `account-verwijderen` mag niet meer
|
|
|
in `favorieten_widget.dart` staan.*
|
|
in `favorieten_widget.dart` staan.*
|
|
|
|
|
|
|
|
-- **74 · P1-62 · ✅ AF 2026-09-17 (Claude, builder + verse export, akkoord Bob).**
|
|
|
|
|
- De evenementen-agenda op een horecapagina liep op een telefoon over elkaar heen.
|
|
|
|
|
- **Opgelost:** de `GridView` is via *Replace Widget* een **StaggeredView**
|
|
|
|
|
- geworden, met `Cross Axis Count` als **Responsive Value 1/1/2/3**. Export:
|
|
|
|
|
- `MasonryGridView.builder` met `crossAxisCount` als functie die 1/1/2/3
|
|
|
|
|
- teruggeeft, **geen `childAspectRatio` meer** (die bestaat niet op een
|
|
|
|
|
- StaggeredView — dat was de hele oorzaak) en **geen `return 0;`** in een tak.
|
|
|
|
|
- `shrinkWrap` is er bij de Replace vanzelf afgegaan, wat hier klopt: het
|
|
|
|
|
- component hangt op de pagina in een `Expanded`, dus het heeft een begrensde
|
|
|
|
|
- hoogte en scrollt voortaan zelf.
|
|
|
|
|
- *Waarom dit de goede vorm is:* een StaggeredView geeft elk kind zijn eigen
|
|
|
|
|
- hoogte, dus een kaart met een lange titel duwt niet meer over de buur heen.
|
|
|
|
|
- Dezelfde vorm draait al op Home en het horeca-overzicht.
|
|
|
|
|
- ⚠️ **Tijdens dit werk is het component door iemand anders hernoemd** van
|
|
|
|
|
- `HorecagelegenheidEventTabelComponentCopy` naar `...Current`. De export heeft
|
|
|
|
|
- alleen de nieuwe map, dus geen `ambiguous_import`; controleer wel of de oude
|
|
|
|
|
- map `lib/horecagelegenhedenoverzicht/horecagelegenheid_event_tabel_component_copy/`
|
|
|
|
|
- nog in de projectmap/git staat (hoort bij de opruimronde, Claude gooit niets weg).
|
|
|
|
|
- **Op een toestel nagekeken** (profile-APK, telefoon-emulator 411 dp, zaak
|
|
|
|
|
- Bitterzoet): `~/uk-shots/2026-09-16/na-horeca-agenda-staggered.png` naast de
|
|
|
|
|
- oude situatie in `bug-horeca-agenda-gridview.png`. De items staan nu onder
|
|
|
|
|
- elkaar, titel en datum zijn volledig leesbaar. `dart analyze`: 0 errors.
|
|
|
|
|
- *Terzijde:* de events hebben inmiddels een eigen **Agenda**-tab gekregen (werk
|
|
|
|
|
- van een andere sessie) — de Info-tab is daardoor ook rustig geworden.
|
|
|
|
|
-
|
|
|
|
|
-- **76 · Restpunt na taak 74: de agenda-tekst raakt de linker schermrand.**
|
|
|
|
|
- De kaart in `HorecagelegenheidEventTabelComponentCurrent` heeft geen
|
|
|
|
|
- linkerpadding, waardoor "Bubble House – Special Dance Edition" op x=0 begint;
|
|
|
|
|
- elders in de app zit 12 px. Eén padding-waarde op de kaart-`Row`. Eigenaar:
|
|
|
|
|
- onbepaald, klein. *(Het tweede restpunt — `<p>`-tags in `inhoud` — is af, zie 82.)*
|
|
|
|
|
-
|
|
|
|
|
- **82 (was 75 + 76.2) · `categorie: null` én rauwe HTML in `inhoud` op
|
|
- **82 (was 75 + 76.2) · `categorie: null` én rauwe HTML in `inhoud` op
|
|
|
`flutterflowmobiel_establishment_events` — ✅ OPGELOST OP DEVBOB 2026-09-17 (Bob),
|
|
`flutterflowmobiel_establishment_events` — ✅ OPGELOST OP DEVBOB 2026-09-17 (Bob),
|
|
|
⚠️ NOG DEPLOYEN NAAR PRODUCTIE.** Beide in het `services_1`-blok van
|
|
⚠️ NOG DEPLOYEN NAAR PRODUCTIE.** Beide in het `services_1`-blok van
|
|
@@ -438,43 +405,6 @@ de website-homepage; `/nl/user/register` is anoniem bereikbaar (200).
|
|
|
"FlutterFlow publieke endpoints" purgen (dit endpoint zit in die 5-minuten-rule).
|
|
"FlutterFlow publieke endpoints" purgen (dit endpoint zit in die 5-minuten-rule).
|
|
|
Daarna meet Claude productie na op dezelfde twee getallen.
|
|
Daarna meet Claude productie na op dezelfde twee getallen.
|
|
|
|
|
|
|
|
-- **77 · "Account aanmaken" op Favorieten tab 4 · ✅ AF 2026-09-17 (Claude,
|
|
|
|
|
- builder + verse export per stap, `dart analyze` 0 errors).**
|
|
|
|
|
- Tab 4 (*Gebruiker*) heeft nu twee gezichten, met een conditie op
|
|
|
|
|
- `FFAppState().userSessionid`:
|
|
|
|
|
- - **ingelogd** (`Is Set and Not Empty`) → Uitloggen, Mijn profiel, Wachtwoord
|
|
|
|
|
- wijzigen, Account verwijderen, Stadsactiviteit aanmaken — zoals voorheen;
|
|
|
|
|
- - **uitgelogd** (`Is Not Set or Is Empty`) → uitleg + **"Account aanmaken"**
|
|
|
|
|
- (`launchURL('https://uitgaanskrant.com/nl/user/register')`, anoniem 200
|
|
|
|
|
- gemeten) en **"Inloggen"** (`pushNamed(LoginWidget.routeName)`).
|
|
|
|
|
- Vóór deze wijziging kreeg een uitgelogde bezoeker "Uitloggen" en "Account
|
|
|
|
|
- verwijderen" te zien, en géén manier om een account te maken.
|
|
|
|
|
- **Vormgeving** volgens het merk-DNA: "Account aanmaken" fill **`secondary`**
|
|
|
|
|
- (oranje, de actiekleur) met witte tekst; "Inloggen" fill `primaryBackground`
|
|
|
|
|
- met `secondary` tekst — de FlutterFlow-default zette beide op `primary`
|
|
|
|
|
- (logo-rood), en rood is in dit merk nooit een knopkleur. Engelse vertalingen
|
|
|
|
|
- staan erin ("Create account" / "Log in" / de uitlegzin). De Column heeft
|
|
|
|
|
- `Padding(16, 0, 16, 0)`, anders raakte de tekst beide schermranden.
|
|
|
|
|
- **Op een toestel nagekeken** (profile-APK, telefoon-emulator, `pm clear` voor
|
|
|
|
|
- een echt uitgelogde staat): `~/uk-shots/2026-09-16/na-favorieten-uitgelogd.png`.
|
|
|
|
|
-
|
|
|
|
|
- **De werkroute die uiteindelijk werkte — belangrijk voor later:**
|
|
|
|
|
- 1. Rechtsklik de bestaande `Column` → **Wrap Widget → Column**.
|
|
|
|
|
- 2. **"+" op die nieuwe buitenste Column** → tweede kind toevoegen.
|
|
|
|
|
- 3. Conditie op elk van de twee blokken (de binnenste had 'm al).
|
|
|
|
|
- ⚠️ **Wat NIET werkt en waarom:** `Duplicate` op een Column waar net een
|
|
|
|
|
- conditie op gezet is, hernummert stil alle vertaalsleutels; en **"+" op een
|
|
|
|
|
- `TabBar Page`-rij vervángt het bestaande kind** in plaats van toe te voegen —
|
|
|
|
|
- een TabBar Page heeft precies één kind. Beide fouten zijn gemaakt en
|
|
|
|
|
- teruggedraaid (de tweede met de **undo-knop in de werkbalk**; Ctrl+Z werkte
|
|
|
|
|
- niet).
|
|
|
|
|
- 💡 **Bob's idee dat dit vlot trok: eerst een kopie maken en daarin oefenen.**
|
|
|
|
|
- `favorietenCopy2` is met *Duplicate Page* gemaakt en daar is de hele route
|
|
|
|
|
- eerst bewezen (export toonde de juiste `if/if`-structuur) vóór er iets op de
|
|
|
|
|
- echte pagina gebeurde. **Die kopie staat er nog** en mag bij de opruimronde
|
|
|
|
|
- mee (P2-7) — Claude gooit niets weg.
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
**🟠 Vóór livegang, één ronde**
|
|
**🟠 Vóór livegang, één ronde**
|
|
|
|
|
|
|
|
- **65 · P1-59 · Release-build smoke-test op beide AVD's + Bob's Xiaomi.
|
|
- **65 · P1-59 · Release-build smoke-test op beide AVD's + Bob's Xiaomi.
|
|
@@ -738,151 +668,6 @@ dichten: geef `https://uitgaanskrant.com/nl/support/mobieleapp` op als
|
|
|
account-verwijder-URL (de sectie "Je account verwijderen" staat daar publiek op),
|
|
account-verwijder-URL (de sectie "Je account verwijderen" staat daar publiek op),
|
|
|
of maak de oude pagina publiek zichtbaar.
|
|
of maak de oude pagina publiek zichtbaar.
|
|
|
|
|
|
|
|
-### 🟢 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.*
|
|
|
|
|
-
|
|
|
|
|
-**✅ Beide functie-bodies zijn op 2026-09-16 door Bob geplakt en
|
|
|
|
|
-export-geverifieerd** — `filterDatumVan` en `filterDatumTot` staan allebei in de
|
|
|
|
|
-taalonafhankelijke vorm in `custom_functions.dart`. De Home-chips staan op
|
|
|
|
|
-`All` / `Today` / `This weekend` / `This week`, dus de koppeling klopt en het
|
|
|
|
|
-datumfilter werkt in beide talen. De code hieronder blijft staan als referentie.
|
|
|
|
|
-
|
|
|
|
|
-**✅ En het is nu ook op een toestel bewezen, in het Engels** (Claude, profile-APK
|
|
|
|
|
-van de export van 16 sep op `emulator-5556`, locale tijdelijk `en-US`, daarna
|
|
|
|
|
-terug op `nl-NL`): chip **This weekend** schakelt de lijst van de events van
|
|
|
|
|
-vandaag naar "zaterdag 19 sep, 12:00"; **Today** toont alleen 16 sep. Vóór deze
|
|
|
|
|
-wijziging deed elke Engelse chip niets.
|
|
|
|
|
-⚠️ *Blijvend aandachtspunt: de Engelse chip-teksten moeten "today", "weekend" of
|
|
|
|
|
-"week" blijven bevatten. Een formulering als "Upcoming" laat de chip stil niets
|
|
|
|
|
-filteren.*
|
|
|
|
|
-
|
|
|
|
|
-**Nog twee dingen uit deze ronde:**
|
|
|
|
|
-- **Scheidingsteken tussen adres en plaats** op `UitgaantabelKaart`
|
|
|
|
|
- (`p3hbyhqm`) stond in het Engels op `","` zónder spatie → "De Hofnar
|
|
|
|
|
- 10,Valkenswaard". Nu `", "`, gelijk aan het Nederlands. Dat component staat
|
|
|
|
|
- live op **Favorieten** en de provinciepagina.
|
|
|
|
|
-- **Beperking van de vertaal-audit, goed om te weten:** het meetscript vindt
|
|
|
|
|
- *lege*, *nog-Nederlandse* en *over meerdere sleutels hergebruikte* vertalingen.
|
|
|
|
|
- Het kan géén slecht Engels herkennen — "Eatings" en "Overnight" telden als
|
|
|
|
|
- "vertaald". Een menselijke blik over de labels blijft dus nodig; de audit
|
|
|
|
|
- vervangt dat niet.
|
|
|
|
|
-
|
|
|
|
|
-**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 · 8 sleutels hadden 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).
|
|
|
|
|
-**5 van de 8 zijn op 2026-09-16 gefixt** (`vnwx710y`, `pj545url`, `n3cyffso`,
|
|
|
|
|
-`nosgkxy0`, `elx7kse2`) plus de inhoudelijke fout op `wachtwoordVergeten`
|
|
|
|
|
-(`503u6v73`, stond op *"Use your username or password to recieve an email"* —
|
|
|
|
|
-verkeerde betekenis én een typefout). **De resterende 3 staan alle drie op
|
|
|
|
|
-`uitgaansevenementAanmaken` en wachten dus op P2-29:**
|
|
|
|
|
-| sleutel | Nederlands | staat er nu in EN | moet worden |
|
|
|
|
|
-|---|---|---|---|
|
|
|
|
|
-| `qsf2va25` | Website van het evenement | Website van de activiteit | Event website |
|
|
|
|
|
-| `nzaqrq0w` | Link om kaarten te kopen | Website van de activiteit | Ticket link |
|
|
|
|
|
-| `9qx16tm9` | Evenement indienen | Activiteit indienen | Submit event |
|
|
|
|
|
-
|
|
|
|
|
-**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).*
|
|
|
|
|
-
|
|
|
|
|
### 🎨 Look&feel doorgevoerd 2026-09-16 (Claude, builder + verse export per stap) — afgerond, restpunten hieronder
|
|
### 🎨 Look&feel doorgevoerd 2026-09-16 (Claude, builder + verse export per stap) — afgerond, restpunten hieronder
|
|
|
|
|
|
|
|
*Bob's akkoord op alle voorstellen uit de review van vanochtend (Artifact:
|
|
*Bob's akkoord op alle voorstellen uit de review van vanochtend (Artifact:
|
|
@@ -980,9 +765,8 @@ telefoon-emulator bekeken (zie screenshots in `~/uk-shots/2026-09-16/na-*.png`).
|
|
|
Shrink Wrap uit. Zolang dat niet is gedaan toont de tab niets; de
|
|
Shrink Wrap uit. Zolang dat niet is gedaan toont de tab niets; de
|
|
|
empty-state (0 events) werkt wél. Niet zelf aangeraakt — iemand anders zat
|
|
empty-state (0 events) werkt wél. Niet zelf aangeraakt — iemand anders zat
|
|
|
erop.
|
|
erop.
|
|
|
- *Klein:* met vier tabs kapt "Bezorgen" af op 411 dp → `TabBar` →
|
|
|
|
|
- "Tab Bar Scrollable" aan.
|
|
|
|
|
- **Restpunten staan nu als eigen taken P2-41 (Cross Axis Count), P2-42 (tabvolgorde) en P2-43 (scrollable tabbar).** Oud: Tabs
|
|
|
|
|
|
|
+ **Restpunt staat nu als eigen taak P2-42 (tabvolgorde); P2-41 (Cross Axis
|
|
|
|
|
+ Count) en P2-43 (scrollable tabbar) zijn afgerond.** Oud: Tabs
|
|
|
herordenen lukt niet via de widget tree: een `Tab`-node op de `TabBar`-rij
|
|
herordenen lukt niet via de widget tree: een `Tab`-node op de `TabBar`-rij
|
|
|
droppen geeft de toast *"Tab can only be added to TabBar"*, en op een andere
|
|
droppen geeft de toast *"Tab can only be added to TabBar"*, en op een andere
|
|
|
Tab-rij droppen verplaatst alleen de Tab (niet zijn TabBar Page), waarna het
|
|
Tab-rij droppen verplaatst alleen de Tab (niet zijn TabBar Page), waarna het
|
|
@@ -1009,10 +793,6 @@ telefoon-emulator bekeken (zie screenshots in `~/uk-shots/2026-09-16/na-*.png`).
|
|
|
herordenen voor Claude onmogelijk (zie `CLAUDE.md`). Drie opties: (a) tabs
|
|
herordenen voor Claude onmogelijk (zie `CLAUDE.md`). Drie opties: (a) tabs
|
|
|
slepen in je eigen browser (Tab én bijbehorende TabBar Page); (b) `TabBar` →
|
|
slepen in je eigen browser (Tab én bijbehorende TabBar Page); (b) `TabBar` →
|
|
|
*Initial Tab Index* op 3, dan opent de pagina op Agenda; (c) zo laten.
|
|
*Initial Tab Index* op 3, dan opent de pagina op Agenda; (c) zo laten.
|
|
|
-- **P2-43 · ✅ AF 2026-09-18 (Claude, builder).** `TabBar` op
|
|
|
|
|
- `HorecagelegenheidCurrent` → *Tab Bar Scrollable* aan; verse export toont
|
|
|
|
|
- `isScrollable: true` (regel 479). De vier tabs (Info / Links / Bezorgen /
|
|
|
|
|
- Agenda) scrollen nu horizontaal in plaats van "Bezorgen" af te kappen.
|
|
|
|
|
- **P2-44 · `EventCurrent`: datum-icoon zonder datum · ⚠️ NIET GELUKT, terug naar
|
|
- **P2-44 · `EventCurrent`: datum-icoon zonder datum · ⚠️ NIET GELUKT, terug naar
|
|
|
Bob (Claude 2026-09-18; mijn wijziging is volledig teruggedraaid).** Het
|
|
Bob (Claude 2026-09-18; mijn wijziging is volledig teruggedraaid).** Het
|
|
|
probleem staat nog: de conditie `$[0].datum is set` zit op `TextData` en niet
|
|
probleem staat nog: de conditie `$[0].datum is set` zit op `TextData` en niet
|
|
@@ -2490,7 +2270,14 @@ maak description en code gelijk, en hernoem `$date_after_30`.
|
|
|
De fix is een `UPDATE` met diezelfde genestelde `TRIM` op **`node` én
|
|
De fix is een `UPDATE` met diezelfde genestelde `TRIM` op **`node` én
|
|
|
`node_revision`**, idempotent, met vooraf een `sql-dump` van die twee
|
|
`node_revision`**, idempotent, met vooraf een `sql-dump` van die twee
|
|
|
tabellen. URL-aliassen blijven ongemoeid.
|
|
tabellen. URL-aliassen blijven ongemoeid.
|
|
|
-- **P2-7 · opruimronde, 21 dode eenheden** (Bob 2026-09-13: naar livegang).
|
|
|
|
|
|
|
+- **P2-7 · opruimronde, 23 dode eenheden** (Bob 2026-09-13: naar livegang).
|
|
|
|
|
+ ⚠️ **Twee nieuwe sinds 17 sep, allebei van Claude:** de pagina
|
|
|
|
|
+ **`favorietenCopy2`** (oefenkopie van `Favorieten`, gemaakt om de
|
|
|
|
|
+ Wrap-Widget-route voor taak 77 veilig uit te proberen — zie de les in
|
|
|
|
|
+ `CLAUDE.md`) en het component
|
|
|
|
|
+ **`HorecagelegenheidEventTabelComponentCopy`**, dat bij een hernoeming
|
|
|
|
|
+ `...Current` werd (controleer of de oude map nog in `lib/` of git staat).
|
|
|
|
|
+ Claude gooit niets weg, dus beide staan er tot jij ze opruimt.
|
|
|
Moet in de **builder** gebeuren, niet met `git rm` — anders staat alles na de
|
|
Moet in de **builder** gebeuren, niet met `git rm` — anders staat alles na de
|
|
|
volgende export terug. *9 componenten:* `header_buttons_component_copymethartje`,
|
|
volgende export terug. *9 componenten:* `header_buttons_component_copymethartje`,
|
|
|
`kaart_slider_uitgaan_s_comp`, `kaart_tabel_uitgaan_comp`,
|
|
`kaart_slider_uitgaan_s_comp`, `kaart_tabel_uitgaan_comp`,
|