From 209d7f0b5720186248e91e8d7f3e524dc486041d Mon Sep 17 00:00:00 2001 From: Daniel Cojocea Date: Thu, 5 Sep 2024 17:19:59 -0400 Subject: [PATCH] Fixed janky bar animations --- .../Charts/MonitorDetailsAreaChart/index.jsx | 7 +++-- .../Pages/Monitors/Details/Charts/index.jsx | 30 +++++++++++-------- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/Client/src/Components/Charts/MonitorDetailsAreaChart/index.jsx b/Client/src/Components/Charts/MonitorDetailsAreaChart/index.jsx index 4773b683c..cb01734fd 100644 --- a/Client/src/Components/Charts/MonitorDetailsAreaChart/index.jsx +++ b/Client/src/Components/Charts/MonitorDetailsAreaChart/index.jsx @@ -10,6 +10,7 @@ import { import { Box, Stack, Typography } from "@mui/material"; import { useTheme } from "@emotion/react"; import "./index.css"; +import React, { useMemo } from "react"; const CustomToolTip = ({ active, payload, label }) => { const theme = useTheme(); @@ -96,14 +97,16 @@ const MonitorDetailsAreaChart = ({ checks }) => { }); }; + const memoizedChecks = useMemo(() => checks, []); + const theme = useTheme(); return ( - + { +export const UpBarChart = memo(({ data, type, onBarHover }) => { const theme = useTheme(); const [chartHovered, setChartHovered] = useState(false); @@ -54,10 +54,10 @@ export const UpBarChart = ({ data, type, onBarHover }) => { }; // TODO - REMOVE THIS LATER - let reversedData = [...data].reverse(); + const reversedData = useMemo(() => [...data].reverse(), [data]); return ( - + { ); -}; +}); -export const DownBarChart = ({ data, type, onBarHover }) => { +export const DownBarChart = memo(({ data, type, onBarHover }) => { const theme = useTheme(); const [chartHovered, setChartHovered] = useState(false); const [hoveredBarIndex, setHoveredBarIndex] = useState(null); // TODO - REMOVE THIS LATER - let reversedData = [...data].reverse(); + const reversedData = useMemo(() => [...data].reverse(), [data]); return ( - + { ); -}; +}); export const ResponseGaugeChart = ({ data }) => { const theme = useTheme(); let max = 1000; // max ms - data = [{ response: max, fill: "transparent", background: false }, ...data]; - let responseTime = Math.floor(data[1].response); + const memoizedData = useMemo( + () => [{ response: max, fill: "transparent", background: false }, ...data], + [data[0].response] + ); + + let responseTime = Math.floor(memoizedData[1].response); let responseProps = responseTime <= 200 ? { @@ -227,12 +231,12 @@ export const ResponseGaugeChart = ({ data }) => { }; return ( - +