mirror of
https://github.com/umami-software/umami.git
synced 2026-02-22 21:45:36 +01:00
Updated realtime page.
This commit is contained in:
parent
8aa4192576
commit
ac9edb8b5f
11 changed files with 131 additions and 277 deletions
|
|
@ -0,0 +1,45 @@
|
|||
import thenby from 'thenby';
|
||||
import { percentFilter } from '@/lib/filters';
|
||||
import { ListTable } from '@/components/metrics/ListTable';
|
||||
import { useMessages, useWebsite } from '@/components/hooks';
|
||||
|
||||
export function RealtimePaths({ data }: { data: any }) {
|
||||
const website = useWebsite();
|
||||
const { formatMessage, labels } = useMessages();
|
||||
const { urls } = data || {};
|
||||
const limit = 15;
|
||||
|
||||
const renderLink = ({ label: x }) => {
|
||||
const domain = x.startsWith('/') ? website?.domain : '';
|
||||
return (
|
||||
<a href={`//${domain}${x}`} target="_blank" rel="noreferrer noopener">
|
||||
{x}
|
||||
</a>
|
||||
);
|
||||
};
|
||||
|
||||
const pages = percentFilter(
|
||||
Object.keys(urls)
|
||||
.map(key => {
|
||||
return {
|
||||
x: key,
|
||||
y: urls[key],
|
||||
};
|
||||
})
|
||||
.sort(thenby.firstBy('y', -1))
|
||||
.slice(0, limit),
|
||||
);
|
||||
|
||||
return (
|
||||
<ListTable
|
||||
title={formatMessage(labels.pages)}
|
||||
metric={formatMessage(labels.views)}
|
||||
renderLabel={renderLink}
|
||||
data={pages.map(({ x, y, z }: { x: string; y: number; z: number }) => ({
|
||||
label: x,
|
||||
count: y,
|
||||
percent: z,
|
||||
}))}
|
||||
/>
|
||||
);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue