mirror of
https://github.com/umami-software/umami.git
synced 2026-02-20 04:25:39 +01:00
Update WebsiteMetricsBar.tsx
This commit is contained in:
parent
cb0210a72c
commit
4e07e70941
1 changed files with 33 additions and 7 deletions
|
|
@ -1,14 +1,15 @@
|
|||
import classNames from 'classnames';
|
||||
import { useDateRange, useMessages, useSticky } from 'components/hooks';
|
||||
import { useDateRange, useLocale, useMessages, useSticky } from 'components/hooks';
|
||||
import WebsiteDateFilter from 'components/input/WebsiteDateFilter';
|
||||
import MetricCard from 'components/metrics/MetricCard';
|
||||
import MetricsBar from 'components/metrics/MetricsBar';
|
||||
import { formatShortTime, formatLongNumber } from 'lib/format';
|
||||
import { formatShortTime } from 'lib/format';
|
||||
import WebsiteFilterButton from './WebsiteFilterButton';
|
||||
import useWebsiteStats from 'components/hooks/queries/useWebsiteStats';
|
||||
import styles from './WebsiteMetricsBar.module.css';
|
||||
import { Dropdown, Item } from 'react-basics';
|
||||
import useStore, { setWebsiteDateCompare } from 'store/websites';
|
||||
import { type FormatNumberOptions, useIntl } from 'react-intl';
|
||||
|
||||
export function WebsiteMetricsBar({
|
||||
websiteId,
|
||||
|
|
@ -32,8 +33,21 @@ export function WebsiteMetricsBar({
|
|||
compareMode && dateCompare,
|
||||
);
|
||||
const isAllTime = dateRange.value === 'all';
|
||||
const { locale } = useLocale();
|
||||
const intl = useIntl();
|
||||
|
||||
const { pageviews, visitors, visits, bounces, totaltime } = data || {};
|
||||
const optionsNumber: FormatNumberOptions = { notation: 'compact', maximumFractionDigits: 2 };
|
||||
const optionsSmallNumber: FormatNumberOptions = { notation: 'compact' };
|
||||
const optionsPercent: FormatNumberOptions = { style: 'percent' };
|
||||
const minimum = {
|
||||
'de-CH': 1000000,
|
||||
'de-DE': 1000000,
|
||||
'it-IT': 1000000,
|
||||
'ja-JP': 10000,
|
||||
'zh-CN': 10000,
|
||||
'zh-TW': 10000,
|
||||
};
|
||||
|
||||
const metrics = data
|
||||
? [
|
||||
|
|
@ -41,19 +55,31 @@ export function WebsiteMetricsBar({
|
|||
...pageviews,
|
||||
label: formatMessage(labels.views),
|
||||
change: pageviews.value - pageviews.prev,
|
||||
formatValue: formatLongNumber,
|
||||
formatValue: (n: number) =>
|
||||
intl.formatNumber(
|
||||
+n,
|
||||
+n < (minimum[locale] || 1000) ? optionsSmallNumber : optionsNumber,
|
||||
),
|
||||
},
|
||||
{
|
||||
...visits,
|
||||
label: formatMessage(labels.visits),
|
||||
change: visits.value - visits.prev,
|
||||
formatValue: formatLongNumber,
|
||||
formatValue: (n: number) =>
|
||||
intl.formatNumber(
|
||||
+n,
|
||||
+n < (minimum[locale] || 1000) ? optionsSmallNumber : optionsNumber,
|
||||
),
|
||||
},
|
||||
{
|
||||
...visitors,
|
||||
label: formatMessage(labels.visitors),
|
||||
change: visitors.value - visitors.prev,
|
||||
formatValue: formatLongNumber,
|
||||
formatValue: (n: number) =>
|
||||
intl.formatNumber(
|
||||
+n,
|
||||
+n < (minimum[locale] || 1000) ? optionsSmallNumber : optionsNumber,
|
||||
),
|
||||
},
|
||||
{
|
||||
label: formatMessage(labels.bounceRate),
|
||||
|
|
@ -62,7 +88,7 @@ export function WebsiteMetricsBar({
|
|||
change:
|
||||
(Math.min(visits.value, bounces.value) / visits.value) * 100 -
|
||||
(Math.min(visits.prev, bounces.prev) / visits.prev) * 100,
|
||||
formatValue: n => Math.round(+n) + '%',
|
||||
formatValue: (n: number) => intl.formatNumber(+n / 100, optionsPercent),
|
||||
reverseColors: true,
|
||||
},
|
||||
{
|
||||
|
|
@ -70,7 +96,7 @@ export function WebsiteMetricsBar({
|
|||
value: totaltime.value / visits.value,
|
||||
prev: totaltime.prev / visits.prev,
|
||||
change: totaltime.value / visits.value - totaltime.prev / visits.prev,
|
||||
formatValue: n =>
|
||||
formatValue: (n: number) =>
|
||||
`${+n < 0 ? '-' : ''}${formatShortTime(Math.abs(~~n), ['m', 's'], ' ')}`,
|
||||
},
|
||||
]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue