mirror of
https://github.com/umami-software/umami.git
synced 2026-02-19 03:55:37 +01:00
feat: add events page filters
This commit is contained in:
parent
12cf66861c
commit
1f01c06787
2 changed files with 28 additions and 4 deletions
|
|
@ -5,8 +5,18 @@ import MetricCard from '@/components/metrics/MetricCard';
|
||||||
import MetricsBar from '@/components/metrics/MetricsBar';
|
import MetricsBar from '@/components/metrics/MetricsBar';
|
||||||
import { formatLongNumber } from '@/lib/format';
|
import { formatLongNumber } from '@/lib/format';
|
||||||
import { Flexbox } from 'react-basics';
|
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 { formatMessage, labels } = useMessages();
|
||||||
const { data, isLoading, isFetched, error } = useWebsiteSessionStats(websiteId);
|
const { data, isLoading, isFetched, error } = useWebsiteSessionStats(websiteId);
|
||||||
|
|
||||||
|
|
@ -34,7 +44,10 @@ export function EventsMetricsBar({ websiteId }: { websiteId: string }) {
|
||||||
formatValue={formatLongNumber}
|
formatValue={formatLongNumber}
|
||||||
/>
|
/>
|
||||||
</MetricsBar>
|
</MetricsBar>
|
||||||
<WebsiteDateFilter websiteId={websiteId} />
|
<div className={styles.actions}>
|
||||||
|
{showFilter && <WebsiteFilterButton websiteId={websiteId} />}
|
||||||
|
<WebsiteDateFilter websiteId={websiteId} showAllTime={!compareMode} />
|
||||||
|
</div>
|
||||||
</Flexbox>
|
</Flexbox>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,24 +5,35 @@ import EventsMetricsBar from './EventsMetricsBar';
|
||||||
import EventsChart from '@/components/metrics/EventsChart';
|
import EventsChart from '@/components/metrics/EventsChart';
|
||||||
import { GridRow } from '@/components/layout/Grid';
|
import { GridRow } from '@/components/layout/Grid';
|
||||||
import EventsTable from '@/components/metrics/EventsTable';
|
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 { Item, Tabs } from 'react-basics';
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
import EventProperties from './EventProperties';
|
import EventProperties from './EventProperties';
|
||||||
|
import { FILTER_COLUMNS } from '@/lib/constants';
|
||||||
|
|
||||||
export default function EventsPage({ websiteId }) {
|
export default function EventsPage({ websiteId }) {
|
||||||
const [label, setLabel] = useState(null);
|
const [label, setLabel] = useState(null);
|
||||||
const [tab, setTab] = useState('activity');
|
const [tab, setTab] = useState('activity');
|
||||||
const { formatMessage, labels } = useMessages();
|
const { formatMessage, labels } = useMessages();
|
||||||
|
const { query } = useNavigation();
|
||||||
|
|
||||||
const handleLabelClick = (value: string) => {
|
const handleLabelClick = (value: string) => {
|
||||||
setLabel(value !== label ? value : '');
|
setLabel(value !== label ? value : '');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const params = Object.keys(query).reduce((obj, key) => {
|
||||||
|
if (FILTER_COLUMNS[key]) {
|
||||||
|
obj[key] = query[key];
|
||||||
|
}
|
||||||
|
return obj;
|
||||||
|
}, {});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<WebsiteHeader websiteId={websiteId} />
|
<WebsiteHeader websiteId={websiteId} />
|
||||||
<EventsMetricsBar websiteId={websiteId} />
|
<FilterTags websiteId={websiteId} params={params} />
|
||||||
|
<EventsMetricsBar websiteId={websiteId} showFilter={true} />
|
||||||
<GridRow columns="two-one">
|
<GridRow columns="two-one">
|
||||||
<EventsChart websiteId={websiteId} focusLabel={label} />
|
<EventsChart websiteId={websiteId} focusLabel={label} />
|
||||||
<EventsTable
|
<EventsTable
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue