[fix](trx-frontend-http): make bandplan strip visible for all rig types
Move the bandplan strip out of the SDR-only spectrum panel into the always-visible signal-visual-block. Add bandplanComputeRange() that derives a frequency range from the current tuned frequency and band edges when no spectrum data is available (non-SDR rigs). Trigger bandplan updates on frequency changes and from the overview draw loop. https://claude.ai/code/session_01AyBktp6b8qFjchyyqwL7dv Signed-off-by: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -1468,6 +1468,7 @@ function drawHeaderSignalGraph() {
|
||||
}
|
||||
positionRdsPsOverlay();
|
||||
drawSignalOverlay();
|
||||
updateBandplanStrip(bandplanComputeRange());
|
||||
}
|
||||
|
||||
function drawOverviewWaterfall(W, H, pal) {
|
||||
@@ -1989,6 +1990,9 @@ function applyLocalTunedFrequency(hz, forceDisplay = false) {
|
||||
if (freqChanged && lastSpectrumData) {
|
||||
scheduleSpectrumDraw();
|
||||
}
|
||||
if (freqChanged && !lastSpectrumData) {
|
||||
updateBandplanStrip(bandplanComputeRange());
|
||||
}
|
||||
positionRdsPsOverlay();
|
||||
}
|
||||
|
||||
@@ -9908,7 +9912,7 @@ function drawSpectrum(data) {
|
||||
|
||||
updateSpectrumFreqAxis(range);
|
||||
updateBookmarkAxis(range);
|
||||
updateBandplanStrip(range);
|
||||
updateBandplanStrip(range); // use precise spectrum range when available
|
||||
drawSignalOverlay();
|
||||
}
|
||||
|
||||
@@ -11267,6 +11271,35 @@ if (bandplanLabelsCheck) {
|
||||
});
|
||||
}
|
||||
|
||||
function bandplanComputeRange() {
|
||||
// When spectrum data is available (SDR), use the zoomed visible range
|
||||
if (lastSpectrumData) {
|
||||
return spectrumVisibleRange(lastSpectrumData);
|
||||
}
|
||||
// For non-SDR rigs, derive a range from the current tuned frequency.
|
||||
// Find the band containing the frequency and show that full band.
|
||||
const freq = lastFreqHz;
|
||||
if (!freq || !Number.isFinite(freq)) return null;
|
||||
|
||||
// Check bandplan data for the current region to find the matching band
|
||||
if (bandplanData && bandplanData[bandplanRegion]) {
|
||||
const bands = bandplanData[bandplanRegion].bands;
|
||||
for (const band of bands) {
|
||||
if (freq >= band.low_hz && freq <= band.high_hz) {
|
||||
const margin = (band.high_hz - band.low_hz) * 0.05;
|
||||
return {
|
||||
visLoHz: band.low_hz - margin,
|
||||
visHiHz: band.high_hz + margin,
|
||||
visSpanHz: (band.high_hz - band.low_hz) + 2 * margin,
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
// Fallback: show a 500 kHz window around the frequency
|
||||
const span = 500000;
|
||||
return { visLoHz: freq - span / 2, visHiHz: freq + span / 2, visSpanHz: span };
|
||||
}
|
||||
|
||||
function bandplanVisibleSegments(region, loHz, hiHz) {
|
||||
if (!bandplanData || !bandplanData[region]) return [];
|
||||
const bands = bandplanData[region].bands;
|
||||
@@ -11289,7 +11322,7 @@ function bandplanVisibleSegments(region, loHz, hiHz) {
|
||||
|
||||
function updateBandplanStrip(range) {
|
||||
if (!bandplanStripEl) return;
|
||||
if (bandplanRegion === "off" || !bandplanData) {
|
||||
if (!range || bandplanRegion === "off" || !bandplanData) {
|
||||
if (bandplanStripEl.classList.contains("bp-visible")) {
|
||||
bandplanStripEl.classList.remove("bp-visible");
|
||||
bandplanStripEl.innerHTML = "";
|
||||
|
||||
@@ -113,9 +113,9 @@
|
||||
<div id="hf-aprs-bar-overlay" aria-live="polite" aria-label="Recent HF APRS frames"></div>
|
||||
<div id="cw-bar-overlay" aria-live="polite" aria-label="Recent CW decodes"></div>
|
||||
</div>
|
||||
<div id="spectrum-bandplan-strip" aria-label="Band plan allocations"></div>
|
||||
<div id="spectrum-panel" style="display:none;">
|
||||
<div class="spectrum-wrap">
|
||||
<div id="spectrum-bandplan-strip" aria-label="Band plan allocations"></div>
|
||||
<div id="spectrum-bookmark-axis"></div>
|
||||
<div id="spectrum-bookmark-side-left" class="spectrum-bookmark-side spectrum-bookmark-side-left" aria-hidden="true"></div>
|
||||
<canvas id="spectrum-canvas"></canvas>
|
||||
|
||||
Reference in New Issue
Block a user