From 1e2d4f0f746edaf63b140f379f6fd9e62a990356 Mon Sep 17 00:00:00 2001 From: Jan Svabenik Date: Sat, 21 Mar 2026 18:54:11 +0100 Subject: [PATCH] feat: add refinement window controls to UI --- web/app.js | 18 ++++++++++++++++++ web/index.html | 14 ++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/web/app.js b/web/app.js index 71fe7d5..692fdbf 100644 --- a/web/app.js +++ b/web/app.js @@ -62,6 +62,10 @@ const recMinSNR = qs('recMinSNR'); const recMaxDisk = qs('recMaxDisk'); const recClassFilter = qs('recClassFilter'); +const refineAutoSpan = qs('refineAutoSpan'); +const refineMinSpan = qs('refineMinSpan'); +const refineMaxSpan = qs('refineMaxSpan'); + const signalList = qs('signalList'); const eventList = qs('eventList'); const recordingList = qs('recordingList'); @@ -668,6 +672,9 @@ function applyConfigToUI(cfg) { if (recMaxDisk) recMaxDisk.value = cfg.recorder.max_disk_mb ?? 0; if (recClassFilter) recClassFilter.value = (cfg.recorder.class_filter || []).join(', '); } + if (refineAutoSpan) refineAutoSpan.value = String(cfg.refinement?.auto_span ?? true); + if (refineMinSpan) refineMinSpan.value = cfg.refinement?.min_span_hz ?? 0; + if (refineMaxSpan) refineMaxSpan.value = cfg.refinement?.max_span_hz ?? 0; spanInput.value = (cfg.sample_rate / zoom / 1e6).toFixed(3); isSyncingConfig = false; } @@ -1926,6 +1933,17 @@ if (recClassFilter) recClassFilter.addEventListener('change', () => { .filter(Boolean); queueConfigUpdate({ recorder: { class_filter: list } }); }); +if (refineAutoSpan) refineAutoSpan.addEventListener('change', () => { + queueConfigUpdate({ refinement: { auto_span: refineAutoSpan.value === 'true' } }); +}); +if (refineMinSpan) refineMinSpan.addEventListener('change', () => { + const v = parseFloat(refineMinSpan.value); + if (Number.isFinite(v)) queueConfigUpdate({ refinement: { min_span_hz: v } }); +}); +if (refineMaxSpan) refineMaxSpan.addEventListener('change', () => { + const v = parseFloat(refineMaxSpan.value); + if (Number.isFinite(v)) queueConfigUpdate({ refinement: { max_span_hz: v } }); +}); avgSelect.addEventListener('change', () => { avgAlpha = parseFloat(avgSelect.value) || 0; diff --git a/web/index.html b/web/index.html index 531d336..11b1ad3 100644 --- a/web/index.html +++ b/web/index.html @@ -239,6 +239,20 @@ + +
+
Refinement Windows
+ +
+ + +
+