[feat](trx-frontend-http): add ft8 locators and map filters
Co-authored-by: Codex <codex@openai.com> Signed-off-by: Stanislaw Grams <stanislawgrams@gmail.com>
This commit is contained in:
@@ -16,7 +16,8 @@ function renderFt8Row(msg) {
|
||||
const baseHz = Number.isFinite(window.ft8BaseHz) ? window.ft8BaseHz : null;
|
||||
const rfHz = Number.isFinite(msg.freq_hz) && Number.isFinite(baseHz) ? (baseHz + msg.freq_hz) : null;
|
||||
const freq = Number.isFinite(rfHz) ? rfHz.toFixed(0) : "--";
|
||||
row.innerHTML = `<span class="ft8-time">${fmtTime(msg.ts_ms)}</span><span class="ft8-snr">${snr}</span><span class="ft8-dt">${dt}</span><span class="ft8-freq">${freq}</span><span class="ft8-msg">${msg.message || ""}</span>`;
|
||||
const renderedMessage = renderFt8Message(msg.message || "");
|
||||
row.innerHTML = `<span class="ft8-time">${fmtTime(msg.ts_ms)}</span><span class="ft8-snr">${snr}</span><span class="ft8-dt">${dt}</span><span class="ft8-freq">${freq}</span><span class="ft8-msg">${renderedMessage}</span>`;
|
||||
return row;
|
||||
}
|
||||
|
||||
@@ -27,6 +28,20 @@ function addFt8Message(msg) {
|
||||
}
|
||||
}
|
||||
|
||||
function renderFt8Message(message) {
|
||||
const gridRegex = /(^|\\s)([A-R]{2}\\d{2}(?:[A-X]{2})?)(?=\\s|$)/gi;
|
||||
return message.replace(gridRegex, (match, lead, grid) => {
|
||||
const safeGrid = grid.toUpperCase();
|
||||
return `${lead}<span class="ft8-locator">[${safeGrid}]</span>`;
|
||||
});
|
||||
}
|
||||
|
||||
function extractFirstGrid(message) {
|
||||
const gridRegex = /(^|\\s)([A-R]{2}\\d{2}(?:[A-X]{2})?)(?=\\s|$)/i;
|
||||
const match = message.match(gridRegex);
|
||||
return match ? match[2].toUpperCase() : null;
|
||||
}
|
||||
|
||||
document.getElementById("ft8-decode-toggle-btn").addEventListener("click", async () => {
|
||||
try { await postPath("/toggle_ft8_decode"); } catch (e) { console.error("FT8 toggle failed", e); }
|
||||
});
|
||||
@@ -39,6 +54,10 @@ document.getElementById("ft8-clear-btn").addEventListener("click", async () => {
|
||||
// --- Server-side FT8 decode handler ---
|
||||
window.onServerFt8 = function(msg) {
|
||||
ft8Status.textContent = "Receiving";
|
||||
const grid = extractFirstGrid(msg.message || "");
|
||||
if (grid && window.ft8MapAddLocator) {
|
||||
window.ft8MapAddLocator(msg.message, grid);
|
||||
}
|
||||
addFt8Message({
|
||||
ts_ms: msg.ts_ms,
|
||||
snr_db: msg.snr_db,
|
||||
|
||||
Reference in New Issue
Block a user