diff --git a/web/src/routes/+page.svelte b/web/src/routes/+page.svelte index 8c3b4ba..a00234d 100644 --- a/web/src/routes/+page.svelte +++ b/web/src/routes/+page.svelte @@ -160,6 +160,20 @@ return set.size; }); + let uniqueIpCountByUser = $derived.by((): Record => { + const byUser: Record = {}; + for (const row of uniqueIps ?? []) { + const username = row.username ?? ''; + if (!username) continue; + const set = new Set(); + for (const ip of row.ips ?? []) { + if (ip.ip) set.add(ip.ip); + } + byUser[username] = set.size; + } + return byUser; + }); + let readOnlyNodes = $derived.by(() => { let n = 0; for (const s of fleet?.servers ?? []) { @@ -459,14 +473,30 @@ Топ пользователей по трафику -
    - {#each summary.top_users.slice(0, 10) as t (t.username)} -
  • - {t.username} - {formatMiB(t.total_megabytes)} -
  • - {/each} -
+ + + + Пользователь + Трафик + Замеченные IP + + + + {#each summary.top_users.slice(0, 10) as t (t.username)} + + + + {t.username} + + + {formatMiB(t.total_megabytes)} + + {uniqueIpCountByUser[t.username] ?? 0} + + + {/each} + +
{/if}