mirror of
https://github.com/grafana/grafana.git
synced 2025-09-19 20:33:05 +08:00

* 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
37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
import { lastValueFrom } from 'rxjs';
|
|
|
|
import { getBackendSrv } from '@grafana/runtime';
|
|
|
|
import { alertingApi } from './alertingApi';
|
|
export interface OnCallIntegration {
|
|
integration_url: string;
|
|
}
|
|
export type OnCallIntegrationsResponse = OnCallIntegration[];
|
|
export type OnCallIntegrationsUrls = string[];
|
|
|
|
export const onCallApi = alertingApi.injectEndpoints({
|
|
endpoints: (build) => ({
|
|
getOnCallIntegrations: build.query<OnCallIntegrationsUrls, void>({
|
|
queryFn: async () => {
|
|
const integrations = await fetchOnCallIntegrations();
|
|
return { data: integrations };
|
|
},
|
|
}),
|
|
}),
|
|
});
|
|
export async function fetchOnCallIntegrations(): Promise<OnCallIntegrationsUrls> {
|
|
try {
|
|
const response = await lastValueFrom(
|
|
getBackendSrv().fetch<OnCallIntegrationsResponse>({
|
|
url: '/api/plugin-proxy/grafana-oncall-app/api/internal/v1/alert_receive_channels/',
|
|
showErrorAlert: false,
|
|
showSuccessAlert: false,
|
|
})
|
|
);
|
|
return response.data.map((result) => result.integration_url);
|
|
} catch (error) {
|
|
return [];
|
|
}
|
|
}
|
|
export const { useGetOnCallIntegrationsQuery } = onCallApi;
|