Skip to content

Commit 16bbdc5

Browse files
enzo-bitflymarcel-bitfly
authored andcommitted
refactor: replace fetching and query handling logic in dashboard tables
1 parent 10cef8c commit 16bbdc5

15 files changed

+403
-545
lines changed

frontend/components/DashboardIndex.vue

Lines changed: 18 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -171,18 +171,6 @@ const tabs: HashTab[] = [
171171
// { immediate: true },
172172
// )
173173
174-
// Execution Layer Deposits data
175-
176-
// Consensus Layer Deposits data
177-
178-
// Execution Layer Withdrawals data
179-
180-
// Consensus Layer Withdrawals data
181-
182-
// Execution Layer Consolidations data
183-
184-
// Consensus Layer Consolidations data
185-
186174
// const activeTab = computed(() => route.hash)
187175
188176
// const refreshActiveTab = () => {
@@ -306,62 +294,40 @@ const emit = defineEmits<{
306294
/>
307295
</template>
308296
<template #tab-panel-deposits>
309-
<!-- <DashboardTableElDeposits
310-
v-model:query="elDepositsQueryParams"
311-
:el-deposits
312-
:el-deposits-total-amount
313-
:is-loading="elDepositsDataStatus === 'pending'"
314-
@add-validator="onAddValidator"
315-
/> -->
297+
<DashboardTableElDeposits
298+
@add-validator="onAddValidator"
299+
/>
316300
<BcIcon
317301
name="arrow-down"
318302
class="down_icon"
319303
/>
320-
<!-- <DashboardTableClDeposits
321-
v-model:query="clDepositsQueryParams"
322-
:cl-deposits
323-
:cl-deposits-total-amount
324-
:is-loading="clDepositsDataStatus === 'pending'"
325-
@add-validator="onAddValidator"
326-
/> -->
304+
<DashboardTableClDeposits
305+
@add-validator="onAddValidator"
306+
/>
327307
</template>
328308
<template #tab-panel-withdrawals>
329-
<!-- <DashboardTableElWithdrawals
330-
v-model:query="elWithdrawalsQueryParams"
331-
:el-withdrawals
332-
:el-withdrawals-total-amount
333-
:is-loading="elWithdrawalsDataStatus === 'pending'"
334-
@add-validator="onAddValidator"
335-
/> -->
309+
<DashboardTableElWithdrawals
310+
@add-validator="onAddValidator"
311+
/>
336312
<BcIcon
337313
name="arrow-down"
338314
class="down_icon"
339315
/>
340-
<!-- <DashboardTableClWithdrawals
341-
v-model:query="clWithdrawalsQueryParams"
342-
:cl-withdrawals
343-
:cl-withdrawals-total-amount
344-
:is-loading="clWithdrawalsDataStatus === 'pending'"
345-
@add-validator="onAddValidator"
346-
/> -->
316+
<DashboardTableClWithdrawals
317+
@add-validator="onAddValidator"
318+
/>
347319
</template>
348320
<template #tab-panel-consolidations>
349-
<!-- <DashboardTableElConsolidations
350-
v-model:query="elConsolidationsQueryParams"
351-
:el-consolidations
352-
:is-loading="elConsolidationsDataStatus === 'pending'"
353-
@add-validator="onAddValidator"
354-
/> -->
321+
<DashboardTableElConsolidations
322+
@add-validator="onAddValidator"
323+
/>
355324
<BcIcon
356325
name="arrow-down"
357326
class="down_icon"
358327
/>
359-
<!-- <DashboardTableClConsolidations
360-
v-model:query="clConsolidationsQueryParams"
361-
:cl-consolidations
362-
:is-loading="clConsolidationsDataStatus === 'pending'"
363-
@add-validator="onAddValidator"
364-
/> -->
328+
<DashboardTableClConsolidations
329+
@add-validator="onAddValidator"
330+
/>
365331
</template>
366332
</BcTabList>
367333
</NuxtLayout>

frontend/components/dashboard/table/DashboardTableClConsolidations.vue

Lines changed: 18 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,33 @@
11
<script setup lang="ts">
2-
import type { DataTableSortEvent } from 'primevue/datatable'
3-
import type {
4-
GetValidatorDashboardConsensusLayerConsolidationsResponse,
5-
VDBConsolidationsClTableRow,
6-
} from '~/types/api/validator_dashboard'
7-
import type {
8-
Cursor, TableQueryParams,
9-
} from '~/types/datatable'
2+
import type { VDBConsolidationsClTableRow } from '~/types/api/validator_dashboard'
103
import BcTableControl from '~/components/bc/table/BcTableControl.vue'
114
125
const {
13-
clConsolidations,
14-
} = defineProps<{
15-
clConsolidations?: GetValidatorDashboardConsensusLayerConsolidationsResponse,
16-
isLoading: boolean,
17-
}>()
6+
hasValidators,
7+
key,
8+
} = useDashboard()
189
1910
const { width } = useWindowSize()
2011
const isMobile = computed(() => {
2112
return width.value < 768
2213
})
2314
24-
const validatorDashboardOverviewStore = useValidatorDashboardOverviewStore()
25-
const {
26-
hasValidators,
27-
} = storeToRefs(validatorDashboardOverviewStore)
28-
2915
const {
3016
getTimestampFromSlot,
3117
} = useNetwork()
3218
33-
const query = defineModel<TableQueryParams>('query')
19+
const query = useDefaultQuery({
20+
sort: 'timestamp:desc',
21+
})
22+
23+
const {
24+
data: clConsolidations,
25+
status,
26+
} = useApi(`/api/validator-dashboards/${key.value}/consensus-layer-consolidations`, {
27+
immediate: key.value !== undefined,
28+
query,
29+
})
3430
35-
const onSort = (sort: DataTableSortEvent) => {
36-
query.value = setQuerySort(sort, query.value)
37-
}
38-
const setCursor = (cursor: Cursor) => {
39-
query.value = setQueryCursor(cursor, query.value)
40-
}
41-
const setPageSize = (limit: number) => {
42-
query.value = setQueryPageSize(limit, query.value)
43-
}
44-
const setSearch = (value?: string) => {
45-
query.value = {
46-
...query.value,
47-
search: value,
48-
}
49-
}
5031
const v1Domain = useV1Domain()
5132
const emit = defineEmits<{
5233
(e: 'add-validator'): void,
@@ -55,14 +36,15 @@ const emit = defineEmits<{
5536

5637
<template>
5738
<BcTableControl
39+
v-model:search="query.search"
5840
:title="$t('dashboard.validator.cl_consolidations.title')"
5941
:search-placeholder="$t('dashboard.validator.cl_consolidations.search_placeholder')"
60-
@set-search="setSearch"
6142
>
6243
<template #table>
6344
<ClientOnly fallback-tag="span">
6445
<BcTable
6546
:data="clConsolidations"
47+
:query
6648
expandable
6749
:row-class="(row: VDBConsolidationsClTableRow) =>
6850
row.status === 'queued' ? 'dashboard-table-cl-consolidations__row--grayed-out' : ''"
@@ -71,9 +53,7 @@ const emit = defineEmits<{
7153
:cursor="query?.cursor"
7254
:page-size="query?.limit"
7355
table-class="dashboard-table-cl-consolidations"
74-
@set-cursor="setCursor"
75-
@sort="onSort"
76-
@set-page-size="setPageSize"
56+
:is-loading="status === 'pending'"
7757
>
7858
<Column
7959
sortable

frontend/components/dashboard/table/DashboardTableClDeposits.vue

Lines changed: 26 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,82 +1,52 @@
11
<script setup lang="ts">
2-
import type { DataTableSortEvent } from 'primevue/datatable'
3-
import type {
4-
GetValidatorDashboardConsensusLayerDepositsResponse,
5-
GetValidatorDashboardTotalConsensusDepositsResponse,
6-
VDBConsensusDepositsTableRow,
7-
} from '~/types/api/validator_dashboard'
8-
import type {
9-
Cursor, TableQueryParams,
10-
} from '~/types/datatable'
11-
import { useValidatorDashboardOverviewStore } from '~/stores/dashboard/useValidatorDashboardOverviewStore'
2+
import type { VDBConsensusDepositsTableRow } from '~/types/api/validator_dashboard'
123
134
const {
14-
clDeposits,
15-
clDepositsTotalAmount,
16-
} = defineProps<{
17-
clDeposits?: GetValidatorDashboardConsensusLayerDepositsResponse,
18-
clDepositsTotalAmount?: GetValidatorDashboardTotalConsensusDepositsResponse,
19-
isLoading: boolean,
20-
}>()
21-
22-
const {
23-
isGuestDashboard,
24-
} = useDashboardKey()
5+
hasValidators,
6+
key,
7+
variant,
8+
} = useDashboard()
259
2610
const { t: $t } = useTranslation()
2711
2812
const {
2913
getTimestampFromSlot,
3014
} = useNetwork()
3115
32-
const validatorDashboardOverviewStore = useValidatorDashboardOverviewStore()
33-
const {
34-
hasValidators,
35-
} = storeToRefs(validatorDashboardOverviewStore)
36-
3716
const { width } = useWindowSize()
3817
const isMobile = computed(() => {
3918
return width.value < 768
4019
})
4120
42-
const clDepositsWithIdentifiers = computed(() =>
43-
addIdentifier(clDeposits, 'slot', 'slot_index'),
44-
)
21+
const query = useDefaultQuery({
22+
sort: 'timestamp:desc',
23+
})
24+
25+
const {
26+
data: clDeposits,
27+
status,
28+
} = useApi(`/api/validator-dashboards/${key.value}/consensus-layer-deposits`, {
29+
immediate: key.value !== undefined,
30+
query,
31+
})
32+
4533
const tableData = computed(() => {
46-
if (!clDepositsWithIdentifiers.value?.data?.length) {
47-
return
34+
if (!clDeposits.value?.data?.length) {
35+
return null
4836
}
4937
5038
return {
5139
data: [
5240
{
53-
amount: clDepositsTotalAmount?.data.total_amount,
41+
amount: clDeposits.value.total_amount,
5442
isTotalAmountRow: true,
5543
},
56-
...clDepositsWithIdentifiers.value.data,
44+
...clDeposits.value.data,
5745
],
58-
paging: clDepositsWithIdentifiers.value.paging,
46+
paging: clDeposits.value.paging,
5947
}
6048
})
6149
62-
const query = defineModel<TableQueryParams>('query')
63-
64-
const onSort = (sort: DataTableSortEvent) => {
65-
query.value = setQuerySort(sort, query.value)
66-
}
67-
const setCursor = (cursor: Cursor) => {
68-
query.value = setQueryCursor(cursor, query.value)
69-
}
70-
const setPageSize = (limit: number) => {
71-
query.value = setQueryPageSize(limit, query.value)
72-
}
73-
const setSearch = (value?: string) => {
74-
query.value = {
75-
...query.value,
76-
search: value,
77-
}
78-
}
79-
8050
const getRowClass = (row: VDBConsensusDepositsTableRow) => {
8151
if (row.index === undefined) {
8252
return 'total-row'
@@ -103,20 +73,21 @@ const emit = defineEmits<{
10373

10474
<template>
10575
<BcTableControl
76+
v-model:search="query.search"
10677
:title="$t('dashboard.validator.cl_deposits.title')"
10778
:search-placeholder="
10879
$t(
109-
isGuestDashboard
80+
variant === 'guest-dashboard'
11081
? 'dashboard.validator.cl_deposits.search_placeholder_guest_dashboard'
11182
: 'dashboard.validator.cl_deposits.search_placeholder_private_dashboard',
11283
)
11384
"
114-
@set-search="setSearch"
11585
>
11686
<template #table>
11787
<ClientOnly fallback-tag="span">
11888
<BcTable
11989
:data="tableData"
90+
:query
12091
data-key="identifier"
12192
expandable
12293
table-class="dashboard-table-cl-deposits"
@@ -125,10 +96,7 @@ const emit = defineEmits<{
12596
:page-size="query?.limit"
12697
:row-class="getRowClass"
12798
:is-row-expandable="(row: VDBConsensusDepositsTableRow) => row.index !== undefined"
128-
:is-loading
129-
@set-cursor="setCursor"
130-
@sort="onSort"
131-
@set-page-size="setPageSize"
99+
:is-loading="status === 'pending'"
132100
>
133101
<Column
134102
field="timestamp"

0 commit comments

Comments
 (0)