import React from 'react'; import { useAsync } from 'react-use'; import { EditorRows, EditorRow, EditorField } from '@grafana/experimental'; import { DB, QueryEditorProps, QueryRowFilter } from '../../types'; import { QueryToolbox } from '../query-editor-raw/QueryToolbox'; import { Preview } from './Preview'; import { SQLGroupByRow } from './SQLGroupByRow'; import { SQLOrderByRow } from './SQLOrderByRow'; import { SQLSelectRow } from './SQLSelectRow'; import { SQLWhereRow } from './SQLWhereRow'; interface VisualEditorProps extends QueryEditorProps { db: DB; queryRowFilter: QueryRowFilter; onValidate: (isValid: boolean) => void; } export const VisualEditor: React.FC = ({ query, db, queryRowFilter, onChange, onValidate, range, }) => { const state = useAsync(async () => { const fields = await db.fields(query); return fields; }, [db, query.dataset, query.table]); return ( <> {queryRowFilter.filter && ( )} {queryRowFilter.group && ( )} {queryRowFilter.order && ( )} {queryRowFilter.preview && query.rawSql && ( )} ); };