kort/kort7/ARBEJDSPLAN.md

95 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Arbejdsplan for kort7
## Mål
Bygge en løsning med to samtidige kortvisninger over samme positionsdata, hvor hvert kort repræsenterer sit eget perspektiv på usikkerhed.
## Principper
- Samme køretøjspositioner og tidslinje i begge kort
- Hvert kort har sit eget usikkerhedssæt
- Zoom og pan skal kunne ske uafhængigt i hvert kort
- Visning skal være viewport-drevet, ikke bundet til et bestemt geografisk udsnit
- UI'et skal beskytte læsbarheden, også ved meget store usikkerheder
- Demoen skal køres via lokal webserver, ikke `file://`, fordi browser-adfærden ellers bliver upålidelig
## Funktionel plan
### 1. Datamodel
- Udvide `data.js`, så hver observation har:
- fælles position, retning, hastighed, timestamp
- `uncertaintyA`
- `uncertaintyB`
- Sikre at begge usikkerheder hører til samme observation i streamen
### 2. Layout
- Opdatere `kort7.html` til to separate kortcontainere
- Give hvert kort sin egen HUD/indikatorzone for køretøjer uden for viewport
- Beholde fælles styring til play/pause/reset
### 3. Rendering-arkitektur
- Omskrive `app.js`, så rendering sker per map-instans i stedet for globalt
- Lade begge kort abonnere på samme simulerede tid og samme positionsstream
- Lade hvert kort bruge sit eget usikkerhedsfelt
### 4. Viewport-logik pr. kort
For hvert køretøj og for hvert kort skal systemet afgøre:
- **inside**: køretøjet er inden for viewporten
- **possible**: køretøjet er uden for viewporten, men usikkerheden overlapper viewporten
- **outside**: køretøjet og dets usikkerhed er irrelevante for viewporten
Denne vurdering skal genberegnes:
- ved hver dataopdatering
- ved zoom
- ved pan
### 5. Visuel adfærd
- **Inside:**
- vis køretøjet på kortet
- vis trail
- vis transparent usikkerhedscirkel omkring køretøjet
- **Possible:**
- skjul køretøjets normale markør på kortet
- vis en hjørneindikator i det relevante kort
- indikatoren skal vise hvilket køretøj der muligvis kan være i området
- gerne med farve, navn og retning/side i forhold til viewporten
- usikkerhed på kortet kan evt. stadig vises diskret, hvis det giver mening
- **Outside:**
- vis hverken markør eller hjørneindikator
- trail kan tones ned eller skjules
### 6. Håndtering af store usikkerheder
- Undgå at enorme usikkerheder ødelægger læsbarheden
- Klip visning naturligt til viewporten
- Brug lav opacity for store usikkerhedsflader
- Lad hjørneindikatoren være den primære forklaring, når centrum ligger uden for kortet
### 7. Sammenligning mellem perspektiver
- Et køretøj må gerne være:
- synligt på kort A
- kun en mulig tilstedeværelse på kort B
- eller omvendt
- Dette er en ønsket effekt, fordi forskellen mellem perspektiverne netop skal være tydelig
## Implementeringsrækkefølge
1. Gemme arbejdsplanen
2. Opdatere datamodellen i `data.js`
3. Splitte `kort7.html` til to kortviews
4. Refaktorere `app.js` til to renderingskontekster
5. Implementere usikkerhedscirkler per kort
6. Implementere hjørneindikatorer per kort
7. Teste zoom/pan og dynamiske overgange mellem inside/possible/outside
8. Finjustere styling og læsbarhed
## Erfaring fra implementeringen
- Flere UI-problemer viste sig at hænge sammen med, at demoen blev åbnet via `file://` i stedet for en lokal webserver.
- Zoom, pan og klik-relateret feedback opfører sig mere stabilt, når siden serveres via `http://127.0.0.1:4173/...`.
- Derfor er lokal server nu en del af den forventede runtime for demoen.
- Næste hovedskridt er stadig at gå fra ét kort til to samtidige kort med samme data og forskellige usikkerhedsperspektiver.
## Åbne designvalg
- Om hjørneindikatorer skal ligge i et fast hjørne eller langs den nærmeste kant
- Om store usikkerheder altid skal tegnes som cirkler på kortet, eller nogle gange kun repræsenteres via indikator
- Hvordan vi bedst navngiver de to perspektiver i UIet
- Om trails skal vises ens i begge kort eller tones forskelligt
## Kort version
Samme data. To kort. To forskellige usikkerhedsperspektiver. Dynamisk viewport-logik. Hjørneindikatorer for mulige off-map køretøjer.