import React from 'react'; import useAsync from 'react-use/lib/useAsync'; import { SelectableValue } from '@grafana/data'; import { QueryWithDefaults } from '../../defaults'; import { DB, SQLExpression, SQLQuery, SQLSelectableValue } from '../../types'; import { useSqlChange } from '../../utils/useSqlChange'; import { Config } from './AwesomeQueryBuilder'; import { WhereRow } from './WhereRow'; interface WhereRowProps { query: QueryWithDefaults; fields: SelectableValue[]; onQueryChange: (query: SQLQuery) => void; db: DB; } export function SQLWhereRow({ query, fields, onQueryChange, db }: WhereRowProps) { const state = useAsync(async () => { return mapFieldsToTypes(fields); }, [fields]); const { onSqlChange } = useSqlChange({ query, onQueryChange, db }); return ( { onSqlChange(val); }} /> ); } // needed for awesome query builder function mapFieldsToTypes(columns: SQLSelectableValue[]) { const fields: Config['fields'] = {}; for (const col of columns) { fields[col.value] = { type: col.raqbFieldType || 'text', valueSources: ['value'], mainWidgetProps: { customProps: { icon: col.icon } }, }; } return fields; }