❤️📅 Favorites V2 Explorer

UdstillerGuide Offline-First
❤️ Favoritter vs 📅 Mit Program
Aspekt ❤️ Favoritter 📅 Mit Program
Formål "Jeg vil gerne besøge denne aktivitet" "Jeg vil deltage på dette specifikke tidspunkt"
Target CPT ug_modules tidspunkt
UI Component HeartButton.ts CalendarButton.ts
Service FavoritesService.ts ProgramService.ts
State myFavorites: Set<number> myProgram: Set<number>
Dexie Tabel favorites + favoriteLog program + programLog
UI Pattern Simpel toggle (on/off) Dropdown med flere tidspunkter
Ekstra Feature getConflicts() - overlap detection
Ikon ♡ → ❤️ 📅+ → ✅📅
🖥️
UI Components
Web Awesome + Custom Components
FavoritesUI.ts
Hovedcontainer, render loop
GlobalTabs.ts
Tab: Favoritter | Program
HeartButton.ts
❤️ Toggle med event delegation
CalendarButton.ts
📅 Dropdown med tidspunkter
ListView.ts
Vertikal liste af udstillere
ProgramView.ts
Tidslinje grupperet efter dag
📊
State Manager
Pub/Sub pattern med requestAnimationFrame batching
StateManager.ts
Central state, listeners, persistence
myFavorites
Set<number> - module IDs
myProgram
Set<number> - tidspunkt IDs
activeTab
"favorites" | "program"
State Preview
⚙️
Services
Business logic og sync
FavoritesService.ts
toggle(), get(), notifyListeners()
ProgramService.ts
toggle(), getConflicts()
SyncManager.ts
Batch sync for begge systemer
UserService.ts
UUID, device tracking
❤️ Favorit Flow
1 Klik HeartButton
2 FavoritesService.toggle(moduleId)
3 db.favorites.put()
4 updateMyFavorites()
📅 Program Flow
1 Klik CalendarButton
2 ProgramService.toggle(tidspunktId)
3 db.program.put()
4 updateMyProgram()
💾
Database (Dexie/IndexedDB)
Offline-first lokal storage
❤️ favorites
odba userId_postId
postId (ug_modules ID)
isFavorite, synced
❤️ favoriteLog
++id auto
postId, loggedAt
deviceId, synced
📅 program
odba userId_tidspunktId
tidspunktId (tidspunkt ID)
isInProgram, synced
📅 programLog
++id auto
tidspunktId, loggedAt
deviceId, synced
syncQueue
++id
action: favorite | add_program
payload, retries
user / device
userId (UUID)
friendToken
deviceId

🖥️ Faktisk UI Implementering

Live data fra program.bogforum.dk (Bogforum 2025)

ListView.tsExhibitorCard.ts + HeartButton.ts (ingen CalendarButton - udstillere har ikke tidspunkter)
Bogforum 2025 • 156 udstillere

Gyldendal

Danmarks største forlag med skønlitteratur, fagbøger og børnebøger

📍 Hal B • Stand 3-041 🏷️ Forlag

Politikens Forlag

Synkroniseret

Kvalitetslitteratur, kogebøger og livsstil fra Politikens hus

📍 Hal B • Stand 3-055 🏷️ Forlag
❤️ Fra dine favoritter

Vild med Broderi

124 broderikunstnere har skabt 174 unikke værker der fortolker H.C. Andersens eventyr

📍 Hal C • Stand 1-063A 🏷️ Kunst & Håndværk

Casper Richter – Tegner og Illustrator

Tegneserie- og illustratorkunstner specialiseret i fantasy og sci-fi

📍 Hal E • Artist Alley N-020E 🏷️ Tegneserier
ListView.tsAuthorCard.ts + HeartButton.ts (forfattere er en separat CPT: forfatter)
Bogforum 2025 • 243 forfattere

Sara Blædel

Synkroniseret

Krimiforfatteren bag Louise Rick-serien, aktuelt med 'ILKA - Jagten på Anita'

🏷️ Krimi 📅 1 event
❤️ Fra dine favoritter

Gunvor Maria Juul

Madhistoriker, forfatter til 'Middag med H.C. Andersen'

🏷️ Fagbøger 📅 1 event

Merete Pryds Helle

Forfatter og dramatiker, kendt for 'Vandpest' og 'Folkets skønhed'

🏷️ Skønlitteratur 📅 2 events

Maren Uthaug

Forfatter til bl.a. 'Originalen' og 'Den første satisfaktionsklubben'

🏷️ Skønlitteratur 📅 1 event
ListView.tsExhibitorCard.ts + HeartButton.ts + CalendarButton.ts (aktiviteter HAR tidspunkter)
Bogforum 2025 • 89 programpunkter

Forfattersignering med Sara Blædel

Synkroniseret

Signering med Sara Blædel, aktuelt med krimien 'ILKA - Jagten på Anita'

📍 Hal C • Stand 4-002 🏷️ Krimi 📅 Lørdag
❤️ Fra dine favoritter

Møde forfatteren Gunvor Maria Juul

Venter sync

Madhistoriker præsenterer 'Middag med H.C. Andersen' - om eventyrdigterens spisevaner

📍 Hal C • Stand 2-006 🏷️ Fagbøger 📅 Søndag

Virkelighedens vikinger

Peter Herning fortæller og læser op fra 'Den anden konge' om vikingetidens ledere

📍 Hal C • Stand 2-064 🏷️ Historie 📅 Lør-Søn

Signering – Lukas Birch

Signering af 'Revyens Røverhistorier' (guldudgave) + særlig boksæt med spillekort

📍 Hal C • Stand 2-016 🏷️ Biografi 📅 Lørdag
ProgramView.ts → Dag-grupperet visning af tilføjede programpunkter med conflict detection
📅

Dit program er tomt

Gå til Program og tilføj aktiviteter ved at klikke på 📅-ikonet

🔍 Live State (simuleret)
myFavorites: Set([])
myProgram: Set([])
conflicts: []
pendingSync: 0