fix: calculate country visitors share relative to total

as opposed to relative to the top-10 countries shown in the breakdown
This commit is contained in:
Dan Kotov 2026-01-11 15:53:57 -05:00
parent 860e6390f1
commit cd1ee8461a
3 changed files with 78 additions and 18 deletions

View file

@ -40,21 +40,25 @@ export function MetricsTable({
const filteredData = useMemo(() => {
if (data) {
let items = data as any[];
// Handle both old format (array) and new format ({ data, total })
const items = Array.isArray(data) ? data : data.data;
const total = Array.isArray(data) ? undefined : data.total;
let filtered = items as any[];
if (dataFilter) {
if (Array.isArray(dataFilter)) {
items = dataFilter.reduce((arr, filter) => {
filtered = dataFilter.reduce((arr, filter) => {
return filter(arr);
}, items);
}, filtered);
} else {
items = dataFilter(items);
filtered = dataFilter(filtered);
}
}
items = percentFilter(items);
filtered = percentFilter(filtered, total);
return items.map(({ x, y, z, ...props }) => ({ label: x, count: y, percent: z, ...props }));
return filtered.map(({ x, y, z, ...props }) => ({ label: x, count: y, percent: z, ...props }));
}
return [];
}, [data, dataFilter, limit, type]);