Fix ADS-B dashboard for remote agents

- Fix device dropdown to use sdr_devices (same as agents.js fix)
- Keep dropdown/start button enabled in "All Agents" mode for control
- Disable airband controls for remote agents (audio not supported)
This commit is contained in:
cemaxecuter
2026-01-27 09:54:08 -05:00
parent a5f574062d
commit fb31157fe9

View File

@@ -4461,18 +4461,45 @@ sudo make install</code>
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</code>
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</code>
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</code>
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