diff --git a/packages/grafana-data/src/field/fieldOverrides.test.ts b/packages/grafana-data/src/field/fieldOverrides.test.ts index 247951b82d4..4d5fd1afbcc 100644 --- a/packages/grafana-data/src/field/fieldOverrides.test.ts +++ b/packages/grafana-data/src/field/fieldOverrides.test.ts @@ -22,13 +22,14 @@ import { FieldMatcherID } from '../transformations'; import { FieldConfigOptionsRegistry } from './FieldConfigOptionsRegistry'; import { getFieldDisplayName } from './fieldState'; import { locationUtil } from '../utils'; -const property1 = { + +const property1: any = { id: 'custom.property1', // Match field properties path: 'property1', // Match field properties isCustom: true, process: (value: any) => value, shouldApply: () => true, -} as any; +}; const property2 = { id: 'custom.property2', // Match field properties @@ -36,18 +37,26 @@ const property2 = { isCustom: true, process: (value: any) => value, shouldApply: () => true, -} as any; +}; -const property3 = { +const property3: any = { id: 'custom.property3.nested', // Match field properties path: 'property3.nested', // Match field properties isCustom: true, process: (value: any) => value, shouldApply: () => true, -} as any; +}; + +const shouldApplyFalse: any = { + id: 'custom.shouldApplyFalse', // Match field properties + path: 'shouldApplyFalse', // Match field properties + isCustom: true, + process: (value: any) => value, + shouldApply: () => false, +}; export const customFieldRegistry: FieldConfigOptionsRegistry = new Registry(() => { - return [property1, property2, property3, ...mockStandardProperties()]; + return [property1, property2, property3, shouldApplyFalse, ...mockStandardProperties()]; }); describe('Global MinMax', () => { @@ -353,6 +362,27 @@ describe('setDynamicConfigValue', () => { expect(config.custom.property1).toEqual('applied'); }); + it('applies overrides even when shouldApply returns false', () => { + const config: FieldConfig = { + custom: {}, + }; + setDynamicConfigValue( + config, + { + id: 'custom.shouldApplyFalse', + value: 'applied', + }, + { + fieldConfigRegistry: customFieldRegistry, + data: [] as any, + field: { type: FieldType.number } as any, + dataFrameIndex: 0, + } + ); + + expect(config.custom.shouldApplyFalse).toEqual('applied'); + }); + it('applies nested custom dynamic config values', () => { const config = { custom: { diff --git a/packages/grafana-data/src/field/fieldOverrides.ts b/packages/grafana-data/src/field/fieldOverrides.ts index 51d10b4153c..189d962a971 100644 --- a/packages/grafana-data/src/field/fieldOverrides.ts +++ b/packages/grafana-data/src/field/fieldOverrides.ts @@ -228,7 +228,7 @@ export interface FieldOverrideEnv extends FieldOverrideContext { export function setDynamicConfigValue(config: FieldConfig, value: DynamicConfigValue, context: FieldOverrideEnv) { const reg = context.fieldConfigRegistry; const item = reg.getIfExists(value.id); - if (!item || !item.shouldApply(context.field!)) { + if (!item) { return; }