<?php declare(strict_types = 0);
?>
window.sla_excluded_downtime_edit_popup = new class {
init() {
this.overlay = overlays_stack.getById('sla_excluded_downtime_edit');
this.dialogue = this.overlay.$dialogue[0];
this.form = this.overlay.$dialogue.$body[0].querySelector('form');
}
submit() {
const fields = getFormFields(this.form);
fields.name = fields.name.trim();
this.overlay.setLoading();
const curl = new Curl('zabbix.php');
curl.setArgument('action', 'sla.excludeddowntime.validate');
this._post(curl.getUrl(), fields, (response) => {
overlayDialogueDestroy(this.overlay.dialogueid);
this.dialogue.dispatchEvent(new CustomEvent('dialogue.submit', {detail: response.body}));
});
}
_post(url, data, success_callback) {
fetch(url, {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify(data)
})
.then((response) => response.json())
.then((response) => {
if ('error' in response) {
throw {error: response.error};
}
return response;
})
.then(success_callback)
.catch((exception) => {
for (const element of this.form.parentNode.children) {
if (element.matches('.msg-good, .msg-bad, .msg-warning')) {
element.parentNode.removeChild(element);
}
}
let title, messages;
if (typeof exception === 'object' && 'error' in exception) {
title = exception.error.title;
messages = exception.error.messages;
}
else {
messages = [<?= json_encode(_('Unexpected server error.')) ?>];
}
const message_box = makeMessageBox('bad', messages, title)[0];
this.form.parentNode.insertBefore(message_box, this.form);
})
.finally(() => {
this.overlay.unsetLoading();
});
}
};