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,