From 8a1f1f83fab0e7e25ee4e8981ac1c7bee37c59b9 Mon Sep 17 00:00:00 2001 From: Erol Haagenrud Date: Tue, 18 Aug 2026 06:59:30 +0200 Subject: [PATCH] =?UTF-8?q?Road-ikon,=20ikon-mangel-lista=20n=C3=A5=20tom?= =?UTF-8?q?=20(ADR-084=20del=204)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Siste klassifiserte hindringstype uten eget ikon. Ren frontend-endring -- road fantes allerede som domeneverdi og ekte data, bare usynlig i diagrammet inntil nå. Co-Authored-By: Claude Sonnet 5 --- ARCHITECTURE_DECISIONS.md | 22 +++++++++++++++++++ CHANGELOG.md | 19 ++++++++++++++++ frontend/components/hole-diagram-view.tsx | 3 ++- frontend/components/hole-target-distance.tsx | 6 +++-- frontend/public/hole-diagram/hazard-road.png | Bin 0 -> 3014 bytes 5 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 frontend/public/hole-diagram/hazard-road.png diff --git a/ARCHITECTURE_DECISIONS.md b/ARCHITECTURE_DECISIONS.md index d6e4aca..aad0867 100644 --- a/ARCHITECTURE_DECISIONS.md +++ b/ARCHITECTURE_DECISIONS.md @@ -8594,6 +8594,28 @@ compose build teecup_frontend && up -d`. Rene containerlogger, `https://teecup.golf/logg-inn` 200 OK, 8/8 rader bekreftet `poi_type = 'creek'`. +### ADR-084 del 4: road-ikon, siste hull i ikon-mangel-lista (2026-08-18) + +Bruker lastet opp `road.png` (32×32) -- siste gjenstående type uten +eget ikon fra del 2/3 sine lister. Ren frontend-endring: `road` fantes +allerede som domeneverdi (migrasjon 001/067) og som ekte data (5 +enkeltpunkter på Tjøme, hull 7/8/16/17/18, alle uparet), men var +usynlig i diagrammet siden `_HAZARD_LABELS`/`_HAZARD_KIND` (hole- +target-distance.tsx) ikke inkluderte den. Lagt til med samme mønster +som de fem foregående ikonene (rock/tree/dogleg/layup/landmark) denne +økten -- ingen ny kode-vei, kun konfig+ikon. Ingen migrasjon, ingen +datareklassifisering nødvendig. + +**Verifisert:** `tsc --noEmit` rent, `vitest run` 55/55. Ingen ny +scratch-runde kjørt for selve ikon-visningen -- identisk, allerede +gjentatte ganger visuelt bekreftet kodevei denne økten (samme +`HazardIcon`/`_ICON_SRC`-mønster), vurdert som neglisjerbar risiko. + +**Rullet ut 2026-08-18** -- bruker bekreftet. `docker compose build +teecup_frontend && up -d`, ingen migrasjon. Rene containerlogger, +`https://teecup.golf/logg-inn` 200 OK. Ikon-mangel-lista er nå TOM -- +alle klassifiserte hindringstyper har eget ikon. + --- ## Utviklingsplan (rekkefølge) diff --git a/CHANGELOG.md b/CHANGELOG.md index 252bf18..8e2faa6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12213,3 +12213,22 @@ Neste steg: deretter `docker compose build teecup_frontend && up -d`. Rene containerlogger, `https://teecup.golf/logg-inn` 200 OK, 8/8 rader bekreftet `poi_type = 'creek'`. + +104. **Road-ikon, siste hull i ikon-mangel-lista (ADR-084 del 4) — + 2026-08-18.** Bruker lastet opp `road.png` (32×32) -- eneste + gjenstående klassifiserte hindringstype uten eget ikon. Ren + frontend-endring: `road` fantes allerede som domeneverdi og som + ekte data (5 enkeltpunkter på Tjøme, hull 7/8/16/17/18), men var + usynlig i diagrammet siden `_HAZARD_LABELS`/`_HAZARD_KIND` ikke + inkluderte den. Lagt til med identisk mønster som de fem + foregående ikonene denne økten -- ingen migrasjon, ingen + datareklassifisering. + + **Verifisert:** `tsc --noEmit` rent, `vitest run` 55/55. Ingen ny + scratch-visningsrunde -- identisk, gjentatte ganger allerede + bekreftet kodevei. + + **Rullet ut 2026-08-18** -- bruker bekreftet. `docker compose + build teecup_frontend && up -d`, ingen migrasjon. Rene + containerlogger, `https://teecup.golf/logg-inn` 200 OK. + Ikon-mangel-lista er nå tom. diff --git a/frontend/components/hole-diagram-view.tsx b/frontend/components/hole-diagram-view.tsx index c074e5a..e6e4d0c 100644 --- a/frontend/components/hole-diagram-view.tsx +++ b/frontend/components/hole-diagram-view.tsx @@ -12,7 +12,7 @@ import { MapPin, TriangleAlert } from "lucide-react" import { cn } from "@/lib/utils" -export type HazardKind = "sand" | "water" | "creek" | "rock" | "tree" | "dogleg" | "layup" | "landmark" | "generic" +export type HazardKind = "sand" | "water" | "creek" | "rock" | "tree" | "dogleg" | "layup" | "landmark" | "road" | "generic" export type DiagramHazard = { key: string @@ -105,6 +105,7 @@ const _ICON_SRC: Partial> = { dogleg: "/hole-diagram/hazard-dogleg.png", layup: "/hole-diagram/hazard-layup.png", landmark: "/hole-diagram/hazard-landmark.png", + road: "/hole-diagram/hazard-road.png", } function HazardIcon({ kind, size = 32 }: { kind: HazardKind; size?: number }) { diff --git a/frontend/components/hole-target-distance.tsx b/frontend/components/hole-target-distance.tsx index 6c39d82..af3badd 100644 --- a/frontend/components/hole-target-distance.tsx +++ b/frontend/components/hole-target-distance.tsx @@ -59,12 +59,13 @@ const _HAZARD_LABELS: Record = { dogleg: "Dogleg", layup: "Layup-punkt", landmark: "Landemerke", + road: "Vei", } // ADR-084: hvilket ikon en hindringstype får i diagrammet. "generic" -// (typer uten dedikert ikon -- i dag `road`) faller tilbake til lucide +// (typer uten dedikert ikon -- i dag ingen) faller tilbake til lucide // sin TriangleAlert -- se hole-diagram-view.tsx. -type HazardKind = "sand" | "water" | "creek" | "rock" | "tree" | "dogleg" | "layup" | "landmark" | "generic" +type HazardKind = "sand" | "water" | "creek" | "rock" | "tree" | "dogleg" | "layup" | "landmark" | "road" | "generic" const _HAZARD_KIND: Record = { green_bunker: "sand", fairway_bunker: "sand", @@ -75,6 +76,7 @@ const _HAZARD_KIND: Record = { dogleg: "dogleg", layup: "layup", landmark: "landmark", + road: "road", } // Grupperer rå hindringspunkter til hindrings-ENTITETER for diagrammet. diff --git a/frontend/public/hole-diagram/hazard-road.png b/frontend/public/hole-diagram/hazard-road.png new file mode 100644 index 0000000000000000000000000000000000000000..5689fdd9c0797c561883773306ed9b9de2725161 GIT binary patch literal 3014 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 IM6N<$f}{J?Y5)KL literal 0 HcmV?d00001