import { PieChart } from '@/components/charts/PieChart'; import { LoadingPanel } from '@/components/common/LoadingPanel'; import { Panel } from '@/components/common/Panel'; import { useMessages, useResultQuery } from '@/components/hooks'; import { ListTable } from '@/components/metrics/ListTable'; import { CHART_COLORS, UTM_PARAMS } from '@/lib/constants'; import { Column, Grid, Heading, Text } from '@umami/react-zen'; export interface UTMProps { websiteId: string; startDate: Date; endDate: Date; } export function UTM({ websiteId, startDate, endDate }: UTMProps) { const { formatMessage, labels } = useMessages(); const { data, error, isLoading } = useResultQuery('utm', { websiteId, startDate, endDate, }); return ( {data && ( {UTM_PARAMS.map(param => { const items = data?.[param]; const chartData = { labels: items.map(({ utm }) => utm), datasets: [ { data: items.map(({ views }) => views), backgroundColor: CHART_COLORS, borderWidth: 0, }, ], }; const total = items.reduce((sum, { views }) => { return +sum + +views; }, 0); return ( {param.replace(/^utm_/, '')} ({ label: utm, count: views, percent: (views / total) * 100, }))} /> ); })} )} ); }