diff --git a/packages/grafana-prometheus/src/querybuilder/components/LabelParamEditor.tsx b/packages/grafana-prometheus/src/querybuilder/components/LabelParamEditor.tsx index e1049d18752..2f6fcfe3187 100644 --- a/packages/grafana-prometheus/src/querybuilder/components/LabelParamEditor.tsx +++ b/packages/grafana-prometheus/src/querybuilder/components/LabelParamEditor.tsx @@ -1,7 +1,7 @@ // Core Grafana history https://github.com/grafana/grafana/blob/v11.0.0-preview/public/app/plugins/datasource/prometheus/querybuilder/components/LabelParamEditor.tsx import { useState } from 'react'; -import { DataSourceApi, SelectableValue, toOption } from '@grafana/data'; +import { DataSourceApi, SelectableValue, TimeRange, toOption } from '@grafana/data'; import { Select } from '@grafana/ui'; import { promQueryModeller } from '../PromQueryModeller'; @@ -16,6 +16,7 @@ export function LabelParamEditor({ value, query, datasource, + timeRange, }: QueryBuilderOperationParamEditorProps) { const [state, setState] = useState<{ options?: SelectableValue[]; @@ -29,7 +30,7 @@ export function LabelParamEditor({ openMenuOnFocus onOpenMenu={async () => { setState({ isLoading: true }); - const options = await loadGroupByLabels(query, datasource); + const options = await loadGroupByLabels(timeRange, query, datasource); setState({ options, isLoading: undefined }); }} isLoading={state.isLoading} @@ -43,7 +44,11 @@ export function LabelParamEditor({ ); } -async function loadGroupByLabels(query: PromVisualQuery, datasource: DataSourceApi): Promise { +async function loadGroupByLabels( + timeRange: TimeRange, + query: PromVisualQuery, + datasource: DataSourceApi +): Promise { let labels: QueryBuilderLabelFilter[] = query.labels; // This function is used by both Prometheus and Loki and this the only difference. @@ -52,7 +57,7 @@ async function loadGroupByLabels(query: PromVisualQuery, datasource: DataSourceA } const expr = promQueryModeller.renderLabels(labels); - const result = await datasource.languageProvider.fetchLabelsWithMatch(expr); + const result = await datasource.languageProvider.fetchLabelsWithMatch(timeRange, expr); return Object.keys(result).map((x) => ({ label: x, diff --git a/packages/grafana-prometheus/src/querybuilder/components/PromQueryBuilder.tsx b/packages/grafana-prometheus/src/querybuilder/components/PromQueryBuilder.tsx index 61fa837c49a..b4e71f13abd 100644 --- a/packages/grafana-prometheus/src/querybuilder/components/PromQueryBuilder.tsx +++ b/packages/grafana-prometheus/src/querybuilder/components/PromQueryBuilder.tsx @@ -84,6 +84,7 @@ export const PromQueryBuilder = memo((props) => { onChange={onChange} onRunQuery={onRunQuery} highlightedOp={highlightedOp} + timeRange={data?.timeRange ?? getDefaultTimeRange()} />
diff --git a/packages/grafana-prometheus/src/querybuilder/shared/OperationEditor.tsx b/packages/grafana-prometheus/src/querybuilder/shared/OperationEditor.tsx index a7f6407e823..51cd7743b45 100644 --- a/packages/grafana-prometheus/src/querybuilder/shared/OperationEditor.tsx +++ b/packages/grafana-prometheus/src/querybuilder/shared/OperationEditor.tsx @@ -30,7 +30,7 @@ export interface Props { onRunQuery: () => void; flash?: boolean; highlight?: boolean; - timeRange?: TimeRange; + timeRange: TimeRange; } export function OperationEditor({ diff --git a/packages/grafana-prometheus/src/querybuilder/shared/OperationList.test.tsx b/packages/grafana-prometheus/src/querybuilder/shared/OperationList.test.tsx index 871d8621e59..789bd882ac5 100644 --- a/packages/grafana-prometheus/src/querybuilder/shared/OperationList.test.tsx +++ b/packages/grafana-prometheus/src/querybuilder/shared/OperationList.test.tsx @@ -7,6 +7,7 @@ import { DataSourceApi, DataSourceInstanceSettings } from '@grafana/data'; import { PrometheusDatasource } from '../../datasource'; import PromQlLanguageProvider from '../../language_provider'; import { EmptyLanguageProviderMock } from '../../language_provider.mock'; +import { getMockTimeRange } from '../../test/__mocks__/datasource'; import { PromOptions } from '../../types'; import { promQueryModeller } from '../PromQueryModeller'; import { addOperationInQueryBuilder } from '../testUtils'; @@ -78,6 +79,7 @@ function setup(query: PromVisualQuery = defaultQuery) { onRunQuery: () => {}, onChange: jest.fn(), queryModeller: promQueryModeller, + timeRange: getMockTimeRange(), }; render(); diff --git a/packages/grafana-prometheus/src/querybuilder/shared/OperationList.tsx b/packages/grafana-prometheus/src/querybuilder/shared/OperationList.tsx index 6e2a6c16517..5759af769b3 100644 --- a/packages/grafana-prometheus/src/querybuilder/shared/OperationList.tsx +++ b/packages/grafana-prometheus/src/querybuilder/shared/OperationList.tsx @@ -18,7 +18,7 @@ export interface Props { queryModeller: VisualQueryModeller; explainMode?: boolean; highlightedOp?: QueryBuilderOperation; - timeRange?: TimeRange; + timeRange: TimeRange; } export function OperationList({ diff --git a/packages/grafana-prometheus/src/querybuilder/shared/types.ts b/packages/grafana-prometheus/src/querybuilder/shared/types.ts index e8764866c43..4a642afef84 100644 --- a/packages/grafana-prometheus/src/querybuilder/shared/types.ts +++ b/packages/grafana-prometheus/src/querybuilder/shared/types.ts @@ -92,7 +92,7 @@ export interface QueryBuilderOperationParamEditorProps { operationId: string; query: any; datasource: DataSourceApi; - timeRange?: TimeRange; + timeRange: TimeRange; onChange: (index: number, value: QueryBuilderOperationParamValue) => void; onRunQuery: () => void; }