diff --git a/website/components/ui/charts/chart.tsx b/website/components/ui/charts/chart.tsx index 6ea0b7e1..bcda0c24 100644 --- a/website/components/ui/charts/chart.tsx +++ b/website/components/ui/charts/chart.tsx @@ -1,4 +1,5 @@ -import { Area, AreaChart, CartesianGrid, ResponsiveContainer, Tooltip, XAxis, YAxis } from "recharts"; +import { Area, AreaChart, CartesianGrid, Label, ResponsiveContainer, Tooltip, XAxis, YAxis } from "recharts"; +import { ChartDataContextProvider, useChartData } from "contexts/chartData"; import React, { useEffect, useState } from "react"; import { generateColorID, generateColorURL } from "utils/color"; @@ -19,7 +20,8 @@ const granularities: Array = [ ] export const Chart = ({ endpoint }: { endpoint: string }) => { - const [granularity, setGranularity] = useState(granularities[0]); + const { granularity, setGranularity, yLabel } = useChartData(); + // const [granularity, setGranularity] = useState(granularities[0]); const [data, setData] = useState<{ services: string[], results: { __timestamp__: number, [key: string]: any }[] }>(null); const [resizeCounter, setResizeCounter] = useState(0); const { servicesColor, addColor } = useServicesColor(); @@ -92,7 +94,9 @@ export const Chart = ({ endpoint }: { endpoint: string }) => { const newDate = new Date(value * 1000) return getDateWithGranularity(newDate, granularity, strings.labels.months) }} /> - + + { diff --git a/website/components/ui/charts/tooltip.tsx b/website/components/ui/charts/tooltip.tsx index e1bf6ae6..c15273e3 100644 --- a/website/components/ui/charts/tooltip.tsx +++ b/website/components/ui/charts/tooltip.tsx @@ -1,10 +1,12 @@ import { getDateWithGranularity } from "utils/date"; +import { useChartData } from "contexts/chartData"; import { useLanguage } from "contexts/language"; import { useServicesColor } from "contexts/servicesColor"; export const CustomTooltip = ({ active, payload, label }) => { const { servicesColor } = useServicesColor(); const { strings } = useLanguage(); + const { granularity, unit } = useChartData(); if (active && payload && payload.length) { // console.log(payload) payload.sort((a: { value: number; }, b: { value: number; }) => { @@ -12,7 +14,7 @@ export const CustomTooltip = ({ active, payload, label }) => { }); return (
- {getDateWithGranularity(new Date(label * 1000), "day", strings.labels.months)} + {getDateWithGranularity(new Date(label * 1000), granularity, strings.labels.months)}
{ payload.map((item, index) => { @@ -21,6 +23,7 @@ export const CustomTooltip = ({ active, payload, label }) => { }}> {item.name}: {item.value} + {unit}
}) } diff --git a/website/contexts/chartData.tsx b/website/contexts/chartData.tsx new file mode 100644 index 00000000..21faed24 --- /dev/null +++ b/website/contexts/chartData.tsx @@ -0,0 +1,37 @@ +import React, { createContext, useContext, useState } from "react"; + +import { Granularity } from "types/granularity"; + +export const ChartDataContext = createContext<{ + granularity: Granularity + setGranularity: (granularity: Granularity) => any + unit: string + yLabel: string +}>(undefined); + +export const useChartData = () => useContext(ChartDataContext); + +export const ChartDataContextConsumer = ChartDataContext.Consumer; + +export interface ChartDataContextProps { + unit: string + yLabel: string + children +} + +export const ChartDataContextProvider = ({ children, unit, yLabel }: ChartDataContextProps) => { + const [granularity, setGranularity] = useState("hour"); + const [chartUnit, setUnit] = useState(unit); + const [chartYLabel, setYLabel] = useState(yLabel); + + + // SETTING THE VALUES + return + {children} + +} \ No newline at end of file diff --git a/website/pages/_app.tsx b/website/pages/_app.tsx index bda3a6a3..3544b6b6 100644 --- a/website/pages/_app.tsx +++ b/website/pages/_app.tsx @@ -3,15 +3,12 @@ import '../styles/globals.css' import type { AppProps } from 'next/app' import { LanguageContextProvider } from 'contexts/language' import { Layout } from 'components/common/layout' -import { ServicesColorContextProvider } from 'contexts/servicesColor' function MyApp({ Component, pageProps }: AppProps) { return - - - - - + + + } diff --git a/website/pages/stats.tsx b/website/pages/stats.tsx index 774782fa..fef0021a 100644 --- a/website/pages/stats.tsx +++ b/website/pages/stats.tsx @@ -1,25 +1,33 @@ import { Chart } from 'components/ui/charts/chart' +import { ChartDataContextProvider } from 'contexts/chartData' import type { NextPage } from 'next' import { SEO } from 'components/common/seo' +import { ServicesColorContextProvider } from 'contexts/servicesColor' import { useLanguage } from 'contexts/language' const Home: NextPage = () => { const { strings } = useLanguage(); - return
- + return +
+ -
-
-

{strings.heading.timeTakenForTranslation}

- -
-
-

{strings.heading.errorsCount}

- +
+
+

{strings.heading.timeTakenForTranslation}

+ + + +
+
+

{strings.heading.errorsCount}

+ + + +
-
+ } export default Home