import { useContext, useEffect, useState } from 'react'; import { DataTable, DataColumn } from '@umami/react-zen'; import { useFormat, useMessages } from '@/components/hooks'; import { ReportContext } from '../[reportId]/Report'; import { EmptyPlaceholder } from '@/components/common/EmptyPlaceholder'; import { formatShortTime } from '@/lib/format'; export function InsightsTable() { const [fields, setFields] = useState([]); const { report } = useContext(ReportContext); const { formatMessage, labels } = useMessages(); const { formatValue } = useFormat(); useEffect( () => { setFields(report?.parameters?.fields); }, // eslint-disable-next-line react-hooks/exhaustive-deps [report?.data], ); if (!fields || !report?.parameters) { return ; } return ( {fields.map(({ name, label }) => { return ( {row => formatValue(row[name], name)} ); })} {(row: any) => row?.views?.toLocaleString()} {(row: any) => row?.visits?.toLocaleString()} {(row: any) => row?.visitors?.toLocaleString()} {(row: any) => { const n = (Math.min(row?.visits, row?.bounces) / row?.visits) * 100; return Math.round(+n) + '%'; }} {(row: any) => { const n = row?.totaltime / row?.visits; return `${+n < 0 ? '-' : ''}${formatShortTime(Math.abs(~~n), ['m', 's'], ' ')}`; }} ); }