# Conflicts: # db/mysql/schema.prisma # package.json # pnpm-lock.yaml # src/app/(main)/reports/[reportId]/ReportBody.tsx # src/app/(main)/reports/[reportId]/ReportPage.tsx # src/app/(main)/reports/utm/UTMView.tsx # src/app/(main)/websites/[websiteId]/WebsiteMetricsBar.tsx # src/app/(main)/websites/[websiteId]/WebsiteTableView.tsx # src/app/(main)/websites/[websiteId]/events/EventsPage.tsx # src/app/api/reports/[reportId]/route.ts # src/app/api/websites/[websiteId]/metrics/route.ts # src/components/hooks/queries/useReport.ts # src/components/icons.ts # src/components/messages.ts # src/components/metrics/MetricsTable.module.css # src/components/metrics/MetricsTable.tsx # src/queries/sql/events/getEventMetrics.ts # src/queries/sql/reports/getUTM.ts
39 lines
925 B
TypeScript
39 lines
925 B
TypeScript
import { MetricsTable, MetricsTableProps } from './MetricsTable';
|
|
import { useMessages } from '@/components/hooks';
|
|
|
|
export interface EventsTableProps extends MetricsTableProps {
|
|
onLabelClick?: (value: string) => void;
|
|
}
|
|
|
|
export function EventsTable({ onLabelClick, ...props }: EventsTableProps) {
|
|
const { formatMessage, labels } = useMessages();
|
|
|
|
const handleDataLoad = (data: any) => {
|
|
props.onDataLoad?.(data);
|
|
};
|
|
|
|
const renderLabel = ({ x: label }) => {
|
|
if (onLabelClick) {
|
|
return (
|
|
<div onClick={() => onLabelClick(label)} style={{ cursor: 'pointer' }}>
|
|
{label}
|
|
</div>
|
|
);
|
|
}
|
|
|
|
return label;
|
|
};
|
|
|
|
return (
|
|
<MetricsTable
|
|
{...props}
|
|
title={formatMessage(labels.events)}
|
|
type="event"
|
|
metric={formatMessage(labels.actions)}
|
|
onDataLoad={handleDataLoad}
|
|
renderLabel={renderLabel}
|
|
allowDownload={false}
|
|
/>
|
|
);
|
|
}
|