import React, { useState } from 'react'; import { QueryEditorProps } from '@grafana/data'; import { InlineFormLabel, Input } from '@grafana/ui'; import { InfluxQuery, InfluxOptions } from '../types'; import InfluxDatasource from './../datasource'; export const AnnotationEditor = (props: QueryEditorProps) => { const { query, onChange } = props; const [eventQuery, setEventQuery] = useState(query.query ?? ''); const [textColumn, setTextColumn] = useState(query.textColumn ?? ''); const [tagsColumn, setTagsColumn] = useState(query.tagsColumn ?? ''); const [timeEndColumn, setTimeEndColumn] = useState(query?.timeEndColumn ?? ''); const [titleColumn] = useState(query?.titleColumn ?? ''); const updateValue = (key: K, val: V) => { onChange({ ...query, [key]: val, fromAnnotations: true, textEditor: true, }); }; return (
InfluxQL Query setEventQuery(e.currentTarget.value ?? '')} onBlur={() => updateValue('query', eventQuery)} placeholder="select text from events where $timeFilter limit 1000" />
If your influxdb query returns more than one field you need to specify the column names below. An annotation event is composed of a title, tags, and an additional text field. Optionally you can map the timeEnd column for region annotation usage.
} > Field mappings
Text setTextColumn(e.currentTarget.value ?? '')} onBlur={() => updateValue('textColumn', textColumn)} />
Tags setTagsColumn(e.currentTarget.value ?? '')} onBlur={() => updateValue('tagsColumn', tagsColumn)} />
TimeEnd setTimeEndColumn(e.currentTarget.value ?? '')} onBlur={() => updateValue('timeEndColumn', timeEndColumn)} />
Title
); };