@@ -2,13 +2,16 @@ import type {Column} from '@gravity-ui/react-data-table';
22import DataTable from '@gravity-ui/react-data-table' ;
33
44import { EntityStatus } from '../../../../../components/EntityStatus/EntityStatus' ;
5+ import { MultilineTableHeader } from '../../../../../components/MultilineTableHeader/MultilineTableHeader' ;
56import { SpeedMultiMeter } from '../../../../../components/SpeedMultiMeter' ;
7+ import { useTopicDataAvailable } from '../../../../../store/reducers/capabilities/hooks' ;
8+ import { TENANT_DIAGNOSTICS_TABS_IDS } from '../../../../../store/reducers/tenant/constants' ;
69import { cn } from '../../../../../utils/cn' ;
710import { formatBytes , formatMsToUptime } from '../../../../../utils/dataFormatters/dataFormatters' ;
811import { isNumeric } from '../../../../../utils/utils' ;
912import { getDefaultNodePath } from '../../../../Node/NodePages' ;
13+ import { useDiagnosticsPageLinkGetter } from '../../DiagnosticsPages' ;
1014import {
11- MultilineHeader ,
1215 ReadLagsHeader ,
1316 ReadSessionHeader ,
1417 UncommitedMessagesHeader ,
@@ -36,19 +39,22 @@ export const allColumns: Column<PreparedPartitionDataWithHosts>[] = [
3639 {
3740 name : PARTITIONS_COLUMNS_IDS . PARTITION_ID ,
3841 header : (
39- < MultilineHeader
42+ < MultilineTableHeader
4043 title = { PARTITIONS_COLUMNS_TITLES [ PARTITIONS_COLUMNS_IDS . PARTITION_ID ] }
4144 />
4245 ) ,
4346 sortAccessor : ( row ) => isNumeric ( row . partitionId ) && Number ( row . partitionId ) ,
4447 align : DataTable . LEFT ,
45- render : ( { row} ) => row . partitionId ,
48+ render : ( { row} ) => < PartitionId id = { row . partitionId } /> ,
4649 } ,
4750 {
4851 name : PARTITIONS_COLUMNS_IDS . STORE_SIZE ,
4952 header : (
50- < MultilineHeader title = { PARTITIONS_COLUMNS_TITLES [ PARTITIONS_COLUMNS_IDS . STORE_SIZE ] } />
53+ < MultilineTableHeader
54+ title = { PARTITIONS_COLUMNS_TITLES [ PARTITIONS_COLUMNS_IDS . STORE_SIZE ] }
55+ />
5156 ) ,
57+ sortAccessor : ( row ) => isNumeric ( row . storeSize ) && Number ( row . storeSize ) ,
5258 align : DataTable . RIGHT ,
5359 render : ( { row} ) => formatBytes ( row . storeSize ) ,
5460 } ,
@@ -137,7 +143,7 @@ export const allColumns: Column<PreparedPartitionDataWithHosts>[] = [
137143 {
138144 name : PARTITIONS_COLUMNS_IDS . START_OFFSET ,
139145 header : (
140- < MultilineHeader
146+ < MultilineTableHeader
141147 title = { PARTITIONS_COLUMNS_TITLES [ PARTITIONS_COLUMNS_IDS . START_OFFSET ] }
142148 />
143149 ) ,
@@ -148,7 +154,9 @@ export const allColumns: Column<PreparedPartitionDataWithHosts>[] = [
148154 {
149155 name : PARTITIONS_COLUMNS_IDS . END_OFFSET ,
150156 header : (
151- < MultilineHeader title = { PARTITIONS_COLUMNS_TITLES [ PARTITIONS_COLUMNS_IDS . END_OFFSET ] } />
157+ < MultilineTableHeader
158+ title = { PARTITIONS_COLUMNS_TITLES [ PARTITIONS_COLUMNS_IDS . END_OFFSET ] }
159+ />
152160 ) ,
153161 sortAccessor : ( row ) => isNumeric ( row . endOffset ) && Number ( row . endOffset ) ,
154162 align : DataTable . RIGHT ,
@@ -157,7 +165,7 @@ export const allColumns: Column<PreparedPartitionDataWithHosts>[] = [
157165 {
158166 name : PARTITIONS_COLUMNS_IDS . COMMITED_OFFSET ,
159167 header : (
160- < MultilineHeader
168+ < MultilineTableHeader
161169 title = { PARTITIONS_COLUMNS_TITLES [ PARTITIONS_COLUMNS_IDS . COMMITED_OFFSET ] }
162170 />
163171 ) ,
@@ -180,7 +188,7 @@ export const allColumns: Column<PreparedPartitionDataWithHosts>[] = [
180188 {
181189 name : PARTITIONS_COLUMNS_IDS . READER_NAME ,
182190 header : (
183- < MultilineHeader
191+ < MultilineTableHeader
184192 title = { PARTITIONS_COLUMNS_TITLES [ PARTITIONS_COLUMNS_IDS . READER_NAME ] }
185193 />
186194 ) ,
@@ -196,7 +204,7 @@ export const allColumns: Column<PreparedPartitionDataWithHosts>[] = [
196204 {
197205 name : PARTITIONS_COLUMNS_IDS . PARTITION_HOST ,
198206 header : (
199- < MultilineHeader
207+ < MultilineTableHeader
200208 title = { PARTITIONS_COLUMNS_TITLES [ PARTITIONS_COLUMNS_IDS . PARTITION_HOST ] }
201209 />
202210 ) ,
@@ -217,7 +225,7 @@ export const allColumns: Column<PreparedPartitionDataWithHosts>[] = [
217225 {
218226 name : PARTITIONS_COLUMNS_IDS . CONNECTION_HOST ,
219227 header : (
220- < MultilineHeader
228+ < MultilineTableHeader
221229 title = { PARTITIONS_COLUMNS_TITLES [ PARTITIONS_COLUMNS_IDS . CONNECTION_HOST ] }
222230 />
223231 ) ,
@@ -244,3 +252,26 @@ export const generalColumns = allColumns.filter((column) => {
244252 column . name as ( typeof generalPartitionColumnsIds ) [ number ] ,
245253 ) ;
246254} ) ;
255+
256+ interface PartitionIdProps {
257+ id : string ;
258+ }
259+
260+ function PartitionId ( { id} : PartitionIdProps ) {
261+ const getDiagnosticsPageLink = useDiagnosticsPageLinkGetter ( ) ;
262+ const topicDataAvailable = useTopicDataAvailable ( ) ;
263+
264+ return (
265+ < EntityStatus
266+ name = { id }
267+ path = {
268+ topicDataAvailable
269+ ? getDiagnosticsPageLink ( TENANT_DIAGNOSTICS_TABS_IDS . topicData , {
270+ selectedPartition : id ,
271+ } )
272+ : undefined
273+ }
274+ showStatus = { false }
275+ />
276+ ) ;
277+ }
0 commit comments