Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
Matvey Kukuy 2023-06-08 18:48:35 +03:00
commit 6e82e9400f
5 changed files with 31 additions and 10 deletions

View file

@ -49,7 +49,7 @@ class AlertReceiveChannelSerializer(EagerLoadingMixin, serializers.ModelSerializ
heartbeat = serializers.SerializerMethodField()
allow_delete = serializers.SerializerMethodField()
description_short = serializers.CharField(max_length=250, required=False, allow_null=True)
demo_alert_payload = serializers.CharField(source="config.example_payload", read_only=True)
demo_alert_payload = serializers.JSONField(source="config.example_payload", read_only=True)
routes_count = serializers.SerializerMethodField()
connected_escalations_chains_count = serializers.SerializerMethodField()

View file

@ -2,6 +2,10 @@
width: 100%;
}
.regexp-template-code-error {
border: var(--error-text-color) 1px solid;
}
.regexp-template-editor-modal {
width: 700px;
}

View file

@ -12,6 +12,7 @@ import Text from 'components/Text/Text';
import { AlertReceiveChannel } from 'models/alert_receive_channel/alert_receive_channel.types';
import { ChannelFilter } from 'models/channel_filter/channel_filter.types';
import { useStore } from 'state/useStore';
import { openErrorNotification } from 'utils';
import styles from './EditRegexpRouteTemplateModal.module.css';
@ -33,6 +34,7 @@ const EditRegexpRouteTemplateModal = observer((props: EditRegexpRouteTemplateMod
const regexpBody = store.alertReceiveChannelStore.channelFilters[channelFilterId]?.filtering_term;
const [regexpTemplateBody, setRegexpTemplateBody] = useState<string>(regexpBody);
const [showErrorTemplate, setShowErrorTemplate] = useState<boolean>(false);
const templateJinja2Body = store.alertReceiveChannelStore.channelFilters[channelFilterId]?.filtering_term_as_jinja2;
@ -40,14 +42,20 @@ const EditRegexpRouteTemplateModal = observer((props: EditRegexpRouteTemplateMod
const handleRegexpBodyChange = () => {
return debounce((value: string) => {
setShowErrorTemplate(false);
setRegexpTemplateBody(value);
}, 1000);
};
const handleSave = useCallback(() => {
onUpdateRoute({ ['route_template']: regexpTemplateBody }, channelFilterId, 0);
if (!regexpTemplateBody) {
setShowErrorTemplate(true);
openErrorNotification('Route template body can not be empty');
} else {
onUpdateRoute({ ['route_template']: regexpTemplateBody }, channelFilterId, 0);
onHide();
onHide();
}
}, [regexpTemplateBody]);
const handleConvertToJinja2 = useCallback(() => {
@ -87,7 +95,7 @@ const EditRegexpRouteTemplateModal = observer((props: EditRegexpRouteTemplateMod
</Tooltip>
</HorizontalGroup>
<div className={cx('regexp-template-code')}>
<div className={cx('regexp-template-code', { 'regexp-template-code-error': showErrorTemplate })}>
<MonacoEditor
value={regexpTemplateBody}
height={'200px'}

View file

@ -21,6 +21,7 @@ import { AlertReceiveChannel } from 'models/alert_receive_channel/alert_receive_
import { AlertTemplatesDTO } from 'models/alert_templates';
import { Alert } from 'models/alertgroup/alertgroup.types';
import { ChannelFilter } from 'models/channel_filter/channel_filter.types';
import { openErrorNotification } from 'utils';
import { waitForElement } from 'utils/DOM';
import LocationHelper from 'utils/LocationHelper';
@ -117,11 +118,17 @@ const IntegrationTemplate = observer((props: IntegrationTemplateProps) => {
);
const handleSubmit = useCallback(() => {
template.isRoute
? onUpdateRoute({ [template.name]: changedTemplateBody }, channelFilterId)
: onUpdateTemplates({ [template.name]: changedTemplateBody });
onHide();
if (template.isRoute) {
if (changedTemplateBody) {
onUpdateRoute({ [template.name]: changedTemplateBody }, channelFilterId);
onHide();
} else {
openErrorNotification('Route template body can not be empty');
}
} else {
onUpdateTemplates({ [template.name]: changedTemplateBody });
onHide();
}
}, [onUpdateTemplates, changedTemplateBody]);
const getCheatSheet = (templateName) => {

View file

@ -346,7 +346,9 @@ class Integration2 extends React.Component<Integration2Props, Integration2State>
this.setState({
isEditTemplateModalOpen: undefined,
});
this.setState({ isTemplateSettingsOpen: true });
if (selectedTemplate?.name !== 'route_template') {
this.setState({ isTemplateSettingsOpen: true });
}
LocationHelper.update({ template: undefined, routeId: undefined }, 'partial');
}}
channelFilterId={channelFilterIdForEdit}