@@ -2,6 +2,7 @@ import React from 'react';
22
33import { useTable } from '@gravity-ui/table' ;
44import { skipToken } from '@reduxjs/toolkit/query' ;
5+ import type { SortingState } from '@tanstack/react-table' ;
56
67import { InfoViewerSkeleton } from '../../../components/InfoViewerSkeleton/InfoViewerSkeleton' ;
78import { Table } from '../../../components/Table/Table' ;
@@ -25,6 +26,9 @@ interface VDiskTabletsProps {
2526
2627export function VDiskTablets ( { nodeId, pDiskId, vDiskSlotId, className} : VDiskTabletsProps ) {
2728 const [ autoRefreshInterval ] = useAutoRefreshInterval ( ) ;
29+ const [ sorting , setSorting ] = React . useState < SortingState > ( [
30+ { id : 'Size' , desc : true } , // Default sort by size descending
31+ ] ) ;
2832
2933 const params = nodeId && pDiskId && vDiskSlotId ? { nodeId, pDiskId, vDiskSlotId} : skipToken ;
3034
@@ -34,7 +38,7 @@ export function VDiskTablets({nodeId, pDiskId, vDiskSlotId, className}: VDiskTab
3438
3539 const loading = isFetching && currentData === undefined ;
3640
37- // Transform the actual API response structure into the expected flat table format
41+ // Remove the manual sorting since we'll let the table handle it with enableSorting
3842 const tableData : VDiskBlobIndexItem [ ] = React . useMemo ( ( ) => {
3943 if ( ! currentData ) {
4044 return [ ] ;
@@ -76,20 +80,18 @@ export function VDiskTablets({nodeId, pDiskId, vDiskSlotId, className}: VDiskTab
7680 return flatData ;
7781 } , [ currentData ] ) ;
7882
79- // Sort by size descending by default
80- const sortedData = React . useMemo ( ( ) => {
81- return [ ...tableData ] . sort ( ( a , b ) => {
82- const sizeA = Number ( a . Size ) || 0 ;
83- const sizeB = Number ( b . Size ) || 0 ;
84- return sizeB - sizeA ;
85- } ) ;
86- } , [ tableData ] ) ;
87-
8883 const columns = React . useMemo ( ( ) => getColumns ( ) , [ ] ) ;
8984
9085 const table = useTable ( {
9186 columns,
92- data : sortedData ,
87+ data : tableData ,
88+ enableSorting : true ,
89+ enableColumnResizing : true ,
90+ columnResizeMode : 'onChange' ,
91+ onSortingChange : setSorting ,
92+ state : {
93+ sorting,
94+ } ,
9395 } ) ;
9496
9597 if ( error ) {
@@ -106,7 +108,7 @@ export function VDiskTablets({nodeId, pDiskId, vDiskSlotId, className}: VDiskTab
106108
107109 return (
108110 < div className = { vDiskTabletsCn ( null , className ) } >
109- < Table table = { table } />
111+ < Table table = { table } stickyHeader width = "max" />
110112 </ div >
111113 ) ;
112114}
0 commit comments