/** * 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}
`)}
`; }