diff --git a/apps/dashboard/src/components/report/chart/ReportAreaChart.tsx b/apps/dashboard/src/components/report/chart/ReportAreaChart.tsx index 27126d21..e89e35c5 100644 --- a/apps/dashboard/src/components/report/chart/ReportAreaChart.tsx +++ b/apps/dashboard/src/components/report/chart/ReportAreaChart.tsx @@ -91,7 +91,7 @@ export function ReportAreaChart({ type={lineType} isAnimationActive={true} strokeWidth={2} - dataKey={`${serie.index}:count`} + dataKey={`${serie.id}:count`} stroke={color} fill={`url(#color${color})`} stackId={'1'} diff --git a/apps/dashboard/src/components/report/chart/ReportHistogramChart.tsx b/apps/dashboard/src/components/report/chart/ReportHistogramChart.tsx index 1e8bd31b..8bc903e1 100644 --- a/apps/dashboard/src/components/report/chart/ReportHistogramChart.tsx +++ b/apps/dashboard/src/components/report/chart/ReportHistogramChart.tsx @@ -76,7 +76,7 @@ export function ReportHistogramChart({ diff --git a/apps/dashboard/src/components/report/chart/ReportLineChart.tsx b/apps/dashboard/src/components/report/chart/ReportLineChart.tsx index 8310c599..28ef0dc5 100644 --- a/apps/dashboard/src/components/report/chart/ReportLineChart.tsx +++ b/apps/dashboard/src/components/report/chart/ReportLineChart.tsx @@ -100,7 +100,7 @@ export function ReportLineChart({ name={serie.name} isAnimationActive={true} strokeWidth={2} - dataKey={`${serie.index}:count`} + dataKey={`${serie.id}:count`} stroke={getChartColor(serie.index)} /> {previous && ( @@ -112,7 +112,7 @@ export function ReportLineChart({ strokeWidth={1} dot={false} strokeDasharray={'6 6'} - dataKey={`${serie.index}:prev:count`} + dataKey={`${serie.id}:prev:count`} stroke={getChartColor(serie.index)} /> )} diff --git a/apps/dashboard/src/components/report/chart/ReportPieChart.tsx b/apps/dashboard/src/components/report/chart/ReportPieChart.tsx index 30cb63e8..2c08a94a 100644 --- a/apps/dashboard/src/components/report/chart/ReportPieChart.tsx +++ b/apps/dashboard/src/components/report/chart/ReportPieChart.tsx @@ -21,7 +21,7 @@ export function ReportPieChart({ data }: ReportPieChartProps) { const sum = series.reduce((acc, serie) => acc + serie.metrics.sum, 0); const pieData = series.map((serie) => ({ - id: serie.name, + id: serie.id, color: getChartColor(serie.index), index: serie.index, label: serie.name, diff --git a/apps/dashboard/src/components/report/sidebar/ReportEvents.tsx b/apps/dashboard/src/components/report/sidebar/ReportEvents.tsx index a735a94c..6bcc73a2 100644 --- a/apps/dashboard/src/components/report/sidebar/ReportEvents.tsx +++ b/apps/dashboard/src/components/report/sidebar/ReportEvents.tsx @@ -54,7 +54,7 @@ export function ReportEvents() {
{selectedEvents.map((event) => { return ( -
+
{event.id} { if (item.date === date) { if (item.previous) { - acc2[`${idx}:prev:count`] = item.previous.value; + acc2[`${serie.id}:prev:count`] = item.previous.value; } - acc2[`${idx}:count`] = item.count; - acc2[`${idx}:payload`] = { + acc2[`${serie.id}:count`] = item.count; + acc2[`${serie.id}:payload`] = { ...item, color: getChartColor(idx), } satisfies IRechartPayloadItem; diff --git a/packages/trpc/src/routers/chart.helpers.ts b/packages/trpc/src/routers/chart.helpers.ts index 44004c24..f2f98c61 100644 --- a/packages/trpc/src/routers/chart.helpers.ts +++ b/packages/trpc/src/routers/chart.helpers.ts @@ -631,5 +631,9 @@ export async function getSeriesFromEvents(input: IChartInput) { ) ).flat(); - return withFormula(input, series); + try { + return withFormula(input, series); + } catch (e) { + return series; + } } diff --git a/packages/trpc/src/routers/chart.ts b/packages/trpc/src/routers/chart.ts index fbec2314..e77aeb52 100644 --- a/packages/trpc/src/routers/chart.ts +++ b/packages/trpc/src/routers/chart.ts @@ -2,7 +2,7 @@ import { flatten, map, pipe, prop, sort, uniq } from 'ramda'; import { escape } from 'sqlstring'; import { z } from 'zod'; -import { average, max, min, round, sum } from '@openpanel/common'; +import { average, max, min, round, slug, sum } from '@openpanel/common'; import { chQuery, createSqlBuilder } from '@openpanel/db'; import { zChartInput } from '@openpanel/validation'; import type { IChartEvent, IChartInput } from '@openpanel/validation'; @@ -36,6 +36,7 @@ interface Metrics { } export interface IChartSerie { + id: string; name: string; event: IChartEvent; metrics: Metrics; @@ -217,6 +218,7 @@ export const chartRouter = createTRPCRouter({ }; return { + id: slug(serie.name), // TODO: Remove this (temporary fix for the frontend name: serie.name, event: { ...serie.event,