feat(AnalogInputsChart): Zeitraum im DatePicker und Redux initialisieren und synchronisieren

- Initialwert für Zeitraum (letzte 30 Tage) im Redux-Store gesetzt
- DatePicker-Änderungen werden im Redux gespeichert
- Fetch-Button verwendet Zeitraum aus Redux und loggt die Fetch-URL
- Chart zeigt Daten entsprechend ausgewähltem Zeitraum
This commit is contained in:
ISA
2025-07-21 15:20:04 +02:00
parent 697cae9848
commit 03ee4fb08e
6 changed files with 40 additions and 16 deletions

View File

@@ -6,6 +6,6 @@ NEXT_PUBLIC_USE_MOCK_BACKEND_LOOP_START=false
NEXT_PUBLIC_EXPORT_STATIC=false NEXT_PUBLIC_EXPORT_STATIC=false
NEXT_PUBLIC_USE_CGI=false NEXT_PUBLIC_USE_CGI=false
# App-Versionsnummer # App-Versionsnummer
NEXT_PUBLIC_APP_VERSION=1.6.617 NEXT_PUBLIC_APP_VERSION=1.6.618
NEXT_PUBLIC_CPL_MODE=json # json (Entwicklungsumgebung) oder jsSimulatedProd (CPL ->CGI-Interface-Simulator) oder production (CPL-> CGI-Interface Platzhalter) NEXT_PUBLIC_CPL_MODE=json # json (Entwicklungsumgebung) oder jsSimulatedProd (CPL ->CGI-Interface-Simulator) oder production (CPL-> CGI-Interface Platzhalter)

View File

@@ -5,5 +5,5 @@ NEXT_PUBLIC_CPL_API_PATH=/CPL
NEXT_PUBLIC_EXPORT_STATIC=true NEXT_PUBLIC_EXPORT_STATIC=true
NEXT_PUBLIC_USE_CGI=true NEXT_PUBLIC_USE_CGI=true
# App-Versionsnummer # App-Versionsnummer
NEXT_PUBLIC_APP_VERSION=1.6.617 NEXT_PUBLIC_APP_VERSION=1.6.618
NEXT_PUBLIC_CPL_MODE=production NEXT_PUBLIC_CPL_MODE=production

View File

@@ -1,3 +1,8 @@
## [1.6.618] 2025-07-21
- feat(mock): Script fetchAnalogInputsData auf ES-Module (.mjs) umgestellt, Datum automatisch gesetzt
---
## [1.6.617] 2025-07-21 ## [1.6.617] 2025-07-21
- feat(service): CPL-Request verwendet DIA0, DIA1 oder DIA2 je nach Zeitraum für analoge Eingänge - feat(service): CPL-Request verwendet DIA0, DIA1 oder DIA2 je nach Zeitraum für analoge Eingänge

View File

@@ -74,17 +74,37 @@ export default function AnalogInputsChart() {
setLocalZeitraum(zeitraum); setLocalZeitraum(zeitraum);
}, [zeitraum]); }, [zeitraum]);
// Initialisiere Zeitraum im Redux-Store, falls leer
const vonDatumRedux = useSelector(
(state: RootState) => state.dateRangePicker.vonDatum
);
const bisDatumRedux = useSelector(
(state: RootState) => state.dateRangePicker.bisDatum
);
useEffect(() => {
if (!vonDatumRedux || !bisDatumRedux) {
const today = new Date();
const toDate = today.toISOString().slice(0, 10);
const fromDateObj = new Date(today);
fromDateObj.setDate(today.getDate() - 30);
const fromDate = fromDateObj.toISOString().slice(0, 10);
dispatch(setVonDatum(fromDate));
dispatch(setBisDatum(toDate));
}
}, [vonDatumRedux, bisDatumRedux, dispatch]);
// ✅ Button-Klick → Fetch auslösen // ✅ Button-Klick → Fetch auslösen
const handleFetchData = () => { const handleFetchData = () => {
if (!selectedAnalogInput?.id) return; if (!selectedAnalogInput?.id) return;
// Zeitraum aus Redux holen
// Sicherstellen, dass die neuesten Werte aus dem DateRangePicker verwendet werden const latestVonDatum =
const latestVonDatum = vonDatum || new Date().toISOString().slice(0, 10); vonDatumRedux || new Date().toISOString().slice(0, 10);
const latestBisDatum = bisDatum || new Date().toISOString().slice(0, 10); const latestBisDatum =
bisDatumRedux || new Date().toISOString().slice(0, 10);
// Zeitauswahl ins Redux übernehmen
dispatch(setZeitraum(localZeitraum)); dispatch(setZeitraum(localZeitraum));
// Debug: Fetch-URL loggen
const debugUrl = `/api/cpl/getAnalogInputsHistory?eingang=${selectedAnalogInput.id}&zeitraum=${localZeitraum}&von=${latestVonDatum}&bis=${latestBisDatum}`;
console.log("Fetch-URL:", debugUrl);
dispatch( dispatch(
getAnalogInputsHistoryThunk({ getAnalogInputsHistoryThunk({
eingang: selectedAnalogInput.id, eingang: selectedAnalogInput.id,
@@ -146,9 +166,8 @@ export default function AnalogInputsChart() {
// ✅ Zeitbereich anwenden (nur Anzeige gefiltert) // ✅ Zeitbereich anwenden (nur Anzeige gefiltert)
const filteredData = inputData.filter((point) => { const filteredData = inputData.filter((point) => {
const date = new Date(point.t); const date = new Date(point.t);
const from = vonDatum ? new Date(vonDatum) : null; const from = vonDatumRedux ? new Date(vonDatumRedux) : null;
const to = bisDatum ? new Date(bisDatum) : null; const to = bisDatumRedux ? new Date(bisDatumRedux) : null;
return (!from || date >= from) && (!to || date <= to); return (!from || date >= from) && (!to || date <= to);
}); });
useEffect(() => { useEffect(() => {
@@ -327,7 +346,7 @@ export default function AnalogInputsChart() {
}, },
}, },
}; };
// DateRangePicker Event → Redux-Datum setzen (aber KEIN Fetch!) // DateRangePicker Event → Redux-Datum setzen (aber KEIN Fetch!)
const handleDateChange = (from: string, to: string) => { const handleDateChange = (from: string, to: string) => {
dispatch(setVonDatum(from)); dispatch(setVonDatum(from));
dispatch(setBisDatum(to)); dispatch(setBisDatum(to));

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{ {
"name": "cpl-v4", "name": "cpl-v4",
"version": "1.6.617", "version": "1.6.618",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "cpl-v4", "name": "cpl-v4",
"version": "1.6.617", "version": "1.6.618",
"dependencies": { "dependencies": {
"@fontsource/roboto": "^5.1.0", "@fontsource/roboto": "^5.1.0",
"@headlessui/react": "^2.2.4", "@headlessui/react": "^2.2.4",

View File

@@ -1,6 +1,6 @@
{ {
"name": "cpl-v4", "name": "cpl-v4",
"version": "1.6.617", "version": "1.6.618",
"private": true, "private": true,
"scripts": { "scripts": {
"dev": "next dev", "dev": "next dev",