Просмотр исходного кода

Taak 122 A/B/C: 19 teksten gecorrigeerd op beide aanmaakpagina's

Gedaan in de builder en geverifieerd met een verse export (19/19):
- "Categorie evenement" als kop op de ACTIVITEITENpagina -> "Categorie
  activiteit *"; op de evenementenpagina een sterretje erbij
- "Selectee..." -> "Selecteer..."
- "Datum eind" (4x) -> "Einddatum", "WebsiteURL" (2x) -> "Website",
  "TicketsURL" -> "Ticketlink", "Toelichting Entree" -> "Toelichting entree"
- "Uw Horecagelegenheid" -> "Je horecagelegenheid" (u/jij-consistentie)
- EN-typefouten weg: Zipcde, Organisatsion, Feeprice (2x), Title
  cityactivity, Title cityactvity

Punt D (hints die het label herhalen), een E-restje en punt F
(`Select...` op een NL-pagina) blijven open als schrijfkeuzes voor Bob.

CLAUDE.md: vier builder-bevindingen uit deze sessie, waarvan de
belangrijkste dat een globe-klik in dezelfde browser_batch als het
eigenschappen-filter de hele builder grijs maakt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bob 9 часов назад
Родитель
Сommit
f741f1caa6
2 измененных файлов с 75 добавлено и 161 удалено
  1. 38 0
      CLAUDE.md
  2. 37 161
      TASKS.md

+ 38 - 0
CLAUDE.md

@@ -3640,6 +3640,44 @@ niet:
 3. Staat er al een Engelse vertaling, dan is dat vaak géén fout maar
 3. Staat er al een Engelse vertaling, dan is dat vaak géén fout maar
    eerder werk — controleer met de export vóór je overschrijft.
    eerder werk — controleer met de export vóór je overschrijft.
 
 
+**⚠️ Het globe-icoontje aanklikken IN DEZELFDE `browser_batch` als het typen van
+het eigenschappen-zoekfilter maakt de hele builder grijs.** Drie keer
+gereproduceerd op 2026-09-20, en drie keer voorkomen door de twee te splitsen.
+Het beeld: alles (canvas, beide panelen, de hele werkbalk) wordt één egaal
+grijs vlak zónder zichtbare dialoog, Escape helpt niet, en er gaat niets
+verloren — een `navigate` naar dezelfde URL herstelt alles, maar kost je wel
+een minuut aan herladen. Oorzaak lijkt de herberekening van het paneel na het
+filteren: de klik landt tijdens die relayout. **Vaste volgorde dus: filter
+typen + `zoom` in aanroep A, globe klikken in aanroep B.** Zelfde regel als
+elders in dit bestand voor het inklappen van secties.
+
+**In het vertaalpaneel landt maar ÉÉN veldbewerking per tool-aanroep — de eerste
+faalt altijd.** Scherper dan de oudere notitie hierboven. Zet je Dutch én
+English in één batch, dan komt alleen de **laatste** aan; de andere houdt stil
+zijn oude waarde. En de eerste `triple_click`+`type` direct ná het openen van
+het paneel landt sowieso niet. Werkende cadans, ±20 keer foutloos herhaald:
+globe klikken (eigen aanroep) → `triple_click`+`triple_click`+`type` voor Dutch
+(eigen aanroep) → idem voor English (eigen aanroep) → `zoom` ter controle na
+elke. Reken op 3-4 aanroepen per tekst, plus 2 voor het selecteren van het
+widget.
+
+**Het eigenschappen-zoekveld pakt de eerste typ-actie na een SELECTIEWISSEL niet,
+maar wél als het widget al geselecteerd was.** Praktisch: `left_click` op de
+tree-rij (2×) in aanroep A, en pas in aanroep B klikken+typen in
+"Search properties...". Doe je het in één batch, dan staat het veld wel gefocust
+(blauwe rand) maar blijft het leeg — typ het dan gewoon nog eens in de volgende
+aanroep, zonder opnieuw te klikken.
+
+**Globe-posities bij een gefilterd rechterpaneel (venster 1266×952, filter in
+"Search properties..."):** filter `label` → *Label Text*-globe op **(1250, 159)**;
+filter `hint` op een `TextField` → *Hint Text*-globe op **(1250, 198)**, want daar
+staat "Label Properties / Align Label With Hint" erboven; filter `hint` op een
+`FlutterFlowDropDown` → **(1250, 159)** (geen labelsectie); een `Text`-widget
+zonder filter → *Text*-globe op **(1250, 186)**. In het vertaalpaneel zelf:
+Dutch **(1177, 140)**, English **(1177, 179)**, *Back* **(1118, 215)**.
+⚠️ Mik bij het hint-geval niet op 159 — daar zit dan de toggle *Align Label With
+Hint*.
+
 **Het vertaal-globe-paneel: na *Back* landt de EERSTE volgende globe-klik nooit,
 **Het vertaal-globe-paneel: na *Back* landt de EERSTE volgende globe-klik nooit,
 en twee globe-kliks in één batch openen en sluiten hem weer.** Bevestigd
 en twee globe-kliks in één batch openen en sluiten hem weer.** Bevestigd
 2026-09-20, zes vertalingen achter elkaar op `FilterBalkComponent`. Vaste
 2026-09-20, zes vertalingen achter elkaar op `FilterBalkComponent`. Vaste

+ 37 - 161
TASKS.md

@@ -50,7 +50,7 @@ Google Play en één doorloop die alleen Bob kan doen.
 | **120** | 12 hardcoded kleuren aan thematokens binden | ⚠️ Claude kwam er 2026-09-20 niet in: widget-selectie in de tree landt niet in Bob's huidige Chrome-venster. Inventaris mét vindplaatsen staat klaar | Alle 12 zijn exact gelijk aan een bestaand token, dus nu onzichtbaar — maar ze lopen niet mee bij een themawijziging. Eigen blok hieronder |
 | **120** | 12 hardcoded kleuren aan thematokens binden | ⚠️ Claude kwam er 2026-09-20 niet in: widget-selectie in de tree landt niet in Bob's huidige Chrome-venster. Inventaris mét vindplaatsen staat klaar | Alle 12 zijn exact gelijk aan een bestaand token, dus nu onzichtbaar — maar ze lopen niet mee bij een themawijziging. Eigen blok hieronder |
 | ~~117~~ | ~~Kalenderpermissie eruit~~ | ✅ **AF** (Bob 2026-09-20, export-geverifieerd): `READ_CALENDAR`/`WRITE_CALENDAR` én `NSCalendarsUsageDescription` zijn weg; `CAMERA` staat er nog (terecht) |
 | ~~117~~ | ~~Kalenderpermissie eruit~~ | ✅ **AF** (Bob 2026-09-20, export-geverifieerd): `READ_CALENDAR`/`WRITE_CALENDAR` én `NSCalendarsUsageDescription` zijn weg; `CAMERA` staat er nog (terecht) |
 | **118** | AdMob EU-consentbericht | ⚠️ Half: de FlutterFlow-toggle staat goed, maar het bericht moet in de **AdMob-console** gepubliceerd zijn. Eigen blok hieronder |
 | **118** | AdMob EU-consentbericht | ⚠️ Half: de FlutterFlow-toggle staat goed, maar het bericht moet in de **AdMob-console** gepubliceerd zijn. Eigen blok hieronder |
-| **122** | Teksten aanmaakpagina's doornemen | Labels, hints en Engelse vertalingen op de activiteiten- en evenementenpagina. Inventaris mét i18n-sleutels staat in een eigen blok hieronder; o.a. "Categorie **evenement**" als kop op de *activiteiten*pagina, "Selectee...", "WebsiteURL"/"TicketsURL" en een sterretje dat niet klopt met de introtekst |
+| **122** | Teksten aanmaakpagina's | ✅ **A/B/C af** (Claude 2026-09-20, 19 teksten, export-geverifieerd): verkeerde woorden, typefouten, technische veldnamen en het sterretje bij de categoriekeuze. Open blijven D (hints die het label herhalen), E-restje en F (`Select...` op een NL-pagina) — eigen blok hieronder |
 | **123** | `mijn_stadsrechten` uitbreiden met de keten | **Code staat klaar en is op productie getest.** Vervang regels 316-372 van `custom.evenementen_aanmaken.inc` + `cc all`. Blokkeert 124 |
 | **123** | `mijn_stadsrechten` uitbreiden met de keten | **Code staat klaar en is op productie getest.** Vervang regels 316-372 van `custom.evenementen_aanmaken.inc` + `cc all`. Blokkeert 124 |
 | **124-126** | Stadsrechten-cascade op `stadsactiviteitAanmaken` | Voorvullen van provincie/gemeente/plaats (124), een **crash** bij een lege plaatsenlijst (125) en een stille verkeerde plaats bij het wisselen van gemeente (126). Eigen blok hieronder |
 | **124-126** | Stadsrechten-cascade op `stadsactiviteitAanmaken` | Voorvullen van provincie/gemeente/plaats (124), een **crash** bij een lege plaatsenlijst (125) en een stille verkeerde plaats bij het wisselen van gemeente (126). Eigen blok hieronder |
 
 
@@ -356,168 +356,44 @@ tot de slider — die Bob er bewust in had gezet — blijft staan.
 tekent dus even buiten zijn kader. Inherent aan de gegenereerde widget, niet vanuit
 tekent dus even buiten zijn kader. Inherent aan de gegenereerde widget, niet vanuit
 de builder te clippen. De layout beweegt niet meer, en dat was het doel.
 de builder te clippen. De layout beweegt niet meer, en dat was het doel.
 
 
-### 122 · Teksten op de twee aanmaakpagina's doornemen · Eigenaar: Bob
-
-**Wat:** labels, hints, sectiekoppen en Engelse vertalingen langslopen op
-`stadsactiviteitAanmaken` (51 teksten) en `uitgaansevenementAanmaken` (41).
-Het introblok en de hulpregels van taak 91 staan er goed op en zijn netjes
-vertaald — wat overblijft zijn verkeerde woorden, typefouten, technische
-veldnamen en verschillen **tussen** de twee pagina's.
-
-Inventaris uit een verse export van 2026-09-20 (de werkkopie liep achter; de
-hulpregels leken daar te ontbreken maar staan er wél). Elke sleutel hieronder is
-de i18n-key — bereikbaar via het globe-icoontje naast het Text-/Label-veld.
-`ACT` = activiteitenpagina, `EVT` = evenementenpagina.
-
-**A · Gewoon fout**
-- `ACT moj9sft5` sectiekop **"Categorie evenement"** staat op de
-  *activiteiten*pagina → "Categorie activiteit".
-- `ACT dqeuq7t8` dropdown-hint **"Selectee..."** (dubbele e).
-- `ACT oo7z1mp8` EN **"Zipcde"** — de hint eronder (`j9h65a88`) heeft wél
-  "Zipcode".
-- `EVT vu6qv8cj` EN **"Title cityactvity"** — typefout én de verkeerde entiteit.
-- `ACT jwgx4el8` EN **"Title cityactivity"** — interne veldnaam, geen Engels.
-- `EVT vkyrmq6a` EN **"Organisatsion"**.
-- `EVT r9s46lo7` / `3h3k4jh2` / `ge5o3gf7` EN **"Feeprice"**.
-
-**B · Technische namen die een gebruiker niet hoort te zien**
-- `ACT i66ori1d` / `EVT e9n6cj1o` **"WebsiteURL"** → "Website" (EN is hier gelijk
-  aan NL, dus in beide talen).
-- `EVT zfofdq9a` **"TicketsURL"** → "Ticketlink".
-- **"Datum eind"** op vier plekken (`ACT 71z3uvd8`+`1k52hayg`,
-  `EVT wkn1mu1d`+`e42lwmdh`) → "Einddatum".
-- **"Toelichting Entree"** (4 plekken) — hoofdletter midden in de zin.
-- `EVT rqx6m3yf` **"Uw Horecagelegenheid"** → de rest van beide pagina's
-  tutoyeert ("je evenement", "jouw account"), en de hulpregel eronder noemt het
-  zelf een **zaak**. Kies één aanspreekvorm en één woord.
-
-**C · Het sterretje klopt niet met de introtekst**
-Beide intro's zeggen "Velden met * zijn verplicht". Nu staat het sterretje op
-Titel, Datum en (EVT) "Kies je horecagelegenheid". Het **ontbreekt** op:
-- de categoriekeuze op **beide** pagina's, terwijl de hulpregel eronder zegt
-  *"zonder categorie is je evenement/activiteit nergens terug te vinden"*;
-- `ACT` de plaatskeuze (`ls6do5d5` / `sv5qajjt`), terwijl de hulpregel bij
-  *Waar* letterlijk zegt *"dat is verplicht"*.
-
-**D · Hints die alleen het label herhalen**
-Datum/Datum, Adres/Adres, Postcode/Postcode, Toelichting Entree (2×) en
-**Entreeprijs (3×)**. Die regel is nu weggegooide ruimte; een voorbeeld doet het
-werk wel — "bijv. 7,50", "1012 AB", "bijv. Jazz in de Tuin".
-
-**E · De twee pagina's noemen hetzelfde veld anders (vooral in het Engels)**
-
-| veld | ACT | EVT |
-|---|---|---|
-| Categorie | `Category` | `Category event` |
-| Toelichting Entree | `Admission description` / `Fee description` *(label en hint verschillen onderling!)* | `Description Fee` |
-| Entreeprijs | `Admission price` | `Feeprice` |
-| Datum eind | `End date` | `Date end` |
-| Logo kiezen | `Choose logo` | `Select logo` |
-| Omschrijving … | `Description activity` | `Event description` |
-
-**F · Engels ontbreekt of is Nederlands blijven staan**
-`ACT xiba4gka` / `l9f37oxb` / `ajotnz1f` en `EVT 2hitlrxa` / `qtnlg7nd` en
-`EVT e9n6cj1o` / `zfofdq9a`. *(`Contact` en `Media` zijn in beide talen gelijk —
-die mogen zo blijven.)* Aan de **Nederlandse** kant hetzelfde probleem: `ACT`
-gebruikt "Selecteer..."/"Zoek..." bij de categorie, maar **"Select..."** bij drie
-andere dropdowns op diezelfde pagina.
-
-**Werkwijze:** globe-icoontje per widget (recept in `CLAUDE.md`, sectie
-"Vertalingen invullen"). Eén klik per tool-aanroep, en **verifieer met een verse
-export** — het rechterpaneel toont na een geslaagde wijziging vaak nog de oude
-waarde.
-
-**Deel dat gedelegeerd kan:** punt A, E en F zijn mechanisch herhaalwerk zonder
-geneste dialogen. Zeg het even als Claude die mag oppakken; B t/m D zijn
-schrijfkeuzes en horen bij jou.
-
-### 123 · Stadsrechten-cascade op `stadsactiviteitAanmaken` — Drupal-deel · Eigenaar: Bob
-
-**Code staat klaar en is getest** (2026-09-20, Claude): vervang in
-`sites/all/modules/custom/custom.evenementen_aanmaken.inc` de **regels 316 t/m
-372** (docblock t/m sluitende accolade van `_custom_mijn_stadsrechten_service()`)
-door de aangeleverde versie. Daarna `drush @<alias> cc all`.
-
-**Waarom:** `field_town_access` mag een term op **elk** van de drie niveaus van
-de town-vocabulary bevatten — plaats (tot 2026-08-27), gemeente (huidige
-standaard) of provincie (de widget staat op Max depth 2 en laat dat toe; Bob
-geeft ze bewust op provincieniveau, dat scheelt veel werk). De app stopte die tid
-rechtstreeks in `plaatsen_bij_gemeente`, en dat geeft bij provincie én plaats een
-lege lijst → zie taak 125.
-
-De nieuwe versie geeft per recht de **volledig uitgeklapte keten** terug:
-`niveau` · `provincie_tid`/`_titel` · `gemeente_tid`/`_titel` ·
-`plaats_tid`/`_titel` · `keten` (`"provincie|gemeente|plaats"`, ontbrekende delen
-leeg) · `label` (bv. *"Noord-Brabant (hele provincie)"*). `tid`, `titel`,
-`parent_tid` en `parent_titel` blijven ongewijzigd staan, dus bestaande
-consumenten merken niets. Sortering is hiërarchisch i.p.v. alfabetisch op titel.
-
-Getest op productie onder een testnaam, alle drie de niveaus:
-
-| account | recht | `keten` |
-|---|---|---|
-| bobcity | 28694 Amsterdam (gemeente) | `28666\|28694\|` |
-| bobhoreca | 27409 Noord-Brabant (provincie) | `27409\|\|` |
-| Team Klein Frankrijk | 29912 Zuid-Holland (provincie) | `29912\|\|` |
-
-### 124 · Stadsrechten-cascade — app-deel · Eigenaar: nader te bepalen (na 123)
+### 122 · Teksten aanmaakpagina's — A/B/C AF, D/E/F open · Eigenaar: Bob
 
 
-De eerste dropdown in het *Waar*-blok van `stadsactiviteitAanmaken` moet de drie
-cascade-dropdowns voorvullen tot zover het recht reikt, in plaats van alleen
-`createGemeenteID` te zetten:
+**Afgerond 2026-09-20 (Claude, in de builder, 19/19 geverifieerd met een verse
+export).** Punt A (gewoon fout), punt B (technische veldnamen) en punt C (het
+sterretje bij de categoriekeuze) zijn gedaan op béide pagina's:
 
 
-| recht | voorvullen | gebruiker kiest nog |
-|---|---|---|
-| provincie | provincie | gemeente + plaats |
-| gemeente | provincie + gemeente | plaats |
-| plaats (oud) | alle drie | niets |
-
-**Stappen:** dropdown-waarde omzetten van `$[:].tid` naar **`$[:].keten`** (label
-op `$[:].label`), plus drie custom functions van **één** String-argument
-(`ketenProvincie` / `ketenGemeente` / `ketenPlaats` → `split('|')[n]`). Die ene
-parameter is bewust: een lookup op de hele respons vraagt een custom function met
-meerdere argumenten, en die binding loopt in de Action Flow Editor structureel
-vast (zie `CLAUDE.md`). On Selected → `Update Page State` voor
-`createProvincieID`/`createGemeenteID`/`createPlaatsID` + `Set Form Field` op de
-drie dropdowns.
-
-Een lege `Set Form Field`-waarde wordt geweigerd ("Value cannot be empty"), dus
-voor de lege delen van de keten is **Reset Form Fields** nodig — wat meteen de
-tweede helft van taak 126 afhandelt.
-
-**Voorvullen, niet verbergen** (besluit Bob 2026-09-20): met verbergen kun je
-achteraf niet meer wisselen zonder eerst de rechten-dropdown leeg te maken.
-
-### 125 · Crash: lege plaatsenlijst sloopt de Plaats-dropdown · Eigenaar: nader te bepalen
-
-`stadsactiviteit_aanmaken_widget.dart:1878` doet
-`(getJsonField(respons, r'$[:].plaatsid', true) as List?)!`. `getJsonField` geeft
-bij **0 matches `null`** — ook met `isForList: true`, want de `isEmpty`-check
-staat ervóór ([`flutter_flow_util.dart:356`]). Een lege respons `[]` geeft dus
-`Null check operator used on a null value`; in een release-build een grijs blok
-zonder melding.
-
-Treedt nu op bij elke provincie- of plaats-tid in `field_town_access`, maar staat
-**los van taak 123/124**: ook een gemeente zónder plaatsen in de taxonomie geeft
-dezelfde crash. Zelfde patroon staat op de **gemeente**- en **provincie**-dropdown
-van diezelfde pagina — alle drie langslopen.
-
-Fix: Generate-Dynamic-Children-achtige null-veiligheid via een **Predefined Path**
-op de API-call (`$[:]`, Is List) i.p.v. een JSON Path — dat genereert
-`(XCall.items(jsonBody)?.toList() ?? [])`. Recept staat in `CLAUDE.md`.
-
-### 126 · Stale `createPlaatsID` bij het wisselen van gemeente · Eigenaar: nader te bepalen
-
-Geen van de vier dropdowns in het *Waar*-blok reset de onderliggende. Scenario:
-kies gemeente A → plaats A₁ (`createPlaatsID` gezet) → wissel naar gemeente B.
-De Plaats-dropdown toont dan weer zijn hint (`FlutterFlowDropDown` filtert een
-waarde die niet in de opties zit weg, [`flutter_flow_drop_down.dart:101`]), maar
-`createPlaatsID` houdt **A₁** vast. De verzendknop blijft dus zichtbaar en je
-dient in voor de vorige plaats. Stil, geen foutmelding.
-
-Fix: `Reset Form Fields` + `Update Page State` (Reset Value) op de onderliggende
-velden in de On-Selected van provincie, gemeente én de rechten-dropdown. Overlapt
-met taak 124 — samen oppakken.
+| was | is nu |
+|---|---|
+| `ACT` kop "Categorie **evenement**" | "Categorie activiteit \*" / `Category *` |
+| `EVT` kop "Categorie evenement" | "Categorie evenement \*" / `Category *` |
+| "Selectee..." | "Selecteer..." |
+| "Datum eind" (4×) | "Einddatum" / `End date` |
+| "WebsiteURL" (2×) | "Website" |
+| "TicketsURL" | "Ticketlink" / `Ticket link` |
+| "Toelichting **E**ntree" (2×) | "Toelichting entree" |
+| "Uw Horecagelegenheid" | "Je horecagelegenheid" / `Your venue` |
+| EN `Zipcde` · `Organisatsion` · `Feeprice` (2×) | `Zipcode` · `Organisation` · `Admission price` |
+| EN `Title cityactivity` · `Title cityactvity` | `Activity title` · `Event title` |
+
+**Nog open — schrijfkeuzes, bewust bij Bob gelaten:**
+
+- **D · hints die alleen het label herhalen.** Elk veld heeft een `Text`-label
+  bóven het invoerveld én een `labelText` én een `hintText`; staan die alle drie
+  op hetzelfde woord, dan leest de gebruiker het drie keer. Bob heeft de losse
+  `Text`-labels van "Toelichting Entree" en "Entreeprijs" al weggehaald; over
+  zijn nog de label/hint-paren: `ACT` Einddatum · Adres · Postcode ·
+  Entreeprijs, `EVT` Einddatum · Toelichting entree · Entreeprijs. Een voorbeeld
+  in de hint doet meer werk dan een herhaling — "bijv. 7,50", "1012 AB".
+- **E · resterend verschil tussen de pagina's.** Alleen nog "Omschrijving …":
+  `ACT` EN `Description activity` tegenover `EVT` EN `Event description`.
+- **F · Engelse placeholders op een Nederlandse pagina.** `Select...` staat er
+  nog 4× (`ACT xiba4gka`, `l9f37oxb`, `ajotnz1f`; `EVT 2hitlrxa`, `ht4toe4o`) en
+  `Search...` 1× (`EVT qtnlg7nd`), terwijl de categorie-dropdown op `ACT` wél
+  "Selecteer..." / "Zoek..." zegt. Mechanisch werk; Claude kan dit oppakken.
+- ⚠️ **Drie woorden voor hetzelfde ding op `EVT`.** De intro zegt "van je
+  **onderneming**", de kop en de dropdown zeggen "**horecagelegenheid**", de
+  hulpregel zegt "de **zaak** waar het evenement plaatsvindt". Eén woord kiezen
+  is een besluit voor Bob, geen opruimklus.
 
 
 ### 121 · 15 verweesde mappen in `lib/` · Eigenaar: Bob (Claude verwijdert niets)
 ### 121 · 15 verweesde mappen in `lib/` · Eigenaar: Bob (Claude verwijdert niets)