diff --git a/packages/grafana-data/src/transformations/transformers/renameByRegex.test.ts b/packages/grafana-data/src/transformations/transformers/renameByRegex.test.ts index aa630829a58..170811442db 100644 --- a/packages/grafana-data/src/transformations/transformers/renameByRegex.test.ts +++ b/packages/grafana-data/src/transformations/transformers/renameByRegex.test.ts @@ -80,6 +80,59 @@ describe('Rename By Regex Transformer', () => { }); }); + it('should be able to replace globally', async () => { + const cfg: DataTransformerConfig = { + id: DataTransformerID.renameByRegex, + options: { + regex: '/e/g', + renamePattern: 'E', + }, + }; + await expect(transformDataFrame([cfg], [data])).toEmitValuesWith((received) => { + const data = received[0]; + const frame = data[0]; + expect(frame.fields).toMatchInlineSnapshot(` + Array [ + Object { + "config": Object { + "displayName": "TimE", + "name": "Time", + }, + "name": "Time", + "state": Object { + "displayName": "TimE", + "multipleFrames": false, + }, + "type": "time", + "values": Array [ + 3000, + 4000, + 5000, + 6000, + ], + }, + Object { + "config": Object { + "displayName": "wEb-01.ExamplE.com", + }, + "name": "Value", + "state": Object { + "displayName": "wEb-01.ExamplE.com", + "multipleFrames": false, + }, + "type": "number", + "values": Array [ + 10000.3, + 10000.4, + 10000.5, + 10000.6, + ], + }, + ] + `); + }); + }); + it('should not rename misses', async () => { const cfg: DataTransformerConfig = { id: DataTransformerID.renameByRegex, @@ -147,7 +200,6 @@ describe('Rename By Regex Transformer', () => { Array [ Object { "config": Object { - "displayName": "Time", "name": "Time", }, "name": "Time", diff --git a/packages/grafana-data/src/transformations/transformers/renameByRegex.ts b/packages/grafana-data/src/transformations/transformers/renameByRegex.ts index 05426c988c0..ad6e2d39942 100644 --- a/packages/grafana-data/src/transformations/transformers/renameByRegex.ts +++ b/packages/grafana-data/src/transformations/transformers/renameByRegex.ts @@ -1,6 +1,7 @@ import { map } from 'rxjs/operators'; import { getFieldDisplayName } from '../../field/fieldState'; +import { stringToJsRegex } from '../../text/string'; import { DataFrame } from '../../types/dataFrame'; import { DataTransformerInfo } from '../../types/transformations'; @@ -47,7 +48,7 @@ export const renameByRegexTransformer: DataTransformerInfo (frame: DataFrame) => { - const regex = new RegExp(options.regex); + const regex = stringToJsRegex(options.regex); const fields = frame.fields.map((field) => { const displayName = getFieldDisplayName(field, frame); if (!regex.test(displayName)) {