From 05380088d5a9bfbb084c58421e399e5db33c7b31 Mon Sep 17 00:00:00 2001 From: Victor Marin <36818606+mdvictor@users.noreply.github.com> Date: Tue, 2 Sep 2025 11:32:24 +0300 Subject: [PATCH] DataSourceApi: More specific naming for getFiltersApplicability (#110407) * rename getFiltersApplicability * typecheck * typecheck --- packages/grafana-data/src/index.ts | 3 ++- packages/grafana-data/src/types/datasource.ts | 10 ++++++---- .../datasource/dashboard/datasource.test.ts | 14 +++++++------- .../app/plugins/datasource/dashboard/datasource.ts | 12 ++++++------ 4 files changed, 21 insertions(+), 18 deletions(-) diff --git a/packages/grafana-data/src/index.ts b/packages/grafana-data/src/index.ts index edb20df0082..5985b95f240 100644 --- a/packages/grafana-data/src/index.ts +++ b/packages/grafana-data/src/index.ts @@ -658,6 +658,7 @@ export { type DataSourceConstructor, type DataSourceGetTagKeysOptions, type DataSourceGetTagValuesOptions, + type DataSourceGetDrilldownsApplicabilityOptions, type MetadataInspectorProps, type LegacyMetricFindQueryOptions, type QueryEditorProps, @@ -674,7 +675,7 @@ export { type QueryFixAction, type QueryHint, type MetricFindValue, - type FiltersApplicability, + type DrilldownsApplicability, type DataSourceJsonData, type DataSourceSettings, type DataSourceInstanceSettings, diff --git a/packages/grafana-data/src/types/datasource.ts b/packages/grafana-data/src/types/datasource.ts index dfb2ea07071..25e39084acc 100644 --- a/packages/grafana-data/src/types/datasource.ts +++ b/packages/grafana-data/src/types/datasource.ts @@ -307,9 +307,11 @@ abstract class DataSourceApi< metricFindQuery?(query: any, options?: LegacyMetricFindQueryOptions): Promise; /** - * Verify adhoc filters applicability based on queries and current filters + * Verify adhoc filters and groupBy keys applicability based on queries and current selected values */ - getFiltersApplicability?(options?: DataSourceGetFiltersApplicabilityOptions): Promise; + getDrilldownsApplicability?( + options?: DataSourceGetDrilldownsApplicabilityOptions + ): Promise; /** * Get tag keys for adhoc filters @@ -643,7 +645,7 @@ export interface MetricFindValue { expandable?: boolean; } -export interface DataSourceGetFiltersApplicabilityOptions { +export interface DataSourceGetDrilldownsApplicabilityOptions { filters: AdHocVariableFilter[]; groupByKeys?: string[]; timeRange?: TimeRange; @@ -651,7 +653,7 @@ export interface DataSourceGetFiltersApplicabilityOptions { }); }); - describe('getFiltersApplicability', () => { + describe('getDrilldownsApplicability', () => { const originalToggleValue = config.featureToggles.dashboardDsAdHocFiltering; const ds = new DashboardDatasource({} as DataSourceInstanceSettings); @@ -585,7 +585,7 @@ describe('DashboardDatasource', () => { it('should return empty array when feature toggle is disabled', async () => { config.featureToggles.dashboardDsAdHocFiltering = false; - const result = await ds.getFiltersApplicability({ + const result = await ds.getDrilldownsApplicability({ filters: [{ key: 'name', operator: '=', value: 'test' }], }); @@ -593,7 +593,7 @@ describe('DashboardDatasource', () => { }); it('should mark supported operators as applicable', async () => { - const result = await ds.getFiltersApplicability({ + const result = await ds.getDrilldownsApplicability({ filters: [ { key: 'name', operator: '=', value: 'John' }, { key: 'age', operator: '!=', value: '25' }, @@ -607,7 +607,7 @@ describe('DashboardDatasource', () => { }); it('should mark unsupported operators as not applicable with reason', async () => { - const result = await ds.getFiltersApplicability({ + const result = await ds.getDrilldownsApplicability({ filters: [ { key: 'name', operator: '>', value: 'John' }, { key: 'age', operator: '<', value: '25' }, @@ -635,7 +635,7 @@ describe('DashboardDatasource', () => { }); it('should handle mixed applicable and non-applicable filters', async () => { - const result = await ds.getFiltersApplicability({ + const result = await ds.getDrilldownsApplicability({ filters: [ { key: 'name', operator: '=', value: 'John' }, { key: 'age', operator: '>', value: '25' }, @@ -655,12 +655,12 @@ describe('DashboardDatasource', () => { }); it('should handle empty filters array', async () => { - const result = await ds.getFiltersApplicability({ filters: [] }); + const result = await ds.getDrilldownsApplicability({ filters: [] }); expect(result).toEqual([]); }); it('should handle missing options', async () => { - const result = await ds.getFiltersApplicability(); + const result = await ds.getDrilldownsApplicability(); expect(result).toEqual([]); }); }); diff --git a/public/app/plugins/datasource/dashboard/datasource.ts b/public/app/plugins/datasource/dashboard/datasource.ts index e525a2bb69c..c5efa221fc4 100644 --- a/public/app/plugins/datasource/dashboard/datasource.ts +++ b/public/app/plugins/datasource/dashboard/datasource.ts @@ -17,8 +17,8 @@ import { MetricFindValue, getValueMatcher, ValueMatcherID, - FiltersApplicability, - DataSourceGetTagKeysOptions, + DataSourceGetDrilldownsApplicabilityOptions, + DrilldownsApplicability, } from '@grafana/data'; import { config } from '@grafana/runtime'; import { SceneDataProvider, SceneDataTransformer, SceneObject } from '@grafana/scenes'; @@ -341,16 +341,16 @@ export class DashboardDatasource extends DataSourceApi { /** * Check which AdHoc filters are applicable based on operator and field type support */ - async getFiltersApplicability( - options?: DataSourceGetTagKeysOptions - ): Promise { + async getDrilldownsApplicability( + options?: DataSourceGetDrilldownsApplicabilityOptions + ): Promise { if (!config.featureToggles.dashboardDsAdHocFiltering) { return []; } const filters = options?.filters || []; - return filters.map((filter): FiltersApplicability => { + return filters.map((filter): DrilldownsApplicability => { // Check operator support if (filter.operator !== '=' && filter.operator !== '!=') { return {