Skip to content

Commit ca9a7df

Browse files
committed
fix: network table
1 parent cdd0ba2 commit ca9a7df

File tree

3 files changed

+60
-46
lines changed

3 files changed

+60
-46
lines changed

src/containers/Tenant/Diagnostics/TenantOverview/TenantNetwork/TenantNetwork.tsx

Lines changed: 48 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
import {Flex, Tab, TabList, TabProvider} from '@gravity-ui/uikit';
22

3+
import {EmptyState} from '../../../../../components/EmptyState/EmptyState';
4+
import {Illustration} from '../../../../../components/Illustration';
5+
import {LoaderWrapper} from '../../../../../components/LoaderWrapper/LoaderWrapper';
6+
import {useShouldShowDatabaseNetworkTable} from '../../../../../components/NetworkTable/hooks';
7+
import {useCapabilitiesLoaded} from '../../../../../store/reducers/capabilities/hooks';
38
import {TENANT_NETWORK_TABS_IDS} from '../../../../../store/reducers/tenant/constants';
49
import type {AdditionalNodesProps} from '../../../../../types/additionalProps';
510
import {cn} from '../../../../../utils/cn';
@@ -24,6 +29,8 @@ interface TenantNetworkProps {
2429
}
2530

2631
export function TenantNetwork({tenantName, additionalNodesProps}: TenantNetworkProps) {
32+
const capabilitiesLoaded = useCapabilitiesLoaded();
33+
const shouldShowNetworkTable = useShouldShowDatabaseNetworkTable();
2734
const {networkTab, handleNetworkTabChange} = useTenantNetworkQueryParams();
2835

2936
const renderTabContent = () => {
@@ -50,25 +57,48 @@ export function TenantNetwork({tenantName, additionalNodesProps}: TenantNetworkP
5057
}
5158
};
5259

53-
return (
54-
<Flex direction="column" gap={4} className={b()}>
55-
<Flex direction="column" gap={3} className={b('tabs-container')}>
56-
<TabProvider value={networkTab}>
57-
<TabList size="m">
58-
{networkTabs.map(({id, title}) => {
59-
return (
60-
<Tab key={id} value={id} onClick={() => handleNetworkTabChange(id)}>
61-
{title}
62-
</Tab>
63-
);
64-
})}
65-
</TabList>
66-
</TabProvider>
60+
const renderNetworkStatsUnavailable = () => {
61+
return (
62+
<EmptyState
63+
image={<Illustration name="thumbsUp" />}
64+
title={i18n('network-stats-unavailable.title')}
65+
description={i18n('network-stats-unavailable.description')}
66+
size="s"
67+
/>
68+
);
69+
};
70+
71+
const renderContent = () => {
72+
if (!shouldShowNetworkTable) {
73+
return renderNetworkStatsUnavailable();
74+
}
6775

68-
<Flex direction="column" className={b('tab-content')}>
69-
{renderTabContent()}
76+
return (
77+
<Flex direction="column" gap={4} className={b()}>
78+
<Flex direction="column" gap={3} className={b('tabs-container')}>
79+
<TabProvider value={networkTab}>
80+
<TabList size="m">
81+
{networkTabs.map(({id, title}) => {
82+
return (
83+
<Tab
84+
key={id}
85+
value={id}
86+
onClick={() => handleNetworkTabChange(id)}
87+
>
88+
{title}
89+
</Tab>
90+
);
91+
})}
92+
</TabList>
93+
</TabProvider>
94+
95+
<Flex direction="column" className={b('tab-content')}>
96+
{renderTabContent()}
97+
</Flex>
7098
</Flex>
7199
</Flex>
72-
</Flex>
73-
);
100+
);
101+
};
102+
103+
return <LoaderWrapper loading={!capabilitiesLoaded}>{renderContent()}</LoaderWrapper>;
74104
}

src/containers/Tenant/Diagnostics/TenantOverview/TenantNetwork/columns.ts

Lines changed: 9 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,29 @@
11
import {
22
getClockSkewColumn,
3-
getDataCenterColumn,
43
getNetworkHostColumn,
54
getNodeIdColumn,
65
getPingTimeColumn,
7-
getRackColumn,
86
getUptimeColumn,
97
} from '../../../../../components/nodesColumns/columns';
10-
import {isSortableNodesColumn} from '../../../../../components/nodesColumns/constants';
8+
import {
9+
NODES_COLUMNS_TO_DATA_FIELDS,
10+
isSortableNodesColumn,
11+
} from '../../../../../components/nodesColumns/constants';
1112
import type {GetNodesColumnsParams} from '../../../../../components/nodesColumns/types';
1213
import type {NodesPreparedEntity} from '../../../../../store/reducers/nodes/types';
14+
import {getRequiredDataFields} from '../../../../../utils/tableUtils/getRequiredDataFields';
1315
import type {Column} from '../../../../../utils/tableUtils/types';
1416

1517
export function getTopNodesByPingColumns(params: GetNodesColumnsParams) {
1618
const columns: Column<NodesPreparedEntity>[] = [
1719
getNodeIdColumn(),
1820
getNetworkHostColumn(params),
19-
getDataCenterColumn(),
20-
getRackColumn(),
2121
getUptimeColumn(),
2222
getPingTimeColumn(),
2323
];
2424

25-
const fieldsRequired = [
26-
'NodeId',
27-
'Host',
28-
'DataCenter',
29-
'Rack',
30-
'UptimeSeconds',
31-
'PingTimeUs',
32-
'PingTimeMinUs',
33-
'PingTimeMaxUs',
34-
];
25+
const columnsIds = columns.map((column) => column.name);
26+
const fieldsRequired = getRequiredDataFields(columnsIds, NODES_COLUMNS_TO_DATA_FIELDS);
3527

3628
return [
3729
columns.map((column) => ({
@@ -46,22 +38,12 @@ export function getTopNodesBySkewColumns(params: GetNodesColumnsParams) {
4638
const columns: Column<NodesPreparedEntity>[] = [
4739
getNodeIdColumn(),
4840
getNetworkHostColumn(params),
49-
getDataCenterColumn(),
50-
getRackColumn(),
5141
getUptimeColumn(),
5242
getClockSkewColumn(),
5343
];
5444

55-
const fieldsRequired = [
56-
'NodeId',
57-
'Host',
58-
'DataCenter',
59-
'Rack',
60-
'UptimeSeconds',
61-
'ClockSkewUs',
62-
'ClockSkewMinUs',
63-
'ClockSkewMaxUs',
64-
];
45+
const columnsIds = columns.map((column) => column.name);
46+
const fieldsRequired = getRequiredDataFields(columnsIds, NODES_COLUMNS_TO_DATA_FIELDS);
6547

6648
return [
6749
columns.map((column) => ({

src/containers/Tenant/Diagnostics/TenantOverview/i18n/en.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,5 +56,7 @@
5656
"action_by-pool-usage": "By Pool Usage",
5757
"title_memory-details": "Memory Details",
5858
"field_memory-usage": "Memory usage",
59-
"context_capacity-usage": "{{value}} of {{capacity}}"
59+
"context_capacity-usage": "{{value}} of {{capacity}}",
60+
"network-stats-unavailable.title": "Network Statistics Unavailable",
61+
"network-stats-unavailable.description": "Network ping and clock skew statistics require a newer backend version. Please upgrade your YDB installation to access these features."
6062
}

0 commit comments

Comments
 (0)