From 20db5680d2e2878e2dac4b65048f4d7afdba99c4 Mon Sep 17 00:00:00 2001 From: Peter Holmberg Date: Tue, 30 Jun 2020 17:03:39 +0200 Subject: [PATCH] Fix: Value mappings match against string values (#25929) * Use standard input for value mappings value * add test and case for matching string values * re add number on rangemap * remove FieldTypeNumber required --- packages/grafana-data/src/utils/valueMappings.test.ts | 11 +++++++++++ packages/grafana-data/src/utils/valueMappings.ts | 4 +++- .../src/components/ValueMappingsEditor/MappingRow.tsx | 1 - packages/grafana-ui/src/utils/standardEditors.tsx | 2 +- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/packages/grafana-data/src/utils/valueMappings.test.ts b/packages/grafana-data/src/utils/valueMappings.test.ts index b523cc711fb..f1f465ee849 100644 --- a/packages/grafana-data/src/utils/valueMappings.test.ts +++ b/packages/grafana-data/src/utils/valueMappings.test.ts @@ -78,4 +78,15 @@ describe('Format value with value mappings', () => { expect(getMappedValue(valueMappings, value).text).toEqual('1-20'); }); + + it('should map value text to mapping', () => { + const valueMappings: ValueMapping[] = [ + { id: 0, operator: '', text: '1-20', type: MappingType.RangeToText, from: '1', to: '20' }, + { id: 1, operator: '', text: 'ELVA', type: MappingType.ValueToText, value: 'elva' }, + ]; + + const value = 'elva'; + + expect(getMappedValue(valueMappings, value).text).toEqual('ELVA'); + }); }); diff --git a/packages/grafana-data/src/utils/valueMappings.ts b/packages/grafana-data/src/utils/valueMappings.ts index 65fd4304e39..8aa3f9061da 100644 --- a/packages/grafana-data/src/utils/valueMappings.ts +++ b/packages/grafana-data/src/utils/valueMappings.ts @@ -19,7 +19,9 @@ const addValueToTextMappingText = ( const valueToTextMappingAsNumber = parseFloat(valueToTextMapping.value as string); if (isNaN(valueAsNumber) || isNaN(valueToTextMappingAsNumber)) { - return allValueMappings; + if (value === valueToTextMapping.value) { + return allValueMappings.concat(valueToTextMapping); + } } if (valueAsNumber !== valueToTextMappingAsNumber) { diff --git a/packages/grafana-ui/src/components/ValueMappingsEditor/MappingRow.tsx b/packages/grafana-ui/src/components/ValueMappingsEditor/MappingRow.tsx index 473c16f746e..aa835f34b10 100644 --- a/packages/grafana-ui/src/components/ValueMappingsEditor/MappingRow.tsx +++ b/packages/grafana-ui/src/components/ValueMappingsEditor/MappingRow.tsx @@ -83,7 +83,6 @@ export const MappingRow: React.FC = ({ valueMapping, updateValueMapping, <> onMappingValueChange(e.currentTarget.value)} onKeyDown={onKeyDown(onMappingValueChange)} diff --git a/packages/grafana-ui/src/utils/standardEditors.tsx b/packages/grafana-ui/src/utils/standardEditors.tsx index ba44239fcd1..56bfa3289bf 100644 --- a/packages/grafana-ui/src/utils/standardEditors.tsx +++ b/packages/grafana-ui/src/utils/standardEditors.tsx @@ -161,7 +161,7 @@ export const getStandardFieldConfigs = () => { process: valueMappingsOverrideProcessor, settings: {}, defaultValue: [], - shouldApply: field => field.type === FieldType.number, + shouldApply: () => true, category: ['Value mappings'], getItemsCount: (value?) => (value ? value.length : 0), };