From 5bc936d2da7d1e45e633b37f61a929d319d6842a Mon Sep 17 00:00:00 2001 From: Ryan McKinley Date: Wed, 10 Apr 2019 09:31:32 -0700 Subject: [PATCH] DataSourceApi: add getCollapsedText(query) to DataSourceApi (#16482) Add getQueryDisplayText() to DataSourceApi --- packages/grafana-ui/src/types/datasource.ts | 5 +++++ .../app/features/dashboard/panel_editor/QueryEditorRow.tsx | 6 +++++- public/app/plugins/datasource/prometheus/datasource.ts | 4 ++++ public/app/plugins/datasource/prometheus/query_ctrl.ts | 4 ---- public/app/plugins/datasource/testdata/datasource.ts | 7 +++++++ public/app/plugins/datasource/testdata/types.ts | 1 + 6 files changed, 22 insertions(+), 5 deletions(-) diff --git a/packages/grafana-ui/src/types/datasource.ts b/packages/grafana-ui/src/types/datasource.ts index 97a6067dab9..d33e6e2e370 100644 --- a/packages/grafana-ui/src/types/datasource.ts +++ b/packages/grafana-ui/src/types/datasource.ts @@ -106,6 +106,11 @@ export interface DataSourceApi { */ getQueryHints?(query: TQuery, results: any[], ...rest: any): QueryHint[]; + /** + * Convert a query to a simple text string + */ + getQueryDisplayText?(query: TQuery): string; + /** * Set after constructor is called by Grafana */ diff --git a/public/app/features/dashboard/panel_editor/QueryEditorRow.tsx b/public/app/features/dashboard/panel_editor/QueryEditorRow.tsx index 83e32859cfc..9e4cb8f86ea 100644 --- a/public/app/features/dashboard/panel_editor/QueryEditorRow.tsx +++ b/public/app/features/dashboard/panel_editor/QueryEditorRow.tsx @@ -225,10 +225,14 @@ export class QueryEditorRow extends PureComponent { }; renderCollapsedText(): string | null { + const { datasource } = this.state; + if (datasource.getQueryDisplayText) { + return datasource.getQueryDisplayText(this.props.query); + } + if (this.angularScope && this.angularScope.getCollapsedText) { return this.angularScope.getCollapsedText(); } - return null; } diff --git a/public/app/plugins/datasource/prometheus/datasource.ts b/public/app/plugins/datasource/prometheus/datasource.ts index 4ea1ff75764..2ecbbae27b6 100644 --- a/public/app/plugins/datasource/prometheus/datasource.ts +++ b/public/app/plugins/datasource/prometheus/datasource.ts @@ -55,6 +55,10 @@ export class PrometheusDatasource implements DataSourceApi { this.loadRules(); } + getQueryDisplayText(query: PromQuery) { + return query.expr; + } + _request(url, data?, options?: any) { options = _.defaults(options || {}, { url: this.url + url, diff --git a/public/app/plugins/datasource/prometheus/query_ctrl.ts b/public/app/plugins/datasource/prometheus/query_ctrl.ts index 66038cb5ca4..c463a308927 100644 --- a/public/app/plugins/datasource/prometheus/query_ctrl.ts +++ b/public/app/plugins/datasource/prometheus/query_ctrl.ts @@ -89,10 +89,6 @@ class PrometheusQueryCtrl extends QueryCtrl { }).join('&'); this.linkToPrometheus = this.datasource.directUrl + '/graph?' + args; } - - getCollapsedText() { - return this.target.expr; - } } export { PrometheusQueryCtrl }; diff --git a/public/app/plugins/datasource/testdata/datasource.ts b/public/app/plugins/datasource/testdata/datasource.ts index dd3d7320801..541517c302d 100644 --- a/public/app/plugins/datasource/testdata/datasource.ts +++ b/public/app/plugins/datasource/testdata/datasource.ts @@ -90,6 +90,13 @@ export class TestDataDatasource implements DataSourceApi { return this.$q.when(events); } + getQueryDisplayText(query: TestDataQuery) { + if (query.alias) { + return query.scenarioId + ' as ' + query.alias; + } + return query.scenarioId; + } + testDatasource() { return Promise.resolve({ status: 'success', diff --git a/public/app/plugins/datasource/testdata/types.ts b/public/app/plugins/datasource/testdata/types.ts index 7d8244892e5..02347249655 100644 --- a/public/app/plugins/datasource/testdata/types.ts +++ b/public/app/plugins/datasource/testdata/types.ts @@ -1,6 +1,7 @@ import { DataQuery } from '@grafana/ui/src/types'; export interface TestDataQuery extends DataQuery { + alias?: string; scenarioId: string; }