mirror of https://github.com/grafana/grafana
Elasticsearch: Migrate annotation editor to react (#49529)
* Migrate annotation editor to react * Gio patch * Update types * Optional and conform to older designpull/49878/head^2
parent
8fa8c9dc8b
commit
387267b30a
@ -0,0 +1,91 @@ |
||||
import React from 'react'; |
||||
|
||||
import { AnnotationQuery } from '@grafana/data'; |
||||
import { EditorRow, EditorField } from '@grafana/experimental'; |
||||
import { Input } from '@grafana/ui'; |
||||
|
||||
import { ElasticsearchQuery } from '../../types'; |
||||
|
||||
import { ElasticQueryEditorProps, ElasticSearchQueryField } from './index'; |
||||
|
||||
type Props = ElasticQueryEditorProps & { |
||||
annotation?: AnnotationQuery<ElasticsearchQuery>; |
||||
onAnnotationChange?: (annotation: AnnotationQuery<ElasticsearchQuery>) => void; |
||||
}; |
||||
|
||||
export function ElasticsearchAnnotationsQueryEditor(props: Props) { |
||||
const annotation = props.annotation!; |
||||
const onAnnotationChange = props.onAnnotationChange!; |
||||
|
||||
return ( |
||||
<> |
||||
<div className="gf-form-group"> |
||||
<ElasticSearchQueryField |
||||
value={annotation.target?.query} |
||||
onChange={(query) => { |
||||
onAnnotationChange({ |
||||
...annotation, |
||||
query, |
||||
}); |
||||
}} |
||||
/> |
||||
</div> |
||||
|
||||
<div className="gf-form-group"> |
||||
<h6>Field mappings</h6> |
||||
<EditorRow> |
||||
<EditorField label="Time"> |
||||
<Input |
||||
type="text" |
||||
placeholder="@timestamp" |
||||
value={annotation.timeField} |
||||
onChange={(e) => { |
||||
onAnnotationChange({ |
||||
...annotation, |
||||
timeField: e.currentTarget.value, |
||||
}); |
||||
}} |
||||
/> |
||||
</EditorField> |
||||
<EditorField label="Time End"> |
||||
<Input |
||||
type="text" |
||||
value={annotation.timeEndField} |
||||
onChange={(e) => { |
||||
onAnnotationChange({ |
||||
...annotation, |
||||
timeEndField: e.currentTarget.value, |
||||
}); |
||||
}} |
||||
/> |
||||
</EditorField> |
||||
<EditorField label="Text"> |
||||
<Input |
||||
type="text" |
||||
value={annotation.textField} |
||||
onChange={(e) => { |
||||
onAnnotationChange({ |
||||
...annotation, |
||||
textField: e.currentTarget.value, |
||||
}); |
||||
}} |
||||
/> |
||||
</EditorField> |
||||
<EditorField label="Tags"> |
||||
<Input |
||||
type="text" |
||||
placeholder="tags" |
||||
value={annotation.tagsField} |
||||
onChange={(e) => { |
||||
onAnnotationChange({ |
||||
...annotation, |
||||
tagsField: e.currentTarget.value, |
||||
}); |
||||
}} |
||||
/> |
||||
</EditorField> |
||||
</EditorRow> |
||||
</div> |
||||
</> |
||||
); |
||||
} |
||||
@ -1,38 +0,0 @@ |
||||
<div class="gf-form-group"> |
||||
<div class="gf-form" ng-if="ctrl.annotation.index"> |
||||
<span class="gf-form-label width-14">Index name</span> |
||||
<input type="text" class="gf-form-input max-width-20" ng-model='ctrl.annotation.index' placeholder="events-*"></input> |
||||
</div> |
||||
<div class="gf-form-group"> |
||||
<div class="gf-form"> |
||||
<input type="text" class="gf-form-input" ng-model='ctrl.annotation.query' |
||||
placeholder="Elasticsearch lucene query"></input> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="gf-form-group"> |
||||
<h6>Field mappings</h6> |
||||
<div class="gf-form-inline"> |
||||
<div class="gf-form"> |
||||
<span class="gf-form-label">Time</span> |
||||
<input type="text" class="gf-form-input max-width-14" ng-model='ctrl.annotation.timeField' placeholder="@timestamp"></input> |
||||
</div> |
||||
<div class="gf-form"> |
||||
<span class="gf-form-label">Time End</span> |
||||
<input type="text" class="gf-form-input max-width-14" ng-model='ctrl.annotation.timeEndField' placeholder=""></input> |
||||
</div> |
||||
<div class="gf-form"> |
||||
<span class="gf-form-label">Text</span> |
||||
<input type="text" class="gf-form-input max-width-14" ng-model='ctrl.annotation.textField' placeholder=""></input> |
||||
</div> |
||||
<div class="gf-form"> |
||||
<span class="gf-form-label">Tags</span> |
||||
<input type="text" class="gf-form-input max-width-10" ng-model='ctrl.annotation.tagsField' placeholder="tags"></input> |
||||
</div> |
||||
<div class="gf-form" ng-show="ctrl.annotation.titleField"> |
||||
<span class="gf-form-label">Title <em class="muted">(deprecated)</em></span> |
||||
<input type="text" class="gf-form-input max-width-16" ng-model='ctrl.annotation.titleField' placeholder="desc"></input> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
Loading…
Reference in new issue