Commit graph

442 commits

Author SHA1 Message Date
Janus C. H. Knudsen
66dfe9f2ef Adds resource filtering and view customization
Enhances calendar view with dynamic resource selection
Enables users to filter and customize calendar views by resources
Introduces new event for view updates and dynamic rendering

Supports flexible calendar view configuration
2025-12-17 18:37:32 +01:00
Janus C. H. Knudsen
8d938c721c Refactor calendar event handling with EventBus
Migrates calendar commands from DOM events to EventBus for better decoupling
Adds support for workweek change and simplified rendering commands
Removes direction parameter from render method for cleaner implementation
2025-12-17 18:09:54 +01:00
Janus C. H. Knudsen
3710bb50c0 Refactor calendar navigation to use event bus
Decouples calendar navigation from direct DOM events
Adds new event constants for calendar navigation commands
Updates CalendarApp to handle navigation via event bus
Simplifies navigation logic and improves event-driven architecture
2025-12-16 22:51:01 +01:00
Janus C. H. Knudsen
8161b3c42a Refactors calendar application architecture
Introduces CalendarApp as a reusable core component to centralize calendar rendering and navigation logic

Separates concerns between core application logic and demo implementation
Improves modularity and extensibility of calendar system
2025-12-16 22:37:35 +01:00
Janus C. H. Knudsen
7f9d0129bf Refactors calendar view configuration management
Decouples view configuration from DemoApp logic by:
- Introducing ViewConfigService and MockViewConfigRepository
- Moving view configuration to centralized JSON data
- Simplifying DemoApp rendering process

Improves separation of concerns and makes view configurations more maintainable
2025-12-16 17:13:27 +01:00
Janus C. H. Knudsen
6a56396721 Introduces CalendarApp with centralized event-driven rendering
Refactors calendar component initialization to a single, encapsulated entry point

Simplifies host application integration by:
- Centralizing complex setup in CalendarApp
- Implementing command-driven rendering via custom events
- Providing flexible, zero-knowledge calendar component
- Maintaining existing ViewConfig contract
2025-12-16 07:35:29 +01:00
Janus C. H. Knudsen
2c1af56718 Enhances resource selector visibility and filtering
Updates resource selection to dynamically use selected resource IDs
Improves selector visibility logic to show in day and picker views
2025-12-15 23:16:14 +01:00
Janus C. H. Knudsen
ee46593a5a Adds dynamic header hiding for date groupings
Introduces hideHeader option for date grouping configurations
Enables suppressing date headers in specific views like day view
Improves calendar view flexibility by conditionally rendering headers
2025-12-15 22:53:44 +01:00
Janus C. H. Knudsen
ad2df353b5 Adds workweek settings and dynamic view configuration
Introduces settings service for managing tenant-specific calendar configurations

Enables dynamic workweek presets with configurable work days
Improves view switching with enhanced UI components
Adds flexible calendar rendering based on tenant settings

Extends DateService to support workweek date generation
2025-12-15 22:24:32 +01:00
Janus C. H. Knudsen
58cedb9fad Improves column key extraction in header drawer
Enhances column key retrieval to use consistent key format
Adds null check for filter template to prevent potential errors
Uses buildKeyFromColumn() for more robust key generation
2025-12-15 21:25:01 +01:00
Janus C. H. Knudsen
9777f463b5 Refines grid and viewport layout for scrolling
Improves CSS grid configuration to ensure proper scrolling and content display

Adds grid template columns and width constraints for better responsive behavior
Ensures consistent overflow and layout management across viewport components
2025-12-15 20:38:39 +01:00
Janus C. H. Knudsen
f20b8a47fa Syncs header drawer scroll with calendar header
Adds horizontal scrolling synchronization for header drawer
Ensures consistent horizontal scroll positioning for header components
2025-12-15 20:02:38 +01:00
Janus C. H. Knudsen
570c91527a Adds department view to calendar application
Introduces department-level grouping and rendering in the calendar view

Extends the application to support:
- Department-based resource filtering
- Dynamic department header rendering
- Mock department data infrastructure

Enables more granular organizational views
2025-12-15 18:23:08 +01:00
Janus C. H. Knudsen
d4249eecfb Adds hierarchical grouping and entity resolution support
Enhances calendar rendering with dynamic parent-child relationships between entities

Introduces EntityResolver for dot-notation references
Supports belongsTo configuration in grouping
Implements flexible filtering across hierarchical entities

Improves rendering flexibility for complex organizational structures
2025-12-15 17:10:43 +01:00
Janus C. H. Knudsen
dd647acab8 Implements FilterTemplate system for event matching
Introduces flexible key-based filtering for calendar events across different view configurations

Adds new FilterTemplate class to:
- Define event matching rules based on view configuration
- Support multi-level grouping (team/resource/date)
- Handle dynamic key generation for columns and events

Enhances view configuration with explicit id properties and derived fields
2025-12-15 00:33:27 +01:00
Janus C. H. Knudsen
c2f7564f8e Refactor column key handling and event positioning
Introduces more robust column key management across renderers and drag/resize operations

Decouples column key parsing from date extraction
Simplifies event positioning logic
Improves multi-resource view compatibility
2025-12-13 12:52:27 +01:00
Janus C. H. Knudsen
0eb3bacb41 Introduces uniform column key concept for calendar events
Refactors column identification with a new buildColumnKey method to support flexible date and resource tracking

Replaces separate dateKey and resourceId handling with a unified columnKey approach
Improves column rendering and event management with more consistent key generation
Simplifies cross-component event tracking and column lookups
2025-12-13 11:46:57 +01:00
Janus C. H. Knudsen
7da88bb977 Improves header drag-and-drop event handling
Enhances drag leave logic for more precise event tracking
- Adds conditional cleanup for grid-to-header drag events
- Updates drag state management during column transitions
- Prevents premature ghost element removal
2025-12-12 15:48:28 +01:00
Janus C. H. Knudsen
bc5854e09a Enhance drag and drop interactions across calendar views
Adds support for dragging events between header and grid views
Improves drag-and-drop state management and event persistence
Enables converting all-day events to timed events when dropped in grid

Refactors drag handling to support more flexible event interactions
2025-12-12 00:36:10 +01:00
Janus C. H. Knudsen
f7f1f8afe0 Improves header drawer layout and drag behavior
Implements dynamic item positioning and layout recalculation for header drawer

- Adds ISO date tracking for header items
- Introduces dynamic row allocation algorithm
- Updates drawer expansion logic during drag operations
- Calculates and adjusts drawer height based on item tracks
2025-12-11 23:56:20 +01:00
Janus C. H. Knudsen
7cb89e2ec5 Enhances header drawer with multi-row event layout
Improves header drawer rendering to support multi-row event stacking

Adds row-based layout algorithm for all-day events
Enables flexible height expansion based on event count
Provides more robust event placement across visible date range
2025-12-11 23:43:51 +01:00
Janus C. H. Knudsen
044b547836 Supports multi-day all-day events in calendar view
Enhances header drawer rendering to handle multi-day events
- Calculates column span for events across multiple days
- Adds support for events spanning beyond visible date range
- Updates event data attributes to include start and end dates
2025-12-11 23:29:53 +01:00
Janus C. H. Knudsen
d88956f47b Adds header drawer event rendering support
Extends calendar rendering to support all-day events in header drawer

Implements rendering logic for all-day events in header drawer:
- Fetches events for visible date range
- Filters and creates header items for all-day events
- Dynamically positions events with color classes
- Expands header drawer when events are present

Enhances event persistence with header drop detection
2025-12-11 23:04:48 +01:00
Janus C. H. Knudsen
f670598e7a Refactor event handling with SwpEvent wrapper
Introduces SwpEvent class to centralize event element data and calculations

Improves drag and resize event handling by extracting common logic
Simplifies calculation of event start/end times from element positions
Enhances type safety and reduces code complexity in event managers

Removes direct pixel/minute calculations from multiple managers
2025-12-11 22:45:33 +01:00
Janus C. H. Knudsen
9e568fbd8e wip 2025-12-11 21:16:40 +01:00
Janus C. H. Knudsen
1a4c22d37f Improves drag-and-drop event positioning logic
Refactors element positioning during drag operations to:
- Use getBoundingClientRect for precise Y positioning
- Move events to events-layer for consistent dragging
- Ensure proper absolute positioning across different event layouts

Addresses positioning inconsistencies for grouped and stacked events
2025-12-11 19:05:50 +01:00
Janus C. H. Knudsen
70172e8f10 Enhances event layout engine with advanced rendering logic
Introduces sophisticated event layout algorithm for handling complex scheduling scenarios

Adds support for:
- Grid and stacked event rendering
- Automatic column allocation
- Nested event stacking
- Threshold-based event grouping

Improves visual representation of overlapping and concurrent events
2025-12-11 18:11:11 +01:00
Janus C. H. Knudsen
4e22fbc948 Refactor calendar CSS for version 2
Consolidates and optimizes CSS files for calendar v2
Reduces CSS files from 8 to 4, improving project structure
Minimizes unused CSS rules and improves overall CSS efficiency

Simplifies PurgeCSS configuration and content targeting
2025-12-11 00:15:13 +01:00
Janus C. H. Knudsen
67b59e0993 Refines calendar event color and hover styling
Adjusts color mix percentages for better visual contrast
Removes left border from event items

Improves overall event styling consistency
2025-12-11 00:03:56 +01:00
Janus C. H. Knudsen
af6283d50d wip 2025-12-11 00:00:17 +01:00
Janus C. H. Knudsen
e145bc7c70 Refactors header grid layout with CSS subgrid
Updates header and viewport components to use CSS subgrid for more flexible layout

Improves grid structure by:
- Replacing fixed grid columns with subgrid
- Adjusting scrollbar and overflow properties
- Simplifying header and track element positioning
2025-12-10 23:55:46 +01:00
Janus C. H. Knudsen
679580702b Enhances header drawer behavior during drag operations
Adds expanded state tracking for header drawer during drag
Ensures drawer remains in the correct expanded/collapsed state based on initial condition

Improves user experience by maintaining consistent drawer state
2025-12-10 23:31:07 +01:00
Janus C. H. Knudsen
6723658fd9 Adds header drawer and event drag interactions
Introduces HeaderDrawerRenderer and HeaderDrawerLayoutEngine to support dragging events into an all-day header drawer

Enables dynamic event placement and conversion between timed and all-day events through new drag interactions
Implements flexible layout calculation for header items with column and row management

Extends DragDropManager to handle header zone interactions
Adds new event types for header drag events
2025-12-10 23:11:11 +01:00
Janus C. H. Knudsen
026d83eb32 Adds event resizing functionality to calendar
Introduces ResizeManager to handle dynamic event duration updates

Implements smooth height animation and grid-based snapping
Adds resize event tracking and timestamp display during resizing
Integrates resize handle creation and pointer event management
2025-12-10 22:16:40 +01:00
Janus C. H. Knudsen
cacd312936 Adds event drag timestamp updating during drag
Enhances event drag interactions by dynamically updating timestamp display

Implements grid-snapped time calculation during event dragging
Updates event time display with accurate start and end times
Converts minutes to formatted time range using existing date services
2025-12-10 21:49:49 +01:00
Janus C. H. Knudsen
ae48ff38d0 Adds user-select: none to calendar elements
Prevents text selection for calendar-related custom elements to improve user interaction and prevent accidental text highlighting

Enhances UI consistency across calendar components
2025-12-10 20:39:21 +01:00
Janus C. H. Knudsen
4e47df2e5c Refactor edge scroll management for drag operations
Simplifies EdgeScrollManager implementation with more focused and efficient auto-scrolling logic

Removes unnecessary complexity and scroll tracking
Optimizes scroll velocity calculation and boundary detection
Improves performance by using requestAnimationFrame for smooth scrolling
2025-12-10 19:22:13 +01:00
Janus C. H. Knudsen
10d8a444d8 Adds edge scroll functionality for drag interactions
Implements EdgeScrollManager to enable automatic scrolling during drag operations

Introduces new scroll management system that:
- Detects mouse proximity to container edges
- Provides variable scroll speed based on mouse position
- Compensates dragged elements during scrolling

Enhances drag-and-drop user experience with smooth scrolling
2025-12-10 19:12:38 +01:00
Janus C. H. Knudsen
8b95f2735f Adds drag column change event handling
Introduces support for moving events between columns during drag
Tracks column changes and updates event positioning dynamically
Enables smooth cross-column event dragging experience
2025-12-10 17:18:37 +01:00
Janus C. H. Knudsen
159b023f60 Adds drag-drop support for calendar events
Introduces comprehensive drag-drop functionality for calendar events
- Implements DragDropManager to handle event dragging
- Adds new CoreEvents for drag-drop interactions
- Supports smooth interpolation and grid snapping
- Provides flexible event handling with ghost element strategy
2025-12-10 17:07:03 +01:00
Janus C. H. Knudsen
a2b95515fd Adds resource scheduling and unavailability tracking
Introduces comprehensive schedule management for resources:
- Adds DateService with advanced time and date utilities
- Implements ResourceScheduleService for managing work hours
- Creates ScheduleRenderer to visualize unavailable time zones
- Extends resource model to support default weekly schedules

Enables granular tracking of resource availability and working hours
2025-12-10 00:27:19 +01:00
Janus C. H. Knudsen
400de8c9d5 Refactors renderer interfaces and implementations
Converts renderer interfaces to use 'I' prefix for better type clarity
Adds async support for rendering pipeline
Updates resource rendering to use ResourceService
Removes hardcoded resource data

Improves type safety and flexibility of rendering system
2025-12-09 23:16:13 +01:00
Janus C. H. Knudsen
7f6279a6f3 Enhance calendar view with resource-aware rendering
Adds support for filtering events and rendering across multiple views with resource-specific context

Improves event and date rendering to handle resource-based filtering
Introduces day view and extends existing calendar infrastructure to support more flexible view configurations
2025-12-09 22:31:28 +01:00
Janus C. H. Knudsen
6fc9be9534 wip 2025-12-09 21:32:30 +01:00
Janus C. H. Knudsen
f39e38986c wip 2025-12-09 21:24:17 +01:00
Janus C. H. Knudsen
016a504431 wip 2025-12-09 21:07:35 +01:00
Janus C. H. Knudsen
2ec4b93fa5 wip 2025-12-09 21:02:44 +01:00
Janus C. H. Knudsen
c16e432b29 Refactors rendering pipeline with flexible data handling
Removes hardcoded data from render context, allowing more dynamic renderer implementation

Changes include:
- Decoupling data retrieval from render context
- Simplifying renderer interface
- Supporting more flexible data traversal strategies

Prepares for more modular and adaptable rendering approach
2025-12-09 15:24:19 +01:00
Janus C. H. Knudsen
a3a1b9a421 Refactor calendar rendering with RenderBuilder
Simplifies calendar rendering process by introducing a new RenderBuilder pattern

Improves flexibility and modularity of grouping renderer chain
Decouples rendering logic from specific grouping types
Enables dynamic column span calculation and recursive rendering

Reduces complexity in CalendarOrchestrator
Enhances type safety and simplifies renderer interfaces
2025-12-09 00:51:41 +01:00
Janus C. H. Knudsen
27561750f8 Refactor CalendarOrchestrator with ts-linq-light
Replaces native array methods with ts-linq-light for improved functional programming
Simplifies data transformation and grouping logic
Enhances code readability and introduces more declarative data manipulation
2025-12-08 22:26:38 +01:00