DataTrails: Fixes filters taking metric into account (#78786)

* DataTrails: Fixes filters taking metric into account

* fix merge
This commit is contained in:
Torkel Ödegaard 2023-12-04 09:42:34 +01:00 committed by GitHub
parent f761ae1f02
commit 4e2201ffeb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -9,6 +9,7 @@ import {
getUrlSyncManager, getUrlSyncManager,
SceneComponentProps, SceneComponentProps,
SceneControlsSpacer, SceneControlsSpacer,
sceneGraph,
SceneObject, SceneObject,
SceneObjectBase, SceneObjectBase,
SceneObjectState, SceneObjectState,
@ -27,7 +28,7 @@ import { DataTrailHistory, DataTrailHistoryStep } from './DataTrailsHistory';
import { MetricScene } from './MetricScene'; import { MetricScene } from './MetricScene';
import { MetricSelectScene } from './MetricSelectScene'; import { MetricSelectScene } from './MetricSelectScene';
import { getTrailStore } from './TrailStore/TrailStore'; import { getTrailStore } from './TrailStore/TrailStore';
import { MetricSelectedEvent, trailDS, LOGS_METRIC, VAR_DATASOURCE } from './shared'; import { MetricSelectedEvent, trailDS, LOGS_METRIC, VAR_DATASOURCE, VAR_FILTERS } from './shared';
import { getUrlForTrail } from './utils'; import { getUrlForTrail } from './utils';
export interface DataTrailState extends SceneObjectState { export interface DataTrailState extends SceneObjectState {
@ -112,6 +113,14 @@ export class DataTrail extends SceneObjectBase<DataTrailState> {
} else { } else {
locationService.partial({ metric: evt.payload, actionView: null }); locationService.partial({ metric: evt.payload, actionView: null });
} }
// Add metric to adhoc filters baseFilter
const filterVar = sceneGraph.lookupVariable(VAR_FILTERS, this);
if (filterVar instanceof AdHocFiltersVariable) {
filterVar.state.set.setState({
baseFilters: getBaseFiltersForMetric(evt.payload),
});
}
} }
private getSceneUpdatesForNewMetricValue(metric: string | undefined) { private getSceneUpdatesForNewMetricValue(metric: string | undefined) {
@ -183,6 +192,7 @@ function getVariableSet(initialDS?: string, metric?: string, initialFilters?: Ad
datasource: trailDS, datasource: trailDS,
layout: 'vertical', layout: 'vertical',
filters: initialFilters ?? [], filters: initialFilters ?? [],
baseFilters: getBaseFiltersForMetric(metric),
}), }),
], ],
}); });
@ -211,3 +221,10 @@ function getStyles(theme: GrafanaTheme2) {
}), }),
}; };
} }
function getBaseFiltersForMetric(metric?: string): AdHocVariableFilter[] {
if (metric) {
return [{ key: '__name__', operator: '=', value: metric }];
}
return [];
}