import { useState, useMemo } from 'react' import { useNavigate } from 'react-router-dom' import { format, addDays, startOfWeek, isSameDay } from 'date-fns' import { de } from 'date-fns/locale' import { FaChevronLeft, FaChevronRight } from 'react-icons/fa6' import { PageHeader, Card, Button } from '../components/ui' import { useWorkorders } from '../hooks/useWorkorders' import { useEmployees } from '../hooks/useEmployees' import { groupAppointmentsByDay, countInRange, dayKey } from '../lib/planboard' /* Termine haengen an den Tickets (startDate/startTime/endTime/assignedTo); die Aufbereitung steckt in src/lib/planboard.js. */ const TYPE_COLORS = { akquise: { bg: 'rgba(198,113,57,0.16)', fg: '#c67139' }, webpage: { bg: 'rgba(122,138,94,0.18)', fg: '#7a8a5e' }, project: { bg: 'rgba(122,138,94,0.18)', fg: '#7a8a5e' }, } export default function PlanboardPage() { const navigate = useNavigate() const [currentWeek, setCurrentWeek] = useState(startOfWeek(new Date(), { weekStartsOn: 1 })) const { workorders, loading } = useWorkorders({ limit: 500 }) const { employees } = useEmployees() const weekDays = Array.from({ length: 7 }, (_, i) => addDays(currentWeek, i)) const navigateWeek = (dir) => setCurrentWeek((prev) => addDays(prev, dir * 7)) const goToday = () => setCurrentWeek(startOfWeek(new Date(), { weekStartsOn: 1 })) const byDay = useMemo(() => groupAppointmentsByDay(workorders || [], employees || []), [workorders, employees]) const weekCount = countInRange(byDay, weekDays) return (
Keine Termine
)} {entries.map((entry) => { const color = TYPE_COLORS[String(entry.type).toLowerCase()] || { bg: 'rgba(127,127,127,0.10)', fg: 'var(--border)' } return ( ) })}