mirror of
https://github.com/kremalicious/umami.git
synced 2025-02-14 21:10:34 +01:00
Added map to sessions page.
This commit is contained in:
parent
9b005e11c0
commit
af64602951
@ -2,12 +2,17 @@
|
|||||||
import WebsiteHeader from '../WebsiteHeader';
|
import WebsiteHeader from '../WebsiteHeader';
|
||||||
import SessionsDataTable from './SessionsDataTable';
|
import SessionsDataTable from './SessionsDataTable';
|
||||||
import SessionsMetricsBar from './SessionsMetricsBar';
|
import SessionsMetricsBar from './SessionsMetricsBar';
|
||||||
|
import WorldMap from 'components/metrics/WorldMap';
|
||||||
|
import { GridRow } from 'components/layout/Grid';
|
||||||
|
|
||||||
export function SessionsPage({ websiteId }) {
|
export function SessionsPage({ websiteId }) {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<WebsiteHeader websiteId={websiteId} />
|
<WebsiteHeader websiteId={websiteId} />
|
||||||
<SessionsMetricsBar websiteId={websiteId} />
|
<SessionsMetricsBar websiteId={websiteId} />
|
||||||
|
<GridRow columns="one">
|
||||||
|
<WorldMap websiteId={websiteId} style={{ width: 800, margin: '0 auto' }} />
|
||||||
|
</GridRow>
|
||||||
<SessionsDataTable websiteId={websiteId} />
|
<SessionsDataTable websiteId={websiteId} />
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
@ -14,7 +14,13 @@ export function useTimezone() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const formatDate = (date: string, pattern: string) => {
|
const formatDate = (date: string, pattern: string) => {
|
||||||
return formatInTimeZone(date.split(' ').join('T') + 'Z', timezone, pattern);
|
return formatInTimeZone(
|
||||||
|
/^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$/.test(date)
|
||||||
|
? date
|
||||||
|
: date.split(' ').join('T') + 'Z',
|
||||||
|
timezone,
|
||||||
|
pattern,
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
return { timezone, saveTimezone, formatDate };
|
return { timezone, saveTimezone, formatDate };
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { useState, useMemo } from 'react';
|
import { useState, useMemo, HTMLAttributes } from 'react';
|
||||||
import { ComposableMap, Geographies, Geography, ZoomableGroup } from 'react-simple-maps';
|
import { ComposableMap, Geographies, Geography, ZoomableGroup } from 'react-simple-maps';
|
||||||
import classNames from 'classnames';
|
import classNames from 'classnames';
|
||||||
import { colord } from 'colord';
|
import { colord } from 'colord';
|
||||||
@ -16,11 +16,12 @@ export function WorldMap({
|
|||||||
websiteId,
|
websiteId,
|
||||||
data,
|
data,
|
||||||
className,
|
className,
|
||||||
|
...props
|
||||||
}: {
|
}: {
|
||||||
websiteId?: string;
|
websiteId?: string;
|
||||||
data?: any[];
|
data?: any[];
|
||||||
className?: string;
|
className?: string;
|
||||||
}) {
|
} & HTMLAttributes<HTMLDivElement>) {
|
||||||
const [tooltip, setTooltipPopup] = useState();
|
const [tooltip, setTooltipPopup] = useState();
|
||||||
const { theme, colors } = useTheme();
|
const { theme, colors } = useTheme();
|
||||||
const { locale } = useLocale();
|
const { locale } = useLocale();
|
||||||
@ -67,6 +68,7 @@ export function WorldMap({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
|
{...props}
|
||||||
className={classNames(styles.container, className)}
|
className={classNames(styles.container, className)}
|
||||||
data-tip=""
|
data-tip=""
|
||||||
data-for="world-map-tooltip"
|
data-for="world-map-tooltip"
|
||||||
|
@ -60,7 +60,7 @@ async function clickhouseQuery(websiteId: string, filters: QueryFilters, pagePar
|
|||||||
data: result.data.map((row: any) => {
|
data: result.data.map((row: any) => {
|
||||||
return {
|
return {
|
||||||
...row,
|
...row,
|
||||||
createdAt: row.firstAt,
|
createdAt: row.lastAt,
|
||||||
visits: Number(row.visits),
|
visits: Number(row.visits),
|
||||||
views: Number(row.views),
|
views: Number(row.views),
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user