feat: API-/UI-Anpassung für MSS1-Parameter zur Entwicklung wie Produktion

- MSS1-Parameter-Parsing in /api/cpl/messages.ts ergänzt
- Filterung nach Datum mit MSS1 exakt wie in der Produktionsumgebung
- meldungen.tsx so angepasst, dass Datumsauswahl in der Entwicklungsumgebung funktioniert
- Standarddatum auf 2025-02-28 gesetzt (Mockdaten verfügbar)
- Konsolenausgaben zum Debuggen ergänzt
This commit is contained in:
Ismail Ali
2025-04-23 22:01:08 +02:00
parent 49aea9b315
commit 3d11db296f
4 changed files with 3499 additions and 3432 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -6,5 +6,5 @@
2: Patch oder Hotfix (Bugfixes oder kleine Änderungen).
*/
const webVersion = "1.6.260";
const webVersion = "1.6.261";
export default webVersion;

57
pages/api/cpl/messages.ts Normal file
View File

@@ -0,0 +1,57 @@
// /pages/api/cpl/messages.ts
import { NextApiRequest, NextApiResponse } from "next";
import path from "path";
import { promises as fs } from "fs";
function parseDate(str: string): Date {
return new Date(str.replace(" ", "T"));
}
export default async function handler(
req: NextApiRequest,
res: NextApiResponse
) {
const { from, to, MSS1 } = req.query;
const filePath = path.join(
process.cwd(),
"apiMockData/meldungen/messages.json"
);
const fileContents = await fs.readFile(filePath, "utf-8");
const data = JSON.parse(fileContents);
let fromDate: Date | null = null;
let toDate: Date | null = null;
if (from && to) {
fromDate = new Date(from.toString());
toDate = new Date(to.toString());
toDate.setHours(23, 59, 59, 999);
} else if (MSS1) {
const parts = MSS1.toString().split(";");
if (parts.length >= 6) {
const [fy, fm, fd, ty, tm, td] = parts;
fromDate = new Date(`${fy}-${fm}-${fd}`);
toDate = new Date(`${ty}-${tm}-${td}`);
toDate.setHours(23, 59, 59, 999);
}
}
if (fromDate && toDate) {
const filtered = data.filter((msg: any) => {
const messageDate = parseDate(msg.t);
return messageDate >= fromDate! && messageDate <= toDate!;
});
console.log(
"⏱ Zeitraum:",
fromDate.toISOString(),
"→",
toDate.toISOString()
);
console.log("📦 Gefunden:", filtered.length);
return res.status(200).json(filtered.slice(0, 500));
}
res.status(200).json(data.slice(0, 500));
}

View File

@@ -1,6 +1,5 @@
// /pages/meldungen.tsx
"use client";
// /pages/meldungen.tsx
import React, { useEffect, useState } from "react";
type Meldung = {
@@ -16,12 +15,10 @@ const ITEMS_PER_PAGE = 10;
export default function Messages() {
const [messages, setMessages] = useState<Meldung[]>([]);
const [currentPage, setCurrentPage] = useState(1);
const [fromDate, setFromDate] = useState<string>(
() => new Date().toISOString().split("T")[0]
);
const [toDate, setToDate] = useState<string>(
() => new Date().toISOString().split("T")[0]
);
// Standarddatum zurücksetzen auf 2025-02-28 (letzter Tag mit Daten!)
const [fromDate, setFromDate] = useState<string>("2025-02-28");
const [toDate, setToDate] = useState<string>("2025-02-28");
const fetchMessages = async () => {
const from = new Date(fromDate);
@@ -38,12 +35,21 @@ export default function Messages() {
typeof window !== "undefined" && window.location.hostname === "localhost";
const url = isDev
? "/CPLmockData/meldungen/messages.json"
? `/api/cpl/messages?MSS1=${fy};${fm};${fd};${ty};${tm};${td};All`
: `/CPL?Service/ae.ACP&MSS1=${fy};${fm};${fd};${ty};${tm};${td};All`;
try {
const res = await fetch(url);
const data = await res.json();
const raw = await res.json();
console.log("URL:", url);
console.log("Daten vom Server:", raw);
const data = Array.isArray(raw) ? raw : raw.data;
if (!Array.isArray(data)) {
console.error("Die empfangenen Daten sind kein Array:", data);
return;
}
setMessages(data);
setCurrentPage(1);
} catch (err) {
@@ -55,6 +61,10 @@ export default function Messages() {
fetchMessages();
}, []);
useEffect(() => {
fetchMessages();
}, [fromDate, toDate]);
const totalPages = Math.ceil(messages.length / ITEMS_PER_PAGE);
const currentMessages = messages.slice(
(currentPage - 1) * ITEMS_PER_PAGE,