Transformations: Prevent auto-naming of fields with alias in Calculate field (#104895)

This commit is contained in:
Leon Sorokin
2025-05-03 01:40:25 +03:00
committed by GitHub
parent c8384cf503
commit a00ef79f5a
2 changed files with 63 additions and 1 deletions
@@ -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,
@@ -267,12 +267,18 @@ export const calculateFieldTransformer: DataTransformerInfo<CalculateFieldTransf
return frame;
}
const field = {
const field: Field = {
name: getNameFromOptions(options),
type: FieldType.number,
config: {},
values,
};
if (options.alias?.length) {
// this prevents downstream auto-renames when there is an explicit alias
field.config.displayName = options.alias;
}
let fields: Field[] = [];
// Replace all fields with the single field