diff --git a/templates/adsb_dashboard.html b/templates/adsb_dashboard.html index 9153232..153cbc2 100644 --- a/templates/adsb_dashboard.html +++ b/templates/adsb_dashboard.html @@ -4461,18 +4461,45 @@ sudo make install loadDevices(); // Check if local ADS-B is running syncLocalTrackingStatus(); + // Enable airband controls (local audio works) + setAirbandEnabled(true); console.log('ADS-B: Using local device'); } else { // Get agent devices refreshAgentDevicesForAdsb(agentId); // Check if agent has ADS-B running (syncAgentModeStates will call setADSBRunning) syncAgentModeStates(agentId); + // Disable airband controls (no audio streaming from remote agents) + setAirbandEnabled(false); console.log(`ADS-B: Using agent ${agentId}`); } updateAgentStatus(); updateSourceIndicator(); } + // Enable/disable airband controls based on local vs remote agent + function setAirbandEnabled(enabled) { + const airbandControls = document.querySelectorAll('.airband-controls'); + const playBtn = document.getElementById('airbandBtn'); + + airbandControls.forEach(ctrl => { + ctrl.disabled = !enabled; + ctrl.style.opacity = enabled ? '1' : '0.5'; + }); + + if (playBtn) { + playBtn.disabled = !enabled; + playBtn.style.opacity = enabled ? '1' : '0.5'; + if (!enabled) { + playBtn.textContent = '▶ LOCAL ONLY'; + playBtn.title = 'Airband requires local audio - not available for remote agents'; + } else { + playBtn.textContent = '▶ LISTEN'; + playBtn.title = 'Start airband audio'; + } + } + } + // Check local ADS-B tracking status async function syncLocalTrackingStatus() { try { @@ -4600,7 +4627,8 @@ sudo make install const data = await response.json(); if (data.agent && data.agent.interfaces) { - const devices = data.agent.interfaces.devices || []; + // Agent stores SDR devices in interfaces.sdr_devices (same fix as agents.js) + const devices = data.agent.interfaces.sdr_devices || data.agent.interfaces.devices || []; populateAdsbDeviceSelects(devices); // Update observer location if agent has GPS @@ -4667,9 +4695,9 @@ sudo make install const startBtn = document.getElementById('startBtn'); if (showAllAgentsMode) { - // Disable individual agent selection and start button - if (agentSelect) agentSelect.disabled = true; - if (startBtn) startBtn.disabled = true; + // Keep dropdown enabled to select which agent to control + // Keep start button enabled to start/stop on selected agent + // (agentSelect and startBtn stay enabled) // Connect to multi-agent stream (passive listening to all agents) startAllAgentsStream(); @@ -4689,8 +4717,9 @@ sudo make install console.log('Show All Agents mode enabled'); } else { - // Re-enable controls - if (agentSelect) agentSelect.disabled = isTracking; + // When unchecking "All", dropdown follows normal tracking rules + // (disabled only if tracking is active on a specific agent) + if (agentSelect) agentSelect.disabled = isTracking && !showAllAgentsMode; if (startBtn) startBtn.disabled = false; // Stop multi-agent stream