2024-08-19 16:35:22 +00:00
|
|
|
import { useMessages } from 'components/hooks';
|
|
|
|
|
import useWebsiteSessionStats from 'components/hooks/queries/useWebsiteSessionStats';
|
2024-08-07 07:10:25 +00:00
|
|
|
import WebsiteDateFilter from 'components/input/WebsiteDateFilter';
|
|
|
|
|
import MetricCard from 'components/metrics/MetricCard';
|
2024-08-19 16:35:22 +00:00
|
|
|
import MetricsBar from 'components/metrics/MetricsBar';
|
2024-08-07 07:10:25 +00:00
|
|
|
import { formatLongNumber } from 'lib/format';
|
2024-08-19 16:35:22 +00:00
|
|
|
import { Flexbox } from 'react-basics';
|
2024-08-07 07:10:25 +00:00
|
|
|
|
|
|
|
|
export function SessionsMetricsBar({ websiteId }: { websiteId: string }) {
|
|
|
|
|
const { formatMessage, labels } = useMessages();
|
2024-08-19 16:35:22 +00:00
|
|
|
const { data, isLoading, isFetched, error } = useWebsiteSessionStats(websiteId);
|
2024-08-07 07:10:25 +00:00
|
|
|
|
|
|
|
|
return (
|
2024-08-08 05:39:36 +00:00
|
|
|
<Flexbox direction="row" justifyContent="space-between" style={{ minHeight: 120 }}>
|
|
|
|
|
<MetricsBar isLoading={isLoading} isFetched={isFetched} error={error}>
|
|
|
|
|
<MetricCard
|
|
|
|
|
value={data?.visitors?.value}
|
|
|
|
|
label={formatMessage(labels.visitors)}
|
|
|
|
|
formatValue={formatLongNumber}
|
|
|
|
|
/>
|
|
|
|
|
<MetricCard
|
|
|
|
|
value={data?.visits?.value}
|
|
|
|
|
label={formatMessage(labels.visits)}
|
|
|
|
|
formatValue={formatLongNumber}
|
|
|
|
|
/>
|
|
|
|
|
<MetricCard
|
|
|
|
|
value={data?.pageviews?.value}
|
|
|
|
|
label={formatMessage(labels.views)}
|
|
|
|
|
formatValue={formatLongNumber}
|
|
|
|
|
/>
|
|
|
|
|
<MetricCard
|
|
|
|
|
value={data?.countries?.value}
|
|
|
|
|
label={formatMessage(labels.countries)}
|
|
|
|
|
formatValue={formatLongNumber}
|
|
|
|
|
/>
|
|
|
|
|
</MetricsBar>
|
2024-08-07 07:10:25 +00:00
|
|
|
<WebsiteDateFilter websiteId={websiteId} />
|
|
|
|
|
</Flexbox>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default SessionsMetricsBar;
|