Loading …
This page is only for Winetastr administrators.
Maps
Alle sitets kort samlet: hvordan de ser ud, hvilke filer der tegner dem, og hvor de bruges – og reglen for, hvad en vins kort viser (WIN-293). Kortene her tegnes af den rigtige kode med eksempeldata.
1. Korttyper i dag
Fem slags kort, tegnet af fire filer. Alle detaljerede kort og oversigtskort bruger samme ramme (.map-box), zoom (mapZoom()) og kreditlinje.
a) Det detaljerede regionskort
drawMap() i src/lib/region-map.ts · data: public/maps/<region>.json (scripts/build-maps.py) · niveauer: levelOf(), markings() og within i kortets JSON (scripts/map-hierarchy.py) · zoom: mapZoom() i src/lib/ui/map-zoom.ts
Hele regionen i en gammel atlas-stil, med grænser mellem alle områder, i tre toner (WIN-293): vinenes laveste kendte områder stærkest, med et nummer (antal vine) og navn; niveauerne imellem lysere; resten af regionen lys. Er regionen selv det laveste kendte niveau, er hele regionen stærk, og underområderne navngives. En appellation, kortet ikke kan farve ind, får en nål med navnet. Udsnittet er det samme på telefon og stor skærm.
Bruges
src/pages/tasting/index.astro→showOrigins()isrc/lib/tasting-origins.ts: smagningens kort "Hvor vinene kommer fra" (antal, numre, navne, producentnåle), se e)src/lib/wine-map.tswineMap(): én vins kort, uden numre (badges: false), se c)src/lib/ui/map-background.ts: de svage baggrundskort (mode: 'background'), se d)src/pages/superadmin/dev/components.astro: komponent 23
b) Oversigtskortet
drawOverview() i src/lib/overview-map.ts · data: public/maps/world.json, europe.json, countries.json (scripts/build-overview.py) · detaljefliser: loadDetail() og public/maps/tiles/ (scripts/build-detail-tiles.py) · placeOf() finder stedet
Natural Earth-land og -grænser, skåret til vinenes lande. Europa, når alle steder ligger i Europa, ellers verden. En vin placeres ved producenten, appellationens punkt, et sted Cloudflare AI har fundet, regionens midte eller landets midte – i den rækkefølge. Mode full har nåle med tal og navne; inset er det lille kort uden navne. Zoomet tæt ind (én vin) bruges de detaljerede fliser.
Bruges
src/pages/home.astro→showMap()isrc/lib/guest-home.ts: gæstens forside, "Hvor vinene kommer fra" (alle vine i vinbogen, nummererede nåle)src/lib/tasting-origins.tsdrawOverviewTab(): en fane (eller smagningens eneste region) uden detaljeret kortsrc/lib/wine-map.tswineMap(): én vins kort uden for de detaljerede regioner (med detaljefliser)
c) Én vins kort
wineMap() i src/lib/wine-map.ts · showMapCredit() · teksten under kortet i vinformularen: wineMap.<how> i src/i18n
Vælger mellem a) og b): er vinens region en af de ti med detaljeret kort, bruges det (området fyldt og navngivet, eller hele regionen svagt); ellers oversigtskortet med én nål. Svaret har også how – hvordan vinen blev placeret – som vinformularen skriver under kortet.
Bruges
src/pages/tasting/wine.astroshowMiniMap(): gæstens side for én vinsrc/lib/admin-wine-page.ts: værtens side for én vin, /admin/wines/<id>/src/lib/admin-wines.tsshowOriginMap(): vinformularen (kortet følger med, mens oprindelsen skrives)
d) De svage baggrundskort
src/lib/ui/map-background.ts: fillMapBackgrounds(), winesBackground(), pageBackground() · MapBackground.astro · .hero-bg i components.css · alle tegner drawMap(…, { mode: 'background' })
Detaljerede kort uden hav, land og navne, i sidens farve, bag en overskrift eller et kort. De fire varianter nedenfor er tegnet som på siderne; denne side har også selv et i øverste højre hjørne.
Bruges
src/layouts/Base.astropageBackground(): hver side et fast regionskort øverst til højre, valgt ud fra adressen – undtagen hvor siden har sit egetsrc/pages/signup.astro(og /superadmin/dev/components/) viaMapBackground.astro+fillMapBackgrounds(): Bourgogne til venstresrc/pages/tasting/index.astro#hero-map: bag smagningens titel, med vinenes områder fyldt (frashowOrigins())src/pages/home.astro(gæst) ogsrc/pages/admin/index.astro(vært)#next-mapviawinesBackground(): bag kortet med næste smagning, i hjørnet
e) Smagningens oprindelse
showOrigins(), regionTabs() i src/lib/tasting-origins.ts · groupWines(), numberRanges() i region-map.ts · tabBar() i src/lib/ui/tabs.ts
WIN-256: én fane pr. værdi i vinenes felt region (ikke underregion), med regionens navn og antal vine, i rækkefølgen af hver regions første vin. Med én region er der ingen faner. Hver fane viser regionens detaljerede kort med antal og navne, og forklaringen har én linje pr. område og "Hele <region>". En region uden detaljeret kort får oversigtskortet med en nål pr. sted; kan den slet ikke placeres, står dens vine som en liste. Blinde vine, der ikke er afsløret, og vine uden region er ikke med – heller ikke i antal og rækkefølge.
f) Superadmin: kort
src/pages/superadmin/maps.astro · admin_map_demand() · appellation_guesses · DETAILED_MAPS og mapIdFor() i region-map.ts
Tegner ingen kort. En tabel over de regioner vinene kommer fra, med om der er et detaljeret kort (de ti i DETAILED_MAPS), og hvor mange kommende smagninger der mangler et – til at vælge det næste kort. Under den: stederne Cloudflare AI har fundet for appellationer, der ikke er på listen, med en skraldespand til et forkert sted.
g) Kreditlinjen
setMapCredit() og showMapCredit() i src/lib/wine-map.ts · .map-credit i components.css · map.source i src/i18n
Én linje lige under kortet til højre: kortets kilder (sources i kortets JSON, eller "Natural Earth" for oversigtskortet) og "© OpenStreetMap", når en producentnål kom fra adressesøgningen. Den står under alle kortene på denne side.
2. De detaljerede kort
De ti kort i public/maps/, hvert med alle områder tegnet og navngivet. Forholdet mellem områderne er målt her i browseren (hvert område tegnes på et lille lærred, og pixels tælles): "ligger i" betyder mindst 90 % inde i et andet område.
Kortene blander niveauer. Douros, Riojas og Mosels hovedområder er underområder, der ligger side om side. Piemontes, Roussillons, Bourgognes og Champagnes er appellationer og landsbyer, der overlapper eller ligger inden i hinanden – Rivesaltes dækker for eksempel det meste af Roussillon, og Langhe det meste af Barolo og Barbaresco. Siden WIN-293 læser koden whole (appellationer, der dækker hele regionen) og within (de områder, et område ligger i – målt af scripts/map-hierarchy.py med samme 90 %-regel som tabellerne, uden områder der dækker halvdelen af kortet eller mere).
3. Reglen (WIN-293)
Besluttet af Morten i WIN-258: kortet viser hele vinens region (feltet region) med grænser mellem områderne. Vinens laveste kendte område er stærkest, niveauerne mellem regionen og det er lysere, og resten af regionen er lys. Niveauerne imellem findes uden noget nyt fra værten: de områder på kortet, området ligger i (within), og de andre områder i samme underregion på appellationslisten (Pauillac → Médoc, Gevrey-Chambertin → Côte de Nuits). Er et område laveste for én vin og imellem for en anden, er det stærkest. Kortene nedenfor er smagningens kort, tegnet af showOrigins() som på smagningens side – testcasene i WIN-293.
4. Eksempler pr. land
Eksempelvine fra hvert land i appellationslisten og oversigtskortet, med hvert tilfælde koden håndterer i dag. Kortet er tegnet af wineMap() præcis som på vinens side; linjen under kortet siger, hvilke data der afgjorde det. Vinene er almindelige rækker øverst i sidens script.
5. Åbne spørgsmål
Morten beslutter (det første er afgjort):
- Hvad er "vinregionen" for hver vin? Besluttet i WIN-258 og bygget i WIN-293: hele regionen (feltet region), laveste kendte område stærkest, niveauerne imellem lysere – se afsnit 3.
- Kommuner og landsbyer. Barolo (11 comuni), Bourgogne og Champagne har brug for kommune- eller landsbygrænser for at vise "hele Barolo, Monforte d'Alba mørk". Data skal hentes og bygges ind i scripts/build-maps.py.