This is an automated email from the ASF dual-hosted git repository.
jshao pushed a commit to branch branch-1.0
in repository https://gitbox.apache.org/repos/asf/gravitino.git
The following commit(s) were added to refs/heads/branch-1.0 by this push:
new 32f11e26c0 [#8987] web(UI): support pagination for fileset files list
(#9005)
32f11e26c0 is described below
commit 32f11e26c029bb8d2a4cd6151908bb182a5146c8
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Mon Nov 3 17:52:51 2025 +0800
[#8987] web(UI): support pagination for fileset files list (#9005)
### What changes were proposed in this pull request?
support pagination for fileset files list
<img width="2908" height="1700" alt="image"
src="https://github.com/user-attachments/assets/62a7ee28-03bd-4144-a43e-d8b0f03a0d99"
/>
### Why are the changes needed?
N/A
Fix: #8987
### Does this PR introduce _any_ user-facing change?
N/A
### How was this patch tested?
munually
Co-authored-by: Qian Xia <[email protected]>
---
.../tabsContent/filesetView/FilesetView.js | 42 +++++++++++++++++++---
1 file changed, 38 insertions(+), 4 deletions(-)
diff --git
a/web/web/src/app/metalakes/metalake/rightContent/tabsContent/filesetView/FilesetView.js
b/web/web/src/app/metalakes/metalake/rightContent/tabsContent/filesetView/FilesetView.js
index a16dc1f272..f9679da743 100644
---
a/web/web/src/app/metalakes/metalake/rightContent/tabsContent/filesetView/FilesetView.js
+++
b/web/web/src/app/metalakes/metalake/rightContent/tabsContent/filesetView/FilesetView.js
@@ -19,7 +19,7 @@
'use client'
-import { useState, useEffect } from 'react'
+import { useState, useEffect, useMemo } from 'react'
import { useSearchParams } from 'next/navigation'
import { useAppDispatch, useAppSelector } from '@/lib/hooks/useStore'
import { getFilesetFiles } from '@/lib/store/metalakes'
@@ -32,6 +32,8 @@ import {
Paper,
Table,
TableBody,
+ TableFooter,
+ TablePagination,
TableCell,
TableContainer,
TableHead,
@@ -55,6 +57,26 @@ const FilesetView = () => {
const [currentPath, setCurrentPath] = useState('/')
const [pathHistory, setPathHistory] = useState(['/'])
+ const [page, setPage] = useState(0)
+ const [rowsPerPage, setRowsPerPage] = useState(10)
+
+ const handleChangePage = (event, newPage) => {
+ setPage(newPage)
+ }
+
+ const handleChangeRowsPerPage = event => {
+ setRowsPerPage(parseInt(event.target.value, 10))
+ setPage(0)
+ }
+
+ const paginatedFiles = useMemo(() => {
+ if (!store.filesetFiles) return []
+ const startIndex = page * rowsPerPage
+ const endIndex = startIndex + rowsPerPage
+
+ return store.filesetFiles.slice(startIndex, endIndex)
+ }, [store.filesetFiles, page, rowsPerPage])
+
useEffect(() => {
if (metalake && catalog && schema && fileset) {
dispatch(
@@ -146,7 +168,7 @@ const FilesetView = () => {
</Box>
<TableContainer component={Paper}>
- <Table>
+ <Table size='small'>
<TableHead>
<TableRow>
<TableCell>Name</TableCell>
@@ -156,8 +178,8 @@ const FilesetView = () => {
</TableRow>
</TableHead>
<TableBody>
- {store.filesetFiles && store.filesetFiles.length > 0 ? (
- store.filesetFiles.map((file, index) => (
+ {paginatedFiles && paginatedFiles.length > 0 ? (
+ paginatedFiles.map((file, index) => (
<TableRow
key={index}
hover
@@ -191,6 +213,18 @@ const FilesetView = () => {
</TableRow>
)}
</TableBody>
+ <TableFooter>
+ <TableRow>
+ <TablePagination
+ rowsPerPageOptions={[10, 25, 50, { value: -1, label: 'All' }]}
+ count={store.filesetFiles.length}
+ rowsPerPage={rowsPerPage}
+ page={page}
+ onPageChange={handleChangePage}
+ onRowsPerPageChange={handleChangeRowsPerPage}
+ />
+ </TableRow>
+ </TableFooter>
</Table>
</TableContainer>
</Box>