Skip to content

Commit 8cc02fb

Browse files
authored
Fix pagination on all pages (#227)
1 parent 83f1562 commit 8cc02fb

File tree

5 files changed

+41
-32
lines changed

5 files changed

+41
-32
lines changed

ui/dashboard/src/internal/components/page/network/connected-nodes-card/index.svelte

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,7 @@
4848
4949
$: hasSorting = sortColumn && sortOrder
5050
51-
let totalPages = 0
52-
53-
const onTotal = (e) => {
54-
totalPages = e.detail.total
55-
}
56-
51+
$: totalPages = Math.max(1, Math.ceil((allData?.length || 0) / pageSize))
5752
$: showPagerNav = totalPages > 1
5853
$: showPagerSize = showPagerNav || (totalPages === 1 && allData.length > 5)
5954
$: showTableFooter = showPagerSize
@@ -83,7 +78,6 @@
8378
}}
8479
hasBoundaryRight={true}
8580
on:change={onPage}
86-
on:total={onTotal}
8781
/>
8882
<TableToggle value={variant} on:change={onToggle} />
8983
{#if hasSorting}

ui/dashboard/src/internal/components/page/viewer/block/block-subtrees-card/index.svelte

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,7 @@
3333
pageSize = data.value.pageSize
3434
}
3535
36-
let totalPages = 0
37-
38-
const onTotal = (e) => {
39-
totalPages = e.detail.total
40-
}
41-
36+
$: totalPages = Math.max(1, Math.ceil(totalItems / pageSize))
4237
$: showPagerNav = totalPages > 1
4338
$: showPagerSize = showPagerNav || (totalPages === 1 && data.length > 5)
4439
$: showTableFooter = showPagerSize
@@ -100,7 +95,6 @@
10095
}}
10196
hasBoundaryRight={true}
10297
on:change={onPage}
103-
on:total={onTotal}
10498
/>
10599
<TableToggle value={variant} on:change={onToggle} />
106100
</svelte:fragment>

ui/dashboard/src/internal/components/page/viewer/blocks/blocks-table-card/index.svelte

Lines changed: 38 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import Card from '$internal/components/card/index.svelte'
66
import TableToggle from '$internal/components/table-toggle/index.svelte'
77
import i18n from '$internal/i18n'
8+
import { page as pageStore } from '$app/stores'
9+
import { goto } from '$app/navigation'
810
911
import { assetHTTPAddress } from '$internal/stores/nodeStore'
1012
import { failure } from '$lib/utils/notifications'
@@ -32,18 +34,44 @@
3234
let pageSize = 20
3335
let totalItems = 0
3436
37+
// Get pagination from URL (read-only, no writing in reactive block)
38+
$: {
39+
const urlPageSize = $pageStore.url.searchParams.get('pageSize')
40+
if (urlPageSize) {
41+
const parsed = parseInt(urlPageSize, 10)
42+
if (!isNaN(parsed) && parsed > 0 && pageSize !== parsed) {
43+
pageSize = parsed
44+
}
45+
} else if (pageSize !== 20) {
46+
pageSize = 20 // Default
47+
}
48+
49+
const urlPage = $pageStore.url.searchParams.get('page')
50+
if (urlPage) {
51+
const parsed = parseInt(urlPage, 10)
52+
if (!isNaN(parsed) && parsed > 0 && page !== parsed) {
53+
page = parsed
54+
}
55+
} else if (page !== 1) {
56+
page = 1 // Always reset to page 1 if not in URL
57+
}
58+
}
59+
60+
function updateURL(page: number, pageSize: number) {
61+
const url = new URL($pageStore.url)
62+
url.searchParams.set('page', page.toString())
63+
url.searchParams.set('pageSize', pageSize.toString())
64+
goto(url.toString(), { replaceState: true, noScroll: true, keepFocus: true })
65+
}
66+
3567
function onPage(e) {
3668
const data = e.detail
3769
page = data.value.page
3870
pageSize = data.value.pageSize
71+
updateURL(page, pageSize)
3972
}
4073
41-
let totalPages = 0
42-
43-
const onTotal = (e) => {
44-
totalPages = e.detail.total
45-
}
46-
74+
$: totalPages = Math.max(1, Math.ceil(totalItems / pageSize))
4775
$: showPagerNav = totalPages > 1
4876
$: showPagerSize = showPagerNav || (totalPages === 1 && data.length > 5)
4977
$: showTableFooter = showPagerSize
@@ -103,8 +131,10 @@
103131
}
104132
}
105133
106-
// Fetch data when the selected node changes
107-
$: $assetHTTPAddress && fetchData(page, pageSize)
134+
// Fetch data when the selected node changes or pagination params change
135+
$: if ($assetHTTPAddress) {
136+
fetchData(page, pageSize)
137+
}
108138
109139
function onKeyDown(e) {
110140
if (!e) e = window.event
@@ -137,7 +167,6 @@
137167
}}
138168
hasBoundaryRight={true}
139169
on:change={onPage}
140-
on:total={onTotal}
141170
/>
142171
<div style="height: 24px; width: 12px;" />
143172
<TableToggle value={variant} on:change={onToggle} />

ui/dashboard/src/internal/components/page/viewer/subtree/subtree-txs-card/index.svelte

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,7 @@
3737
pageSize = data.value.pageSize
3838
}
3939
40-
let totalPages = 0
41-
42-
const onTotal = (e) => {
43-
totalPages = e.detail.total
44-
}
45-
40+
$: totalPages = Math.max(1, Math.ceil(totalItems / pageSize))
4641
$: showPagerNav = totalPages > 1
4742
$: showPagerSize = showPagerNav || (totalPages === 1 && data.length > 5)
4843
$: showTableFooter = showPagerSize
@@ -131,7 +126,6 @@
131126
}}
132127
hasBoundaryRight={true}
133128
on:change={onPage}
134-
on:total={onTotal}
135129
/>
136130
<TableToggle value={variant} on:change={onToggle} />
137131
</svelte:fragment>

ui/dashboard/src/internal/components/pager/index.svelte

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,6 @@
5353
boundaryCount,
5454
siblingCount,
5555
)
56-
57-
dispatch('total', { total: totalPages })
5856
}
5957
6058
function isSelected(btn) {

0 commit comments

Comments
 (0)