From d1ab29c36d4bd3d2758d42a5ec08a946cf2254b9 Mon Sep 17 00:00:00 2001 From: Marcus Efraimsson Date: Tue, 4 Jun 2019 12:35:16 +0200 Subject: [PATCH] Explore: Makes it possible to use a different query field per mode (#17395) --- packages/grafana-ui/src/types/datasource.ts | 12 ++++++++++++ public/app/features/explore/QueryRow.tsx | 16 ++++++++++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/packages/grafana-ui/src/types/datasource.ts b/packages/grafana-ui/src/types/datasource.ts index 99354cd755e..22bf4b060b9 100644 --- a/packages/grafana-ui/src/types/datasource.ts +++ b/packages/grafana-ui/src/types/datasource.ts @@ -50,6 +50,16 @@ export class DataSourcePlugin< return this; } + setExploreMetricsQueryField(ExploreQueryField: ComponentClass>) { + this.components.ExploreMetricsQueryField = ExploreQueryField; + return this; + } + + setExploreLogsQueryField(ExploreQueryField: ComponentClass>) { + this.components.ExploreLogsQueryField = ExploreQueryField; + return this; + } + setExploreStartPage(ExploreStartPage: ComponentClass) { this.components.ExploreStartPage = ExploreStartPage; return this; @@ -109,6 +119,8 @@ export interface DataSourcePluginComponents< VariableQueryEditor?: any; QueryEditor?: ComponentType>; ExploreQueryField?: ComponentClass>; + ExploreMetricsQueryField?: ComponentClass>; + ExploreLogsQueryField?: ComponentClass>; ExploreStartPage?: ComponentClass; ConfigEditor?: ComponentType>>; } diff --git a/public/app/features/explore/QueryRow.tsx b/public/app/features/explore/QueryRow.tsx index a348c2af451..cad509d2071 100644 --- a/public/app/features/explore/QueryRow.tsx +++ b/public/app/features/explore/QueryRow.tsx @@ -22,7 +22,7 @@ import { PanelData, DataQueryError, } from '@grafana/ui'; -import { HistoryItem, ExploreItemState, ExploreId } from 'app/types/explore'; +import { HistoryItem, ExploreItemState, ExploreId, ExploreMode } from 'app/types/explore'; import { Emitter } from 'app/core/utils/emitter'; import { highlightLogsExpressionAction, removeQueryRowAction } from './state/actionTypes'; import QueryStatus from './QueryStatus'; @@ -50,6 +50,7 @@ interface QueryRowProps extends PropsFromParent { queryResponse: PanelData; latency: number; queryErrors: DataQueryError[]; + mode: ExploreMode; } export class QueryRow extends PureComponent { @@ -114,8 +115,17 @@ export class QueryRow extends PureComponent { queryResponse, latency, queryErrors, + mode, } = this.props; - const QueryField = datasourceInstance.components.ExploreQueryField; + let QueryField; + + if (mode === ExploreMode.Metrics && datasourceInstance.components.ExploreMetricsQueryField) { + QueryField = datasourceInstance.components.ExploreMetricsQueryField; + } else if (mode === ExploreMode.Logs && datasourceInstance.components.ExploreLogsQueryField) { + QueryField = datasourceInstance.components.ExploreLogsQueryField; + } else { + QueryField = datasourceInstance.components.ExploreQueryField; + } return (
@@ -182,6 +192,7 @@ function mapStateToProps(state: StoreState, { exploreId, index }: QueryRowProps) loadingState, latency, queryErrors, + mode, } = item; const query = queries[index]; const datasourceStatus = datasourceError ? DataSourceStatus.Disconnected : DataSourceStatus.Connected; @@ -202,6 +213,7 @@ function mapStateToProps(state: StoreState, { exploreId, index }: QueryRowProps) queryResponse, latency, queryErrors, + mode, }; }