Skip to content

Commit 0be0a7e

Browse files
feat: remove additionalNodesProps
1 parent eda8c5a commit 0be0a7e

File tree

33 files changed

+82
-255
lines changed

33 files changed

+82
-255
lines changed

src/components/FullNodeViewer/FullNodeViewer.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ const getLoadAverageIntervalTitle = (index: number) => {
2424
return [i18n('la-interval-1m'), i18n('la-interval-5m'), i18n('la-interval-15m')][index];
2525
};
2626

27+
// eslint-disable-next-line complexity
2728
export const FullNodeViewer = ({node, className}: FullNodeViewerProps) => {
2829
const developerUIHref = useNodeDeveloperUIHref(node);
2930

src/components/NetworkTable/NetworkTable.tsx

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,14 @@ import {
1111

1212
type NetworkWrapperProps = Pick<
1313
NodesProps,
14-
'path' | 'scrollContainerRef' | 'additionalNodesProps' | 'database' | 'databaseFullPath'
14+
'path' | 'scrollContainerRef' | 'database' | 'databaseFullPath'
1515
>;
1616

1717
export function NetworkTable({
1818
database,
1919
databaseFullPath,
2020
path,
2121
scrollContainerRef,
22-
additionalNodesProps,
2322
}: NetworkWrapperProps) {
2423
return (
2524
<Nodes
@@ -28,11 +27,7 @@ export function NetworkTable({
2827
databaseFullPath={databaseFullPath}
2928
scrollContainerRef={scrollContainerRef}
3029
withPeerRoleFilter={Boolean(database)}
31-
additionalNodesProps={additionalNodesProps}
32-
columns={getNetworkTableNodesColumns({
33-
database,
34-
getNodeRef: additionalNodesProps?.getNodeRef,
35-
})}
30+
columns={getNetworkTableNodesColumns({database})}
3631
defaultColumnsIds={NETWORK_DEFAULT_NODES_COLUMNS}
3732
requiredColumnsIds={NETWORK_REQUIRED_NODES_COLUMNS}
3833
selectedColumnsKey={NETWORK_NODES_TABLE_SELECTED_COLUMNS_KEY}

src/components/NodeHostWrapper/NodeHostWrapper.tsx

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
import {getDefaultNodePath} from '../../containers/Node/NodePages';
2-
import type {GetNodeRefFunc, NodeAddress} from '../../types/additionalProps';
2+
import type {PreparedStorageNode} from '../../store/reducers/storage/types';
3+
import type {NodeAddress} from '../../types/additionalProps';
34
import type {TNodeInfo, TSystemStateInfo} from '../../types/api/nodes';
45
import {EMPTY_DATA_PLACEHOLDER} from '../../utils/constants';
5-
import {
6-
createDeveloperUIInternalPageHref,
7-
createDeveloperUILinkWithNodeId,
8-
} from '../../utils/developerUI/developerUI';
96
import {isUnavailableNode} from '../../utils/nodes';
107
import {EntityStatus} from '../EntityStatus/EntityStatus';
118
import {NodeEndpointsTooltipContent} from '../TooltipsContent';
@@ -18,15 +15,13 @@ export type NodeHostData = NodeAddress &
1815
};
1916

2017
interface NodeHostWrapperProps {
21-
node: NodeHostData;
22-
getNodeRef?: GetNodeRefFunc;
18+
node: PreparedStorageNode;
2319
database?: string;
2420
statusForIcon?: 'SystemState' | 'ConnectStatus';
2521
}
2622

2723
export const NodeHostWrapper = ({
2824
node,
29-
getNodeRef,
3025
database,
3126
statusForIcon = 'SystemState',
3227
}: NodeHostWrapperProps) => {
@@ -38,17 +33,6 @@ export const NodeHostWrapper = ({
3833

3934
const isNodeAvailable = !isUnavailableNode(node);
4035

41-
let developerUIInternalHref: string | undefined;
42-
if (getNodeRef) {
43-
const developerUIHref = getNodeRef(node);
44-
developerUIInternalHref = developerUIHref
45-
? createDeveloperUIInternalPageHref(developerUIHref)
46-
: undefined;
47-
} else if (node.NodeId) {
48-
const developerUIHref = createDeveloperUILinkWithNodeId(node.NodeId);
49-
developerUIInternalHref = createDeveloperUIInternalPageHref(developerUIHref);
50-
}
51-
5236
const nodePath = isNodeAvailable
5337
? getDefaultNodePath(
5438
node.NodeId,
@@ -66,9 +50,7 @@ export const NodeHostWrapper = ({
6650
path={nodePath}
6751
hasClipboardButton
6852
infoPopoverContent={
69-
isNodeAvailable ? (
70-
<NodeEndpointsTooltipContent data={node} nodeHref={developerUIInternalHref} />
71-
) : null
53+
isNodeAvailable ? <NodeEndpointsTooltipContent data={node} /> : null
7254
}
7355
/>
7456
);

src/components/TooltipsContent/NodeEndpointsTooltipContent/NodeEndpointsTooltipContent.tsx

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import type {DefinitionListItemProps} from '@gravity-ui/uikit';
22
import {DefinitionList} from '@gravity-ui/uikit';
33

4-
import type {TSystemStateInfo} from '../../../types/api/nodes';
4+
import type {PreparedStorageNode} from '../../../store/reducers/storage/types';
55
import {cn} from '../../../utils/cn';
6-
import {useIsUserAllowedToMakeChanges} from '../../../utils/hooks/useIsUserAllowedToMakeChanges';
6+
import {useNodeDeveloperUIHref} from '../../../utils/hooks/useNodeDeveloperUIHref';
77
import {LinkWithIcon} from '../../LinkWithIcon/LinkWithIcon';
88

99
import i18n from './i18n';
@@ -13,12 +13,12 @@ import './NodeEndpointsTooltipContent.scss';
1313
const b = cn('ydb-node-endpoints-tooltip-content');
1414

1515
interface NodeEdpointsTooltipProps {
16-
data?: TSystemStateInfo;
17-
nodeHref?: string;
16+
data?: PreparedStorageNode;
1817
}
1918

20-
export const NodeEndpointsTooltipContent = ({data, nodeHref}: NodeEdpointsTooltipProps) => {
21-
const isUserAllowedToMakeChanges = useIsUserAllowedToMakeChanges();
19+
export const NodeEndpointsTooltipContent = ({data}: NodeEdpointsTooltipProps) => {
20+
const developerUIInternalHref = useNodeDeveloperUIHref(data);
21+
2222
const info: (DefinitionListItemProps & {key: string})[] = [];
2323

2424
if (data?.Roles?.length) {
@@ -58,10 +58,12 @@ export const NodeEndpointsTooltipContent = ({data, nodeHref}: NodeEdpointsToolti
5858
});
5959
}
6060

61-
if (isUserAllowedToMakeChanges && nodeHref) {
61+
if (developerUIInternalHref) {
6262
info.push({
6363
name: 'Links',
64-
children: <LinkWithIcon title={i18n('context_developer-ui')} url={nodeHref} />,
64+
children: (
65+
<LinkWithIcon title={i18n('context_developer-ui')} url={developerUIInternalHref} />
66+
),
6567
key: 'developerUi',
6668
});
6769
}

src/components/nodesColumns/columns.tsx

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import DataTable from '@gravity-ui/react-data-table';
22
import {DefinitionList} from '@gravity-ui/uikit';
33

4+
import type {PreparedStorageNode} from '../../store/reducers/storage/types';
45
import type {TMemoryStats, TPoolStats} from '../../types/api/nodes';
56
import type {TTabletStateInfo} from '../../types/api/tablet';
67
import {valueIsDefined} from '../../utils';
@@ -17,7 +18,6 @@ import {bytesToSpeed, isNumeric} from '../../utils/utils';
1718
import {CellWithPopover} from '../CellWithPopover/CellWithPopover';
1819
import {MemoryViewer} from '../MemoryViewer/MemoryViewer';
1920
import {NodeHostWrapper} from '../NodeHostWrapper/NodeHostWrapper';
20-
import type {NodeHostData} from '../NodeHostWrapper/NodeHostWrapper';
2121
import {PoolsGraph} from '../PoolsGraph/PoolsGraph';
2222
import {ProgressViewer} from '../ProgressViewer/ProgressViewer';
2323
import {TabletsStatistic} from '../TabletsStatistic';
@@ -44,15 +44,14 @@ export function getNodeIdColumn<T extends {NodeId?: string | number}>(): Column<
4444
align: DataTable.RIGHT,
4545
};
4646
}
47-
export function getHostColumn<T extends NodeHostData>({
48-
getNodeRef,
47+
export function getHostColumn<T extends PreparedStorageNode>({
4948
database,
5049
}: GetNodesColumnsParams): Column<T> {
5150
return {
5251
name: NODES_COLUMNS_IDS.Host,
5352
header: NODES_COLUMNS_TITLES.Host,
5453
render: ({row}) => {
55-
return <NodeHostWrapper node={row} getNodeRef={getNodeRef} database={database} />;
54+
return <NodeHostWrapper node={row} database={database} />;
5655
},
5756
width: 350,
5857
align: DataTable.LEFT,
@@ -62,21 +61,15 @@ export function getHostColumn<T extends NodeHostData>({
6261
// Different column for different set of required fields
6362
// ConnectStatus is required here, it makes handler to return network stats
6463
// On versions before 25-1-2 ConnectStatus also makes handler to return peers - it can significantly increase response size
65-
export function getNetworkHostColumn<T extends NodeHostData>({
66-
getNodeRef,
64+
export function getNetworkHostColumn<T extends PreparedStorageNode>({
6765
database,
6866
}: GetNodesColumnsParams): Column<T> {
6967
return {
7068
name: NODES_COLUMNS_IDS.NetworkHost,
7169
header: NODES_COLUMNS_TITLES.NetworkHost,
7270
render: ({row}) => {
7371
return (
74-
<NodeHostWrapper
75-
node={row}
76-
getNodeRef={getNodeRef}
77-
database={database}
78-
statusForIcon={'ConnectStatus'}
79-
/>
72+
<NodeHostWrapper node={row} database={database} statusForIcon={'ConnectStatus'} />
8073
);
8174
},
8275
width: 350,

src/components/nodesColumns/types.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
import type {StorageNodesColumnsSettings} from '../../containers/Storage/PaginatedStorageNodesTable/columns/types';
22
import type {StorageViewContext} from '../../containers/Storage/types';
33
import type {PreparedStorageNode} from '../../store/reducers/storage/types';
4-
import type {GetNodeRefFunc} from '../../types/additionalProps';
54
import type {Column} from '../../utils/tableUtils/types';
65

76
export interface GetNodesColumnsParams {
8-
getNodeRef?: GetNodeRefFunc;
97
database?: string;
108

119
viewContext?: StorageViewContext;

src/containers/AppWithClusters/ExtendedCluster/ExtendedCluster.tsx

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import {useClusterBaseInfo} from '../../../store/reducers/cluster/cluster';
44
import type {AdditionalClusterProps} from '../../../types/additionalProps';
55
import type {GetClusterLinks, GetDatabaseLinks} from '../../../uiFactory/types';
66
import {cn} from '../../../utils/cn';
7-
import {useAdditionalNodesProps} from '../../../utils/hooks/useAdditionalNodesProps';
87
import type {GetLogsLink} from '../../../utils/logs';
98
import type {GetMonitoringClusterLink, GetMonitoringLink} from '../../../utils/monitoring';
109
import {getCleanBalancerValue} from '../../../utils/parseBalancer';
@@ -79,8 +78,6 @@ export function ExtendedCluster({
7978
getDatabaseLinks,
8079
getClusterLinks,
8180
}: ExtendedClusterProps) {
82-
const additionalNodesProps = useAdditionalNodesProps();
83-
8481
return (
8582
<div className={b()}>
8683
<ClusterComponent
@@ -93,7 +90,6 @@ export function ExtendedCluster({
9390
getLogsLink,
9491
getDatabaseLinks,
9592
})}
96-
additionalNodesProps={additionalNodesProps}
9793
/>
9894
</div>
9995
);

src/containers/AppWithClusters/ExtendedTenant/ExtendedTenant.tsx

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import type {GetDatabaseLinks} from '../../../uiFactory/types';
2-
import {useAdditionalNodesProps} from '../../../utils/hooks/useAdditionalNodesProps';
32
import type {GetLogsLink} from '../../../utils/logs';
43
import type {GetMonitoringLink} from '../../../utils/monitoring';
54
import type {Tenant} from '../../Tenant/Tenant';
@@ -18,17 +17,11 @@ export function ExtendedTenant({
1817
getLogsLink,
1918
getDatabaseLinks,
2019
}: ExtendedTenantProps) {
21-
const additionalNodesProps = useAdditionalNodesProps();
2220
const additionalTenantProps = useAdditionalTenantsProps({
2321
getMonitoringLink,
2422
getLogsLink,
2523
getDatabaseLinks,
2624
});
2725

28-
return (
29-
<TenantComponent
30-
additionalTenantProps={additionalTenantProps}
31-
additionalNodesProps={additionalNodesProps}
32-
/>
33-
);
26+
return <TenantComponent additionalTenantProps={additionalTenantProps} />;
3427
}

src/containers/Cluster/Cluster.tsx

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,7 @@ import {
2626
useClusterBaseInfo,
2727
} from '../../store/reducers/cluster/cluster';
2828
import {setHeaderBreadcrumbs} from '../../store/reducers/header/header';
29-
import type {
30-
AdditionalClusterProps,
31-
AdditionalNodesProps,
32-
AdditionalTenantsProps,
33-
} from '../../types/additionalProps';
29+
import type {AdditionalClusterProps, AdditionalTenantsProps} from '../../types/additionalProps';
3430
import {EFlag} from '../../types/api/enums';
3531
import {uiFactory} from '../../uiFactory/uiFactory';
3632
import {cn} from '../../utils/cn';
@@ -60,15 +56,10 @@ const b = cn('ydb-cluster');
6056

6157
interface ClusterProps {
6258
additionalTenantsProps?: AdditionalTenantsProps;
63-
additionalNodesProps?: AdditionalNodesProps;
6459
additionalClusterProps?: AdditionalClusterProps;
6560
}
6661

67-
export function Cluster({
68-
additionalClusterProps,
69-
additionalTenantsProps,
70-
additionalNodesProps,
71-
}: ClusterProps) {
62+
export function Cluster({additionalClusterProps, additionalTenantsProps}: ClusterProps) {
7263
const container = React.useRef<HTMLDivElement>(null);
7364
const isClusterDashboardAvailable = useClusterDashboardAvailable();
7465

@@ -237,10 +228,7 @@ export function Cluster({
237228
.pathname
238229
}
239230
>
240-
<Nodes
241-
scrollContainerRef={container}
242-
additionalNodesProps={additionalNodesProps}
243-
/>
231+
<Nodes scrollContainerRef={container} />
244232
</Route>
245233
<Route
246234
path={
@@ -258,10 +246,7 @@ export function Cluster({
258246
).pathname
259247
}
260248
>
261-
<NetworkTable
262-
scrollContainerRef={container}
263-
additionalNodesProps={additionalNodesProps}
264-
/>
249+
<NetworkTable scrollContainerRef={container} />
265250
</Route>
266251
)}
267252
<Route

src/containers/Nodes/Nodes.tsx

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import {
88
import type {NodesColumnId} from '../../components/nodesColumns/constants';
99
import type {NodesColumn} from '../../components/nodesColumns/types';
1010
import {useBridgeModeEnabled} from '../../store/reducers/capabilities/hooks';
11-
import type {AdditionalNodesProps} from '../../types/additionalProps';
1211
import type {NodesGroupByField} from '../../types/api/nodes';
1312
import {
1413
useIsUserAllowedToMakeChanges,
@@ -32,7 +31,6 @@ export interface NodesProps {
3231
database?: string;
3332
databaseFullPath?: string;
3433
scrollContainerRef: React.RefObject<HTMLElement>;
35-
additionalNodesProps?: AdditionalNodesProps;
3634
withPeerRoleFilter?: boolean;
3735
columns?: NodesColumn[];
3836
defaultColumnsIds?: NodesColumnId[];
@@ -46,7 +44,6 @@ export function Nodes({
4644
database,
4745
databaseFullPath,
4846
scrollContainerRef,
49-
additionalNodesProps,
5047
withPeerRoleFilter,
5148
columns: externalColumns,
5249
defaultColumnsIds = DEFAULT_NODES_COLUMNS,
@@ -56,12 +53,7 @@ export function Nodes({
5653
}: NodesProps) {
5754
const {handleDataFetched, columnsSettings} = useStorageColumnsSettings();
5855

59-
const columns = useGetNodesColumns({
60-
columns: externalColumns,
61-
database,
62-
getNodeRef: additionalNodesProps?.getNodeRef,
63-
columnsSettings,
64-
});
56+
const columns = useGetNodesColumns({columns: externalColumns, database, columnsSettings});
6557

6658
const bridgeModeEnabled = useBridgeModeEnabled();
6759

0 commit comments

Comments
 (0)