- `DateRangePicker.tsx` angepasst, um `vonDatum` und `bisDatum` direkt in Redux zu aktualisieren - `LoopMeasurementChart.tsx` verbessert, sodass `vonDatum` und `bisDatum` beim Zoomen mit Mausrad automatisch in Redux gespeichert werden - Chart.js `onZoom` korrekt implementiert, um Änderungen in der X-Achse sofort zu übernehmen - Redux-Updates optimiert, um unnötige `dispatch`-Aufrufe zu vermeiden
66 lines
2.1 KiB
TypeScript
66 lines
2.1 KiB
TypeScript
// /components/modules/kue705FO/charts/DateRangePicker.tsx
|
|
import React from "react";
|
|
import DatePicker from "react-datepicker";
|
|
import { useSelector, useDispatch } from "react-redux";
|
|
import { RootState } from "../../../../../redux/store";
|
|
import {
|
|
setVonDatum,
|
|
setBisDatum,
|
|
} from "../../../../../redux/slices/kabelueberwachungChartSlice";
|
|
import "react-datepicker/dist/react-datepicker.css";
|
|
|
|
const DateRangePicker: React.FC = () => {
|
|
const dispatch = useDispatch();
|
|
|
|
// Redux-Werte abrufen
|
|
const reduxVonDatum = useSelector(
|
|
(state: RootState) => state.kabelueberwachungChart.vonDatum
|
|
);
|
|
const reduxBisDatum = useSelector(
|
|
(state: RootState) => state.kabelueberwachungChart.bisDatum
|
|
);
|
|
|
|
return (
|
|
<div className="flex space-x-4">
|
|
<div>
|
|
<label className="block text-sm font-semibold">Von</label>
|
|
<DatePicker
|
|
selected={reduxVonDatum ? new Date(reduxVonDatum) : new Date()}
|
|
onChange={(date) => {
|
|
if (date) {
|
|
const isoDate = date.toISOString().split("T")[0];
|
|
dispatch(setVonDatum(isoDate));
|
|
}
|
|
}}
|
|
selectsStart
|
|
startDate={reduxVonDatum ? new Date(reduxVonDatum) : new Date()}
|
|
endDate={reduxBisDatum ? new Date(reduxBisDatum) : new Date()}
|
|
dateFormat="dd.MM.yyyy"
|
|
className="border px-2 py-1 rounded"
|
|
/>
|
|
</div>
|
|
|
|
<div>
|
|
<label className="block text-sm font-semibold">Bis</label>
|
|
<DatePicker
|
|
selected={reduxBisDatum ? new Date(reduxBisDatum) : new Date()}
|
|
onChange={(date) => {
|
|
if (date) {
|
|
const isoDate = date.toISOString().split("T")[0];
|
|
dispatch(setBisDatum(isoDate));
|
|
}
|
|
}}
|
|
selectsEnd
|
|
startDate={reduxVonDatum ? new Date(reduxVonDatum) : new Date()}
|
|
endDate={reduxBisDatum ? new Date(reduxBisDatum) : new Date()}
|
|
minDate={reduxVonDatum ? new Date(reduxVonDatum) : new Date()}
|
|
dateFormat="dd.MM.yyyy"
|
|
className="border px-2 py-1 rounded"
|
|
/>
|
|
</div>
|
|
</div>
|
|
);
|
|
};
|
|
|
|
export default DateRangePicker;
|