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:
File diff suppressed because it is too large
Load Diff
@@ -6,5 +6,5 @@
|
|||||||
2: Patch oder Hotfix (Bugfixes oder kleine Änderungen).
|
2: Patch oder Hotfix (Bugfixes oder kleine Änderungen).
|
||||||
|
|
||||||
*/
|
*/
|
||||||
const webVersion = "1.6.260";
|
const webVersion = "1.6.261";
|
||||||
export default webVersion;
|
export default webVersion;
|
||||||
|
|||||||
57
pages/api/cpl/messages.ts
Normal file
57
pages/api/cpl/messages.ts
Normal 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));
|
||||||
|
}
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
// /pages/meldungen.tsx
|
|
||||||
"use client";
|
"use client";
|
||||||
|
// /pages/meldungen.tsx
|
||||||
import React, { useEffect, useState } from "react";
|
import React, { useEffect, useState } from "react";
|
||||||
|
|
||||||
type Meldung = {
|
type Meldung = {
|
||||||
@@ -16,12 +15,10 @@ const ITEMS_PER_PAGE = 10;
|
|||||||
export default function Messages() {
|
export default function Messages() {
|
||||||
const [messages, setMessages] = useState<Meldung[]>([]);
|
const [messages, setMessages] = useState<Meldung[]>([]);
|
||||||
const [currentPage, setCurrentPage] = useState(1);
|
const [currentPage, setCurrentPage] = useState(1);
|
||||||
const [fromDate, setFromDate] = 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>(
|
const [toDate, setToDate] = useState<string>("2025-02-28");
|
||||||
() => new Date().toISOString().split("T")[0]
|
|
||||||
);
|
|
||||||
|
|
||||||
const fetchMessages = async () => {
|
const fetchMessages = async () => {
|
||||||
const from = new Date(fromDate);
|
const from = new Date(fromDate);
|
||||||
@@ -38,12 +35,21 @@ export default function Messages() {
|
|||||||
typeof window !== "undefined" && window.location.hostname === "localhost";
|
typeof window !== "undefined" && window.location.hostname === "localhost";
|
||||||
|
|
||||||
const url = isDev
|
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`;
|
: `/CPL?Service/ae.ACP&MSS1=${fy};${fm};${fd};${ty};${tm};${td};All`;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const res = await fetch(url);
|
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);
|
setMessages(data);
|
||||||
setCurrentPage(1);
|
setCurrentPage(1);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
@@ -55,6 +61,10 @@ export default function Messages() {
|
|||||||
fetchMessages();
|
fetchMessages();
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
fetchMessages();
|
||||||
|
}, [fromDate, toDate]);
|
||||||
|
|
||||||
const totalPages = Math.ceil(messages.length / ITEMS_PER_PAGE);
|
const totalPages = Math.ceil(messages.length / ITEMS_PER_PAGE);
|
||||||
const currentMessages = messages.slice(
|
const currentMessages = messages.slice(
|
||||||
(currentPage - 1) * ITEMS_PER_PAGE,
|
(currentPage - 1) * ITEMS_PER_PAGE,
|
||||||
|
|||||||
Reference in New Issue
Block a user