No description
Find a file
Janus Knudsen 5a686da7f5 Improves calendar event rendering and data
Updates mock event data to reflect a more recent week and includes events spanning early/late hours.

Enhances event rendering by adjusting the top and height styles for better visual appearance.

Refactors CSS to improve grid line display and event hover effects, and moves hour marker styles to a more appropriate CSS file.

Provides default fallback values for time boundaries using CSS variables.
2025-08-03 21:23:24 +02:00
.claude Updates mock event data and adds logging 2025-08-02 00:28:45 +02:00
.roo Initial commit: Calendar Plantempus project setup with TypeScript, ASP.NET Core, and event-driven architecture 2025-07-24 22:17:38 +02:00
src Improves calendar event rendering and data 2025-08-03 21:23:24 +02:00
wwwroot Improves calendar event rendering and data 2025-08-03 21:23:24 +02:00
.gitignore Initial commit: Calendar Plantempus project setup with TypeScript, ASP.NET Core, and event-driven architecture 2025-07-24 22:17:38 +02:00
build.js Initial commit: Calendar Plantempus project setup with TypeScript, ASP.NET Core, and event-driven architecture 2025-07-24 22:17:38 +02:00
Calendar Plantempus.sln Improves grid layout and navigation 2025-07-25 00:24:15 +02:00
calendar-complete-specification.md Initial commit: Calendar Plantempus project setup with TypeScript, ASP.NET Core, and event-driven architecture 2025-07-24 22:17:38 +02:00
calendar-config.js Initial commit: Calendar Plantempus project setup with TypeScript, ASP.NET Core, and event-driven architecture 2025-07-24 22:17:38 +02:00
calendar-data-manager.js Initial commit: Calendar Plantempus project setup with TypeScript, ASP.NET Core, and event-driven architecture 2025-07-24 22:17:38 +02:00
calendar-date-utils.js Initial commit: Calendar Plantempus project setup with TypeScript, ASP.NET Core, and event-driven architecture 2025-07-24 22:17:38 +02:00
calendar-event-types.js Initial commit: Calendar Plantempus project setup with TypeScript, ASP.NET Core, and event-driven architecture 2025-07-24 22:17:38 +02:00
calendar-eventbus.js Initial commit: Calendar Plantempus project setup with TypeScript, ASP.NET Core, and event-driven architecture 2025-07-24 22:17:38 +02:00
calendar-grid-manager.js Initial commit: Calendar Plantempus project setup with TypeScript, ASP.NET Core, and event-driven architecture 2025-07-24 22:17:38 +02:00
calendar-poc-single-file.html Initial commit: Calendar Plantempus project setup with TypeScript, ASP.NET Core, and event-driven architecture 2025-07-24 22:17:38 +02:00
CalendarServer.csproj Initial commit: Calendar Plantempus project setup with TypeScript, ASP.NET Core, and event-driven architecture 2025-07-24 22:17:38 +02:00
package-lock.json Initial commit: Calendar Plantempus project setup with TypeScript, ASP.NET Core, and event-driven architecture 2025-07-24 22:17:38 +02:00
package.json Initial commit: Calendar Plantempus project setup with TypeScript, ASP.NET Core, and event-driven architecture 2025-07-24 22:17:38 +02:00
Program.cs Initial commit: Calendar Plantempus project setup with TypeScript, ASP.NET Core, and event-driven architecture 2025-07-24 22:17:38 +02:00
README.md Initial commit: Calendar Plantempus project setup with TypeScript, ASP.NET Core, and event-driven architecture 2025-07-24 22:17:38 +02:00
tsconfig.json Initial commit: Calendar Plantempus project setup with TypeScript, ASP.NET Core, and event-driven architecture 2025-07-24 22:17:38 +02:00

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 properties
  • calendar-components-css.css - UI komponenter og controls
  • calendar-events-css.css - Event styling og farver
  • calendar-layout-css.css - Layout struktur og grid
  • calendar-popup-css.css - Popup og modal styling
  • calendar.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

  1. Klon repository
  2. Installer dependencies: npm install
  3. Build TypeScript: npm run build
  4. Start server: dotnet run
  5. Å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:

  1. Følg den eksisterende manager-baserede struktur
  2. Brug event-drevet kommunikation mellem komponenter
  3. Undgå global state - hold state i relevante managers
  4. Skriv semantisk HTML med custom tags
  5. Brug modulær CSS struktur

Licens

[Specificer licens her]