import React from 'react';
import {ArrowRight, ChevronDown, ChevronUp, Database} from '@gravity-ui/icons';
import {ClipboardButton, Flex, Icon, Text} from '@gravity-ui/uikit';
import {InternalLinkButton} from '../../../components/InternalLinkButton/InternalLinkButton';
import {VersionsBar} from '../../../components/VersionsBar/VersionsBar';
import {getTenantPath} from '../../../routes';
import {TENANT_DIAGNOSTICS_TABS_IDS, TENANT_PAGE} from '../../../store/reducers/tenant/constants';
import {cn} from '../../../utils/cn';
import type {PreparedNodeSystemState} from '../../../utils/nodes';
import type {PreparedVersion} from '../../../utils/versions/types';
import {getTenantPageForDiagnosticsTab} from '../../Tenant/utils/diagnosticsNavigation';
import {useNavigationV2Enabled} from '../../Tenant/utils/useNavigationV2Enabled';
import i18n from '../i18n';
import type {GroupedNodesItem} from '../types';
import './NodesTreeTitle.scss';
const b = cn('ydb-versions-nodes-tree-title');
interface NodesTreeTitleProps {
title?: string;
isDatabase?: boolean;
expanded?: boolean;
nodes?: PreparedNodeSystemState[];
items?: GroupedNodesItem[];
versionColor?: string;
preparedVersions?: PreparedVersion[];
onClick?: () => void;
}
export const NodesTreeTitle = ({
title,
isDatabase,
expanded,
nodes,
items,
versionColor,
preparedVersions,
onClick,
}: NodesTreeTitleProps) => {
const isV2Enabled = useNavigationV2Enabled();
const handleClick = React.useCallback(() => {
onClick?.();
}, [onClick]);
const stopPropagation = React.useCallback((event: React.MouseEvent) => {
event.stopPropagation();
}, []);
const nodesAmount = React.useMemo(() => {
if (items) {
return items.reduce((acc, curr) => {
if (!curr.nodes) {
return acc;
}
return acc + curr.nodes.length;
}, 0);
} else {
return nodes ? nodes.length : 0;
}
}, [items, nodes]);
const nodesLink = React.useMemo(
() =>
getTenantPath({
database: title,
[TENANT_PAGE]: getTenantPageForDiagnosticsTab(
TENANT_DIAGNOSTICS_TABS_IDS.nodes,
isV2Enabled,
),
diagnosticsTab: TENANT_DIAGNOSTICS_TABS_IDS.nodes,
}),
[isV2Enabled, title],
);
const renderNodesCount = () => {
if (isDatabase) {
return (