feat: add Ressourcen timeline view with group ordering (alpha.14)
- New timeline page showing all groups and active events in parallel - Group order API endpoints with persistence (GET/POST /api/groups/order) - Customizable group ordering with visual controls - Fix CSS and TypeScript lint errors - Update documentation and bump version to 2026.1.0-alpha.14
This commit is contained in:
@@ -5,6 +5,57 @@
|
||||
|
||||
This changelog documents technical and developer-relevant changes included in public releases. For development workspace changes, see DEV-CHANGELOG.md. Not all changes here are reflected in the user-facing changelog (`program-info.json`), and not all UI/feature changes are repeated here. Some changes (e.g., backend refactoring, API adjustments, infrastructure, developer tooling, or internal logic) may only appear in TECH-CHANGELOG.md. For UI/feature changes, see `dashboard/public/program-info.json`.
|
||||
|
||||
## 2026.1.0-alpha.14 (2026-01-28)
|
||||
- 🗓️ **Ressourcen Page (Timeline View)**:
|
||||
- New frontend page: `dashboard/src/ressourcen.tsx` (357 lines) – Parallel timeline view showing active events for all room groups
|
||||
- Uses Syncfusion ScheduleComponent with TimelineViews module for resource-based scheduling
|
||||
- Compact visualization: 65px row height per group, dynamically calculated total container height
|
||||
- Real-time event loading: Fetches events per group for current date range on mount and view/date changes
|
||||
- Timeline modes: Day (default) and Week views with date range calculation
|
||||
- Color-coded event bars: Uses `getGroupColor()` from `groupColors.ts` for group theme matching
|
||||
- Displays first active event per group with type, title, and time window
|
||||
- Filters out "Nicht zugeordnet" group from timeline display
|
||||
- Resource mapping: Each group becomes a timeline resource row, events mapped via `ResourceId`
|
||||
- Syncfusion modules: TimelineViews, Resize, DragAndDrop injected for rich interaction
|
||||
- 🎨 **Ressourcen Styling**:
|
||||
- New CSS file: `dashboard/src/ressourcen.css` (178 lines) with modern Material 3 design
|
||||
- Fixed CSS lint errors: Converted `rgba()` to modern `rgb()` notation with percentage alpha values (`rgb(0 0 0 / 10%)`)
|
||||
- Removed unnecessary quotes from font-family names (Roboto, Oxygen, Ubuntu, Cantarell)
|
||||
- Fixed CSS selector specificity ordering (`.e-schedule` before `.ressourcen-timeline-wrapper .e-schedule`)
|
||||
- Card-based controls layout with shadow and rounded corners
|
||||
- Group ordering panel with scrollable list and action buttons
|
||||
- Responsive timeline wrapper with flex layout
|
||||
- 🔌 **Group Order API**:
|
||||
- New backend endpoints in `server/routes/groups.py`:
|
||||
- `GET /api/groups/order` – Retrieve saved group display order (returns JSON with `order` array of group IDs)
|
||||
- `POST /api/groups/order` – Persist group display order (accepts JSON with `order` array)
|
||||
- Order persistence: Stored in `system_settings` table with key `group_display_order` (JSON array of integers)
|
||||
- Automatic synchronization: Missing group IDs added to order, removed IDs filtered out
|
||||
- Frontend integration: Group order panel with drag up/down buttons, real-time reordering with backend sync
|
||||
- 🖥️ **Frontend Technical**:
|
||||
- State management: React hooks with unused setters removed (setTimelineView, setViewDate) to resolve lint warnings
|
||||
- TypeScript: Changed `let` to `const` for immutable end date calculation
|
||||
- UTC date parsing: Uses parseUTCDate callback to append 'Z' and ensure UTC interpretation
|
||||
- Event formatting: Capitalizes first letter of event type for display (e.g., "Website - Title")
|
||||
- Loading state: Shows loading indicator while fetching group/event data
|
||||
- Schedule height: Dynamic calculation based on `groups.length * 65px + 100px` for header
|
||||
- 📖 **Documentation**:
|
||||
- Updated `.github/copilot-instructions.md`:
|
||||
- Added Ressourcen page to "Recent changes" section (January 2026)
|
||||
- Added `ressourcen.tsx` and `ressourcen.css` to "Important files" list
|
||||
- Added Groups API order endpoints documentation
|
||||
- Added comprehensive Ressourcen page section to "Frontend patterns"
|
||||
- Updated `README.md`:
|
||||
- Added Ressourcen page to "Pages Overview" section with feature details
|
||||
- Added `GET/POST /api/groups/order` to Core Resources API section
|
||||
- Bumped version in `dashboard/public/program-info.json` to `2026.1.0-alpha.14` with user-facing changelog
|
||||
|
||||
Notes for integrators:
|
||||
- Group order API returns JSON with `{ "order": [1, 2, 3, ...] }` structure (array of group IDs)
|
||||
- Timeline view automatically filters "Nicht zugeordnet" group for cleaner display
|
||||
- CSS follows modern Material 3 color-function notation (`rgb(r g b / alpha%)`)
|
||||
- Syncfusion ScheduleComponent requires TimelineViews, Resize, and DragAndDrop modules injected
|
||||
|
||||
## 2025.1.0-beta.1 (TBD)
|
||||
- 🔐 **User Management & Role-Based Access Control**:
|
||||
- Backend: Implemented comprehensive user management API (`server/routes/users.py`) with 6 endpoints (GET, POST, PUT, DELETE users + password reset).
|
||||
|
||||
Reference in New Issue
Block a user