No description
Refactors all-day event layout calculation and rendering for improved accuracy and performance. Improves drag-and-drop behavior for all-day events, ensuring correct event placement and column detection. Addresses issues with event overflow display and provides a more responsive user experience. |
||
|---|---|---|
| .claude | ||
| .roo | ||
| docs | ||
| src | ||
| test | ||
| wwwroot | ||
| .gitignore | ||
| build.js | ||
| Calendar Plantempus.sln | ||
| calendar-config.js | ||
| calendar-data-manager.js | ||
| calendar-date-utils.js | ||
| calendar-event-types.js | ||
| calendar-eventbus.js | ||
| calendar-grid-manager.js | ||
| calendar-poc-single-file.html | ||
| CalendarServer.csproj | ||
| CLAUDE.md | ||
| month-view-design.html | ||
| month-view-expanded.html | ||
| package-lock.json | ||
| package.json | ||
| Program.cs | ||
| README.md | ||
| tsconfig.json | ||
| vitest.config.ts | ||
Calendar Plantempus
En moderne, event-drevet kalenderapplikation bygget med TypeScript og ASP.NET Core.
Projekt Information
- Projekt ID: 8ecf2aa3-a2e4-4cc3-aa18-1c4352f00ff1
- Repository: Calendar (afb8a8ec-cdbc-4c55-8631-fd0285974485)
- Status: Under aktiv udvikling
Teknisk Arkitektur
- Frontend: TypeScript med esbuild som bundler
- Arkitektur: Event-drevet med CustomEvents (
document.dispatchEvent/addEventListener) - Backend: ASP.NET Core Kestrel server
- Styling: Modulær CSS struktur uden eksterne frameworks
- Bundling: esbuild for TypeScript transpilering og bundling
Arkitekturelle Principper
- Ingen global state - Alt state håndteres i de relevante managers
- Event-drevet kommunikation - Alle komponenter kommunikerer via DOM CustomEvents
- Modulær opbygning - Hver manager har et specifikt ansvarsområde
- Ren DOM manipulation - Ingen eksterne JavaScript frameworks (React, Vue, etc.)
- Custom HTML tags - Semantisk markup med custom elements
Implementerede Komponenter
Projektet følger en manager-baseret arkitektur, hvor hver manager er ansvarlig for et specifikt aspekt af kalenderen:
1. CalendarManager
Hovedkoordinator for alle managers
- Initialiserer og koordinerer alle andre managers
- Håndterer global konfiguration
- Administrerer kalender lifecycle
2. ViewManager
Håndterer kalendervisninger
- Skifter mellem dag/uge/måned visninger
- Opdaterer UI baseret på den valgte visning
- Renderer kalender grid struktur
3. NavigationManager
Håndterer navigation
- Implementerer prev/next/today funktionalitet
- Håndterer dato navigation
- Opdaterer week info (uge nummer, dato range)
4. EventManager
Administrerer events
- Håndterer event lifecycle og CRUD operationer
- Loader og synkroniserer event data
- Administrerer event selection og state
5. EventRenderer
Renderer events i DOM
- Positionerer events korrekt i kalender grid
- Håndterer event styling baseret på type
- Implementerer visual feedback for event interactions
6. DataManager
Håndterer data operationer
- Mock data loading for udvikling
- Event data transformation
- Data persistence interface
7. GridManager
Administrerer kalender grid
- Opretter og vedligeholder grid struktur
- Håndterer time slots og positioning
- Responsive grid layout
CSS Struktur
Projektet har en modulær CSS struktur for bedre organisering:
calendar-base-css.css- Grundlæggende styling og CSS custom propertiescalendar-components-css.css- UI komponenter og controlscalendar-events-css.css- Event styling og farvercalendar-layout-css.css- Layout struktur og gridcalendar-popup-css.css- Popup og modal stylingcalendar.css- Samlet styling fra POC (bruges i øjeblikket)
Kommende Funktionalitet
Baseret på projektstrukturen planlægges følgende komponenter:
Utilities
- PositionUtils - Konvertering mellem pixels og tidspunkter
- SnapUtils - Snap-to-interval funktionalitet
- DOMUtils - DOM manipulation utilities
Interaction Managers
- DragManager - Drag & drop funktionalitet for events
- ResizeManager - Resize funktionalitet for events
- PopupManager - Håndtering af event detaljer og popups
Feature Managers
- SearchManager - Søgefunktionalitet i events
- TimeManager - Current time indicator
- LoadingManager - Loading states og error handling
Avancerede Features
- Collision detection system for overlappende events
- Animation system for smooth transitions
- Event creation funktionalitet (double-click, drag-to-create)
- Multi-day event support
- Touch support for mobile enheder
- Keyboard navigation
Projekt Struktur
Calendar Plantempus/
├── src/ # TypeScript source files
│ ├── constants/ # Konstanter og enums
│ ├── core/ # Core funktionalitet
│ ├── managers/ # Manager klasser
│ ├── types/ # TypeScript type definitioner
│ └── utils/ # Utility funktioner
├── wwwroot/ # Static web assets
│ ├── css/ # Stylesheets
│ ├── js/ # Compiled JavaScript
│ └── index.html # Main HTML file
├── build.js # esbuild configuration
├── tsconfig.json # TypeScript configuration
├── package.json # Node.js dependencies
└── Program.cs # ASP.NET Core server
Kom i Gang
Forudsætninger
- .NET 8.0 SDK
- Node.js (for esbuild)
Installation
- Klon repository
- Installer dependencies:
npm install - Build TypeScript:
npm run build - Start server:
dotnet run - Åbn browser på
http://localhost:8000
Development
- Build TypeScript:
npm run build - Watch mode:
npm run watch(hvis konfigureret) - Start server:
dotnet run
Event System
Projektet bruger et event-drevet system hvor alle komponenter kommunikerer via DOM CustomEvents:
// Dispatch event
document.dispatchEvent(new CustomEvent('calendar:view-changed', {
detail: { view: 'week', date: new Date() }
}));
// Listen for event
document.addEventListener('calendar:view-changed', (event) => {
// Handle view change
});
Bidrag
Dette projekt følger clean code principper og modulær arkitektur. Når du bidrager:
- Følg den eksisterende manager-baserede struktur
- Brug event-drevet kommunikation mellem komponenter
- Undgå global state - hold state i relevante managers
- Skriv semantisk HTML med custom tags
- Brug modulær CSS struktur
Licens
[Specificer licens her]