From 286dc333c5e8e07ae04c4ad5b3dc208dfc9d0b38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Mon, 2 Oct 2023 16:42:54 +0200 Subject: [PATCH] DataSourceWithBackend: Fix adhoc filters not passed to applyTemplateVariables (#75812) --- .../src/utils/DataSourceWithBackend.test.ts | 26 ++++++++++++++++++- .../src/utils/DataSourceWithBackend.ts | 2 +- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/packages/grafana-runtime/src/utils/DataSourceWithBackend.test.ts b/packages/grafana-runtime/src/utils/DataSourceWithBackend.test.ts index e0b5d4f19db..c521e5c3633 100644 --- a/packages/grafana-runtime/src/utils/DataSourceWithBackend.test.ts +++ b/packages/grafana-runtime/src/utils/DataSourceWithBackend.test.ts @@ -9,6 +9,8 @@ import { DataSourceJsonData, DataSourceRef, createDataFrame, + AdHocVariableFilter, + ScopedVars, } from '@grafana/data'; import { config } from '../config'; @@ -21,10 +23,19 @@ import { } from './DataSourceWithBackend'; import { publicDashboardQueryHandler } from './publicDashboardQueryHandler'; -class MyDataSource extends DataSourceWithBackend { +interface MyQuery extends DataQuery { + filters?: AdHocVariableFilter[]; + applyTemplateVariablesCalled?: boolean; +} + +class MyDataSource extends DataSourceWithBackend { constructor(instanceSettings: DataSourceInstanceSettings) { super(instanceSettings); } + + applyTemplateVariables(query: MyQuery, scopedVars: ScopedVars, filters?: AdHocVariableFilter[] | undefined): MyQuery { + return { ...query, applyTemplateVariablesCalled: true, filters }; + } } const mockDatasourceRequest = jest.fn, BackendSrvRequest[]>(); @@ -58,6 +69,7 @@ describe('DataSourceWithBackend', () => { targets: [{ refId: 'A' }, { refId: 'B', datasource: { type: 'sample' } }], dashboardUID: 'dashA', panelId: 123, + filters: [{ key: 'key1', operator: '=', value: 'val1' }], queryGroupId: 'abc', } as DataQueryRequest); @@ -69,11 +81,19 @@ describe('DataSourceWithBackend', () => { "data": { "queries": [ { + "applyTemplateVariablesCalled": true, "datasource": { "type": "dummy", "uid": "abc", }, "datasourceId": 1234, + "filters": [ + { + "key": "key1", + "operator": "=", + "value": "val1", + }, + ], "intervalMs": 5000, "maxDataPoints": 10, "queryCachingTTL": undefined, @@ -126,11 +146,13 @@ describe('DataSourceWithBackend', () => { "data": { "queries": [ { + "applyTemplateVariablesCalled": true, "datasource": { "type": "dummy", "uid": "abc", }, "datasourceId": 1234, + "filters": undefined, "intervalMs": 5000, "maxDataPoints": 10, "queryCachingTTL": undefined, @@ -194,11 +216,13 @@ describe('DataSourceWithBackend', () => { "data": { "queries": [ { + "applyTemplateVariablesCalled": true, "datasource": { "type": "dummy", "uid": "abc", }, "datasourceId": 1234, + "filters": undefined, "intervalMs": 5000, "maxDataPoints": 10, "queryCachingTTL": undefined, diff --git a/packages/grafana-runtime/src/utils/DataSourceWithBackend.ts b/packages/grafana-runtime/src/utils/DataSourceWithBackend.ts index a863a051d2e..0eea64b8899 100644 --- a/packages/grafana-runtime/src/utils/DataSourceWithBackend.ts +++ b/packages/grafana-runtime/src/utils/DataSourceWithBackend.ts @@ -176,7 +176,7 @@ class DataSourceWithBackend< dsUIDs.add(datasource.uid); } return { - ...(shouldApplyTemplateVariables ? this.applyTemplateVariables(q, request.scopedVars) : q), + ...(shouldApplyTemplateVariables ? this.applyTemplateVariables(q, request.scopedVars, request.filters) : q), datasource, datasourceId, // deprecated! intervalMs,