import {Flex} from '@gravity-ui/uikit';
import type {PreparedNode} from '../../store/reducers/node/types';
import {cn} from '../../utils/cn';
import {EMPTY_DATA_PLACEHOLDER} from '../../utils/constants';
import {formatStorageValues} from '../../utils/dataFormatters/dataFormatters';
import {useNodeDeveloperUIHref} from '../../utils/hooks/useNodeDeveloperUIHref';
import {getNodeMemory} from '../../utils/memory';
import {LinkWithIcon} from '../LinkWithIcon/LinkWithIcon';
import {PoolUsage} from '../PoolUsage/PoolUsage';
import {ProgressViewer} from '../ProgressViewer/ProgressViewer';
import {NodeUptime} from '../UptimeViewer/UptimeViewer';
import type {YDBDefinitionListItem} from '../YDBDefinitionList/YDBDefinitionList';
import {YDBDefinitionList} from '../YDBDefinitionList/YDBDefinitionList';
import i18n from './i18n';
import './FullNodeViewer.scss';
const b = cn('full-node-viewer');
interface FullNodeViewerProps {
node?: PreparedNode;
className?: string;
}
const getLoadAverageIntervalTitle = (index: number) => {
return [i18n('la-interval-1m'), i18n('la-interval-5m'), i18n('la-interval-15m')][index];
};
const formatMemoryValues = (value?: number, total?: number) =>
formatStorageValues(value, total, 'gb', undefined, true);
// eslint-disable-next-line complexity
export const FullNodeViewer = ({node, className}: FullNodeViewerProps) => {
const developerUIHref = useNodeDeveloperUIHref(node);
const commonInfo: YDBDefinitionListItem[] = [];
if (node?.Tenants?.length) {
commonInfo.push({
name: i18n('database'),
content: node.Tenants[0] || EMPTY_DATA_PLACEHOLDER,
});
}
commonInfo.push(
{name: i18n('version'), content: node?.Version || EMPTY_DATA_PLACEHOLDER},
{
name: i18n('uptime'),
content: (