import React, { memo, FC, useEffect } from 'react'; // Types import { ExploreQueryFieldProps } from '@grafana/data'; import { PrometheusDatasource } from '../datasource'; import { PromQuery, PromOptions } from '../types'; import PromQueryField from './PromQueryField'; import { PromExploreExtraField } from './PromExploreExtraField'; export type Props = ExploreQueryFieldProps; export const PromExploreQueryEditor: FC = (props: Props) => { const { range, query, data, datasource, history, onChange, onRunQuery } = props; useEffect(() => { if (query.exemplar === undefined) { onChange({ ...query, exemplar: true }); } }, [onChange, query]); function onChangeQueryStep(value: string) { const { query, onChange } = props; const nextQuery = { ...query, interval: value }; onChange(nextQuery); } function onStepChange(e: React.SyntheticEvent) { if (e.currentTarget.value !== query.interval) { onChangeQueryStep(e.currentTarget.value); } } function onReturnKeyDown(e: React.KeyboardEvent) { if (e.key === 'Enter' && (e.shiftKey || e.ctrlKey)) { onRunQuery(); } } function onQueryTypeChange(value: string) { const { query, onChange } = props; let nextQuery; if (value === 'instant') { nextQuery = { ...query, instant: true, range: false }; } else if (value === 'range') { nextQuery = { ...query, instant: false, range: true }; } else { nextQuery = { ...query, instant: true, range: true }; } onChange(nextQuery); } return ( {}} history={history} data={data} ExtraFieldElement={ } /> ); }; export default memo(PromExploreQueryEditor);