refactor: TDR-Daten in neuen tdrSingleChartSlice ausgelagert und nur pro Slot geladen

- Globalen fetchAllTDRChartData entfernt
- Neuen Slice und Thunk pro Slot erstellt
- TDRChart liest initiale Daten aus neuem Slice
This commit is contained in:
ISA
2025-03-27 14:55:06 +01:00
parent c91d621186
commit 4e459a7f36
9 changed files with 146 additions and 10 deletions

View File

@@ -9,16 +9,12 @@ import { Chart, registerables } from "chart.js";
import "chartjs-adapter-date-fns";
import { getColor } from "../../../../../../utils/colors";
import TDRChartActionBar from "./TDRChartActionBar";
import { fetchAllTDRChartData } from "../../../../../../redux/thunks/fetchAllTDRChartThunk";
import { fetchAllTDRReferenceChartThunk } from "../../../../../../redux/thunks/fetchAllTDRReferenceChartThunk";
const TDRChart: React.FC<{ isFullScreen: boolean }> = ({ isFullScreen }) => {
const dispatch = useDispatch<AppDispatch>();
useEffect(() => {
dispatch(fetchAllTDRChartData());
dispatch(fetchAllTDRReferenceChartThunk());
}, [dispatch]);
//---------------------------------
const chartRef = useRef<HTMLCanvasElement>(null);
const chartInstance = useRef<Chart | null>(null);
@@ -36,10 +32,13 @@ const TDRChart: React.FC<{ isFullScreen: boolean }> = ({ isFullScreen }) => {
const tdrDataById = useSelector(
(state: RootState) => state.tdrDataById.dataById
);
const tdrInitialData = useSelector((state: RootState) =>
selectedSlot !== null ? state.tdrChart.data[selectedSlot] || [] : []
//--------------------------------
const tdrDataBySlot = useSelector(
(state: RootState) => state.tdrSingleChart.data
);
const tdrInitialData =
selectedSlot !== null ? tdrDataBySlot[selectedSlot] ?? [] : [];
//--------------------------------
// Kombinierte Logik: ID hat Vorrang, sonst Initial-Daten für Slot
const tdrChartData = useMemo(() => {
if (selectedId !== null && tdrDataById[selectedId]) {
@@ -190,7 +189,6 @@ const TDRChart: React.FC<{ isFullScreen: boolean }> = ({ isFullScreen }) => {
});
}, [JSON.stringify(tdrChartData), selectedSlot, selectedChartType]);
return (
<div style={{ width: "100%", height: isFullScreen ? "90%" : "28rem" }}>
<TDRChartActionBar />