FieldOverrides: Clear displayName caching after applying field overrides (#93651)

* FieldOverrides: Clear displayName caching after applying field overrides

* Remove old comment
This commit is contained in:
Torkel Ödegaard 2024-09-24 13:51:02 +02:00 committed by GitHub
parent 5193318c56
commit f04e032cf1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 59 additions and 0 deletions

View File

@ -309,6 +309,63 @@ describe('applyFieldOverrides', () => {
expect(config.decimals).toEqual(1);
});
it('displayName should be able to reference itself', () => {
const data = applyFieldOverrides({
data: [f0], // the frame
fieldConfig: {
defaults: {
displayName: '${__field.displayName} and more!',
},
overrides: [],
},
replaceVariables: (v, scopedVars) => {
const dataContext = scopedVars?.__dataContext?.value;
if (dataContext) {
// Trying to fake what would happen with the real interpolation function
return getFieldDisplayName(dataContext.field, dataContext.frame) + ' and more!';
}
return v;
},
theme: createTheme(),
fieldConfigRegistry: customFieldRegistry,
})[0];
const valueColumn = data.fields[1];
const displayName = getFieldDisplayName(valueColumn, data);
expect(displayName).toEqual('value and more!');
});
it('displayName should be able to reference itself in an override', () => {
const data = applyFieldOverrides({
data: [f0], // the frame
fieldConfig: {
defaults: {},
overrides: [
{
matcher: { id: FieldMatcherID.byName, options: 'value' },
properties: [{ id: 'displayName', value: '${__field.displayName} and more!' }],
},
],
},
replaceVariables: (v, scopedVars) => {
const dataContext = scopedVars?.__dataContext?.value;
if (dataContext) {
// Trying to fake what would happen with the real interpolation function
return getFieldDisplayName(dataContext.field, dataContext.frame) + ' and more!';
}
return v;
},
theme: createTheme(),
fieldConfigRegistry: customFieldRegistry,
})[0];
const valueColumn = data.fields[1];
const displayName = getFieldDisplayName(valueColumn, data);
expect(displayName).toEqual('value and more!');
});
it('will apply set min/max when asked', () => {
const data = applyFieldOverrides({
data: [f0], // the frame

View File

@ -162,6 +162,8 @@ export function applyFieldOverrides(options: ApplyFieldOverrideOptions): DataFra
const { range, newGlobalRange } = calculateRange(config, field, globalRange, options.data!);
globalRange = newGlobalRange;
// Clear any cached displayName as it can change during field overrides process
field.state!.displayName = null;
field.state!.seriesIndex = seriesIndex;
field.state!.range = range;
field.type = type;