From 223c01392ae1374330a49e221d1321fb6686b42f Mon Sep 17 00:00:00 2001 From: Stan Grams Date: Fri, 27 Feb 2026 01:14:30 +0100 Subject: [PATCH] feat(http-frontend): add rig and owner header lines --- src/trx-client/src/main.rs | 1 + src/trx-client/trx-frontend/src/lib.rs | 3 ++ .../trx-frontend-http/assets/web/app.js | 38 ++++++++++++------- .../trx-frontend-http/assets/web/index.html | 3 +- .../trx-frontend/trx-frontend-http/src/api.rs | 26 ++++++++++++- 5 files changed, 55 insertions(+), 16 deletions(-) diff --git a/src/trx-client/src/main.rs b/src/trx-client/src/main.rs index b14e365..0af5f4d 100644 --- a/src/trx-client/src/main.rs +++ b/src/trx-client/src/main.rs @@ -238,6 +238,7 @@ async fn async_init() -> DynResult { .callsign .clone() .or_else(|| cfg.general.callsign.clone()); + frontend_runtime.owner_callsign = callsign.clone(); info!( "Starting trx-client (remote: {}, frontends: {})", diff --git a/src/trx-client/trx-frontend/src/lib.rs b/src/trx-client/trx-frontend/src/lib.rs index 3852a83..1a44563 100644 --- a/src/trx-client/trx-frontend/src/lib.rs +++ b/src/trx-client/trx-frontend/src/lib.rs @@ -153,6 +153,8 @@ pub struct FrontendRuntimeContext { pub remote_active_rig_id: Arc>>, /// Cached remote rig list from GetRigs polling. pub remote_rigs: Arc>>, + /// Owner callsign from trx-client config/CLI for frontend display. + pub owner_callsign: Option, } impl FrontendRuntimeContext { @@ -180,6 +182,7 @@ impl FrontendRuntimeContext { http_auth_cookie_same_site: "Lax".to_string(), remote_active_rig_id: Arc::new(Mutex::new(None)), remote_rigs: Arc::new(Mutex::new(Vec::new())), + owner_callsign: None, } } } 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 9d349b5..0150a24 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 @@ -285,6 +285,8 @@ const swrValue = document.getElementById("swr-value"); const loadingEl = document.getElementById("loading"); const contentEl = document.getElementById("content"); const serverSubtitle = document.getElementById("server-subtitle"); +const rigSubtitle = document.getElementById("rig-subtitle"); +const ownerSubtitle = document.getElementById("owner-subtitle"); const loadingTitle = document.getElementById("loading-title"); const loadingSub = document.getElementById("loading-sub"); const headerSigCanvas = document.getElementById("header-sig-canvas"); @@ -297,7 +299,6 @@ const headerRigSwitchBtn = document.getElementById("header-rig-switch-btn"); let lastControl; let lastTxEn = null; let lastRendered = null; -let rigName = "Rig"; let hintTimer = null; let sigMeasuring = false; let sigLastSUnits = null; @@ -729,6 +730,8 @@ function setDisabled(disabled) { let serverVersion = null; let serverBuildDate = null; let serverCallsign = null; +let ownerCallsign = null; +let rigDisplayName = null; let serverLat = null; let serverLon = null; @@ -741,17 +744,20 @@ function updateFooterBuildInfo() { } function updateTitle() { - let title = rigName || "Rig"; - if (serverCallsign) title = `${serverCallsign}'s ${title}`; - document.getElementById("rig-title").textContent = title; + document.getElementById("rig-title").textContent = originalTitle; } function render(update) { if (!update) return; - if (update.info && update.info.model) rigName = update.info.model; + if (update.info && typeof update.info.model === "string" && update.info.model.length > 0) { + rigDisplayName = update.info.model; + } if (update.server_version) serverVersion = update.server_version; if (update.server_build_date) serverBuildDate = update.server_build_date; if (update.server_callsign) serverCallsign = update.server_callsign; + if (typeof update.owner_callsign === "string" && update.owner_callsign.length > 0) { + ownerCallsign = update.owner_callsign; + } if (update.server_latitude != null) serverLat = update.server_latitude; if (update.server_longitude != null) serverLon = update.server_longitude; updateTitle(); @@ -786,17 +792,21 @@ function render(update) { if (contentEl) contentEl.style.display = ""; } // Server subtitle: "trx-server vX.Y.Z hosted by CALL" - if (update.server_version || update.server_callsign) { - let parts = "trx-server"; - if (update.server_version) parts += ` v${update.server_version}`; - if (update.server_callsign) { - const cs = update.server_callsign; - serverSubtitle.innerHTML = `${parts} hosted by ${cs}`; - document.title = `${cs} - ${originalTitle}`; - } else { - serverSubtitle.textContent = parts; + if (serverSubtitle) { + if (update.server_version && update.server_callsign) { + serverSubtitle.textContent = `trx-server v${update.server_version} hosted by ${update.server_callsign}`; + } else if (update.server_version) { + serverSubtitle.textContent = `trx-server v${update.server_version}`; + } else if (update.server_callsign) { + serverSubtitle.textContent = `trx-server hosted by ${update.server_callsign}`; } } + if (rigSubtitle) { + rigSubtitle.textContent = `Rig: ${rigDisplayName || "--"}`; + } + if (ownerSubtitle) { + ownerSubtitle.textContent = `Owner: ${ownerCallsign || "--"}`; + } setDisabled(false); if (update.info && update.info.capabilities && Array.isArray(update.info.capabilities.supported_modes)) { const modes = update.info.capabilities.supported_modes.map(normalizeMode).filter(Boolean); diff --git a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/index.html b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/index.html index ecfd6d6..17d3697 100644 --- a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/index.html +++ b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/index.html @@ -15,7 +15,8 @@
trx-rs
-
{pkg} v{ver}
+
Rig: --
+
Owner: --