diff --git a/public/app/features/plugins/datasource_srv.ts b/public/app/features/plugins/datasource_srv.ts index a60ad1b8f91..41a4fc7b4a2 100644 --- a/public/app/features/plugins/datasource_srv.ts +++ b/public/app/features/plugins/datasource_srv.ts @@ -24,7 +24,7 @@ import { instanceSettings as expressionInstanceSettings, } from 'app/features/expressions/ExpressionDatasource'; -import { DataSourceVariableModel } from '../variables/types'; +import { isDataSource } from '../variables/guard'; import { importDataSourcePlugin } from './plugin_loader'; @@ -245,11 +245,12 @@ export class DatasourceSrv implements DataSourceService { }); if (filters.variables) { - for (const variable of this.templateSrv.getVariables().filter((variable) => variable.type === 'datasource')) { - const dsVar = variable as DataSourceVariableModel; - const first = dsVar.current.value === 'default' ? this.defaultName : dsVar.current.value; - const dsName = first as unknown as string; - const dsSettings = this.settingsMapByName[dsName]; + for (const variable of this.templateSrv.getVariables()) { + if (!isDataSource(variable) || variable.multi || variable.includeAll) { + continue; + } + const dsName = variable.current.value === 'default' ? this.defaultName : variable.current.value; + const dsSettings = !Array.isArray(dsName) && this.settingsMapByName[dsName]; if (dsSettings) { const key = `$\{${variable.name}\}`; diff --git a/public/app/features/variables/guard.ts b/public/app/features/variables/guard.ts index 0efb21229b5..5d8eecababe 100644 --- a/public/app/features/variables/guard.ts +++ b/public/app/features/variables/guard.ts @@ -25,6 +25,7 @@ import { VariableQueryEditorProps, VariableWithMultiSupport, VariableWithOptions, + DataSourceVariableModel, } from './types'; export const isQuery = (model: VariableModel): model is QueryVariableModel => { @@ -39,6 +40,10 @@ export const isConstant = (model: VariableModel): model is ConstantVariableModel return model.type === 'constant'; }; +export const isDataSource = (model: VariableModel): model is DataSourceVariableModel => { + return model.type === 'datasource'; +}; + export const isMulti = (model: VariableModel): model is VariableWithMultiSupport => { const withMulti = model as VariableWithMultiSupport; return withMulti.hasOwnProperty('multi') && typeof withMulti.multi === 'boolean';