From 1b51cd204354cc5f1d5f563b070ee3a69adbe244 Mon Sep 17 00:00:00 2001 From: Erik Sundell Date: Thu, 16 Jun 2022 22:22:05 +0200 Subject: [PATCH] DataSource: Allow data source plugins to set query default values (#49581) * make it possible to set default query * set default query in cloudwatch ds * remove cloudwatch example code * apply feedback * Update public/app/features/explore/state/query.ts Co-authored-by: Giordano Ricci * Update public/app/features/query/components/QueryGroup.tsx Co-authored-by: Giordano Ricci * add alpha tag to method definiton Co-authored-by: Giordano Ricci --- packages/grafana-data/src/types/datasource.ts | 6 ++++++ public/app/features/explore/Explore.tsx | 4 ++-- public/app/features/explore/state/query.ts | 12 ++++++++++-- public/app/features/query/components/QueryGroup.tsx | 2 ++ 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/packages/grafana-data/src/types/datasource.ts b/packages/grafana-data/src/types/datasource.ts index 363f0722a40..4759e5ac088 100644 --- a/packages/grafana-data/src/types/datasource.ts +++ b/packages/grafana-data/src/types/datasource.ts @@ -345,6 +345,12 @@ abstract class DataSourceApi< | StandardVariableSupport> | CustomVariableSupport> | DataSourceVariableSupport>; + + /* + * Optionally, use this method to set default values for a query + * @alpha -- experimental + */ + getDefaultQuery?(app: CoreApp): Partial; } export interface MetadataInspectorProps< diff --git a/public/app/features/explore/Explore.tsx b/public/app/features/explore/Explore.tsx index 9bb700a148e..2987f65b1cf 100644 --- a/public/app/features/explore/Explore.tsx +++ b/public/app/features/explore/Explore.tsx @@ -158,8 +158,8 @@ export class Explore extends React.PureComponent { }; onClickAddQueryRowButton = () => { - const { exploreId, queryKeys } = this.props; - this.props.addQueryRow(exploreId, queryKeys.length); + const { exploreId, queryKeys, datasourceInstance } = this.props; + this.props.addQueryRow(exploreId, queryKeys.length, datasourceInstance); }; onMakeAbsoluteTime = () => { diff --git a/public/app/features/explore/state/query.ts b/public/app/features/explore/state/query.ts index 381ca334576..bcb3fbfa34b 100644 --- a/public/app/features/explore/state/query.ts +++ b/public/app/features/explore/state/query.ts @@ -5,6 +5,7 @@ import { mergeMap, throttleTime } from 'rxjs/operators'; import { AbsoluteTimeRange, + CoreApp, DataQuery, DataQueryErrorType, DataQueryResponse, @@ -213,10 +214,17 @@ export const clearCacheAction = createAction('explore/clearCa /** * Adds a query row after the row with the given index. */ -export function addQueryRow(exploreId: ExploreId, index: number): ThunkResult { +export function addQueryRow( + exploreId: ExploreId, + index: number, + datasource: DataSourceApi | undefined | null +): ThunkResult { return (dispatch, getState) => { const queries = getState().explore[exploreId]!.queries; - const query = generateEmptyQuery(queries, index); + const query = { + ...datasource?.getDefaultQuery?.(CoreApp.Explore), + ...generateEmptyQuery(queries, index), + }; dispatch(addQueryRowAction({ exploreId, index, query })); }; diff --git a/public/app/features/query/components/QueryGroup.tsx b/public/app/features/query/components/QueryGroup.tsx index 14835278074..015e88122c4 100644 --- a/public/app/features/query/components/QueryGroup.tsx +++ b/public/app/features/query/components/QueryGroup.tsx @@ -3,6 +3,7 @@ import React, { PureComponent } from 'react'; import { Unsubscribable } from 'rxjs'; import { + CoreApp, DataQuery, DataSourceApi, DataSourceInstanceSettings, @@ -137,6 +138,7 @@ export class QueryGroup extends PureComponent { const ds = !dsSettings?.meta.mixed ? dsSettings : defaultDataSource; return { + ...this.state.dataSource?.getDefaultQuery?.(CoreApp.PanelEditor), datasource: { uid: ds?.uid, type: ds?.type }, }; }