zdravko/web/templates/pages/settings_checks_create.tmpl

117 lines
3.7 KiB
Cheetah
Raw Normal View History

2024-02-29 11:15:15 +00:00
{{ define "settings" }}
<section class="p-5">
<form action="/settings/checks/create" method="post">
2024-02-29 11:15:15 +00:00
<label for="name">Name</label>
<input type="text" name="name" id="name" placeholder="HTTP GET Request" />
<p>Name of the check can be anything.</p>
2024-02-29 11:15:15 +00:00
<label for="workergroups">Worker Groups</label>
<input
type="text"
name="workergroups"
id="workergroups"
placeholder="europe asia"
2024-03-04 13:20:01 +00:00
required
2024-02-29 11:15:15 +00:00
/>
<p>
Worker groups are used to distribute the check to specific workers.
Space is a separator between groups.
</p>
2024-02-29 11:15:15 +00:00
<label for="schedule">Schedule</label>
<input
type="text"
name="schedule"
id="schedule"
placeholder="@every 1m"
value="@every 1m"
2024-03-04 13:20:01 +00:00
required
2024-02-29 11:15:15 +00:00
/>
<p>
Schedule is a cron expression that defines when the check should be
2024-02-29 11:15:15 +00:00
executed.
<br />
You can also use <code>@every [interval]</code> where interval is a
duration like 5m, 1h, 60s. Or use <code>@hourly</code>,
<code>@daily</code>, <code>@weekly</code>, <code>@monthly</code>,
<code>@yearly</code>.
</p>
<label for="filter">Filter</label>
2024-05-25 11:45:25 +00:00
<textarea required id="filter" name="filter" class="sm:col-span-2 h-12">
{{ ScriptUnescapeString .ExampleFilter }}</textarea
>
<div
id="editor-filter"
2024-05-25 11:45:25 +00:00
class="hidden sm:col-span-2 block w-full h-12 rounded-lg border border-gray-300 overflow-hidden"
></div>
2024-05-25 11:45:25 +00:00
<p class="sm:col-span-2">
2024-05-24 20:19:06 +00:00
With filter we specify what targets the check will run on. The must be a
javascript expression that returns a boolean.
</p>
2024-02-29 11:15:15 +00:00
<label for="script">Script</label>
2024-05-25 11:45:25 +00:00
<textarea required id="script" name="script" class="sm:col-span-2 h-96">
{{ ScriptUnescapeString .ExampleScript }}</textarea
2024-03-04 13:20:01 +00:00
>
2024-02-29 11:15:15 +00:00
<div
id="editor-script"
2024-05-25 11:45:25 +00:00
class="hidden sm:col-span-2 block w-full h-96 rounded-lg border border-gray-300 overflow-hidden"
2024-02-29 11:15:15 +00:00
></div>
2024-05-25 11:45:25 +00:00
<p class="sm:col-span-2">
2024-02-29 11:15:15 +00:00
Script is what determines the status of a service. You can read more
about it on
<a target="_blank" href="https://k6.io/docs/using-k6/http-requests/"
>k6 documentation</a
>.
</p>
<button type="submit" onclick="save()">Create</button>
</form>
</section>
2024-02-29 11:15:15 +00:00
<script src="/static/monaco/vs/loader.js"></script>
<script>
const items = [
2024-05-25 11:45:25 +00:00
{
name: "filter",
language: "javascript",
options: {
quickSuggestions: false,
},
},
{ name: "script", language: "javascript" },
];
2024-03-04 13:20:01 +00:00
2024-02-29 11:15:15 +00:00
function save() {
for (const { name } of items) {
const elem = window.editors[name].getValue();
document.getElementById(name).value = elem;
}
2024-02-29 11:15:15 +00:00
}
window.editors = {};
2024-05-25 11:45:25 +00:00
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,
2024-05-25 11:45:25 +00:00
wordWrap: "on",
...options,
});
const resizeObserver = new ResizeObserver((entries) => {
window.editors[name].layout();
});
resizeObserver.observe(editor);
2024-02-29 11:15:15 +00:00
});
}
2024-02-29 11:15:15 +00:00
</script>
{{ end }}