import { useMemo } from 'react'; import { LoadingPanel } from '@/components/common/LoadingPanel'; import { useDateRange, useTimezone } from '@/components/hooks'; import { useWebsitePageviewsQuery } from '@/components/hooks/queries/useWebsitePageviewsQuery'; import { PageviewsChart } from '@/components/metrics/PageviewsChart'; export function WebsiteChart({ websiteId, compareMode, }: { websiteId: string; compareMode?: boolean; }) { const { timezone } = useTimezone(); const { dateRange, dateCompare } = useDateRange({ timezone: timezone }); const { startDate, endDate, unit, value } = dateRange; const { data, isLoading, isFetching, error } = useWebsitePageviewsQuery({ websiteId, compare: compareMode ? dateCompare?.compare : undefined, }); const { pageviews, sessions, compare } = (data || {}) as any; const chartData = useMemo(() => { if (!data) { return { pageviews: [], sessions: [] }; } return { pageviews, sessions, ...(compare && { compare: { pageviews: pageviews.map(({ x }, i) => ({ x, y: compare.pageviews[i]?.y, d: compare.pageviews[i]?.x, })), sessions: sessions.map(({ x }, i) => ({ x, y: compare.sessions[i]?.y, d: compare.sessions[i]?.x, })), }, }), }; }, [data, startDate, endDate, unit]); return ( ); }