import './MetricsAggregateSection.styles.scss'; import { Tooltip } from 'antd'; import InputWithLabel from 'components/InputWithLabel/InputWithLabel'; import { ATTRIBUTE_TYPES, PANEL_TYPES } from 'constants/queryBuilder'; import SpaceAggregationOptions from 'container/QueryBuilder/components/SpaceAggregationOptions/SpaceAggregationOptions'; import { GroupByFilter, OperatorsSelect } from 'container/QueryBuilder/filters'; import { useQueryOperations } from 'hooks/queryBuilder/useQueryBuilderOperations'; import { Info } from 'lucide-react'; import { memo, useCallback, useMemo } from 'react'; import { IBuilderQuery } from 'types/api/queryBuilder/queryBuilderData'; const MetricsAggregateSection = memo(function MetricsAggregateSection({ query, index, version, panelType, }: { query: IBuilderQuery; index: number; version: string; panelType: PANEL_TYPES | null; }): JSX.Element { const { operators, spaceAggregationOptions, handleChangeQueryData, handleChangeOperator, handleSpaceAggregationChange, } = useQueryOperations({ index, query, entityVersion: version, }); const handleChangeGroupByKeys = useCallback( (value: IBuilderQuery['groupBy']) => { handleChangeQueryData('groupBy', value); }, [handleChangeQueryData], ); const showAggregationInterval = useMemo(() => { // eslint-disable-next-line sonarjs/prefer-single-boolean-return if (panelType === PANEL_TYPES.VALUE) { return false; } return true; }, [panelType]); const disableOperatorSelector = !query?.aggregateAttribute.key || query?.aggregateAttribute.key === ''; return (
AGGREGATE BY TIME{' '}
Align with
{showAggregationInterval && (
aggregated every
)}
AGGREGATE LABELS
by
); }); export default MetricsAggregateSection;