import { css } from '@emotion/css'; import { defaults } from 'lodash'; import { useState } from 'react'; import { GrafanaTheme2, QueryEditorProps } from '@grafana/data'; import { config, reportInteraction } from '@grafana/runtime'; import { Button, InlineLabel, useStyles2 } from '@grafana/ui'; import { TempoDatasource } from '../datasource'; import { defaultQuery, MyDataSourceOptions, TempoQuery } from '../types'; import { TempoQueryBuilderOptions } from './TempoQueryBuilderOptions'; import { TraceQLEditor } from './TraceQLEditor'; type EditorProps = { onClearResults: () => void; }; type Props = EditorProps & QueryEditorProps; export function QueryEditor(props: Props) { const styles = useStyles2(getStyles); const query = defaults(props.query, defaultQuery); const [showCopyFromSearchButton, setShowCopyFromSearchButton] = useState(() => { const genQuery = props.datasource.languageProvider.generateQueryFromFilters(query.filters || []); return genQuery === query.query || genQuery === '{}'; }); return ( <> Build complex queries using TraceQL to select a list of traces.{' '} Documentation {!showCopyFromSearchButton && (
Continue editing the query from the Search tab?
)}
); } const getStyles = (theme: GrafanaTheme2) => ({ optionsContainer: css({ marginTop: '10px', }), copyContainer: css({ backgroundColor: theme.colors.background.secondary, padding: theme.spacing(0.5, 1), fontSize: theme.typography.body.fontSize, }), });