No description
Find a file
Janus C. H. Knudsen a0344c6143 Improves drag event handling and scrolling
Refactors drag and drop event handling for smoother updates.

Tracks the current mouse position during drag operations to improve the accuracy of position updates.

Adjusts edge scrolling behavior.
2025-10-12 23:17:22 +02:00
.claude Refactors calendar architecture for month view 2025-08-20 19:42:13 +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
.workbench Improves event drag and drop 2025-10-08 21:50:41 +02:00
docs cleanup 2025-10-06 21:39:57 +02:00
scenarios Improves event layout and stacking logic 2025-10-06 21:16:29 +02:00
src Improves drag event handling and scrolling 2025-10-12 23:17:22 +02:00
test cleanup 2025-10-06 21:39:57 +02:00
wwwroot Improves calendar header spacing. 2025-10-10 00:06:31 +02:00
.gitignore Refactors project structure and event rendering 2025-09-09 17:15:06 +02:00
build.js Removes excessive logging statements 2025-08-31 22:39:09 +02:00
Calendar Plantempus.sln Improves grid layout and navigation 2025-07-25 00:24:15 +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 Removes excessive logging statements 2025-08-31 22:39:09 +02:00
calendar-grid-manager.js Renaming part 1 2025-08-07 00:15:44 +02:00
calendar-poc-single-file.html Renaming part 1 2025-08-07 00:15:44 +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
CLAUDE.md Refactors project structure and event rendering 2025-09-09 17:15:06 +02:00
COLUMN_ENTER_FEATURE_SUMMARY.md Enables all-day event to timed event conversion 2025-10-10 19:37:10 +02:00
complexity-output.json Improves event layout and stacking logic 2025-10-06 21:16:29 +02:00
CYCLOMATIC_COMPLEXITY_ANALYSIS.md Allows dynamic drag clone replacement 2025-10-04 23:10:09 +02:00
month-view-design.html Removes excessive logging statements 2025-08-31 22:39:09 +02:00
month-view-expanded.html Adds month view design and styling 2025-08-21 22:09:15 +02:00
package-lock.json Introduces DateService for time zone handling 2025-10-03 16:47:42 +02:00
package.json Introduces DateService for time zone handling 2025-10-03 16:47:42 +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
stacking-visualization-new.html Improves event layout and stacking logic 2025-10-06 21:16:29 +02:00
stacking-visualization.html Improves event layout and stacking logic 2025-10-06 21:16:29 +02:00
STACKING_CONCEPT.md Implements advanced event stacking and grid layout 2025-10-05 23:54:50 +02:00
tsconfig.json Improves all-day event rendering and animation 2025-09-01 23:37:47 +02:00
vitest.config.ts Improves all-day event layout calculation 2025-09-25 23:38:17 +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]