import React, { FunctionComponent, useMemo } from 'react'; import { SelectableValue } from '@grafana/data'; import { MultiSelect } from '@grafana/ui'; import { labelsToGroupedOptions } from '../functions'; import { SYSTEM_LABELS, INPUT_WIDTH } from '../constants'; import { MetricDescriptor, MetricQuery } from '../types'; import { Aggregation, QueryEditorRow } from '.'; export interface Props { variableOptionGroup: SelectableValue; labels: string[]; metricDescriptor?: MetricDescriptor; onChange: (query: MetricQuery) => void; query: MetricQuery; } export const GroupBy: FunctionComponent = ({ labels: groupBys = [], query, onChange, variableOptionGroup, metricDescriptor, }) => { const options = useMemo(() => [variableOptionGroup, ...labelsToGroupedOptions([...groupBys, ...SYSTEM_LABELS])], [ groupBys, variableOptionGroup, ]); return ( { onChange({ ...query, groupBys: options.map((o) => o.value!) }); }} > onChange({ ...query, crossSeriesReducer })} > ); };