/* * serial_ports.js — shared COM port dropdown helper. * * Backs every serial-port with detected COM ports, keeping `current` selected even // if it isn't currently detected (radio/keyer/rotor may be powered off or // mid-reconnect) so a save never silently drops a valid-but-offline port. // `emptyLabel`, when given, adds a blank option first (used by the CW // keyer port, where empty means "reuse the CI-V port"). async function populate(sel, current, emptyLabel, force) { if (!sel) return; const ports = await fetchPorts(force); sel.innerHTML = ''; if (emptyLabel !== undefined) { const opt = document.createElement('option'); opt.value = ''; opt.textContent = emptyLabel; sel.appendChild(opt); } else if (!current) { const opt = document.createElement('option'); opt.value = ''; opt.textContent = window.I18n ? I18n.t('adm_choose_port') : '(wybierz port)'; sel.appendChild(opt); } ports.forEach(p => { const opt = document.createElement('option'); opt.value = p.device; opt.textContent = p.description ? `${p.device} — ${p.description}` : p.device; sel.appendChild(opt); }); if (current && !ports.find(p => p.device === current)) { const opt = document.createElement('option'); opt.value = current; opt.textContent = current + (window.I18n ? I18n.t('adm_port_unavailable') : ' (niedostepny)'); sel.appendChild(opt); } sel.value = current || ''; } window.SerialPorts = { fetchPorts, populate }; })();