UNPKG

@grafana/ui

Version:
1 lines 7.36 kB
{"version":3,"file":"FieldValueMatcher.mjs","sources":["../../../../src/components/MatchersUI/FieldValueMatcher.tsx"],"sourcesContent":["import { useMemo, useCallback, type FormEvent } from 'react';\n\nimport {\n FieldMatcherID,\n fieldMatchers,\n type FieldValueMatcherConfig,\n fieldReducers,\n ReducerID,\n type SelectableValue,\n} from '@grafana/data';\nimport { t } from '@grafana/i18n';\nimport { ComparisonOperation } from '@grafana/schema';\n\nimport { Combobox } from '../Combobox/Combobox';\nimport { type ComboboxOption } from '../Combobox/types';\nimport { Input } from '../Input/Input';\nimport { Stack } from '../Layout/Stack/Stack';\n\nimport { type MatcherUIProps, type FieldMatcherUIRegistryItem } from './types';\n\ntype Props = MatcherUIProps<FieldValueMatcherConfig>;\n\nconst toComboboxOption = <T extends string | number>(\n value: SelectableValue<string | number | T>\n): ComboboxOption<T> => ({\n label: value.label,\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n value: value.value! as T,\n description: value.description,\n});\n\nexport const comparisonOperationOptions = [\n { label: '==', value: ComparisonOperation.EQ },\n { label: '!=', value: ComparisonOperation.NEQ },\n { label: '>', value: ComparisonOperation.GT },\n { label: '>=', value: ComparisonOperation.GTE },\n { label: '<', value: ComparisonOperation.LT },\n { label: '<=', value: ComparisonOperation.LTE },\n];\n\n// This should move to a utility function on the reducer registry\nfunction isBooleanReducer(r: ReducerID) {\n return r === ReducerID.allIsNull || r === ReducerID.allIsZero;\n}\n\nexport const FieldValueMatcherEditor = ({ id, options, onChange }: Props) => {\n const reducer = useMemo(() => fieldReducers.selectOptions([options?.reducer]), [options?.reducer]);\n\n const onSetReducer = useCallback(\n (selection: ComboboxOption<ReducerID>) => {\n return onChange({ ...options, reducer: selection.value });\n },\n [options, onChange]\n );\n\n const onChangeOp = useCallback(\n (v: SelectableValue<ComparisonOperation>) => {\n return onChange({ ...options, op: v.value! });\n },\n [options, onChange]\n );\n\n const onChangeValue = useCallback(\n (e: FormEvent<HTMLInputElement>) => {\n const value = e.currentTarget.valueAsNumber;\n return onChange({ ...options, value });\n },\n [options, onChange]\n );\n\n const opts = options ?? {};\n const isBool = isBooleanReducer(opts.reducer);\n\n return (\n <Stack direction=\"column\" gap={1}>\n <Stack direction=\"row\" gap={0.5}>\n <Combobox<ReducerID>\n id={id}\n value={toComboboxOption<ReducerID>(reducer.current[0])}\n options={reducer.options.map((o) => toComboboxOption<ReducerID>(o))}\n onChange={onSetReducer}\n placeholder={t('grafana-ui.field-value-matcher.select-field-placeholder', 'Select field reducer')}\n />\n {opts.reducer && !isBool && (\n <>\n <Combobox\n value={comparisonOperationOptions.find((v) => v.value === opts.op)}\n options={comparisonOperationOptions}\n onChange={onChangeOp}\n aria-label={t('grafana-ui.field-value-matcher.operator-label', 'Comparison operator')}\n width={19}\n />\n\n <Input\n type=\"number\"\n value={opts.value}\n onChange={onChangeValue}\n aria-label={t('grafana-ui.field-value-matcher.reducer-value-label', 'Reducer value')}\n />\n </>\n )}\n </Stack>\n </Stack>\n );\n};\n\nexport const getFieldValueMatcherItem: () => FieldMatcherUIRegistryItem<FieldValueMatcherConfig> = () => ({\n id: FieldMatcherID.byValue,\n component: FieldValueMatcherEditor,\n matcher: fieldMatchers.get(FieldMatcherID.byValue),\n name: t('grafana-ui.matchers-ui.name-fields-with-value', 'Fields with values'),\n description: t(\n 'grafana-ui.matchers-ui.description-fields-with-value',\n 'Set properties for fields with reducer condition'\n ),\n optionsToLabel: (options) => `${options?.reducer} ${options?.op} ${options?.value}`,\n});\n"],"names":[],"mappings":"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"}