From cd269b3540fb5e3a988c1b59d3763db360b1fb34 Mon Sep 17 00:00:00 2001 From: Joe Carstairs Date: Tue, 17 Sep 2024 13:20:04 +0100 Subject: many, many changes --- gui/src/components/histogram/Histogram.tsx | 44 +++++++++++++----------------- 1 file changed, 19 insertions(+), 25 deletions(-) (limited to 'gui/src/components/histogram') diff --git a/gui/src/components/histogram/Histogram.tsx b/gui/src/components/histogram/Histogram.tsx index ee4b7b0..3a8309b 100644 --- a/gui/src/components/histogram/Histogram.tsx +++ b/gui/src/components/histogram/Histogram.tsx @@ -1,10 +1,18 @@ -import Category from "../../types/category"; +import { BalanceToBudgetRatio } from "../../types/balanceToBudgetRatio"; +import { Category } from "../../types/category"; import './Histogram.scss'; function Histogram({ categories }: Props) { - const maxAbsBalanceToBudgetRatio = Math.max( - ...categories.map((c) => Math.abs(c.balanceToBudgetRatio)) - ); + if (categories === null) { + return ( +

No categories to show

+ ); + } + + const balanceToBudgetRatioNormaliser = BalanceToBudgetRatio.makeNormaliser(...categories.map(c => c.balanceToBudgetRatio)); + for (const category of categories) { + category.balanceToBudgetRatio = balanceToBudgetRatioNormaliser(category.balanceToBudgetRatio); + } return ( @@ -19,27 +27,24 @@ function Histogram({ categories }: Props) { { categories - .sort((c1, c2) => c1.balanceToBudgetRatio - c2.balanceToBudgetRatio) - .map((category) => Row({ category, maxAbsBalanceToBudgetRatio })) + .sort((c1, c2) => BalanceToBudgetRatio.compare(c1.balanceToBudgetRatio, c2.balanceToBudgetRatio)) + .map((category) => Row({ category })) }
); } -function Row({ category, maxAbsBalanceToBudgetRatio }: RowProps) { - const normalisedRatio = category.balanceToBudgetRatio / maxAbsBalanceToBudgetRatio; - const variant = getRowVariant(new Number(normalisedRatio).valueOf()); - +function Row({ category }: RowProps) { return ( {category.name} - {category.balanceToBudgetRatio.toFixed(2)} + {category.balanceToBudgetRatio?.toString() ?? ''} @@ -48,23 +53,12 @@ function Row({ category, maxAbsBalanceToBudgetRatio }: RowProps) { ); } -function getRowVariant(balanceToBudgetRatio: number) { - if (balanceToBudgetRatio < 0) { - return 'arrears'; - } - if (balanceToBudgetRatio >= 1) { - return 'spend'; - } - return 'save'; -} - type Props = { - categories: Category[], + categories: Category[] | null, }; type RowProps = { category: Category, - maxAbsBalanceToBudgetRatio: number, }; export default Histogram; -- cgit v1.2.3