mirror of
https://github.com/umami-software/umami.git
synced 2026-02-10 23:57:12 +01:00
Fixed event search. Removed session time from profile.
This commit is contained in:
parent
1e52eeb0f0
commit
78728b8706
5 changed files with 37 additions and 40 deletions
|
|
@ -10,22 +10,24 @@ export function SessionData({ websiteId, sessionId }: { websiteId: string; sessi
|
|||
const { data, ...query } = useSessionData(websiteId, sessionId);
|
||||
|
||||
return (
|
||||
<LoadingPanel className={styles.data} {...query} data={data}>
|
||||
<>
|
||||
<div className={styles.header}>{formatMessage(labels.properties)}</div>
|
||||
{!data?.length && <Empty className={styles.empty} />}
|
||||
{data?.map(({ dataKey, dataType, stringValue }) => {
|
||||
return (
|
||||
<div key={dataKey}>
|
||||
<div className={styles.label}>
|
||||
<div className={styles.name}>
|
||||
<TextOverflow>{dataKey}</TextOverflow>
|
||||
<LoadingPanel className={styles.data} {...query} data={data}>
|
||||
{!data?.length && <Empty className={styles.empty} />}
|
||||
{data?.map(({ dataKey, dataType, stringValue }) => {
|
||||
return (
|
||||
<div key={dataKey}>
|
||||
<div className={styles.label}>
|
||||
<div className={styles.name}>
|
||||
<TextOverflow>{dataKey}</TextOverflow>
|
||||
</div>
|
||||
<div className={styles.type}>{DATA_TYPES[dataType]}</div>
|
||||
</div>
|
||||
<div className={styles.type}>{DATA_TYPES[dataType]}</div>
|
||||
<div className={styles.value}>{stringValue}</div>
|
||||
</div>
|
||||
<div className={styles.value}>{stringValue}</div>
|
||||
</div>
|
||||
);
|
||||
})}
|
||||
</LoadingPanel>
|
||||
);
|
||||
})}
|
||||
</LoadingPanel>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,31 +1,15 @@
|
|||
import { useMessages } from 'components/hooks';
|
||||
import MetricCard from 'components/metrics/MetricCard';
|
||||
import MetricsBar from 'components/metrics/MetricsBar';
|
||||
import { formatShortTime } from 'lib/format';
|
||||
|
||||
export function SessionStats({ data }) {
|
||||
const { formatMessage, labels } = useMessages();
|
||||
const duration = (new Date(data?.lastAt).getTime() - new Date(data?.firstAt).getTime()) / 1000;
|
||||
let dateFormat;
|
||||
|
||||
if (duration > 86400) {
|
||||
dateFormat = ['d', 'm'];
|
||||
} else if (duration > 3600) {
|
||||
dateFormat = ['h', 'm'];
|
||||
} else {
|
||||
dateFormat = ['m', 's'];
|
||||
}
|
||||
|
||||
return (
|
||||
<MetricsBar isFetched={true}>
|
||||
<MetricCard label={formatMessage(labels.visits)} value={data?.visits} />
|
||||
<MetricCard label={formatMessage(labels.views)} value={data?.views} />
|
||||
<MetricCard label={formatMessage(labels.events)} value={data?.events} />
|
||||
<MetricCard
|
||||
label={formatMessage(labels.sessionDuration)}
|
||||
value={duration}
|
||||
formatValue={n => `${+n < 0 ? '-' : ''}${formatShortTime(Math.abs(~~n), dateFormat, ' ')}`}
|
||||
/>
|
||||
</MetricsBar>
|
||||
);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue