@@ -5,12 +5,15 @@ import { DatasetsQuery } from '@/graphql/poco/graphql';
55import { useQuery } from '@tanstack/react-query' ;
66import { useEffect } from 'react' ;
77import { DataTable } from '@/components/DataTable' ;
8+ import { PaginatedNavigation } from '@/components/PaginatedNavigation' ;
9+ import { usePageParam } from '@/hooks/usePageParam' ;
810import { ErrorAlert } from '@/modules/ErrorAlert' ;
911import { columns } from '@/modules/datasets/datasetsTable/columns' ;
1012import { useDatasetsSchemas } from '@/modules/datasets/hooks/useDatasetsSchemas' ;
1113import { SchemaFilter } from '@/modules/datasets/schemaFilters' ;
1214import useUserStore from '@/stores/useUser.store' ;
1315import { createPlaceholderDataFnForQueryKey } from '@/utils/createPlaceholderDataFnForQueryKey' ;
16+ import { getAdditionalPages } from '@/utils/format' ;
1417import { taskDatasetsQuery } from './taskDatasetsQuery' ;
1518
1619function formatDataset ( {
@@ -32,22 +35,32 @@ function formatDataset({
3235 owner : { address : dataset . owner ?. address ?? '' } ,
3336 timestamp : dataset . timestamp ,
3437 transfers :
35- dataset . transfers ??
36- ( 'transactionHash' in dataset && dataset . transactionHash
37- ? [
38- {
39- transaction : {
40- txHash : dataset . transactionHash ,
38+ 'transfers' in dataset && dataset . transfers
39+ ? dataset . transfers
40+ : 'transactionHash' in dataset && dataset . transactionHash
41+ ? [
42+ {
43+ transaction : {
44+ txHash : dataset . transactionHash ,
45+ } ,
4146 } ,
42- } ,
43- ]
44- : [ ] ) ,
47+ ]
48+ : [ ] ,
4549 destination : `/dataset/${ dataset . address } ` ,
4650 } ;
4751}
4852
49- function useTaskDatasetsData ( { taskId } : { taskId : string } ) {
53+ function useTaskDatasetsData ( {
54+ taskId,
55+ currentPage,
56+ } : {
57+ taskId : string ;
58+ currentPage : number ;
59+ } ) {
5060 const { chainId } = useUserStore ( ) ;
61+ const skip = currentPage * DETAIL_TABLE_LENGTH ;
62+ const nextSkip = skip + DETAIL_TABLE_LENGTH ;
63+ const nextNextSkip = skip + 2 * DETAIL_TABLE_LENGTH ;
5164
5265 const queryKey = [ chainId , 'task' , 'datasets' , taskId ] ;
5366 const { data, isLoading, isRefetching, isError, errorUpdateCount } = useQuery (
@@ -56,6 +69,9 @@ function useTaskDatasetsData({ taskId }: { taskId: string }) {
5669 queryFn : ( ) =>
5770 execute ( taskDatasetsQuery , chainId , {
5871 length : DETAIL_TABLE_LENGTH ,
72+ skip,
73+ nextSkip,
74+ nextNextSkip,
5975 taskId,
6076 } ) ,
6177 refetchInterval : TABLE_REFETCH_INTERVAL ,
@@ -76,12 +92,17 @@ function useTaskDatasetsData({ taskId }: { taskId: string }) {
7692 isSchemasLoading,
7793 } )
7894 ) ;
95+ const additionalPages = getAdditionalPages (
96+ Boolean ( data ?. task ?. bulkSlice ?. datasetsHasNext ?. length ) ,
97+ Boolean ( data ?. task ?. bulkSlice ?. datasetsHasNextNext ?. length )
98+ ) ;
7999
80100 return {
81101 data : formattedDatasets ,
82102 isLoading,
83103 isRefetching,
84104 isError,
105+ additionalPages,
85106 hasPastError : isError || errorUpdateCount > 0 ,
86107 } ;
87108}
@@ -95,13 +116,15 @@ export function TaskDatasetsTable({
95116 setLoading : ( loading : boolean ) => void ;
96117 setOutdated : ( outdated : boolean ) => void ;
97118} ) {
119+ const [ currentPage , setCurrentPage ] = usePageParam ( 'taskDatasetsPage' ) ;
98120 const {
99121 data : datasets ,
100122 hasPastError,
101123 isLoading,
102124 isRefetching,
103125 isError,
104- } = useTaskDatasetsData ( { taskId } ) ;
126+ additionalPages,
127+ } = useTaskDatasetsData ( { taskId, currentPage : currentPage - 1 } ) ;
105128
106129 useEffect (
107130 ( ) => setLoading ( isLoading || isRefetching ) ,
@@ -112,9 +135,18 @@ export function TaskDatasetsTable({
112135 [ datasets . length , isError , setOutdated ]
113136 ) ;
114137
115- return hasPastError && ! datasets . length ? (
116- < ErrorAlert message = "An error occurred during task datasets loading." />
117- ) : (
118- < DataTable columns = { columns } data = { datasets } />
138+ return (
139+ < div className = "space-y-6" >
140+ { hasPastError && ! datasets . length ? (
141+ < ErrorAlert message = "An error occurred during task datasets loading." />
142+ ) : (
143+ < DataTable columns = { columns } data = { datasets } />
144+ ) }
145+ < PaginatedNavigation
146+ currentPage = { currentPage }
147+ totalPages = { currentPage + additionalPages }
148+ onPageChange = { setCurrentPage }
149+ />
150+ </ div >
119151 ) ;
120152}
0 commit comments