From 681cefbb1841564c829d0a4431647519af568031 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=A4ggmark?= Date: Tue, 15 Dec 2020 10:08:02 +0100 Subject: [PATCH] DashboardDS: Fixes display of long queries (#29808) --- .../dashboard/DashboardQueryEditor.tsx | 41 ++++------------ .../dashboard/DashboardQueryRow.tsx | 48 +++++++++++++++++++ .../app/plugins/datasource/dashboard/types.ts | 10 +++- public/sass/components/_query_editor.scss | 10 ---- 4 files changed, 66 insertions(+), 43 deletions(-) create mode 100644 public/app/plugins/datasource/dashboard/DashboardQueryRow.tsx diff --git a/public/app/plugins/datasource/dashboard/DashboardQueryEditor.tsx b/public/app/plugins/datasource/dashboard/DashboardQueryEditor.tsx index bd23b8d9016..752a6c4eb20 100644 --- a/public/app/plugins/datasource/dashboard/DashboardQueryEditor.tsx +++ b/public/app/plugins/datasource/dashboard/DashboardQueryEditor.tsx @@ -1,28 +1,19 @@ -// Libraries import React, { PureComponent } from 'react'; - -// Types -import { LegacyForms, Icon } from '@grafana/ui'; -import { DataQuery, DataQueryError, PanelData, DataFrame, SelectableValue } from '@grafana/data'; -import { DashboardQuery } from './types'; -import config from 'app/core/config'; +import { LegacyForms, VerticalGroup } from '@grafana/ui'; +import { DataQuery, PanelData, SelectableValue } from '@grafana/data'; import { css } from 'emotion'; + +import { DashboardQuery, ResultInfo } from './types'; +import config from 'app/core/config'; import { getDatasourceSrv } from 'app/features/plugins/datasource_srv'; import { PanelModel } from 'app/features/dashboard/state'; import { SHARED_DASHBODARD_QUERY } from './types'; import { getDashboardSrv } from 'app/features/dashboard/services/DashboardSrv'; import { filterPanelDataToQuery } from 'app/features/query/components/QueryEditorRow'; +import { DashboardQueryRow } from './DashboardQueryRow'; const { Select } = LegacyForms; -type ResultInfo = { - img: string; // The Datasource - refId: string; - query: string; // As text - data: DataFrame[]; - error?: DataQueryError; -}; - function getQueryDisplayText(query: DataQuery): string { return JSON.stringify(query); } @@ -107,25 +98,11 @@ export class DashboardQueryEditor extends PureComponent { const { results } = this.state; return ( -
+ {results.map((target, index) => { - return ( -
-
- - {target.refId}: -
- -
- ); + return ; })} -
+ ); } diff --git a/public/app/plugins/datasource/dashboard/DashboardQueryRow.tsx b/public/app/plugins/datasource/dashboard/DashboardQueryRow.tsx new file mode 100644 index 00000000000..f82274b1795 --- /dev/null +++ b/public/app/plugins/datasource/dashboard/DashboardQueryRow.tsx @@ -0,0 +1,48 @@ +import React, { ReactElement } from 'react'; +import { css } from 'emotion'; +import { Icon, useStyles } from '@grafana/ui'; +import { GrafanaTheme } from '@grafana/data'; + +import { ResultInfo } from './types'; + +interface Props { + editURL: string; + target: ResultInfo; +} + +export function DashboardQueryRow({ editURL, target }: Props): ReactElement { + const style = useStyles(getStyles); + + return ( +
+
+ + {`${target.refId}:`} +
+
+ + {target.query} +   + + +
+
+ ); +} + +function getStyles(theme: GrafanaTheme) { + return { + logo: css` + label: logo; + margin-right: ${theme.spacing.sm}; + `, + queryEditorRowHeader: css` + label: queryEditorRowHeader; + display: flex; + padding: 4px 8px; + flex-flow: row wrap; + background: ${theme.colors.bg2}; + align-items: center; + `, + }; +} diff --git a/public/app/plugins/datasource/dashboard/types.ts b/public/app/plugins/datasource/dashboard/types.ts index dfb3aee6682..2ab06533f93 100644 --- a/public/app/plugins/datasource/dashboard/types.ts +++ b/public/app/plugins/datasource/dashboard/types.ts @@ -1,7 +1,15 @@ -import { DataQuery } from '@grafana/data'; +import { DataFrame, DataQuery, DataQueryError } from '@grafana/data'; export const SHARED_DASHBODARD_QUERY = '-- Dashboard --'; export interface DashboardQuery extends DataQuery { panelId?: number; } + +export type ResultInfo = { + img: string; // The Datasource + refId: string; + query: string; // As text + data: DataFrame[]; + error?: DataQueryError; +}; diff --git a/public/sass/components/_query_editor.scss b/public/sass/components/_query_editor.scss index 52fc173414c..cf8d2e8ce88 100644 --- a/public/sass/components/_query_editor.scss +++ b/public/sass/components/_query_editor.scss @@ -108,16 +108,6 @@ input[type='text'].tight-form-func-param { } } -.query-editor-row__header { - display: flex; - padding: 4px 0px 4px 8px; - position: relative; - height: 35px; - background: $input-label-bg; - flex-wrap: nowrap; - align-items: center; -} - .query-editor-row__action { margin-left: 3px; background: transparent;