From 49aea9b315623af06d8fd7306fe1dd3df2f22bb7 Mon Sep 17 00:00:00 2001 From: ISA Date: Wed, 23 Apr 2025 14:04:14 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20Datumsauswahl=20(von/bis)=20und=20Filte?= =?UTF-8?q?r-Button=20f=C3=BCr=20Meldungen=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Von-Datum und Bis-Datum per DatePicker auswählbar - Dynamischer URL-Aufbau für Produktions- und Entwicklungsumgebung - Anzeige der gefilterten Meldungen direkt beim Klick auf „Anzeigen“ - Unterstützung für max. 500 Meldungen laut Lastenheft --- config/webVersion.ts | 2 +- pages/meldungen.tsx | 73 +- public/CPLmockData/meldungen/messages.json | 6842 ++++++++++---------- 3 files changed, 3483 insertions(+), 3434 deletions(-) diff --git a/config/webVersion.ts b/config/webVersion.ts index 6d1018d..5a98d37 100644 --- a/config/webVersion.ts +++ b/config/webVersion.ts @@ -6,5 +6,5 @@ 2: Patch oder Hotfix (Bugfixes oder kleine Änderungen). */ -const webVersion = "1.6.259"; +const webVersion = "1.6.260"; export default webVersion; diff --git a/pages/meldungen.tsx b/pages/meldungen.tsx index 8ca6b14..7607403 100644 --- a/pages/meldungen.tsx +++ b/pages/meldungen.tsx @@ -16,19 +16,42 @@ const ITEMS_PER_PAGE = 10; export default function Messages() { const [messages, setMessages] = useState([]); const [currentPage, setCurrentPage] = useState(1); + const [fromDate, setFromDate] = useState( + () => new Date().toISOString().split("T")[0] + ); + const [toDate, setToDate] = useState( + () => new Date().toISOString().split("T")[0] + ); + + const fetchMessages = async () => { + const from = new Date(fromDate); + const to = new Date(toDate); + + const fy = from.getFullYear(); + const fm = String(from.getMonth() + 1).padStart(2, "0"); + const fd = String(from.getDate()).padStart(2, "0"); + const ty = to.getFullYear(); + const tm = String(to.getMonth() + 1).padStart(2, "0"); + const td = String(to.getDate()).padStart(2, "0"); + + const isDev = + typeof window !== "undefined" && window.location.hostname === "localhost"; + + const url = isDev + ? "/CPLmockData/meldungen/messages.json" + : `/CPL?Service/ae.ACP&MSS1=${fy};${fm};${fd};${ty};${tm};${td};All`; + + try { + const res = await fetch(url); + const data = await res.json(); + setMessages(data); + setCurrentPage(1); + } catch (err) { + console.error("Fehler beim Laden der Meldungen:", err); + } + }; useEffect(() => { - const fetchMessages = async () => { - // https://10.10.0.222/CPL?Service/ae.ACP&MSS1=2025;01;01;2025;2;28;All - try { - const res = await fetch("/CPLmockData/meldungen/messages.json"); - const data = await res.json(); - setMessages(data); - } catch (err) { - console.error("Fehler beim Laden der Meldungen:", err); - } - }; - fetchMessages(); }, []); @@ -42,6 +65,33 @@ export default function Messages() {

Meldungen

+
+
+ + setFromDate(e.target.value)} + className="border px-2 py-1 rounded" + /> +
+
+ + setToDate(e.target.value)} + className="border px-2 py-1 rounded" + /> +
+ +
+
@@ -72,7 +122,6 @@ export default function Messages() {
- {/* Pagination */}