import { css } from '@emotion/css'; import { DataSourcePluginOptionsEditorProps, GrafanaTheme2, updateDatasourcePluginJsonDataOption } from '@grafana/data'; import { IntervalInput, invalidTimeShiftError } from '@grafana/o11y-ds-frontend'; import { InlineField, InlineSwitch, useStyles2 } from '@grafana/ui'; import { TempoJsonData } from '../types'; interface Props extends DataSourcePluginOptionsEditorProps {} export function QuerySettings({ options, onOptionsChange }: Props) { const styles = useStyles2(getStyles); const getLabel = (type: 'start' | 'end') => { return `Time shift for ${type} of search`; }; const getTooltip = (type: 'start' | 'end') => { return `Shifts the ${type} of the time range when searching by TraceID. Searching can return traces that do not fully fall into the search time range, so we recommend using higher time shifts for longer traces. Default: 30m (Time units can be used here, for example: 5s, 1m, 3h`; }; return (
{ updateDatasourcePluginJsonDataOption({ onOptionsChange, options }, 'traceQuery', { ...options.jsonData.traceQuery, timeShiftEnabled: event.currentTarget.checked, }); }} /> { updateDatasourcePluginJsonDataOption({ onOptionsChange, options }, 'traceQuery', { ...options.jsonData.traceQuery, spanStartTimeShift: val, }); }} isInvalidError={invalidTimeShiftError} /> { updateDatasourcePluginJsonDataOption({ onOptionsChange, options }, 'traceQuery', { ...options.jsonData.traceQuery, spanEndTimeShift: val, }); }} isInvalidError={invalidTimeShiftError} />
); } export const getStyles = (theme: GrafanaTheme2) => ({ infoText: css({ paddingBottom: theme.spacing(2), color: theme.colors.text.secondary, }), container: css({ width: '100%', }), row: css({ alignItems: 'baseline', }), });