From 66a7de09c1057569603b7de06aab8d0fd3c30c62 Mon Sep 17 00:00:00 2001 From: Maurice Date: Sat, 18 Apr 2026 11:34:57 +0200 Subject: [PATCH] dayplan toolbar polish + weather archive fallback MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - weather: add archive API branch in getWeather for past dates (previously returned no_forecast, making the day-strip widget show "—") - dayplan: add expand/collapse-all toggle between ICS and Undo with animated icon swap (ChevronsUpDown <-> ChevronsDownUp) - dayplan: drop the trip title + date range block from the sidebar header (already shown in the page header), toolbar now right-aligned --- .../src/components/Planner/DayPlanSidebar.tsx | 62 +++++++++++++++---- client/src/i18n/translations/de.ts | 2 + client/src/i18n/translations/en.ts | 2 + server/src/services/weatherService.ts | 31 ++++++++++ 4 files changed, 84 insertions(+), 13 deletions(-) diff --git a/client/src/components/Planner/DayPlanSidebar.tsx b/client/src/components/Planner/DayPlanSidebar.tsx index dde92aea..a9c99e40 100644 --- a/client/src/components/Planner/DayPlanSidebar.tsx +++ b/client/src/components/Planner/DayPlanSidebar.tsx @@ -4,7 +4,7 @@ declare global { interface Window { __dragData: DragDataPayload | null } } import React, { useState, useEffect, useRef, useMemo } from 'react' import ReactDOM from 'react-dom' -import { ChevronDown, ChevronRight, ChevronUp, Navigation, RotateCcw, ExternalLink, Clock, Pencil, GripVertical, Ticket, Plus, FileText, Check, Trash2, Info, MapPin, Star, Heart, Camera, Lightbulb, Flag, Bookmark, Train, Bus, Plane, Car, Ship, Coffee, ShoppingBag, AlertTriangle, FileDown, Lock, Hotel, Utensils, Users, Undo2, X, Route as RouteIcon } from 'lucide-react' +import { ChevronDown, ChevronRight, ChevronUp, ChevronsDownUp, ChevronsUpDown, Navigation, RotateCcw, ExternalLink, Clock, Pencil, GripVertical, Ticket, Plus, FileText, Check, Trash2, Info, MapPin, Star, Heart, Camera, Lightbulb, Flag, Bookmark, Train, Bus, Plane, Car, Ship, Coffee, ShoppingBag, AlertTriangle, FileDown, Lock, Hotel, Utensils, Users, Undo2, X, Route as RouteIcon } from 'lucide-react' const RES_ICONS = { flight: Plane, hotel: Hotel, restaurant: Utensils, train: Train, car: Car, cruise: Ship, event: Ticket, tour: Users, other: FileText } import { assignmentsApi, reservationsApi } from '../../api/client' @@ -940,18 +940,9 @@ const DayPlanSidebar = React.memo(function DayPlanSidebar({ return (
- {/* Reise-Titel */} -
-
-
-
{trip?.title}
- {(trip?.start_date || trip?.end_date) && ( -
- {[trip.start_date, trip.end_date].filter(Boolean).map(d => new Date(d + 'T00:00:00Z').toLocaleDateString(locale, { day: 'numeric', month: 'short', timeZone: 'UTC' })).join(' – ')} - {days.length > 0 && ` · ${days.length} ${t('dayplan.days')}`} -
- )} -
+ {/* Toolbar */} +
+
)}
+ {(() => { + const allExpanded = days.length > 0 && days.every(d => expandedDays.has(d.id)) + const label = allExpanded ? t('dayplan.collapseAll') : t('dayplan.expandAll') + return ( + + + + ) + })()} {onUndo && (