Elasticsearch: Handle multiple annotation structures (#66762)

elastic: fix annotation handling
This commit is contained in:
Gábor Farkas 2023-04-20 11:42:25 +02:00 committed by GitHub
parent 3edc246ca3
commit 82ac2bae5f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 2 deletions

View File

@ -23,9 +23,15 @@ export function ElasticsearchAnnotationsQueryEditor(props: Props) {
<ElasticSearchQueryField <ElasticSearchQueryField
value={annotation.target?.query} value={annotation.target?.query}
onChange={(query) => { onChange={(query) => {
const currentTarget = annotation.target ?? { refId: 'annotation_query' };
const newTarget = {
...currentTarget,
query,
};
onAnnotationChange({ onAnnotationChange({
...annotation, ...annotation,
query, target: newTarget,
}); });
}} }}
/> />

View File

@ -257,7 +257,17 @@ export class ElasticDatasource
const annotation = options.annotation; const annotation = options.annotation;
const timeField = annotation.timeField || '@timestamp'; const timeField = annotation.timeField || '@timestamp';
const timeEndField = annotation.timeEndField || null; const timeEndField = annotation.timeEndField || null;
const queryString = annotation.query;
// the `target.query` is the "new" location for the query.
// normally we would write this code as
// try-the-new-place-then-try-the-old-place,
// but we had the bug at
// https://github.com/grafana/grafana/issues/61107
// that may have stored annotations where
// both the old and the new place are set,
// and in that scenario the old place needs
// to have priority.
const queryString = annotation.query ?? annotation.target?.query;
const tagsField = annotation.tagsField || 'tags'; const tagsField = annotation.tagsField || 'tags';
const textField = annotation.textField || null; const textField = annotation.textField || null;