From b8b71ec6b3d9ae5ee2db9b83eb121652d06167c1 Mon Sep 17 00:00:00 2001 From: mufazalov Date: Mon, 30 Jun 2025 13:09:49 +0300 Subject: [PATCH] fix: require ConnectStatus only for network table --- src/components/NetworkTable/columns.tsx | 4 +-- .../NodeHostWrapper/NodeHostWrapper.tsx | 6 ++-- src/components/nodesColumns/columns.tsx | 30 +++++++++++++++---- src/components/nodesColumns/constants.ts | 8 ++++- 4 files changed, 35 insertions(+), 13 deletions(-) diff --git a/src/components/NetworkTable/columns.tsx b/src/components/NetworkTable/columns.tsx index 6afb89fd8..648577ac4 100644 --- a/src/components/NetworkTable/columns.tsx +++ b/src/components/NetworkTable/columns.tsx @@ -5,7 +5,7 @@ import { getConnectionsColumn, getCpuColumn, getDataCenterColumn, - getHostColumn, + getNetworkHostColumn, getNetworkUtilizationColumn, getNodeIdColumn, getPingTimeColumn, @@ -21,7 +21,7 @@ import type {GetNodesColumnsParams} from '../nodesColumns/types'; export function getNetworkTableNodesColumns(params: GetNodesColumnsParams) { const columns: Column[] = [ getNodeIdColumn(), - getHostColumn(params, {statusForIcon: 'ConnectStatus'}), + getNetworkHostColumn(params), getDataCenterColumn(), getRackColumn(), getUptimeColumn(), diff --git a/src/components/NodeHostWrapper/NodeHostWrapper.tsx b/src/components/NodeHostWrapper/NodeHostWrapper.tsx index df50320cb..5f60d8936 100644 --- a/src/components/NodeHostWrapper/NodeHostWrapper.tsx +++ b/src/components/NodeHostWrapper/NodeHostWrapper.tsx @@ -16,20 +16,18 @@ export type NodeHostData = NodeAddress & TenantName?: string; }; -export type StatusForIcon = 'SystemState' | 'ConnectStatus'; - interface NodeHostWrapperProps { node: NodeHostData; getNodeRef?: GetNodeRefFunc; database?: string; - statusForIcon?: StatusForIcon; + statusForIcon?: 'SystemState' | 'ConnectStatus'; } export const NodeHostWrapper = ({ node, getNodeRef, database, - statusForIcon, + statusForIcon = 'SystemState', }: NodeHostWrapperProps) => { if (!node.Host) { return ; diff --git a/src/components/nodesColumns/columns.tsx b/src/components/nodesColumns/columns.tsx index 5e8b92829..51dd01909 100644 --- a/src/components/nodesColumns/columns.tsx +++ b/src/components/nodesColumns/columns.tsx @@ -17,7 +17,7 @@ import {bytesToSpeed, isNumeric} from '../../utils/utils'; import {CellWithPopover} from '../CellWithPopover/CellWithPopover'; import {MemoryViewer} from '../MemoryViewer/MemoryViewer'; import {NodeHostWrapper} from '../NodeHostWrapper/NodeHostWrapper'; -import type {NodeHostData, StatusForIcon} from '../NodeHostWrapper/NodeHostWrapper'; +import type {NodeHostData} from '../NodeHostWrapper/NodeHostWrapper'; import {PoolsGraph} from '../PoolsGraph/PoolsGraph'; import {ProgressViewer} from '../ProgressViewer/ProgressViewer'; import {TabletsStatistic} from '../TabletsStatistic'; @@ -44,20 +44,38 @@ export function getNodeIdColumn(): Column< align: DataTable.RIGHT, }; } -export function getHostColumn( - {getNodeRef, database}: GetNodesColumnsParams, - {statusForIcon = 'SystemState'}: {statusForIcon?: StatusForIcon} = {}, -): Column { +export function getHostColumn({ + getNodeRef, + database, +}: GetNodesColumnsParams): Column { return { name: NODES_COLUMNS_IDS.Host, header: NODES_COLUMNS_TITLES.Host, + render: ({row}) => { + return ; + }, + width: 350, + align: DataTable.LEFT, + }; +} + +// Different column for different set of required fields +// ConnectStatus is required here, it makes handler to return network stats +// On versions before 25-1-2 ConnectStatus also makes handler to return peers - it can significantly increase response size +export function getNetworkHostColumn({ + getNodeRef, + database, +}: GetNodesColumnsParams): Column { + return { + name: NODES_COLUMNS_IDS.NetworkHost, + header: NODES_COLUMNS_TITLES.NetworkHost, render: ({row}) => { return ( ); }, diff --git a/src/components/nodesColumns/constants.ts b/src/components/nodesColumns/constants.ts index 86aa39da3..86e67f30e 100644 --- a/src/components/nodesColumns/constants.ts +++ b/src/components/nodesColumns/constants.ts @@ -8,6 +8,7 @@ export const NODES_COLUMNS_WIDTH_LS_KEY = 'nodesTableColumnsWidth'; export const NODES_COLUMNS_IDS = { NodeId: 'NodeId', Host: 'Host', + NetworkHost: 'NetworkHost', Database: 'Database', NodeName: 'NodeName', DC: 'DC', @@ -51,6 +52,9 @@ export const NODES_COLUMNS_TITLES = { get Host() { return i18n('host'); }, + get NetworkHost() { + return i18n('host'); + }, get Database() { return i18n('database'); }, @@ -178,7 +182,8 @@ export function getNodesGroupByFieldTitle(groupByField: NodesGroupByField) { // Also for some columns we may use more than one field export const NODES_COLUMNS_TO_DATA_FIELDS: Record = { NodeId: ['NodeId'], - Host: ['Host', 'Rack', 'Database', 'SystemState', 'ConnectStatus'], + Host: ['Host', 'Rack', 'Database', 'SystemState'], + NetworkHost: ['Host', 'Rack', 'Database', 'SystemState', 'ConnectStatus'], Database: ['Database'], NodeName: ['NodeName'], DC: ['DC'], @@ -207,6 +212,7 @@ export const NODES_COLUMNS_TO_DATA_FIELDS: Record = { NodeId: 'NodeId', Host: 'Host', + NetworkHost: 'Host', Database: 'Database', NodeName: 'NodeName', DC: 'DC',