Transformations: Prevent auto-naming of fields with alias in Calculate field (#104895)
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user