From dbbbf41a1a59910ad12a9f2c7f4105c618720b3c Mon Sep 17 00:00:00 2001 From: Denozordec Date: Tue, 31 Mar 2026 20:37:14 +0700 Subject: [PATCH] Add pagination to IPs table for improved navigation --- web/src/routes/ips/+page.svelte | 46 ++++++++++++++++++- web/src/routes/mihomo/+page.svelte | 4 +- .../servers/[alias]/runtime/+page.svelte | 4 +- .../routes/servers/[alias]/users/+page.svelte | 4 +- web/src/routes/users/[username]/+page.svelte | 4 +- 5 files changed, 53 insertions(+), 9 deletions(-) diff --git a/web/src/routes/ips/+page.svelte b/web/src/routes/ips/+page.svelte index 205d7dc..eacda03 100644 --- a/web/src/routes/ips/+page.svelte +++ b/web/src/routes/ips/+page.svelte @@ -63,6 +63,8 @@ let ipSearch = $state(''); let ipSortKey = $state<'user' | 'ip' | 'geo' | null>(null); let ipSortDir = $state(null); +const ipsPerPage = 25; +let ipsPage = $state(1); let flatIpRows = $derived.by((): IpFlatRow[] => { const out: IpFlatRow[] = []; @@ -102,6 +104,22 @@ return r; }); +let ipsPageCount = $derived(Math.max(1, Math.ceil(displayedIpRows.length / ipsPerPage))); +let pagedIpRows = $derived.by(() => { + const start = (ipsPage - 1) * ipsPerPage; + return displayedIpRows.slice(start, start + ipsPerPage); +}); + +$effect(() => { + ipSearch; + aliasFilter; + ipsPage = 1; +}); + +$effect(() => { + if (ipsPage > ipsPageCount) ipsPage = ipsPageCount; +}); + function toggleIpSort(key: 'user' | 'ip' | 'geo') { const next = nextSortDir(ipSortDir, key, ipSortKey); ipSortKey = next === null ? null : key; @@ -604,6 +622,7 @@ ipSearch = ''; ipSortKey = null; ipSortDir = null; + ipsPage = 1; }} >Сброс @@ -655,7 +674,7 @@ {:else} - {#each displayedIpRows as { username, ip } (username + (ip.ip ?? ''))} + {#each pagedIpRows as { username, ip } (username + (ip.ip ?? ''))} @@ -686,6 +705,31 @@ + {#if displayedIpRows.length > ipsPerPage} +
+ + {displayedIpRows.length === 0 + ? '0' + : `${(ipsPage - 1) * ipsPerPage + 1}–${Math.min(ipsPage * ipsPerPage, displayedIpRows.length)}`} из {displayedIpRows.length} + +
+ + +
+
+ {/if} {/snippet} diff --git a/web/src/routes/mihomo/+page.svelte b/web/src/routes/mihomo/+page.svelte index e6da018..ba775b8 100644 --- a/web/src/routes/mihomo/+page.svelte +++ b/web/src/routes/mihomo/+page.svelte @@ -265,8 +265,8 @@ - - + + Alias Контроллер Статус diff --git a/web/src/routes/servers/[alias]/runtime/+page.svelte b/web/src/routes/servers/[alias]/runtime/+page.svelte index eeef097..85690cb 100644 --- a/web/src/routes/servers/[alias]/runtime/+page.svelte +++ b/web/src/routes/servers/[alias]/runtime/+page.svelte @@ -88,8 +88,8 @@