# Workweek Preset Click Sequence Diagram
Dette diagram viser hvad der sker når brugeren klikker på en workweek preset knap (f.eks. "Mon-Fri", "Mon-Thu", etc.)
```mermaid
sequenceDiagram
actor User
participant HTML as swp-preset-button
participant VM as ViewManager
participant Config as Configuration
participant CM as ConfigManager
participant EventBus
participant GM as GridManager
participant GR as GridRenderer
participant HM as HeaderManager
participant HR as HeaderRenderer
participant DOM
User->>HTML: Click på preset button
(data-workweek="compressed")
HTML->>VM: click event
Note over VM: setupButtonGroup handler
VM->>VM: getAttribute('data-workweek')
→ "compressed"
VM->>VM: changeWorkweek("compressed")
VM->>Config: setWorkWeek("compressed")
Note over Config: Opdaterer currentWorkWeek
og workweek settings
VM->>CM: updateCSSProperties(config)
Note over CM: Opdaterer CSS custom properties
CM->>DOM: setProperty('--grid-columns', '4')
CM->>DOM: setProperty('--hour-height', '80px')
CM->>DOM: setProperty('--day-start-hour', '6')
CM->>DOM: setProperty('--work-start-hour', '8')
Note over DOM: CSS grid layout opdateres
VM->>VM: updateAllButtons()
VM->>DOM: Update data-active attributter
på alle preset buttons
Note over DOM: Compressed knap får
data-active="true"
Andre knapper mister active
VM->>Config: getWorkWeekSettings()
Config-->>VM: { id: 'compressed',
workDays: [1,2,3,4],
totalDays: 4 }
VM->>EventBus: emit(WORKWEEK_CHANGED, payload)
Note over EventBus: Event: 'workweek:changed'
Payload: { workWeekId, settings }
EventBus->>GM: WORKWEEK_CHANGED event
Note over GM: Listener setup i subscribeToEvents()
GM->>GM: render()
GM->>GR: renderGrid(container, currentDate)
alt First render (empty grid)
GR->>GR: createCompleteGridStructure()
GR->>DOM: Create time axis
GR->>DOM: Create grid container
GR->>DOM: Create 4 columns (Mon-Thu)
else Update existing grid
GR->>GR: updateGridContent()
GR->>DOM: Update existing columns
end
GM->>EventBus: emit(GRID_RENDERED)
EventBus->>HM: WORKWEEK_CHANGED event
Note over HM: Via 'workweek:header-update'
from CalendarManager
HM->>HM: updateHeader(currentDate)
HM->>HR: render(context)
HR->>DOM: Update header med 4 dage
(Mon, Tue, Wed, Thu)
Note over DOM: Grid viser nu kun
Man-Tor (4 dage)
med opdaterede headers
DOM-->>User: Visuelt feedback:
4-dages arbejdsuge