Alerting: Implement template preview for Grafana AlertManager (#65530)

* Add Preview template and payload editor to templates form

* Add TemplatePreview test and update css

* Preview errors for each template that is wrong

* Enable preview templating only for Grafana Alert Manager

* Use harcoded default payload instead of requesting it to the backend

* Update error response in the api definition

* Add spinner when loading result for preview

* Update api request followind DD changes

* Use pre instead of TextArea to render the preview

* Fix tests

* Add alert list editor

* Add start and end time for alert generator

* Add preview for data list added in the modal

* Update copies and move submit button in alert generator to the bottom

* Copy updates

* Refactor

* Use tab instead of button to preview

* Move payload editor next to the content

* Copy update

* Refactor

* Adress PR review comments

* Fix wrong json format throwing an exception when adding more data

* Use monaco editor for payload

* Only show text 'Preview for...'  when we have more than one define

* Fix some errors

* Update CollapseSection style

* Add tooltip for the Payload info icon explaining the available list of alert data fields in preview

* Set payload as invalid if it's not an array

* Fix test

* Update text in AlertTemplateDataTable

* Add separators to distinguish lines that belong to the preview

* Fix text

* Use subDays instead of addDays for substracting days
This commit is contained in:
Sonia Aguilar
2023-04-28 17:05:45 +02:00
committed by GitHub
parent b5a2c3c7f5
commit 3854be1fcb
12 changed files with 954 additions and 84 deletions
@@ -1,25 +1,25 @@
import { css } from '@emotion/css';
import { isNumber } from 'lodash';
import React, { PureComponent, ChangeEvent } from 'react';
import React, { ChangeEvent, PureComponent } from 'react';
import {
Threshold,
GrafanaTheme2,
SelectableValue,
sortThresholds,
Threshold,
ThresholdsConfig,
ThresholdsMode,
SelectableValue,
GrafanaTheme2,
} from '@grafana/data';
import {
Input,
colors,
ColorPicker,
ThemeContext,
Button,
ColorPicker,
colors,
IconButton,
Input,
Label,
RadioButtonGroup,
stylesFactory,
IconButton,
ThemeContext,
} from '@grafana/ui';
const modes: Array<SelectableValue<ThresholdsMode>> = [