소스 검색

TASKS.md: P1-6 bijgewerkt (9 velden guard-aanpak afgerond op evenement_horecagelegenheid_widget.dart, herbruikbaar recept + resterende scope gedocumenteerd)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
bob 1 개월 전
부모
커밋
c7ab742252
1개의 변경된 파일67개의 추가작업 그리고 73개의 파일을 삭제
  1. 67 73
      TASKS.md

+ 67 - 73
TASKS.md

@@ -609,86 +609,80 @@ leverbaar-veld per horecagelegenheid. Wacht op Bob: eerst het
 API-endpoint aan Drupal-kant configureren. Daarna tonen/verbergen op
 basis van het echte veld i.p.v. de huidige dode tap.
 
-**P1-6 · Eigenaar: Claude — bezig (sessie 2026-08-16 avond, guard-aanpak
-op `evenement_horecagelegenheid_widget.dart`'s grote cluster, zie
-architectuur-bevinding hieronder).** Letterlijke
-veldnaam i.p.v. nette placeholder bij ontbrekende data. **2026-08-05:
-audit herhaald (Claude, verse grep) —
-scope flink groter dan de eerdere 13 treffers van 2026-08-04, met name
-`evenement_horecagelegenheid_widget.dart` bleek nog niet meegenomen.**
-Patroon overal hetzelfde: `valueOrDefault<String>(<bron>, '<default>')`
-waarbij de default gelijk is aan de veld-/functienaam.
+**P1-6 · Eigenaar: Onbepaald (geen sessie "— bezig", zie architectuur-
+bevinding + voortgang hieronder).** Letterlijke veldnaam i.p.v. nette
+placeholder bij ontbrekende data. **2026-08-05: audit herhaald (Claude,
+verse grep) — scope flink groter dan de eerdere 13 treffers van
+2026-08-04, met name `evenement_horecagelegenheid_widget.dart` bleek
+nog niet meegenomen.** Patroon overal hetzelfde:
+`valueOrDefault<String>(<bron>, '<default>')` waarbij de default
+gelijk is aan de veld-/functienaam.
 
 **⚠️ Architectuur-bevinding (2026-08-16 avond, Claude, live builder):
 dit is GEEN uniforme mechanische fix — twee heel verschillende
-binding-typen, maar één is niet oplosbaar via de builder-UI.**
-- **Component-Parameter-gebonden velden (Set from Variable → "Parameter:
-  &lt;naam&gt;") hébben een bewerkbaar "Default Variable Value"-veld** —
-  dit is de simpele, betrouwbare route: klik het Value-icoontje naast
-  "Text" → typ nieuwe tekst in "Default Variable Value" → Confirm.
-  **8 velden hiermee afgerond en bevestigd via verse export
-  (2026-08-16):** `horecagelegenheidoverzicht_kaart_widget.dart`
-  titel→"Naam onbekend", adres→"Adres onbekend", plaats→"Plaats
-  onbekend"; `evenement_info_widget.dart` adres→"Adres onbekend",
-  plaats→"Plaats onbekend", entreeprijs→"Prijs onbekend",
-  entreetoelichting→"Geen toelichting", contact→"Contact onbekend".
-  Bijvangst: `entreeprijs`/`entreetoelichting` op `EvenementInfo`
-  bleken al een Visibility-conditie ("is set/non-empty") te hebben —
-  Default Value verandert daar niets zichtbaars, maar is onschadelijk.
-- **JSON-Path-gebonden velden (Set from Variable → "Evenement
-  Response"/"JSON Body" → JSON Path `$[0].veld` rechtstreeks op een
-  API-respons, geen Component Parameter ertussen) hebben GEEN
-  "Default Variable Value"-veld in deze FlutterFlow-versie** — grondig
-  gecheckt op `evenement_component_widget.dart`'s `Text-titel`
-  (`$[0].title`): het "Available Options"-dropdown biedt alleen "JSON
-  Path"/"To Data Type"/"No Further Changes", geen default-tekst-optie;
-  het bronnen-kiezer-scherm (pennetje naast "Variable") biedt alleen
-  een compleet nieuwe binding kiezen, geen aanvullend default-veld.
-  **Niet verder geprobeerd na deze grondige check (conform de
-  1-2-pogingen-regel)** — dit lijkt een echte FlutterFlow-UI-beperking,
-  geen klikprecisie-probleem. **Praktisch gevolg: de resterende
-  ~40 treffers hieronder zijn zo NIET te fixen**, tenzij via een
-  structureel andere aanpak (bv. een `ConditionalBuilder`/Visibility
-  "Is Set"-guard die de tekst helemaal verbergt i.p.v. een nettere
-  fallback-tekst toont — dat is een grotere ontwerpwijziging per veld,
-  geen 1-op-1 vervanging van deze taak. Ter overweging aan Bob.**
-- Nog niet gecheckt of `event_current_widget.dart`/
-  `horecagelegenheid_current_widget.dart`/
-  `evenement_horecagelegenheid_widget.dart` component-parameter- of
-  JSON-Path-gebonden zijn — gezien hun architectuur (eigen API-call op
-  basis van een `nid`/`establishmentID`-parameter, geen doorgegeven
-  velden) is JSON-Path-binding waarschijnlijker, dus vermoedelijk
-  hetzelfde probleem, maar niet 100% bevestigd per veld.
-
-**Resterende, nog niet geprobeerde/bevestigd-geblokkeerde regels:**
-- `evenement_component_widget.dart:221/242/317/339` — title/eventDate/adres/plaats
-  (**bevestigd JSON-Path-gebonden, zie boven — niet oplosbaar via
-  Default Value**)
-- `horecagelegenheid_current_widget.dart:377/500/747` — title/logo/content.
-  **Zie P0-7:** deze 3 velden bleken 2026-08-12 live op *elke* geteste
-  gelegenheid permanent op de placeholder te blijven staan (niet
-  incidenteel) — een betere Default-Value-tekst alleen lost dat niet
-  op. P0-7 zelf is inmiddels gefixt; bindingstype nog niet gecheckt.
-- `event_current_widget.dart:327/442` — title/date (de losse
-  `nid`-regel 418 is inmiddels vervallen: P1-9 heeft die hele
-  debug-tekstwidget verwijderd, dus dat regelnummer bestaat niet meer)
-- `evenement_horecagelegenheid_widget.dart` — **grootste blok, ~30
-  treffers**: regels 178(HorecaNaam), 418(establishmentnid),
-  445(email), 476(Logo), 499(Plaats), 533(Adres), 577/586/597
-  (Telefoon, 3x — icoon/tekst/tooltip-varianten), 642(menukaart),
-  710(entreeprijs), 743(EntreeToelichting), 818/827/843(facebook, 3x),
-  885/894/910(instagram, 3x), 952/961(twitter, 2x),
-  1016/1025/1041(Website, 3x), 1083/1092/1108(urluk, 3x),
-  1194(Openingstijden), 1222(OpeningstijdenUitzondering),
-  1310(Bezorgtijden), 1337(bezorgkosten), 1364(bestellink).
+binding-typen, elk met een eigen fix-route.**
+- **Component-Parameter-gebonden velden** (Set from Variable →
+  "Parameter: &lt;naam&gt;") hébben een bewerkbaar "Default Variable
+  Value"-veld — simpele route: Value-icoontje naast "Text" → typ
+  nieuwe tekst in "Default Variable Value" → Confirm. **8 velden
+  hiermee afgerond:** `horecagelegenheidoverzicht_kaart_widget.dart`
+  titel/adres/plaats; `evenement_info_widget.dart`
+  adres/plaats/entreeprijs/entreetoelichting/contact.
+- **JSON-Path-gebonden velden** (Set from Variable → API-respons →
+  JSON Path, geen Component Parameter ertussen) hebben GEEN "Default
+  Variable Value"-veld — de Default-Value-route werkt hier niet.
+  **Werkende alternatieve fix: Visibility → Conditional-guard**,
+  zelfde "Is Set"/"Is Set and Not Empty"-patroon als P0-8/P1-15. Route
+  (herbruikbaar recept): widget selecteren → Visibility → Conditional
+  aan → conditieveld klikken → Conditions → Single Condition → "+" bij
+  First Value → (soms 2-3x nodig door een render-glitch, First Value
+  toont dan tijdelijk weer "+" ook al staat de waarde al goed — check
+  de "Condition"-samenvatting bovenin het paneel als ground truth) →
+  Set Variable → EstablishmentInfo Response → **als "Predefined Path"
+  vastloopt (Confirm reageert niet, bekend "geneste dialoog"-patroon
+  uit CLAUDE.md): schakel over op "JSON Path" i.p.v. Predefined Path
+  en typ het pad handmatig (bv. `$[:].bezorgtijden`) — dat werkte
+  wél elke keer.** Operator: "Is Set and Not Empty" (String-type
+  velden) of "Is Set" (Image Path/Json-type velden, geen "Not Empty"
+  variant beschikbaar daar).
+  - **9 velden afgerond op `evenement_horecagelegenheid_widget.dart`
+    (2026-08-16, Claude, bevestigd via verse export + `flutter
+    analyze`: 0 errors, gecommit `4fbcb0d`):** HorecaNaam (titel),
+    email, logo, plaats, adres, entreeprijs, entreetoelichting,
+    OpeningstijdenUitzondering, bezorgtijden.
+  - **Resterend op ditzelfde bestand (~15 treffers, zelfde recept,
+    geen "— bezig" claim):** bezorgkosten (regel ~1337), bestellink
+    (~1364), Telefoon-tekst is hier al gegaurd (P0-8), maar
+    **`establishmentnid` (regel ~423, `Text(valueOrDefault<String>(
+    widget!.establishmentID, 'establishmentnid'))`) is vermoedelijk
+    geen placeholder-probleem maar een vergeten debug-widget** —
+    zelfde patroon als het P1-9-precedent (`event_current_widget.dart`'s
+    kale nid-tekst): `establishmentID` is een verplichte parameter, dus
+    dit veld staat altijd gevuld en toont daardoor gewoon permanent een
+    rauwe database-ID op het scherm. **Voorstel: widget helemaal
+    verwijderen i.p.v. een guard/placeholder toe te voegen** — eerst
+    even in de builder checken of dit een zichtbaar/bereikbaar stuk UI
+    is (kan ook een niet-gerenderde tab zijn) voordat iemand dit
+    oppakt.
+  - **Nog niet gecheckt of `evenement_component_widget.dart` (title/
+    eventDate/adres/plaats, regels 221/242/317/339) en
+    `horecagelegenheid_current_widget.dart` (title/logo/content,
+    regels 377/500/747 — zie P0-7) hetzelfde JSON-Path-patroon
+    gebruiken**, maar gezien hun architectuur (eigen API-call, geen
+    doorgegeven velden) is dat waarschijnlijk — zelfde guard-recept
+    zou moeten werken.
+  - `event_current_widget.dart:327/442` — title/date (de losse
+    `nid`-regel 418 is inmiddels vervallen: P1-9 heeft die hele
+    debug-tekstwidget al verwijderd, dat regelnummer bestaat niet meer)
 - Grensgeval, **geprobeerd en geblokkeerd (2026-08-16): geen
   Default-Value-veld gevonden op deze Custom-Function-uitkomst-binding
   (`Text = valueOrDefault(kortDatum(datum), 'def')`)** — de
   "Set from Variable"-dialoog toont hier "Custom Function: kortDatum" +
-  "Set Function Arguments", geen apart default-tekst-veld, zelfde
-  patroon als de JSON-Path-beperking hierboven maar dan voor een
-  function-call-binding. Geen wijziging aangebracht (veilig
-  geannuleerd). `p_uitgaan_slider_kaart_component_widget.dart:284`
+  "Set Function Arguments", geen apart default-tekst-veld. De
+  guard-aanpak (Visibility-conditie op de HELE Text, i.p.v. een
+  aangepaste default-tekst) is hier niet geprobeerd maar zou
+  vermoedelijk wel werken (zelfde principe: JSON Path naar de rauwe
+  `datum`-bron, operator "Is Set"). `p_uitgaan_slider_kaart_component_widget.dart:284`
   toont nog steeds `'def'` als datum ontbreekt.
 - Niet-verdachte gevallen bewust genegeerd (echte inhoudelijke
   fallback, geen technische naam): `'Evenement'`