diff --git a/apps/start/src/components/report-chart/area/index.tsx b/apps/start/src/components/report-chart/area/index.tsx index fea77587..e4f5052e 100644 --- a/apps/start/src/components/report-chart/area/index.tsx +++ b/apps/start/src/components/report-chart/area/index.tsx @@ -1,7 +1,6 @@ import { useTRPC } from '@/integrations/trpc/react'; import { keepPreviousData, useQuery } from '@tanstack/react-query'; -import { useOverviewOptions } from '@/components/overview/useOverviewOptions'; import { AspectContainer } from '../aspect-container'; import { ReportChartEmpty } from '../common/empty'; import { ReportChartError } from '../common/error'; @@ -12,18 +11,12 @@ import { Chart } from './chart'; export function ReportAreaChart() { const { isLazyLoading, report, shareId } = useReportChartContext(); const trpc = useTRPC(); - const { range, startDate, endDate, interval } = useOverviewOptions(); const res = useQuery( trpc.chart.chart.queryOptions( { ...report, shareId, - reportId: 'id' in report ? report.id : undefined, - range: range ?? report.range, - startDate: startDate ?? report.startDate, - endDate: endDate ?? report.endDate, - interval: interval ?? report.interval, }, { placeholderData: keepPreviousData, diff --git a/apps/start/src/components/report-chart/bar/index.tsx b/apps/start/src/components/report-chart/bar/index.tsx index 38855bde..d6f46352 100644 --- a/apps/start/src/components/report-chart/bar/index.tsx +++ b/apps/start/src/components/report-chart/bar/index.tsx @@ -1,7 +1,6 @@ import { useTRPC } from '@/integrations/trpc/react'; import { keepPreviousData, useQuery } from '@tanstack/react-query'; -import { useOverviewOptions } from '@/components/overview/useOverviewOptions'; import { cn } from '@/utils/cn'; import { AspectContainer } from '../aspect-container'; import { ReportChartEmpty } from '../common/empty'; @@ -12,18 +11,12 @@ import { Chart } from './chart'; export function ReportBarChart() { const { isLazyLoading, report, shareId } = useReportChartContext(); const trpc = useTRPC(); - const { range, startDate, endDate, interval } = useOverviewOptions(); const res = useQuery( trpc.chart.aggregate.queryOptions( { ...report, shareId, - reportId: 'id' in report ? report.id : undefined, - range: range ?? report.range, - startDate: startDate ?? report.startDate, - endDate: endDate ?? report.endDate, - interval: interval ?? report.interval, }, { placeholderData: keepPreviousData, diff --git a/apps/start/src/components/report-chart/conversion/index.tsx b/apps/start/src/components/report-chart/conversion/index.tsx index a594b5cb..b099c141 100644 --- a/apps/start/src/components/report-chart/conversion/index.tsx +++ b/apps/start/src/components/report-chart/conversion/index.tsx @@ -1,7 +1,6 @@ import { useTRPC } from '@/integrations/trpc/react'; import { keepPreviousData, useQuery } from '@tanstack/react-query'; -import { useOverviewOptions } from '@/components/overview/useOverviewOptions'; import { cn } from '@/utils/cn'; import { AspectContainer } from '../aspect-container'; import { ReportChartEmpty } from '../common/empty'; @@ -14,18 +13,11 @@ import { Summary } from './summary'; export function ReportConversionChart() { const { isLazyLoading, report, shareId } = useReportChartContext(); const trpc = useTRPC(); - const { range, startDate, endDate, interval } = useOverviewOptions(); - console.log(report.limit); const res = useQuery( trpc.chart.conversion.queryOptions( { ...report, shareId, - reportId: 'id' in report ? report.id : undefined, - range: range ?? report.range, - startDate: startDate ?? report.startDate, - endDate: endDate ?? report.endDate, - interval: interval ?? report.interval, }, { placeholderData: keepPreviousData, diff --git a/apps/start/src/components/report-chart/histogram/index.tsx b/apps/start/src/components/report-chart/histogram/index.tsx index e3c2b384..a2f7f78e 100644 --- a/apps/start/src/components/report-chart/histogram/index.tsx +++ b/apps/start/src/components/report-chart/histogram/index.tsx @@ -1,7 +1,6 @@ import { useTRPC } from '@/integrations/trpc/react'; import { keepPreviousData, useQuery } from '@tanstack/react-query'; -import { useOverviewOptions } from '@/components/overview/useOverviewOptions'; import { AspectContainer } from '../aspect-container'; import { ReportChartEmpty } from '../common/empty'; import { ReportChartError } from '../common/error'; @@ -12,18 +11,12 @@ import { Chart } from './chart'; export function ReportHistogramChart() { const { isLazyLoading, report, shareId } = useReportChartContext(); const trpc = useTRPC(); - const { range, startDate, endDate, interval } = useOverviewOptions(); const res = useQuery( trpc.chart.chart.queryOptions( { ...report, shareId, - reportId: 'id' in report ? report.id : undefined, - range: range ?? report.range, - startDate: startDate ?? report.startDate, - endDate: endDate ?? report.endDate, - interval: interval ?? report.interval, }, { placeholderData: keepPreviousData, diff --git a/apps/start/src/components/report-chart/line/index.tsx b/apps/start/src/components/report-chart/line/index.tsx index 5b2c90a1..b83f37b1 100644 --- a/apps/start/src/components/report-chart/line/index.tsx +++ b/apps/start/src/components/report-chart/line/index.tsx @@ -1,8 +1,6 @@ import { useTRPC } from '@/integrations/trpc/react'; import { keepPreviousData, useQuery } from '@tanstack/react-query'; -import { cn } from '@/utils/cn'; -import { useOverviewOptions } from '@/components/overview/useOverviewOptions'; import { AspectContainer } from '../aspect-container'; import { ReportChartEmpty } from '../common/empty'; import { ReportChartError } from '../common/error'; @@ -13,18 +11,11 @@ import { Chart } from './chart'; export function ReportLineChart() { const { isLazyLoading, report, shareId } = useReportChartContext(); const trpc = useTRPC(); - const { range, startDate, endDate, interval } = useOverviewOptions(); - const res = useQuery( trpc.chart.chart.queryOptions( { ...report, shareId, - reportId: 'id' in report ? report.id : undefined, - range: range ?? report.range, - startDate: startDate ?? report.startDate, - endDate: endDate ?? report.endDate, - interval: interval ?? report.interval, }, { placeholderData: keepPreviousData, diff --git a/apps/start/src/components/report-chart/map/index.tsx b/apps/start/src/components/report-chart/map/index.tsx index 8dd256f7..2c4b2663 100644 --- a/apps/start/src/components/report-chart/map/index.tsx +++ b/apps/start/src/components/report-chart/map/index.tsx @@ -1,7 +1,6 @@ import { useTRPC } from '@/integrations/trpc/react'; import { keepPreviousData, useQuery } from '@tanstack/react-query'; -import { useOverviewOptions } from '@/components/overview/useOverviewOptions'; import { AspectContainer } from '../aspect-container'; import { ReportChartEmpty } from '../common/empty'; import { ReportChartError } from '../common/error'; @@ -12,18 +11,12 @@ import { Chart } from './chart'; export function ReportMapChart() { const { isLazyLoading, report, shareId } = useReportChartContext(); const trpc = useTRPC(); - const { range, startDate, endDate, interval } = useOverviewOptions(); const res = useQuery( trpc.chart.chart.queryOptions( { ...report, shareId, - reportId: 'id' in report ? report.id : undefined, - range: range ?? report.range, - startDate: startDate ?? report.startDate, - endDate: endDate ?? report.endDate, - interval: interval ?? report.interval, }, { placeholderData: keepPreviousData, diff --git a/apps/start/src/components/report-chart/metric/index.tsx b/apps/start/src/components/report-chart/metric/index.tsx index 83447a7b..5171bcb9 100644 --- a/apps/start/src/components/report-chart/metric/index.tsx +++ b/apps/start/src/components/report-chart/metric/index.tsx @@ -1,7 +1,6 @@ import { useTRPC } from '@/integrations/trpc/react'; import { keepPreviousData, useQuery } from '@tanstack/react-query'; -import { useOverviewOptions } from '@/components/overview/useOverviewOptions'; import { AspectContainer } from '../aspect-container'; import { ReportChartEmpty } from '../common/empty'; import { ReportChartError } from '../common/error'; @@ -11,18 +10,12 @@ import { Chart } from './chart'; export function ReportMetricChart() { const { isLazyLoading, report, shareId } = useReportChartContext(); const trpc = useTRPC(); - const { range, startDate, endDate, interval } = useOverviewOptions(); const res = useQuery( trpc.chart.chart.queryOptions( { ...report, shareId, - reportId: 'id' in report ? report.id : undefined, - range: range ?? report.range, - startDate: startDate ?? report.startDate, - endDate: endDate ?? report.endDate, - interval: interval ?? report.interval, }, { placeholderData: keepPreviousData, diff --git a/apps/start/src/components/report-chart/pie/index.tsx b/apps/start/src/components/report-chart/pie/index.tsx index 7420ac6d..e7a37e99 100644 --- a/apps/start/src/components/report-chart/pie/index.tsx +++ b/apps/start/src/components/report-chart/pie/index.tsx @@ -1,7 +1,6 @@ import { useTRPC } from '@/integrations/trpc/react'; import { keepPreviousData, useQuery } from '@tanstack/react-query'; -import { useOverviewOptions } from '@/components/overview/useOverviewOptions'; import { AspectContainer } from '../aspect-container'; import { ReportChartEmpty } from '../common/empty'; import { ReportChartError } from '../common/error'; @@ -12,18 +11,12 @@ import { Chart } from './chart'; export function ReportPieChart() { const { isLazyLoading, report, shareId } = useReportChartContext(); const trpc = useTRPC(); - const { range, startDate, endDate, interval } = useOverviewOptions(); const res = useQuery( trpc.chart.aggregate.queryOptions( { ...report, shareId, - reportId: 'id' in report ? report.id : undefined, - range: range ?? report.range, - startDate: startDate ?? report.startDate, - endDate: endDate ?? report.endDate, - interval: interval ?? report.interval, }, { placeholderData: keepPreviousData, diff --git a/apps/start/src/components/report-chart/retention/index.tsx b/apps/start/src/components/report-chart/retention/index.tsx index 9619ab0e..09817c2a 100644 --- a/apps/start/src/components/report-chart/retention/index.tsx +++ b/apps/start/src/components/report-chart/retention/index.tsx @@ -53,7 +53,7 @@ export function ReportRetentionChart() { criteria, interval: overviewInterval ?? interval, shareId, - reportId: id, + id, }, { placeholderData: keepPreviousData, diff --git a/apps/start/src/routes/share.report.$shareId.tsx b/apps/start/src/routes/share.report.$shareId.tsx index dd88838a..3425f0db 100644 --- a/apps/start/src/routes/share.report.$shareId.tsx +++ b/apps/start/src/routes/share.report.$shareId.tsx @@ -4,6 +4,7 @@ import FullPageLoadingState from '@/components/full-page-loading-state'; import { LoginNavbar } from '@/components/login-navbar'; import { OverviewInterval } from '@/components/overview/overview-interval'; import { OverviewRange } from '@/components/overview/overview-range'; +import { useOverviewOptions } from '@/components/overview/useOverviewOptions'; import { ReportChart } from '@/components/report-chart'; import { useTRPC } from '@/integrations/trpc/react'; import { useSuspenseQuery } from '@tanstack/react-query'; @@ -63,6 +64,7 @@ function RouteComponent() { const { shareId } = Route.useParams(); const { header } = useSearch({ from: '/share/report/$shareId' }); const trpc = useTRPC(); + const { range, startDate, endDate, interval } = useOverviewOptions(); const shareQuery = useSuspenseQuery( trpc.share.report.queryOptions({ shareId, @@ -81,8 +83,6 @@ function RouteComponent() { const share = shareQuery.data; - console.log('share', share); - // Handle password protection if (share.password && !hasAccess) { return ; @@ -114,7 +114,16 @@ function RouteComponent() {
{share.report.name}
- +
diff --git a/packages/trpc/src/routers/chart.ts b/packages/trpc/src/routers/chart.ts index dacbb636..d7636569 100644 --- a/packages/trpc/src/routers/chart.ts +++ b/packages/trpc/src/routers/chart.ts @@ -27,10 +27,10 @@ import { } from '@openpanel/db'; import { type IChartEvent, - zReportInput, zChartSeries, zCriteria, zRange, + zReportInput, zTimeInterval, } from '@openpanel/validation'; @@ -338,7 +338,7 @@ export const chartRouter = createTRPCRouter({ zReportInput.and( z.object({ shareId: z.string().optional(), - reportId: z.string().optional(), + id: z.string().optional(), }), ), ) @@ -347,14 +347,14 @@ export const chartRouter = createTRPCRouter({ if (input.shareId) { // Require reportId when shareId provided - if (!input.reportId) { + if (!input.id) { throw new Error('reportId required with shareId'); } // Validate share access const shareValidation = await validateShareAccess( input.shareId, - input.reportId, + input.id, { cookies: ctx.cookies, session: ctx.session?.userId @@ -367,7 +367,7 @@ export const chartRouter = createTRPCRouter({ } // Fetch report and merge date overrides - const report = await getReportById(input.reportId); + const report = await getReportById(input.id); if (!report) { throw TRPCAccessError('Report not found'); } @@ -420,7 +420,7 @@ export const chartRouter = createTRPCRouter({ zReportInput.and( z.object({ shareId: z.string().optional(), - reportId: z.string().optional(), + id: z.string().optional(), }), ), ) @@ -429,14 +429,14 @@ export const chartRouter = createTRPCRouter({ if (input.shareId) { // Require reportId when shareId provided - if (!input.reportId) { + if (!input.id) { throw new Error('reportId required with shareId'); } // Validate share access const shareValidation = await validateShareAccess( input.shareId, - input.reportId, + input.id, { cookies: ctx.cookies, session: ctx.session?.userId @@ -449,7 +449,7 @@ export const chartRouter = createTRPCRouter({ } // Fetch report and merge date overrides - const report = await getReportById(input.reportId); + const report = await getReportById(input.id); if (!report) { throw TRPCAccessError('Report not found'); } @@ -549,23 +549,24 @@ export const chartRouter = createTRPCRouter({ zReportInput.and( z.object({ shareId: z.string().optional(), - reportId: z.string().optional(), + id: z.string().optional(), }), ), ) .query(async ({ input, ctx }) => { let chartInput = input; + console.log('input', input); if (input.shareId) { // Require reportId when shareId provided - if (!input.reportId) { + if (!input.id) { throw new Error('reportId required with shareId'); } // Validate share access const shareValidation = await validateShareAccess( input.shareId, - input.reportId, + input.id, ctx, ); @@ -574,7 +575,7 @@ export const chartRouter = createTRPCRouter({ } // Fetch report and merge date overrides - const report = await getReportById(input.reportId); + const report = await getReportById(input.id); if (!report) { throw TRPCAccessError('Report not found'); } @@ -609,7 +610,7 @@ export const chartRouter = createTRPCRouter({ zReportInput.and( z.object({ shareId: z.string().optional(), - reportId: z.string().optional(), + id: z.string().optional(), }), ), ) @@ -618,14 +619,14 @@ export const chartRouter = createTRPCRouter({ if (input.shareId) { // Require reportId when shareId provided - if (!input.reportId) { + if (!input.id) { throw new Error('reportId required with shareId'); } // Validate share access const shareValidation = await validateShareAccess( input.shareId, - input.reportId, + input.id, { cookies: ctx.cookies, session: ctx.session?.userId @@ -638,7 +639,7 @@ export const chartRouter = createTRPCRouter({ } // Fetch report and merge date overrides - const report = await getReportById(input.reportId); + const report = await getReportById(input.id); if (!report) { throw TRPCAccessError('Report not found'); } @@ -680,7 +681,7 @@ export const chartRouter = createTRPCRouter({ interval: zTimeInterval.default('day'), range: zRange, shareId: z.string().optional(), - reportId: z.string().optional(), + id: z.string().optional(), }), ) .query(async ({ input, ctx }) => { @@ -695,14 +696,14 @@ export const chartRouter = createTRPCRouter({ if (input.shareId) { // Require reportId when shareId provided - if (!input.reportId) { + if (!input.id) { throw new Error('reportId required with shareId'); } // Validate share access const shareValidation = await validateShareAccess( input.shareId, - input.reportId, + input.id, { cookies: ctx.cookies, session: ctx.session?.userId @@ -715,13 +716,14 @@ export const chartRouter = createTRPCRouter({ } // Fetch report and extract events - const report = await getReportById(input.reportId); + const report = await getReportById(input.id); if (!report) { throw TRPCAccessError('Report not found'); } projectId = report.projectId; - const retentionOptions = report.options?.type === 'retention' ? report.options : undefined; + const retentionOptions = + report.options?.type === 'retention' ? report.options : undefined; criteria = retentionOptions?.criteria ?? criteria; dateRange = input.range ?? report.range; startDate = input.startDate ?? report.startDate;