From bb5589a2556b1430aaf7935e8faec620f32242d8 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Wed, 17 Jul 2024 12:35:48 -0700 Subject: [PATCH] Extracted util functions --- .../Charts/ResponseTimeChart/index.jsx | 49 +------------------ 1 file changed, 2 insertions(+), 47 deletions(-) diff --git a/Client/src/Components/Charts/ResponseTimeChart/index.jsx b/Client/src/Components/Charts/ResponseTimeChart/index.jsx index 2121169b6..7a9bf71b2 100644 --- a/Client/src/Components/Charts/ResponseTimeChart/index.jsx +++ b/Client/src/Components/Charts/ResponseTimeChart/index.jsx @@ -1,55 +1,10 @@ import "./index.css"; import PropTypes from "prop-types"; import { BarChart, Bar, ResponsiveContainer, Cell } from "recharts"; - -const RANGE_MAX = 100; -const RANGE_MIN = 1; - -const calculatePercentile = (arr, percentile) => { - const sorted = arr.slice().sort((a, b) => a.responseTime - b.responseTime); - const index = (percentile / 100) * (sorted.length - 1); - const lower = Math.floor(index); - const upper = lower + 1; - const weight = index % 1; - if (upper >= sorted.length) return sorted[lower].responseTime; - return ( - sorted[lower].responseTime * (1 - weight) + - sorted[upper].responseTime * weight - ); -}; - -const normalizeData = (checks) => { - if (checks.length > 1) { - // Get the 5th and 95th percentile - const min = calculatePercentile(checks, 5); - const max = calculatePercentile(checks, 95); - - const normalizedChecks = checks.map((check) => { - // Normalize the response time between 1 and 100 - let normalizedResponseTime = - RANGE_MIN + - ((check.responseTime - min) * (RANGE_MAX - RANGE_MIN)) / (max - min); - - // Put a floor on the response times so we don't have extreme outliers - // Better visuals - normalizedResponseTime = Math.max( - RANGE_MIN, - Math.min(RANGE_MAX, normalizedResponseTime) - ); - return { - ...check, - responseTime: normalizedResponseTime, - }; - }); - - return normalizedChecks; - } else { - return checks; - } -}; +import { NormalizeData } from "../ChartUtils"; const ResponseTimeChart = ({ checks = [] }) => { - const normalizedChecks = normalizeData(checks); + const normalizedChecks = NormalizeData(checks); return (