import { css } from '@emotion/css'; import { useState } from 'react'; import { QueryEditorProps } from '@grafana/data'; import { Button, FileDropzone, HorizontalGroup, InlineField, InlineFieldRow, Modal, QueryField, RadioButtonGroup, useStyles2, useTheme2, } from '@grafana/ui'; import { JaegerDatasource } from '../datasource'; import { JaegerQuery, JaegerQueryType } from '../types'; import { SearchForm } from './SearchForm'; type Props = QueryEditorProps; export function QueryEditor({ datasource, query, onChange, onRunQuery }: Props) { const [uploadModalOpen, setUploadModalOpen] = useState(false); const theme = useTheme2(); const styles = useStyles2(getStyles); const onChangeQuery = (value: string) => { const nextQuery: JaegerQuery = { ...query, query: value }; onChange(nextQuery); }; const renderEditorBody = () => { switch (query.queryType) { case 'search': return ; case 'dependencyGraph': return null; default: return ( ); } }; return ( <> setUploadModalOpen(false)}>
{ datasource.uploadedJson = result; onChange({ ...query, queryType: 'upload', }); setUploadModalOpen(false); onRunQuery(); }} />
options={[ { value: 'search', label: 'Search' }, { value: undefined, label: 'TraceID' }, { value: 'dependencyGraph', label: 'Dependency graph' }, ]} value={query.queryType} onChange={(v) => onChange({ ...query, queryType: v, }) } size="md" /> {renderEditorBody()}
); } const getStyles = () => ({ container: css({ width: '100%', }), });