import { css } from '@emotion/css'; import { DataSourcePluginOptionsEditorProps, GrafanaTheme2 } from '@grafana/data'; import { AdvancedHttpSettings, Auth, ConfigSection, ConfigSubSection, ConnectionSettings, DataSourceDescription, convertLegacyAuthProps, } from '@grafana/plugin-ui'; import { config } from '@grafana/runtime'; import { Divider, EventsWithValidation, LegacyForms, SecureSocksProxySettings, Stack, regexValidation, useStyles2, } from '@grafana/ui'; import { PyroscopeDataSourceOptions } from './types'; interface Props extends DataSourcePluginOptionsEditorProps {} export const ConfigEditor = (props: Props) => { const { options, onOptionsChange } = props; const styles = useStyles2(getStyles); return (
{config.secureSocksDSProxyEnabled && ( )} { onOptionsChange({ ...options, jsonData: { ...options.jsonData, minStep: event.currentTarget.value, }, }); }} validationEvents={{ [EventsWithValidation.onBlur]: [ regexValidation( /^$|^\d+(ms|[Mwdhmsy])$/, 'Value is not valid, you can use number with time unit specifier: y, M, w, d, h, m, s' ), ], }} /> } tooltip="Minimal step used for metric query. Should be the same or higher as the scrape interval setting in the Pyroscope database." />
); }; const getStyles = (theme: GrafanaTheme2) => ({ container: css({ marginBottom: theme.spacing(2), maxWidth: '900px', }), });