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:
@@ -19,6 +19,8 @@ import {
|
||||
} from "../../../../../redux/slices/tdrChartSlice";
|
||||
import { resetBrushRange } from "../../../../../redux/slices/brushSlice";
|
||||
import { fetchAllTDRChartData } from "../../../../../redux/thunks/fetchAllTDRChartThunk";
|
||||
import { fetchTDMDataBySlotThunk } from "../../../../../redux/thunks/fetchTDMDataBySlotThunk";
|
||||
import { fetchTDRChartDataBySlotThunk } from "../../../../../redux/thunks/fetchTDRChartDataBySlotThunk";
|
||||
|
||||
interface ChartSwitcherProps {
|
||||
isOpen: boolean;
|
||||
@@ -71,6 +73,19 @@ const ChartSwitcher: React.FC<ChartSwitcherProps> = ({
|
||||
return () => clearInterval(interval); // Cleanup, wenn Komponente entladen wird
|
||||
}, [dispatch]);
|
||||
//-------------------------------------
|
||||
useEffect(() => {
|
||||
if (slotIndex !== null) {
|
||||
dispatch(fetchTDMDataBySlotThunk(slotIndex));
|
||||
}
|
||||
}, [slotIndex]);
|
||||
|
||||
//-------------------------------------
|
||||
useEffect(() => {
|
||||
if (slotIndex !== null) {
|
||||
dispatch(fetchTDRChartDataBySlotThunk(slotIndex));
|
||||
}
|
||||
}, [slotIndex]);
|
||||
//-------------------------------------
|
||||
return (
|
||||
<ReactModal
|
||||
isOpen={isOpen}
|
||||
|
||||
@@ -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 />
|
||||
|
||||
Reference in New Issue
Block a user