"use client"; // components/main/reports/MeldungenView.tsx import React, { useEffect, useState } from "react"; import { useDispatch, useSelector } from "react-redux"; import { getMessagesThunk } from "@/redux/thunks/getMessagesThunk"; import type { AppDispatch } from "@/redux/store"; import type { RootState } from "@/redux/store"; import DateRangePickerMeldungen from "./DateRangePickerMeldungen"; import MeldungenTabelle from "./MeldungenTabelle"; import { Listbox } from "@headlessui/react"; type Meldung = { t: string; s: number; c: string; m: string; i: string; v: string; }; export default function MeldungenView() { const dispatch = useDispatch(); const messages = useSelector((state: RootState) => state.messages.data); const [sourceFilter, setSourceFilter] = useState("Alle Quellen"); const today = new Date(); const prior30 = new Date(); prior30.setDate(today.getDate() - 30); const formatDate = (d: Date) => d.toISOString().split("T")[0]; const [fromDate, setFromDate] = useState(formatDate(prior30)); const [toDate, setToDate] = useState(formatDate(today)); useEffect(() => { dispatch(getMessagesThunk({ fromDate, toDate })); }, []); const filteredMessages = sourceFilter === "Alle Quellen" ? messages : messages.filter((m: Meldung) => m.i === sourceFilter); const allSources = Array.from( new Set(messages.map((m: Meldung) => m.i)) ).sort(); const sources = ["Alle Quellen", ...allSources]; return (

Berichte

{sourceFilter} {sources.map((src) => ( `px-4 py-2 cursor-pointer text-[var(--color-fg)] transition-colors ${ disabled ? "opacity-50 text-[var(--color-muted)] cursor-not-allowed" : selected ? "bg-accent text-white" : active ? "bg-[var(--color-surface-alt)]" : "" }` } > {src} ))}
); }