bento-charts
Version:
Charts library for Bento-platform
38 lines (30 loc) • 1.1 kB
text/typescript
import { useMemo } from 'react';
import { RADIAN } from '../constants/chartConstants';
import type { CategoricalChartDataWithTransforms } from '../types/chartTypes';
export const polarToCartesian = (cx: number, cy: number, radius: number, angle: number) => {
return {
x: cx + Math.cos(-RADIAN * angle) * radius,
y: cy + Math.sin(-RADIAN * angle) * radius,
};
};
export const useTransformedChartData = (
{
data: originalData,
preFilter,
dataMap,
postFilter,
removeEmpty: origRemoveEmpty,
}: CategoricalChartDataWithTransforms,
defaultRemoveEmpty = true,
sortY = false
) =>
useMemo(() => {
const removeEmpty = origRemoveEmpty ?? defaultRemoveEmpty;
let data = [...originalData];
if (preFilter) data = data.filter(preFilter);
if (dataMap) data = data.map(dataMap);
if (postFilter) data = data.filter(postFilter);
if (removeEmpty) data = data.filter((e) => e.y !== 0);
if (sortY) data.sort((a, b) => a.y - b.y);
return data;
}, [dataMap, defaultRemoveEmpty, originalData, origRemoveEmpty, preFilter, postFilter, sortY]);