-
-
+
@@ -123,6 +161,30 @@
editQuery = q;
});
+ // Method/body visibility
+ const editMethod = document.getElementById('edit-method');
+ const editBodySection = document.getElementById('edit-body-section');
+ function updateEditBodyVisibility() {
+ editBodySection.classList.toggle('hidden', ['GET','HEAD','OPTIONS'].includes(editMethod.value));
+ }
+ editMethod.addEventListener('change', updateEditBodyVisibility);
+
+ // Dynamic headers
+ document.getElementById('edit-add-header').addEventListener('click', () => {
+ addHeaderRow(document.getElementById('edit-headers-list'));
+ });
+
+ function addHeaderRow(container, key='', value='') {
+ const row = document.createElement('div');
+ row.className = 'header-row flex gap-2';
+ row.innerHTML = `
+
+
+
+ `;
+ container.appendChild(row);
+ }
+
async function load() {
try {
const data = await api(`/monitors/${monitorId}`);
@@ -190,7 +252,18 @@
// Edit form
document.getElementById('edit-name').value = data.name;
document.getElementById('edit-url').value = data.url;
+ document.getElementById('edit-method').value = data.method || 'GET';
document.getElementById('edit-interval').value = String(data.interval_s);
+ document.getElementById('edit-timeout').value = String(data.timeout_ms || 30000);
+ document.getElementById('edit-request-body').value = data.request_body || '';
+ updateEditBodyVisibility();
+
+ const headersList = document.getElementById('edit-headers-list');
+ headersList.innerHTML = '';
+ if (data.request_headers && typeof data.request_headers === 'object') {
+ Object.entries(data.request_headers).forEach(([k, v]) => addHeaderRow(headersList, k, v));
+ }
+
editQuery = data.query;
editQb.setQuery(data.query);
} catch (e) {
@@ -252,11 +325,24 @@
const errEl = document.getElementById('edit-error');
errEl.classList.add('hidden');
try {
+ const headers = {};
+ document.querySelectorAll('#edit-headers-list .header-row').forEach(row => {
+ const k = row.querySelector('.hk').value.trim();
+ const v = row.querySelector('.hv').value.trim();
+ if (k) headers[k] = v;
+ });
+
const body = {
- name: document.getElementById('edit-name').value.trim(),
- url: document.getElementById('edit-url').value.trim(),
+ name: document.getElementById('edit-name').value.trim(),
+ url: document.getElementById('edit-url').value.trim(),
+ method: document.getElementById('edit-method').value,
interval_s: Number(document.getElementById('edit-interval').value),
+ timeout_ms: Number(document.getElementById('edit-timeout').value),
};
+ if (Object.keys(headers).length) body.request_headers = headers;
+ else body.request_headers = null;
+ const rb = document.getElementById('edit-request-body').value.trim();
+ body.request_body = rb || null;
if (editQuery) body.query = editQuery;
await api(`/monitors/${monitorId}`, { method: 'PATCH', body });
load();