diff --git a/pwa/app/components/molecules/Loader.tsx b/pwa/app/components/molecules/Loader.tsx new file mode 100644 index 0000000000000000000000000000000000000000..38c38e7ab2e5c73e9c129389f69409e988ab467b --- /dev/null +++ b/pwa/app/components/molecules/Loader.tsx @@ -0,0 +1,7 @@ +export default function Loader() { + return ( +
+
+
+ ) +} diff --git a/pwa/app/components/tabs/points.tsx b/pwa/app/components/tabs/points.tsx index 62b9146616448a8fdab2a261f370faf1eff390b7..654b5f89ed54fb2931f330a7ac67b0118c2c27dd 100644 --- a/pwa/app/components/tabs/points.tsx +++ b/pwa/app/components/tabs/points.tsx @@ -8,6 +8,7 @@ ChartJS.register(LinearScale, PointElement, Tooltip, Legend) import { searchDepartments, getCorrelation, type Department, type CorrelationPoint } from '../../services/points.services' import { TAX_TYPES, YEARS } from '../../constants' import ErrorDiv from '../molecules/ErrorDiv' +import Loader from '../molecules/Loader' export default function Points() { // Department search autocomplete results from API @@ -235,9 +236,11 @@ export default function Points() {
+ {loading && } + {error && } - {!error && data.length > 0 && ( + {!loading && !error && data.length > 0 && ( <>

diff --git a/pwa/app/components/tabs/temporal.tsx b/pwa/app/components/tabs/temporal.tsx index 71650635af59327cd3aaeb721e60e2f68c5da282..60befb89ee9e24dde7835f52fe9471fe518b18f6 100644 --- a/pwa/app/components/tabs/temporal.tsx +++ b/pwa/app/components/tabs/temporal.tsx @@ -5,6 +5,7 @@ import { LineChart, Line, XAxis, YAxis, Tooltip, Legend, ResponsiveContainer, Ca import { getTimeSeries, type TimeSeriesData } from '../../services/temporal.services' import { TAX_TYPES, YEARS, COLORS } from '../../constants' import ErrorDiv from '../molecules/ErrorDiv' +import Loader from '../molecules/Loader' interface TemporalProps { regions: string[] @@ -153,21 +154,41 @@ export default function Temporal({ regions }: TemporalProps) {

)} + {loading && } + {error && } - {!error && chartData.length > 0 && ( + {!loading && !error && chartData.length > 0 && ( `${v}%`} /> { + if (!payload || payload.length === 0) return null + return ( +
+

{label}

+ {[...payload].sort((a, b) => Number(b.value) - Number(a.value)).map(item => ( +

+ {item.name} : {item.value}% +

+ ))} +
+ ) }} - formatter={(value, name) => [`${value}%`, name]} + wrapperStyle={{ zIndex: 10, pointerEvents: 'auto' }} />