# Korrigeret Analyse: Day Event Drag til Header og Tilbage ## Korrekt Flow Design ### Elementer i Spil 1. **Original Event**: Skal forblive i DOM uændret indtil drag:end 2. **Clone Event**: Det visuelle element der dragges rundt 3. **All-Day Event**: Midlertidig repræsentation i header ## Nuværende Problem ### AllDayManager.handleConvertToAllDay() (linje 274) ```typescript // PROBLEM: Fjerner original for tidligt! originalElement.remove(); // ❌ FORKERT ``` Original element fjernes når man hover over header, men det skal først fjernes ved faktisk drop. ### Korrekt Flow ```mermaid sequenceDiagram participant User participant Original as Original Event participant Clone as Clone Event participant AllDay as All-Day Event Note over Original: Start: Original synlig User->>Clone: Drag start Note over Clone: Clone oprettes og vises Note over Original: Original bliver semi-transparent User->>AllDay: Enter header Note over Clone: Clone skjules (display:none) Note over AllDay: All-day event oprettes Note over Original: Original forbliver (semi-transparent) User->>Clone: Leave header (tilbage til grid) Note over AllDay: All-day event fjernes Note over Clone: Clone vises igen Note over Original: Original stadig der User->>Original: Drop Note over Original: NU fjernes original Note over Clone: Clone bliver til ny position ``` ## Nødvendige Ændringer ### 1. AllDayManager.handleConvertToAllDay() (linje 232-285) ```typescript // FØR (linje 274): originalElement.remove(); // ❌ // EFTER: // originalElement.remove(); // Kommenteret ud - skal IKKE fjernes her // Original forbliver i DOM med opacity 0.3 fra drag start ``` ### 2. AllDayManager.handleConvertFromAllDay() (linje 290-311) ```typescript // Nuværende kode er faktisk korrekt - den: // 1. Fjerner all-day event // 2. Viser clone igen // Original er stadig der (blev aldrig fjernet) ``` ### 3. EventRenderer - handleDragEnd() ```typescript // Her skal original FAKTISK fjernes // Efter successful drop: if (this.originalEvent) { this.originalEvent.remove(); // ✅ Korrekt tidspunkt } ``` ## Problem Opsummering **Hovedproblem**: `originalElement.remove()` på linje 274 i AllDayManager sker for tidligt. **Løsning**: 1. Fjern/kommenter linje 274 i AllDayManager.handleConvertToAllDay() 2. Original element skal kun fjernes i EventRenderer ved faktisk drop (drag:end) 3. Clone håndterer al visuel feedback under drag ## Test Scenarios 1. **Drag → Header → Grid → Drop** - Original forbliver hele tiden - Clone skjules/vises korrekt - Original fjernes kun ved drop 2. **Drag → Header → Drop i Header** - Original forbliver indtil drop - All-day event bliver permanent - Original fjernes ved drop 3. **Drag → Header → ESC** - Original forbliver - Drag cancelled, alt tilbage til start ## Affected Code ### AllDayManager.ts - **Linje 274**: Skal fjernes/kommenteres - Original element må IKKE fjernes her ### EventRenderer.ts - **handleDragEnd()**: Skal sikre original fjernes her - Dette er det ENESTE sted original må fjernes ### DragDropManager.ts - Koden ser faktisk korrekt ud - Holder styr på både original og clone