From 1f01c0678753407994bae9694b789e7f01834131 Mon Sep 17 00:00:00 2001 From: PirvuCatalin Date: Mon, 12 May 2025 18:31:22 +0300 Subject: [PATCH] feat: add events page filters --- .../[websiteId]/events/EventsMetricsBar.tsx | 17 +++++++++++++++-- .../websites/[websiteId]/events/EventsPage.tsx | 15 +++++++++++++-- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/app/(main)/websites/[websiteId]/events/EventsMetricsBar.tsx b/src/app/(main)/websites/[websiteId]/events/EventsMetricsBar.tsx index e90a7790a..2d93772dd 100644 --- a/src/app/(main)/websites/[websiteId]/events/EventsMetricsBar.tsx +++ b/src/app/(main)/websites/[websiteId]/events/EventsMetricsBar.tsx @@ -5,8 +5,18 @@ import MetricCard from '@/components/metrics/MetricCard'; import MetricsBar from '@/components/metrics/MetricsBar'; import { formatLongNumber } from '@/lib/format'; import { Flexbox } from 'react-basics'; +import WebsiteFilterButton from '../WebsiteFilterButton'; +import styles from '../WebsiteMetricsBar.module.css'; -export function EventsMetricsBar({ websiteId }: { websiteId: string }) { +export function EventsMetricsBar({ + websiteId, + compareMode = false, + showFilter = false, +}: { + websiteId: string; + compareMode?: boolean; + showFilter?: boolean; +}) { const { formatMessage, labels } = useMessages(); const { data, isLoading, isFetched, error } = useWebsiteSessionStats(websiteId); @@ -34,7 +44,10 @@ export function EventsMetricsBar({ websiteId }: { websiteId: string }) { formatValue={formatLongNumber} /> - +
+ {showFilter && } + +
); } diff --git a/src/app/(main)/websites/[websiteId]/events/EventsPage.tsx b/src/app/(main)/websites/[websiteId]/events/EventsPage.tsx index 285a230e8..7ae212066 100644 --- a/src/app/(main)/websites/[websiteId]/events/EventsPage.tsx +++ b/src/app/(main)/websites/[websiteId]/events/EventsPage.tsx @@ -5,24 +5,35 @@ import EventsMetricsBar from './EventsMetricsBar'; import EventsChart from '@/components/metrics/EventsChart'; import { GridRow } from '@/components/layout/Grid'; import EventsTable from '@/components/metrics/EventsTable'; -import { useMessages } from '@/components/hooks'; +import FilterTags from '@/components/metrics/FilterTags'; +import { useMessages, useNavigation } from '@/components/hooks'; import { Item, Tabs } from 'react-basics'; import { useState } from 'react'; import EventProperties from './EventProperties'; +import { FILTER_COLUMNS } from '@/lib/constants'; export default function EventsPage({ websiteId }) { const [label, setLabel] = useState(null); const [tab, setTab] = useState('activity'); const { formatMessage, labels } = useMessages(); + const { query } = useNavigation(); const handleLabelClick = (value: string) => { setLabel(value !== label ? value : ''); }; + const params = Object.keys(query).reduce((obj, key) => { + if (FILTER_COLUMNS[key]) { + obj[key] = query[key]; + } + return obj; + }, {}); + return ( <> - + +