DataSourceWithBackend: Fix adhoc filters not passed to applyTemplateVariables (#75812)

This commit is contained in:
Torkel Ödegaard
2023-10-02 16:42:54 +02:00
committed by GitHub
parent 36ed4ce291
commit 286dc333c5
2 changed files with 26 additions and 2 deletions
@@ -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<DataQuery, DataSourceJsonData> {
interface MyQuery extends DataQuery {
filters?: AdHocVariableFilter[];
applyTemplateVariablesCalled?: boolean;
}
class MyDataSource extends DataSourceWithBackend<MyQuery, DataSourceJsonData> {
constructor(instanceSettings: DataSourceInstanceSettings<DataSourceJsonData>) {
super(instanceSettings);
}
applyTemplateVariables(query: MyQuery, scopedVars: ScopedVars, filters?: AdHocVariableFilter[] | undefined): MyQuery {
return { ...query, applyTemplateVariablesCalled: true, filters };
}
}
const mockDatasourceRequest = jest.fn<Promise<FetchResponse>, 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,
@@ -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,