import { useMemo, useState } from 'react'; import { Container } from '@/components/Container'; import { MainLayout } from '@/components/layouts/MainLayout'; import { PageTitle } from '@/components/PageTitle'; import { LazyChart } from '@/components/report/chart/LazyChart'; import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group'; import { useOrganizationParams } from '@/hooks/useOrganizationParams'; import { createServerSideProps } from '@/server/getServerSideProps'; import type { IChartRange } from '@/types'; import { api } from '@/utils/api'; import { cn } from '@/utils/cn'; import { timeRanges } from '@/utils/constants'; import { getRangeLabel } from '@/utils/getRangeLabel'; import Link from 'next/link'; export const getServerSideProps = createServerSideProps(); export default function Dashboard() { const params = useOrganizationParams(); const query = api.report.list.useQuery({ projectSlug: params.project, dashboardSlug: params.dashboard, }); const dashboard = query.data?.dashboard ?? null; const reports = useMemo(() => { return query.data?.reports ?? []; }, [query]); const [range, setRange] = useState(null); return ( {dashboard?.name} {timeRanges.map((item) => { return ( { setRange((p) => (p === item.range ? null : item.range)); }} > {item.title} ); })}
{reports.map((report) => { const chartRange = getRangeLabel(report.range); return (
{report.name}
{chartRange !== null && (
{chartRange} {range !== null && {getRangeLabel(range)}}
)}
); })}
); }