From c34ecc493d737581d3e0665240ef5427c4074aea Mon Sep 17 00:00:00 2001 From: Stan Grams Date: Wed, 4 Mar 2026 19:22:32 +0100 Subject: [PATCH] [fix](trx-frontend): refine map source and popup states Co-authored-by: OpenAI Codex Signed-off-by: Stan Grams --- .../trx-frontend/trx-frontend-http/assets/web/app.js | 10 +++++++--- .../trx-frontend-http/assets/web/plugins/ft8.js | 9 ++++++++- .../trx-frontend-http/assets/web/style.css | 7 ++++++- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/app.js b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/app.js index e009a92..09ab676 100644 --- a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/app.js +++ b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/app.js @@ -3397,9 +3397,9 @@ function renderMapLocatorChipRow(container, items, selectedSet, kind) { return; } let helperText = ""; + const isDefaultSourceState = kind === "source" && items.every((item) => mapFilter[item.key]); if (kind === "source") { - const allVisible = items.every((item) => mapFilter[item.key]); - if (allVisible) { + if (isDefaultSourceState) { helperText = "All sources visible by default"; } } else if (!(selectedSet instanceof Set) || selectedSet.size === 0) { @@ -3410,7 +3410,11 @@ function renderMapLocatorChipRow(container, items, selectedSet, kind) { btn.type = "button"; btn.className = "map-locator-chip"; const isActive = kind === "source" ? !!mapFilter[item.key] : selectedSet.has(item.key); - if (!isActive) btn.classList.add("is-inactive"); + if (kind === "source" && isDefaultSourceState) { + btn.classList.add("is-default"); + } else if (!isActive) { + btn.classList.add("is-inactive"); + } btn.dataset.filterKind = kind; btn.dataset.filterKey = item.key; btn.style.setProperty("--chip-color", item.color); diff --git a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/ft8.js b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/ft8.js index 25fe5d1..a49cc99 100644 --- a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/ft8.js +++ b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/plugins/ft8.js @@ -219,8 +219,15 @@ window.onServerFt8 = function(msg) { const raw = (msg.message || "").toString(); const grids = extractAllGrids(raw); const station = extractLikelyCallsign(raw); + const baseHz = Number.isFinite(window.ft8BaseHz) ? Number(window.ft8BaseHz) : null; + const rfHz = Number.isFinite(msg.freq_hz) && Number.isFinite(baseHz) + ? (baseHz + Number(msg.freq_hz)) + : (Number.isFinite(msg.freq_hz) ? Number(msg.freq_hz) : null); if (grids.length > 0 && window.ft8MapAddLocator) { - window.ft8MapAddLocator(raw, grids, "ft8", station, msg); + window.ft8MapAddLocator(raw, grids, "ft8", station, { + ...msg, + freq_hz: rfHz, + }); } addFt8Message({ receiver: window.getDecodeRigMeta ? window.getDecodeRigMeta() : null, diff --git a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/style.css b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/style.css index 51cf400..f88ee19 100644 --- a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/style.css +++ b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/style.css @@ -1464,7 +1464,7 @@ small { color: var(--text-muted); } padding: 0.55rem 0.65rem; border: 1px solid color-mix(in srgb, var(--accent-yellow) 26%, var(--border-light)); border-radius: 0.65rem; - background: color-mix(in srgb, var(--card-bg) 94%, transparent); + background: color-mix(in srgb, var(--card-bg) 90%, transparent); color: var(--text); box-shadow: 0 10px 24px rgba(0, 0, 0, 0.28); } @@ -1635,6 +1635,11 @@ small { color: var(--text-muted); } .map-locator-chip:hover { color: var(--text-heading); } +.map-locator-chip.is-default { + border-color: color-mix(in srgb, var(--border-light) 74%, transparent); + background: color-mix(in srgb, var(--input-bg) 94%, transparent); + color: var(--text-muted); +} .map-locator-chip.is-inactive { opacity: 0.62; border-color: color-mix(in srgb, var(--border-light) 68%, transparent);