{{ define "settings" }} <section class="p-5"> <form action="/settings/triggers/create" method="post"> <label for="name">Name</label> <input type="text" name="name" id="name" value="Five subsequent failures trigger notification" /> <p>Name of the trigger can be anything.</p> <label for="script">Script</label> <textarea required id="script" name="script" class="sm:col-span-2 h-96"> {{ ScriptUnescapeString .Example }}</textarea > <div id="editor-script" class="hidden sm:col-span-2 block w-full h-96 rounded-lg border border-gray-300 overflow-hidden" ></div> <p class="sm:col-span-2"> The trigger script executes for every matching <code>target</code>'s execution of <code>trigger</code>. The outcome of that <code>trigger</code> is passed to the script as a <code>outcome</code> object. Based on that the trigger script should decide if an incident should either be created or closed. </p> <button type="submit" onclick="save()">Create</button> </form> </section> <script src="/static/monaco/vs/loader.js"></script> <script> const items = [{ name: "script", language: "javascript" }]; function save() { for (const { name } of items) { const elem = window.editors[name].getValue(); document.getElementById(name).value = elem; } } window.editors = {}; for (const { name, language, options = {} } of items) { const textarea = document.getElementById(name); const editor = document.getElementById("editor-" + name); editor.classList.remove("hidden"); textarea.hidden = true; require.config({ paths: { vs: "/static/monaco/vs" } }); require(["vs/editor/editor.main"], function () { window.editors[name] = monaco.editor.create(editor, { value: textarea.value, language: language, minimap: { enabled: false }, codeLens: false, contextmenu: false, scrollBeyondLastLine: false, ...options, }); const resizeObserver = new ResizeObserver((entries) => { window.editors[name].layout(); }); resizeObserver.observe(editor); }); } </script> {{ end }}