Quellcode durchsuchen

Prioritize runtime signal metadata across spectrum UI

master
Jan Svabenik vor 1 Tag
Ursprung
Commit
3dd95cd9cc
1 geänderte Dateien mit 6 neuen und 2 gelöschten Zeilen
  1. +6
    -2
      web/app.js

+ 6
- 2
web/app.js Datei anzeigen

@@ -319,6 +319,7 @@ function getSignalPrimaryMode(signal) {
function getSignalRuntimeSummary(signal) {
const bits = [];
if (signal?.stereo_state) bits.push(signal.stereo_state);
if (signal?.demod && signal.demod !== getSignalPrimaryMode(signal)) bits.push(signal.demod);
if (!bits.length && isListeningSignal(signal)) {
if (liveListenInfo?.status && !['Idle', '-'].includes(liveListenInfo.status)) bits.push(liveListenInfo.status);
if (liveListenInfo?.stereo_state && liveListenInfo.stereo_state !== '-') bits.push(liveListenInfo.stereo_state);
@@ -1202,7 +1203,6 @@ function renderSpectrum() {
const x1 = ((left - startHz) / (endHz - startHz)) * w;
const x2 = ((right - startHz) / (endHz - startHz)) * w;
const boxW = Math.max(2, x2 - x1);
const mod = s.class?.mod_type || '';
const primaryMode = getSignalPrimaryMode(s);
const mc = modColor(primaryMode);
const rdsName = s.class?.pll?.rds_station || '';
@@ -1240,7 +1240,7 @@ function renderSpectrum() {
ctx.font = '11px Inter, sans-serif';
ctx.fillText(freqStr, labelX, baseY + 11);

// Line 2: runtime status or primary mode
// Line 2: runtime info first, then primary mode
if (runtimeInfo || primaryMode) {
ctx.fillStyle = mc.label;
ctx.font = 'bold 10px Inter, sans-serif';
@@ -1514,6 +1514,7 @@ function _createSignalItem(s) {
btn.dataset.class = s.class?.mod_type || '';
btn.dataset.id = s.id || 0;
const primaryMode = getSignalPrimaryMode(s);
const runtimeInfo = getSignalRuntimeSummary(s);
const mc = modColor(primaryMode);
const rds = s.class?.pll?.rds_station || '';
const dec = decisionIndex.get(String(s.id || 0));
@@ -1522,6 +1523,7 @@ function _createSignalItem(s) {
const metaBits = [];
if (decFlags) metaBits.push(decFlags);
if (decText) metaBits.push(decText);
if (runtimeInfo) metaBits.push(runtimeInfo);
btn.title = metaBits.join(' · ');
btn.innerHTML = `<div class="item-top"><span class="item-title" data-field="freq">${fmtMHz(s.center_hz, 6)}</span><span class="item-badge" data-field="snr" style="color:${snrColor(s.snr_db || 0)}">${(s.snr_db || 0).toFixed(1)} dB</span></div><div class="item-bottom"><span class="item-meta item-meta--runtime" data-field="mode" style="color:${mc.label}">${primaryMode}</span>${rds ? `<span class="item-meta item-meta--rds" data-field="rds">${rds}</span>` : ''}</div>`;
btn.style.borderLeftColor = mc.label;
@@ -1537,6 +1539,7 @@ function _patchSignalItem(el, s) {
const modeEl = el.querySelector('[data-field="mode"]');
const mod = s.class?.mod_type || '';
const primaryMode = getSignalPrimaryMode(s);
const runtimeInfo = getSignalRuntimeSummary(s);
const mc = modColor(primaryMode);
const rds = s.class?.pll?.rds_station || '';
const rdsEl = el.querySelector('[data-field="rds"]');
@@ -1546,6 +1549,7 @@ function _patchSignalItem(el, s) {
const metaBits = [];
if (decFlags) metaBits.push(decFlags);
if (decText) metaBits.push(decText);
if (runtimeInfo) metaBits.push(runtimeInfo);
el.title = metaBits.join(' · ');
if (freqEl) freqEl.textContent = fmtMHz(s.center_hz, 6);
if (snrEl) { snrEl.textContent = `${(s.snr_db || 0).toFixed(1)} dB`; snrEl.style.color = snrColor(s.snr_db || 0); }


Laden…
Abbrechen
Speichern