/**
* Admin > Monitoring > Stats
*/
const { html } = window;
const { useState, useEffect } = hooks;
export default function StatsSection() {
const [stats, setStats] = useState(null);
const [loading, setLoading] = useState(true);
useEffect(() => {
sw.api.admin.stats()
.then(d => setStats(d))
.catch(e => sw.toast(e.message, 'error'))
.finally(() => setLoading(false));
}, []);
if (loading) return html`
Loading\u2026
`;
if (!stats) return html`No stats available
`;
const cards = [
{ label: 'Users', value: stats.users },
{ label: 'Channels', value: stats.channels },
{ label: 'Messages', value: stats.messages },
{ label: 'Models', value: stats.models },
{ label: 'Providers', value: stats.providers },
{ label: 'Personas', value: stats.personas },
];
return html`
${cards.map(c => html`
${c.value != null ? c.value.toLocaleString() : '\u2014'}
${c.label}
`)}
`;
}