diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/utils/common.test.ts b/public/app/plugins/datasource/grafana-azure-monitor-datasource/utils/common.test.ts index 71630897de5..066d63a8123 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/utils/common.test.ts +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/utils/common.test.ts @@ -81,5 +81,15 @@ describe('When interpolating variables', () => { const variable = { ...initialCustomVariableModelState, includeAll: true }; expect(interpolateVariable('abc', variable)).toEqual("'abc'"); }); + + it('should not return a quoted value if the all value is modified', () => { + const variable = { ...initialCustomVariableModelState, includeAll: true, allValue: 'All' }; + expect(interpolateVariable('abc', variable)).toEqual('abc'); + }); + + it('should return a quoted value if multi is selected even if the allValue is set', () => { + const variable = { ...initialCustomVariableModelState, includeAll: true, multi: true, allValue: 'All' }; + expect(interpolateVariable('abc', variable)).toEqual("'abc'"); + }); }); }); diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/utils/common.ts b/public/app/plugins/datasource/grafana-azure-monitor-datasource/utils/common.ts index a07b6e7df10..4a89f1e2ab2 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/utils/common.ts +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/utils/common.ts @@ -1,6 +1,7 @@ import { map } from 'lodash'; import { rangeUtil } from '@grafana/data'; +import { VariableWithMultiSupport } from 'app/features/variables/types'; import TimegrainConverter from '../time_grain_converter'; import { AzureMonitorOption } from '../types'; @@ -40,9 +41,12 @@ export const routeNames = { resourceGraph: 'resourcegraph', }; -export function interpolateVariable(value: any, variable: { multi: any; includeAll: any }) { +export function interpolateVariable(value: any, variable: VariableWithMultiSupport) { if (typeof value === 'string') { - if (variable.multi || variable.includeAll) { + // When enabling multiple responses, quote the value to mimic the array result below + // even if only one response is selected. This does not apply if only the "include all" + // option is enabled but with a custom value. + if (variable.multi || (variable.includeAll && !variable.allValue)) { return "'" + value + "'"; } else { return value;