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};
})}
);
};