@@ -98,7 +95,8 @@ const IntegrationForm = observer((props: IntegrationFormProps) => {
return (
{
@@ -201,4 +196,4 @@ const IntegrationForm = observer((props: IntegrationFormProps) => {
);
});
-export default IntegrationForm;
+export default IntegrationForm2;
diff --git a/grafana-plugin/src/containers/IntegrationTemplate/IntegrationTemplate.module.css b/grafana-plugin/src/containers/IntegrationTemplate/IntegrationTemplate.module.css
index dc6c6dc9..d51b2bcf 100644
--- a/grafana-plugin/src/containers/IntegrationTemplate/IntegrationTemplate.module.css
+++ b/grafana-plugin/src/containers/IntegrationTemplate/IntegrationTemplate.module.css
@@ -1,24 +1,30 @@
.title-container {
- padding: 24px;
- margin-bottom: 24px;
+ padding: 24px 24px 0;
+}
+
+.container-wrapper {
+ padding: 8px;
}
.container {
display: flex;
width: 100%;
- border: var(--border-weak);
+ border: var(--border-strong);
+ padding: 0 16px;
}
.template-block-title {
padding: 16px;
align-items: baseline;
+ height: 56px;
}
.template-editor-block-title {
- padding: 16px;
+ padding: 8px 16px;
align-items: baseline;
border: var(--border-weak);
background-color: var(--background-secondary);
+ height: 56px;
}
.template-block-list {
@@ -37,10 +43,9 @@
}
.result {
- padding: 16px;
+ padding-left: 16px;
}
-.block-style {
- border: var(--border-weak);
- background-color: var(--background-secondary);
+.template-block-codeeditor div[aria-label='Code editor container'] {
+ border-bottom: none;
}
diff --git a/grafana-plugin/src/containers/IntegrationTemplate/IntegrationTemplate.tsx b/grafana-plugin/src/containers/IntegrationTemplate/IntegrationTemplate.tsx
index a24eeb6c..e481b102 100644
--- a/grafana-plugin/src/containers/IntegrationTemplate/IntegrationTemplate.tsx
+++ b/grafana-plugin/src/containers/IntegrationTemplate/IntegrationTemplate.tsx
@@ -1,6 +1,6 @@
-import React, { useCallback, useState } from 'react';
+import React, { useCallback, useState, useEffect } from 'react';
-import { Button, HorizontalGroup, Drawer, VerticalGroup } from '@grafana/ui';
+import { Button, HorizontalGroup, VerticalGroup, Icon, Drawer } from '@grafana/ui';
import cn from 'classnames/bind';
import { debounce } from 'lodash-es';
import { observer } from 'mobx-react';
@@ -19,6 +19,8 @@ import TemplatePreview from 'containers/TemplatePreview/TemplatePreview';
import TemplatesAlertGroupsList from 'containers/TemplatesAlertGroupsList/TemplatesAlertGroupsList';
import { AlertReceiveChannel } from 'models/alert_receive_channel/alert_receive_channel.types';
import { Alert } from 'models/alertgroup/alertgroup.types';
+import { ChannelFilter } from 'models/channel_filter/channel_filter.types';
+import LocationHelper from 'utils/LocationHelper';
import styles from './IntegrationTemplate.module.css';
@@ -26,15 +28,16 @@ const cx = cn.bind(styles);
interface IntegrationTemplateProps {
id: AlertReceiveChannel['id'];
+ channelFilterId?: ChannelFilter['id'];
template: TemplateForEdit;
templateBody: string;
onHide: () => void;
onUpdateTemplates: (values: any) => void;
- onUpdateRoute: (values: any) => void;
+ onUpdateRoute: (values: any, channelFilterId?: ChannelFilter['id']) => void;
}
const IntegrationTemplate = observer((props: IntegrationTemplateProps) => {
- const { id, onHide, template, onUpdateTemplates, onUpdateRoute, templateBody } = props;
+ const { id, onHide, template, onUpdateTemplates, onUpdateRoute, templateBody, channelFilterId } = props;
const [isCheatSheetVisible, setIsCheatSheetVisible] = useState(false);
const [chatOps, setChatOps] = useState(undefined);
@@ -42,6 +45,17 @@ const IntegrationTemplate = observer((props: IntegrationTemplateProps) => {
const [changedTemplateBody, setChangedTemplateBody] = useState(templateBody);
const [resultError, setResultError] = useState(undefined);
+ const locationParams: any = { template: template.name };
+ if (template.isRoute) {
+ locationParams.routeId = channelFilterId;
+ }
+
+ LocationHelper.update(locationParams, 'partial');
+
+ useEffect(() => {
+ LocationHelper.update(locationParams, 'partial');
+ }, []);
+
const onShowCheatSheet = useCallback(() => {
setIsCheatSheetVisible(true);
}, []);
@@ -95,7 +109,7 @@ const IntegrationTemplate = observer((props: IntegrationTemplateProps) => {
const handleSubmit = useCallback(() => {
template.isRoute
- ? onUpdateRoute({ [template.name]: changedTemplateBody })
+ ? onUpdateRoute({ [template.name]: changedTemplateBody }, channelFilterId)
: onUpdateTemplates({ [template.name]: changedTemplateBody });
onHide();
@@ -128,31 +142,31 @@ const IntegrationTemplate = observer((props: IntegrationTemplateProps) => {
}
};
return (
- <>
-
-
-
- Edit {template.displayName} template
- {template.description && {template.description}}
-
+
+
+
+ Edit {template.displayName} template
+ {template.description && {template.description}}
+
-
-
-
-
+
+
+
-
- }
- onClose={onHide}
- closeOnMaskClick={false}
- width={'95%'}
- >
+
+