Add selectable ACARS frequencies

- Add checkboxes for each ACARS frequency in the selected region
- Users can now select one or multiple frequencies instead of all
- Frequencies stay checked when switching regions if they exist in both
- Falls back to all region frequencies if none selected

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Smittix
2026-01-15 17:54:41 +00:00
parent aae60e2037
commit fe67461f88

View File

@@ -108,12 +108,15 @@
<option value="0">SDR 0</option>
<option value="1">SDR 1</option>
</select>
<select id="acarsRegionSelect" onchange="setAcarsFreqs()" style="flex: 1; font-size: 10px;">
<select id="acarsRegionSelect" onchange="updateAcarsFreqCheckboxes()" style="flex: 1; font-size: 10px;">
<option value="na">N. America</option>
<option value="eu">Europe</option>
<option value="ap">Asia-Pac</option>
</select>
</div>
<div id="acarsFreqSelector" style="display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 8px; font-size: 9px;">
<!-- Frequency checkboxes populated by JS -->
</div>
<button class="acars-btn" id="acarsToggleBtn" onclick="toggleAcars()" style="width: 100%;">
▶ START ACARS
</button>
@@ -3252,21 +3255,49 @@ sudo make install</code>
localStorage.setItem('acarsSidebarCollapsed', acarsSidebarCollapsed);
}
// Initialize ACARS sidebar state
// Initialize ACARS sidebar state and frequency checkboxes
document.addEventListener('DOMContentLoaded', () => {
const sidebar = document.getElementById('acarsSidebar');
if (sidebar && acarsSidebarCollapsed) {
sidebar.classList.add('collapsed');
}
updateAcarsFreqCheckboxes();
});
function setAcarsFreqs() {
// Just updates the region selection - frequencies are sent on start
function updateAcarsFreqCheckboxes() {
const region = document.getElementById('acarsRegionSelect').value;
const freqs = acarsFrequencies[region] || acarsFrequencies['na'];
const container = document.getElementById('acarsFreqSelector');
// Save currently checked frequencies
const previouslyChecked = new Set();
container.querySelectorAll('input:checked').forEach(cb => {
previouslyChecked.add(cb.value);
});
container.innerHTML = freqs.map(freq => {
// Check by default if it was previously checked or if this is initial load
const checked = previouslyChecked.size === 0 || previouslyChecked.has(freq) ? 'checked' : '';
return `
<label style="display: flex; align-items: center; gap: 3px; padding: 2px 6px; background: var(--bg-secondary); border-radius: 3px; cursor: pointer;">
<input type="checkbox" class="acars-freq-cb" value="${freq}" ${checked} style="margin: 0; cursor: pointer;">
<span>${freq}</span>
</label>
`;
}).join('');
}
function getAcarsRegionFreqs() {
const region = document.getElementById('acarsRegionSelect').value;
return acarsFrequencies[region] || acarsFrequencies['na'];
const checkboxes = document.querySelectorAll('.acars-freq-cb:checked');
const selectedFreqs = Array.from(checkboxes).map(cb => cb.value);
// If none selected, return all for the region as fallback
if (selectedFreqs.length === 0) {
const region = document.getElementById('acarsRegionSelect').value;
return acarsFrequencies[region] || acarsFrequencies['na'];
}
return selectedFreqs;
}
function toggleAcars() {