import { css } from '@emotion/css'; import React from 'react'; import { DataSourceJsonData, DataSourcePluginOptionsEditorProps, GrafanaTheme2, updateDatasourcePluginJsonDataOption, } from '@grafana/data'; import { ConfigSubSection } from '@grafana/experimental'; import { InlineField, InlineFieldRow, InlineSwitch, useStyles2 } from '@grafana/ui'; import { ConfigDescriptionLink } from './ConfigDescriptionLink'; export interface NodeGraphOptions { enabled?: boolean; } export interface NodeGraphData extends DataSourceJsonData { nodeGraph?: NodeGraphOptions; } interface Props extends DataSourcePluginOptionsEditorProps {} export function NodeGraphSettings({ options, onOptionsChange }: Props) { const styles = useStyles2(getStyles); return (
) => updateDatasourcePluginJsonDataOption({ onOptionsChange, options }, 'nodeGraph', { ...options.jsonData.nodeGraph, enabled: event.currentTarget.checked, }) } />
); } export const NodeGraphSection = ({ options, onOptionsChange }: DataSourcePluginOptionsEditorProps) => { let suffix = options.type; suffix += options.type === 'tempo' ? '/configure-tempo-data-source/#node-graph' : '/#node-graph'; return ( } > ); }; const getStyles = (theme: GrafanaTheme2) => ({ infoText: css` label: infoText; padding-bottom: ${theme.spacing(2)}; color: ${theme.colors.text.secondary}; `, container: css` label: container; width: 100%; `, row: css` label: row; align-items: baseline; `, });