Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
6e82e9400f
5 changed files with 31 additions and 10 deletions
|
|
@ -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()
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,10 @@
|
|||
width: 100%;
|
||||
}
|
||||
|
||||
.regexp-template-code-error {
|
||||
border: var(--error-text-color) 1px solid;
|
||||
}
|
||||
|
||||
.regexp-template-editor-modal {
|
||||
width: 700px;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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'}
|
||||
|
|
|
|||
|
|
@ -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) => {
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue