import {CircleCheckFill, CircleQuestion, CircleXmarkFill} from '@gravity-ui/icons'; import {Flex, Icon, Label, Popover} from '@gravity-ui/uikit'; import type {TPartitionConfig} from '../../../../../../types/api/schema'; import {formatNumber} from '../../../../../../utils/dataFormatters/dataFormatters'; import {b} from '../TableInfo'; import i18n from '../i18n'; export interface PartitionProgressConfig { minPartitions: number; maxPartitions?: number; partitionsCount: number; } /** * Renders the current partitions count with visual indicators for out-of-range values */ export const renderCurrentPartitionsContent = (progress: PartitionProgressConfig) => { const {minPartitions, maxPartitions, partitionsCount} = progress; const isBelowMin = partitionsCount < minPartitions; const isAboveMax = maxPartitions !== undefined && partitionsCount > maxPartitions; const isOutOfRange = isBelowMin || isAboveMax; const content = isBelowMin ? i18n('hint_current-partitions-below-limits') : i18n('hint_current-partitions-exceeds-limits'); return ( ); }; /** * Renders bloom filter status icon (enabled/disabled) */ export const renderBloomFilterStatusIcon = (value: boolean) => { return ( ); }; /** * Renders compression groups/column families list */ export const renderCompressionGroupsContent = (partitionConfig: TPartitionConfig) => { const families = partitionConfig.ColumnFamilies; if (!Array.isArray(families) || families.length === 0) { return {i18n('value_some-groups')}; } return ( {families.map((family, index) => { const name = family?.Name ? String(family.Name) : i18n('value_default'); const id = family.Id ?? `${name}-${index}`; return {name}; })} ); };