import { MainLayout } from "@/components/layouts/MainLayout"; import { Container } from "@/components/Container"; import { api } from "@/utils/api"; import Link from "next/link"; import { PageTitle } from "@/components/PageTitle"; import { useOrganizationParams } from "@/hooks/useOrganizationParams"; import { Suspense, useMemo, useState } from "react"; import { createServerSideProps } from "@/server/getServerSideProps"; import { Chart } from "@/components/report/chart"; import { timeRanges } from "@/utils/constants"; import { type IChartRange } from "@/types"; import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"; import { getRangeLabel } from "@/utils/getRangeLabel"; 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 && (
{chartRange} {range && {getRangeLabel(range)}}
)}
); })}
); }