import {Flex} from '@gravity-ui/uikit'; import {useBlobStorageCapacityMetricsEnabled} from '../../store/reducers/capabilities/hooks'; import {cn} from '../../utils/cn'; import {EMPTY_DATA_PLACEHOLDER} from '../../utils/constants'; import type {PreparedPDisk} from '../../utils/disks/types'; import {formatMetricPercent} from '../../utils/storageMetrics'; import {CopyableValue} from '../CopyableValue/CopyableValue'; import {getPDiskCapacityItems} from '../DiskCapacityInfo/DiskCapacityInfo'; import type {YDBDefinitionListItem} from '../YDBDefinitionList/YDBDefinitionList'; import {YDBDefinitionList} from '../YDBDefinitionList/YDBDefinitionList'; import {getPDiskLogItems, getPDiskRuntimeItems} from './getPDiskDetails'; import {pDiskInfoKeyset} from './i18n'; import './PDiskInfo.scss'; const b = cn('ydb-pdisk-info'); interface PDiskInfoProps { pDisk?: PreparedPDisk; className?: string; } function getPageCapacityItems(data: PreparedPDisk, capacityMetricsEnabled: boolean) { const items = getPDiskCapacityItems(data, {useWhiteboardSize: capacityMetricsEnabled}).filter( ({id}) => capacityMetricsEnabled || id === 'space' || id === 'slots', ); if (!capacityMetricsEnabled) { items.splice(1, 0, { id: 'usage', name: pDiskInfoKeyset('usage'), content: formatMetricPercent(data.AllocatedPercent, 2), }); } return [...items, ...getPDiskLogItems(data)]; } export function PDiskInfo({pDisk = {}, className}: PDiskInfoProps) { const capacityMetricsEnabled = useBlobStorageCapacityMetricsEnabled(); const identityItems = [ {name: pDiskInfoKeyset('guid'), value: pDisk.Guid}, {name: pDiskInfoKeyset('serial-number'), value: pDisk.SerialNumber}, ].map(({name, value}) => ({ name, content: ( {value || EMPTY_DATA_PLACEHOLDER} ), })); const runtimeItems: YDBDefinitionListItem[] = [ ...getPDiskRuntimeItems(pDisk), ...identityItems, ]; return ( ); }