diff --git a/public/app/plugins/datasource/elasticsearch/configuration/ConfigEditor.tsx b/public/app/plugins/datasource/elasticsearch/configuration/ConfigEditor.tsx index 49d87f2db1b..85fc4a440d2 100644 --- a/public/app/plugins/datasource/elasticsearch/configuration/ConfigEditor.tsx +++ b/public/app/plugins/datasource/elasticsearch/configuration/ConfigEditor.tsx @@ -2,7 +2,9 @@ import React, { useEffect, useRef } from 'react'; import { SIGV4ConnectionConfig } from '@grafana/aws-sdk'; import { DataSourcePluginOptionsEditorProps } from '@grafana/data'; +import { ConfigSection } from '@grafana/experimental'; import { Alert, DataSourceHttpSettings } from '@grafana/ui'; +import { Divider } from 'app/core/components/Divider'; import { config } from 'app/core/config'; import { ElasticsearchOptions } from '../types'; @@ -36,6 +38,9 @@ export const ConfigEditor = (props: Props) => { Browser access mode in the Elasticsearch datasource is no longer available. Switch to server access mode. )} + + + { secureSocksDSProxyEnabled={config.secureSocksDSProxyEnabled} /> - + - - onOptionsChange({ - ...options, - jsonData: newValue, - }) - } - /> - - { - onOptionsChange({ - ...options, - jsonData: { - ...options.jsonData, - dataLinks: newValue, - }, - }); - }} - /> + + + + + onOptionsChange({ + ...options, + jsonData: newValue, + }) + } + /> + + { + onOptionsChange({ + ...options, + jsonData: { + ...options.jsonData, + dataLinks: newValue, + }, + }); + }} + /> + ); }; diff --git a/public/app/plugins/datasource/elasticsearch/configuration/DataLinks.tsx b/public/app/plugins/datasource/elasticsearch/configuration/DataLinks.tsx index b3f99fcdfaf..f6ee3b1a6d3 100644 --- a/public/app/plugins/datasource/elasticsearch/configuration/DataLinks.tsx +++ b/public/app/plugins/datasource/elasticsearch/configuration/DataLinks.tsx @@ -2,7 +2,9 @@ import { css } from '@emotion/css'; import React from 'react'; import { GrafanaTheme2, VariableOrigin, DataLinkBuiltInVars } from '@grafana/data'; +import { ConfigSubSection } from '@grafana/experimental'; import { Button, useStyles2 } from '@grafana/ui'; +import { ConfigDescriptionLink } from 'app/core/components/ConfigDescriptionLink'; import { DataLinkConfig } from '../types'; @@ -10,9 +12,11 @@ import { DataLink } from './DataLink'; const getStyles = (theme: GrafanaTheme2) => { return { - infoText: css` - padding-bottom: ${theme.spacing(2)}; - color: ${theme.colors.text.secondary}; + addButton: css` + margin-right: 10px; + `, + container: css` + margin-bottom: ${theme.spacing(2)}; `, dataLink: css` margin-bottom: ${theme.spacing(1)}; @@ -29,60 +33,63 @@ export const DataLinks = (props: Props) => { const styles = useStyles2(getStyles); return ( - <> -

Data links

+ + } + > +
+ {value && value.length > 0 && ( +
+ {value.map((field, index) => { + return ( + { + const newDataLinks = [...value]; + newDataLinks.splice(index, 1, newField); + onChange(newDataLinks); + }} + onDelete={() => { + const newDataLinks = [...value]; + newDataLinks.splice(index, 1); + onChange(newDataLinks); + }} + suggestions={[ + { + value: DataLinkBuiltInVars.valueRaw, + label: 'Raw value', + documentation: 'Raw value of the field', + origin: VariableOrigin.Value, + }, + ]} + /> + ); + })} +
+ )} -
- Add links to existing fields. Links will be shown in log row details next to the field value. +
- - {value && value.length > 0 && ( -
- {value.map((field, index) => { - return ( - { - const newDataLinks = [...value]; - newDataLinks.splice(index, 1, newField); - onChange(newDataLinks); - }} - onDelete={() => { - const newDataLinks = [...value]; - newDataLinks.splice(index, 1); - onChange(newDataLinks); - }} - suggestions={[ - { - value: DataLinkBuiltInVars.valueRaw, - label: 'Raw value', - documentation: 'Raw value of the field', - origin: VariableOrigin.Value, - }, - ]} - /> - ); - })} -
- )} - - - + ); }; diff --git a/public/app/plugins/datasource/elasticsearch/configuration/ElasticDetails.tsx b/public/app/plugins/datasource/elasticsearch/configuration/ElasticDetails.tsx index e745fcc118a..b5a2d596382 100644 --- a/public/app/plugins/datasource/elasticsearch/configuration/ElasticDetails.tsx +++ b/public/app/plugins/datasource/elasticsearch/configuration/ElasticDetails.tsx @@ -1,7 +1,9 @@ import React from 'react'; import { DataSourceSettings, SelectableValue } from '@grafana/data'; -import { FieldSet, InlineField, Input, Select, InlineSwitch } from '@grafana/ui'; +import { ConfigSubSection } from '@grafana/experimental'; +import { InlineField, Input, Select, InlineSwitch } from '@grafana/ui'; +import { ConfigDescriptionLink } from 'app/core/components/ConfigDescriptionLink'; import { ElasticsearchOptions, Interval } from '../types'; @@ -20,92 +22,99 @@ type Props = { }; export const ElasticDetails = ({ value, onChange }: Props) => { return ( - <> -
- - - + + } + > + + + - - pattern.value === (value.jsonData.interval === undefined ? 'none' : value.jsonData.interval) + )} + options={indexPatternTypes} + onChange={intervalHandler(value, onChange)} + width={24} + /> + - - - + + + - - - + + + - - A lower limit for the auto group by time interval. Recommended to be set to write frequency, for example{' '} - 1m if your data is written every minute. - - } - error="Value is not valid, you can use number with time unit specifier: y, M, w, d, h, m, s" - invalid={!!value.jsonData.timeInterval && !/^\d+(ms|[Mwdhmsy])$/.test(value.jsonData.timeInterval)} - > - - + + A lower limit for the auto group by time interval. Recommended to be set to write frequency, for example{' '} + 1m if your data is written every minute. + + } + error="Value is not valid, you can use number with time unit specifier: y, M, w, d, h, m, s" + invalid={!!value.jsonData.timeInterval && !/^\d+(ms|[Mwdhmsy])$/.test(value.jsonData.timeInterval)} + > + + - + + + + + {value.jsonData.xpack && ( + - - {value.jsonData.xpack && ( - - - - )} -
- + )} + ); }; diff --git a/public/app/plugins/datasource/elasticsearch/configuration/LogsConfig.tsx b/public/app/plugins/datasource/elasticsearch/configuration/LogsConfig.tsx index 3f5d64038bf..95ec6036bba 100644 --- a/public/app/plugins/datasource/elasticsearch/configuration/LogsConfig.tsx +++ b/public/app/plugins/datasource/elasticsearch/configuration/LogsConfig.tsx @@ -1,6 +1,8 @@ import React from 'react'; -import { Input, InlineField, FieldSet } from '@grafana/ui'; +import { ConfigSubSection } from '@grafana/experimental'; +import { Input, InlineField } from '@grafana/ui'; +import { ConfigDescriptionLink } from 'app/core/components/ConfigDescriptionLink'; import { ElasticsearchOptions } from '../types'; @@ -19,7 +21,16 @@ export const LogsConfig = (props: Props) => { }; return ( -
+ + } + > { width={24} /> -
+ ); };