From 0e90dfcc9c4b817549b5076755216d870e99e1f7 Mon Sep 17 00:00:00 2001 From: Joey <90795735+joey-grafana@users.noreply.github.com> Date: Thu, 1 Jun 2023 15:52:40 +0100 Subject: [PATCH] Tracing: Upgrade tracing data source configuration editors (#68764) * Add tracing config sub sections * Export common sections and update divider in additional settings section * Max width and margin bottom * Add feature name to config link * Update SpanBarSettings * remove import --- package.json | 2 +- .../core/components/ConfigDescriptionLink.tsx | 47 ++++++ public/app/core/components/Divider.tsx | 25 ++++ public/app/core/components/DocsLinkButton.tsx | 26 ---- .../app/core/components/NodeGraphSettings.tsx | 27 +++- .../TraceToLogs/TraceToLogsSettings.tsx | 45 +++--- .../TraceToMetrics/TraceToMetricsSettings.tsx | 31 +++- .../components/settings/SpanBarSettings.tsx | 27 +++- .../jaeger/components/ConfigEditor.tsx | 59 +++++--- .../tempo/configuration/ConfigEditor.tsx | 137 +++++++++++++----- .../configuration/LokiSearchSettings.tsx | 8 - .../tempo/configuration/QuerySettings.tsx | 8 - .../tempo/configuration/SearchSettings.tsx | 8 - .../configuration/ServiceGraphSettings.tsx | 8 - .../configuration/TraceQLSearchSettings.tsx | 8 - .../datasource/zipkin/ConfigEditor.tsx | 59 +++++--- yarn.lock | 20 ++- 17 files changed, 352 insertions(+), 193 deletions(-) create mode 100644 public/app/core/components/ConfigDescriptionLink.tsx create mode 100644 public/app/core/components/Divider.tsx delete mode 100644 public/app/core/components/DocsLinkButton.tsx diff --git a/package.json b/package.json index dde41b0fe6e..118d5477b93 100644 --- a/package.json +++ b/package.json @@ -254,7 +254,7 @@ "@grafana/aws-sdk": "0.0.44", "@grafana/data": "workspace:*", "@grafana/e2e-selectors": "workspace:*", - "@grafana/experimental": "1.1.0", + "@grafana/experimental": "1.4.2", "@grafana/faro-core": "1.0.2", "@grafana/faro-web-sdk": "1.0.2", "@grafana/google-sdk": "0.1.1", diff --git a/public/app/core/components/ConfigDescriptionLink.tsx b/public/app/core/components/ConfigDescriptionLink.tsx new file mode 100644 index 00000000000..c2cecc84cd9 --- /dev/null +++ b/public/app/core/components/ConfigDescriptionLink.tsx @@ -0,0 +1,47 @@ +import { css } from '@emotion/css'; +import React from 'react'; + +import { GrafanaTheme2 } from '@grafana/data'; +import { useStyles2 } from '@grafana/ui'; + +type Props = { + description: string; + suffix: string; + feature: string; +}; + +export function ConfigDescriptionLink(props: Props) { + const { description, suffix, feature } = props; + const text = `Learn more about ${feature}`; + const styles = useStyles2(getStyles); + + return ( + + {description} + + {text} + + + ); +} + +const getStyles = (theme: GrafanaTheme2) => { + return { + container: css({ + color: theme.colors.text.secondary, + a: css({ + color: theme.colors.text.link, + textDecoration: 'underline', + marginLeft: '5px', + '&:hover': { + textDecoration: 'none', + }, + }), + }), + }; +}; diff --git a/public/app/core/components/Divider.tsx b/public/app/core/components/Divider.tsx new file mode 100644 index 00000000000..7e062fd6165 --- /dev/null +++ b/public/app/core/components/Divider.tsx @@ -0,0 +1,25 @@ +import { css } from '@emotion/css'; +import React from 'react'; + +import { GrafanaTheme2 } from '@grafana/data'; +import { useStyles2 } from '@grafana/ui'; + +export const Divider = ({ hideLine = false }) => { + const styles = useStyles2(getStyles); + + if (hideLine) { + return
; + } + + return
; +}; + +const getStyles = (theme: GrafanaTheme2) => ({ + divider: css` + margin: ${theme.spacing(4, 0)}; + `, + dividerHideLine: css` + border: none; + margin: ${theme.spacing(3, 0)}; + `, +}); diff --git a/public/app/core/components/DocsLinkButton.tsx b/public/app/core/components/DocsLinkButton.tsx deleted file mode 100644 index fb476deea10..00000000000 --- a/public/app/core/components/DocsLinkButton.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import React from 'react'; - -import { LinkButton } from '@grafana/ui'; - -type Props = { - hrefSuffix: string; -}; - -export function DocsLinkButton(props: Props) { - const { hrefSuffix } = props; - const tooltip = 'Learn more in the Grafana docs'; - - return ( - - ); -} diff --git a/public/app/core/components/NodeGraphSettings.tsx b/public/app/core/components/NodeGraphSettings.tsx index 459beda1aeb..deaf1e62467 100644 --- a/public/app/core/components/NodeGraphSettings.tsx +++ b/public/app/core/components/NodeGraphSettings.tsx @@ -7,9 +7,10 @@ import { GrafanaTheme2, updateDatasourcePluginJsonDataOption, } from '@grafana/data'; +import { ConfigSubSection } from '@grafana/experimental'; import { InlineField, InlineFieldRow, InlineSwitch, useStyles2 } from '@grafana/ui'; -import { DocsLinkButton } from './DocsLinkButton'; +import { ConfigDescriptionLink } from './ConfigDescriptionLink'; export interface NodeGraphOptions { enabled?: boolean; @@ -26,13 +27,6 @@ export function NodeGraphSettings({ options, onOptionsChange }: Props) { return (
-

Node graph

- -
- {`Show or hide the node graph visualization`} - -
- { + return ( + + } + > + + + ); +}; + const getStyles = (theme: GrafanaTheme2) => ({ infoText: css` label: infoText; diff --git a/public/app/core/components/TraceToLogs/TraceToLogsSettings.tsx b/public/app/core/components/TraceToLogs/TraceToLogsSettings.tsx index 68b9c9011c1..775bae9adc8 100644 --- a/public/app/core/components/TraceToLogs/TraceToLogsSettings.tsx +++ b/public/app/core/components/TraceToLogs/TraceToLogsSettings.tsx @@ -1,16 +1,11 @@ import { css } from '@emotion/css'; import React, { useCallback, useMemo } from 'react'; -import { - DataSourceJsonData, - DataSourceInstanceSettings, - DataSourcePluginOptionsEditorProps, - GrafanaTheme2, -} from '@grafana/data'; +import { DataSourceJsonData, DataSourceInstanceSettings, DataSourcePluginOptionsEditorProps } from '@grafana/data'; +import { ConfigSection } from '@grafana/experimental'; import { DataSourcePicker } from '@grafana/runtime'; -import { InlineField, InlineFieldRow, Input, useStyles2, InlineSwitch } from '@grafana/ui'; - -import { DocsLinkButton } from '../DocsLinkButton'; +import { InlineField, InlineFieldRow, Input, InlineSwitch } from '@grafana/ui'; +import { ConfigDescriptionLink } from 'app/core/components/ConfigDescriptionLink'; import { TagMappingInput } from './TagMappingInput'; @@ -71,7 +66,6 @@ export function getTraceToLogsOptions(data?: TraceToLogsData): TraceToLogsOption interface Props extends DataSourcePluginOptionsEditorProps {} export function TraceToLogsSettings({ options, onOptionsChange }: Props) { - const styles = useStyles2(getStyles); const supportedDataSourceTypes = [ 'loki', 'elasticsearch', @@ -108,13 +102,6 @@ export function TraceToLogsSettings({ options, onOptionsChange }: Props) { return (
-

Trace to logs

- -
- Navigate from a trace span to the selected data source's logs - -
- ({ - infoText: css` - padding-bottom: ${theme.spacing(2)}; - color: ${theme.colors.text.secondary}; - `, -}); +export const TraceToLogsSection = ({ options, onOptionsChange }: DataSourcePluginOptionsEditorProps) => { + return ( + + } + isCollapsible={true} + isInitiallyOpen={true} + > + + + ); +}; diff --git a/public/app/core/components/TraceToMetrics/TraceToMetricsSettings.tsx b/public/app/core/components/TraceToMetrics/TraceToMetricsSettings.tsx index 2e6a12662e1..52bf8a8c6c0 100644 --- a/public/app/core/components/TraceToMetrics/TraceToMetricsSettings.tsx +++ b/public/app/core/components/TraceToMetrics/TraceToMetricsSettings.tsx @@ -7,10 +7,11 @@ import { GrafanaTheme2, updateDatasourcePluginJsonDataOption, } from '@grafana/data'; +import { ConfigSection } from '@grafana/experimental'; import { DataSourcePicker } from '@grafana/runtime'; import { Button, InlineField, InlineFieldRow, Input, useStyles2 } from '@grafana/ui'; -import { DocsLinkButton } from '../DocsLinkButton'; +import { ConfigDescriptionLink } from '../ConfigDescriptionLink'; import { TagMappingInput } from '../TraceToLogs/TagMappingInput'; export interface TraceToMetricsOptions { @@ -37,13 +38,6 @@ export function TraceToMetricsSettings({ options, onOptionsChange }: Props) { return (
-

Trace to metrics

- -
- Navigate from a trace span to the selected data source's metrics - -
- { + return ( + + } + isCollapsible={true} + isInitiallyOpen={true} + > + + + ); +}; + const getStyles = (theme: GrafanaTheme2) => ({ infoText: css` padding-bottom: ${theme.spacing(2)}; @@ -226,6 +239,8 @@ const getStyles = (theme: GrafanaTheme2) => ({ align-items: baseline; `, queryRow: css` + label: queryRow; display: flex; + flex-flow: wrap; `, }); diff --git a/public/app/features/explore/TraceView/components/settings/SpanBarSettings.tsx b/public/app/features/explore/TraceView/components/settings/SpanBarSettings.tsx index a59323f27ad..4ce04b8e60b 100644 --- a/public/app/features/explore/TraceView/components/settings/SpanBarSettings.tsx +++ b/public/app/features/explore/TraceView/components/settings/SpanBarSettings.tsx @@ -8,8 +8,9 @@ import { toOption, updateDatasourcePluginJsonDataOption, } from '@grafana/data'; +import { ConfigSubSection } from '@grafana/experimental'; import { InlineField, InlineFieldRow, Input, Select, useStyles2 } from '@grafana/ui'; -import { DocsLinkButton } from 'app/core/components/DocsLinkButton'; +import { ConfigDescriptionLink } from 'app/core/components/ConfigDescriptionLink'; export interface SpanBarOptions { type?: string; @@ -32,13 +33,6 @@ export default function SpanBarSettings({ options, onOptionsChange }: Props) { return (
-

Span bar

- -
- Add additional info next to the service and operation on a span bar row in the trace view - -
-