import React, { FunctionComponent } from 'react'; import { QueryEditorProps } from '@grafana/data'; import { ElasticDatasource } from '../../datasource'; import { ElasticsearchOptions, ElasticsearchQuery } from '../../types'; import { ElasticsearchProvider } from './ElasticsearchQueryContext'; import { InlineField, InlineFieldRow, Input, QueryField } from '@grafana/ui'; import { changeAliasPattern, changeQuery } from './state'; import { MetricAggregationsEditor } from './MetricAggregationsEditor'; import { BucketAggregationsEditor } from './BucketAggregationsEditor'; import { useDispatch } from '../../hooks/useStatelessReducer'; import { useNextId } from '../../hooks/useNextId'; export type ElasticQueryEditorProps = QueryEditorProps; export const QueryEditor: FunctionComponent = ({ query, onChange, onRunQuery, datasource, }) => ( ); interface Props { value: ElasticsearchQuery; } const QueryEditorForm: FunctionComponent = ({ value }) => { const dispatch = useDispatch(); const nextId = useNextId(); // To be considered a time series query, the last bucked aggregation must be a Date Histogram const isTimeSeriesQuery = value.bucketAggs?.slice(-1)[0]?.type === 'date_histogram'; return ( <> {}} onChange={(query) => dispatch(changeQuery(query))} placeholder="Lucene Query" portalOrigin="elasticsearch" /> dispatch(changeAliasPattern(e.currentTarget.value))} defaultValue={value.alias} /> ); };