diff --git a/packages/grafana-data/src/transformations/transformers/calculateField.test.ts b/packages/grafana-data/src/transformations/transformers/calculateField.test.ts index 0017e07d1b7..ddae9577013 100644 --- a/packages/grafana-data/src/transformations/transformers/calculateField.test.ts +++ b/packages/grafana-data/src/transformations/transformers/calculateField.test.ts @@ -650,6 +650,62 @@ describe('calculateField transformer w/ timeseries', () => { }); }); + it('when alias exists sets displayName = alias to prevent downstream auto-naming', async () => { + const seriesA = toDataFrame({ + fields: [ + { name: 'time', type: FieldType.time, values: [1000, 2000] }, + { name: 'A', type: FieldType.number, values: [1, 2] }, + ], + }); + + const cfg = { + id: DataTransformerID.calculateField, + options: { + alias: 'Aye', + binary: { + left: 'A', + operator: '+', + reducer: 'sum', + right: '10', + }, + mode: CalculateFieldMode.BinaryOperation, + reduce: { + reducer: 'sum', + }, + replaceFields: true, + }, + }; + + await expect(transformDataFrame([cfg], [seriesA])).toEmitValuesWith((received) => { + const data = received[0]; + expect(data).toEqual([ + { + fields: [ + { + config: {}, + name: 'time', + state: { + displayName: 'time', + multipleFrames: false, + }, + type: 'time', + values: [1000, 2000], + }, + { + config: { + displayName: 'Aye', + }, + name: 'Aye', + type: 'number', + values: [11, 12], + }, + ], + length: 2, + }, + ]); + }); + }); + it('reduces all field', async () => { const cfg = { id: DataTransformerID.calculateField, diff --git a/packages/grafana-data/src/transformations/transformers/calculateField.ts b/packages/grafana-data/src/transformations/transformers/calculateField.ts index c952e10e70c..9df8a1e7b39 100644 --- a/packages/grafana-data/src/transformations/transformers/calculateField.ts +++ b/packages/grafana-data/src/transformations/transformers/calculateField.ts @@ -267,12 +267,18 @@ export const calculateFieldTransformer: DataTransformerInfo