diff --git a/dashboard/config_sample.json b/dashboard/config_sample.json index 17748c1..790b3af 100644 --- a/dashboard/config_sample.json +++ b/dashboard/config_sample.json @@ -3,6 +3,11 @@ "server_description": "Amateur Radio DMR Network", "dashboard_title": "HBlink4 Dashboard", "announcement": "", + "network_info": { + "enabled": false, + "button_text": "Network Info", + "url": "https://example.com/network-info" + }, "refresh_interval": 1000, "max_events": 50, "event_receiver": { diff --git a/dashboard/static/dashboard.html b/dashboard/static/dashboard.html index 1ce5add..377d880 100644 --- a/dashboard/static/dashboard.html +++ b/dashboard/static/dashboard.html @@ -69,6 +69,27 @@ border-color: #4b5563; } + .network-info-btn { + padding: 8px 16px; + border-radius: 6px; + font-size: 14px; + font-weight: 500; + cursor: pointer; + user-select: none; + transition: all 0.2s ease; + text-decoration: none; + display: inline-block; + background: #0ea5e9; + color: #ffffff; + border: 1px solid #38bdf8; + } + + .network-info-btn:hover { + background: #0284c7; + border-color: #0ea5e9; + transform: translateY(-1px); + } + /* Modal styles */ .modal-overlay { position: fixed; @@ -708,6 +729,7 @@
+
Connecting...
Unknown
๐Ÿ”‡ Audio Off
@@ -885,6 +907,16 @@ } else { document.getElementById('announcementBanner').style.display = 'none'; } + + // Configure network info button + const networkInfoBtn = document.getElementById('networkInfoBtn'); + if (config.network_info && config.network_info.enabled && config.network_info.url) { + networkInfoBtn.textContent = config.network_info.button_text || '๐ŸŒ Network Info'; + networkInfoBtn.href = config.network_info.url; + networkInfoBtn.style.display = 'inline-block'; + } else { + networkInfoBtn.style.display = 'none'; + } } catch (error) { console.error('Failed to load config:', error); } @@ -1190,13 +1222,13 @@ const el = document.getElementById('wsStatus'); if (connected) { - el.textContent = 'โœ“ Dashboard'; + el.textContent = 'โœ“ Live Data'; el.className = 'connection-status clickable connected'; - el.title = 'Connected to dashboard server - Click to reload'; + el.title = 'Live Data: Browser connected to the dashboard providing real-time updates - Click to reload'; } else { el.textContent = '๐Ÿ”„ Click to Reconnect'; el.className = 'connection-status clickable disconnected'; - el.title = 'Disconnected from dashboard server'; + el.title = 'Live Data: Browser disconnected from dashboard server - Click to reconnect'; } } @@ -1204,13 +1236,13 @@ const el = document.getElementById('hblinkStatus'); if (connected) { - el.textContent = 'โœ“ HBlink4'; + el.textContent = 'โœ“ DMR Server'; el.className = 'connection-status connected'; - el.title = 'Dashboard connected to HBlink4 server'; + el.title = 'DMR Server: Dashboard is connected to the DMR server'; } else { - el.textContent = 'โœ— HBlink4'; + el.textContent = 'โœ— DMR Server'; el.className = 'connection-status warning'; - el.title = 'Dashboard not connected to HBlink4'; + el.title = 'DMR Server: Dashboard is not connected to the DMR server'; // Clear stale data from display console.log('๐Ÿงน Clearing stale data - HBlink4 disconnected');