From fa62113b41dea81c73fc1b8d3cc5a55b74958e09 Mon Sep 17 00:00:00 2001 From: Victor Marin Date: Fri, 12 Dec 2025 14:12:46 +0200 Subject: [PATCH] Dashboards: Fix custom variable legacy model to return options when flag is set (#115154) * fix custom var legacy model options property * add test --- .../sceneVariablesSetToVariables.test.ts | 29 +++++++++++++++++++ .../sceneVariablesSetToVariables.ts | 6 +++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/public/app/features/dashboard-scene/serialization/sceneVariablesSetToVariables.test.ts b/public/app/features/dashboard-scene/serialization/sceneVariablesSetToVariables.test.ts index f45193f2ad8..33f06a7accc 100644 --- a/public/app/features/dashboard-scene/serialization/sceneVariablesSetToVariables.test.ts +++ b/public/app/features/dashboard-scene/serialization/sceneVariablesSetToVariables.test.ts @@ -380,6 +380,35 @@ describe('sceneVariablesSetToVariables', () => { `); }); + it('should handle Custom variable when sceneVariablesSetToVariables should keep options', () => { + const variable = new CustomVariable({ + name: 'test', + label: 'test-label', + description: 'test-desc', + hide: VariableHide.inControlsMenu, + value: ['test'], + text: ['test'], + query: 'test,test1,test2', + options: [ + { label: 'test', value: 'test' }, + { label: 'test1', value: 'test1' }, + { label: 'test2', value: 'test2' }, + ], + includeAll: true, + allValue: 'test-all', + isMulti: true, + }); + + const set = new SceneVariableSet({ + variables: [variable], + }); + const keepQueryOptions = true; + const result = sceneVariablesSetToVariables(set, keepQueryOptions); + expect(result).toHaveLength(1); + expect(result[0].options).not.toEqual([]); + expect(result[0].options?.length).toEqual(3); + }); + it('should handle ConstantVariable', () => { const variable = new ConstantVariable({ name: 'test', diff --git a/public/app/features/dashboard-scene/serialization/sceneVariablesSetToVariables.ts b/public/app/features/dashboard-scene/serialization/sceneVariablesSetToVariables.ts index 466d659ab4b..4fad1e3b317 100644 --- a/public/app/features/dashboard-scene/serialization/sceneVariablesSetToVariables.ts +++ b/public/app/features/dashboard-scene/serialization/sceneVariablesSetToVariables.ts @@ -102,6 +102,10 @@ export function sceneVariablesSetToVariables(set: SceneVariables, keepQueryOptio } variables.push(variableObj); } else if (sceneUtils.isCustomVariable(variable)) { + let options: VariableOption[] = []; + if (keepQueryOptions) { + options = variableValueOptionsToVariableOptions(variable.state); + } const customVariable: VariableModel = { ...commonProperties, current: { @@ -110,7 +114,7 @@ export function sceneVariablesSetToVariables(set: SceneVariables, keepQueryOptio // @ts-expect-error value: variable.state.value, }, - options: [], + options, query: variable.state.query, multi: variable.state.isMulti, allValue: variable.state.allValue,