(groupBy)
| 4940 | const trusted = null; |
| 4941 | if (!d.aps || !d.aps.length) body.innerHTML = '<tr><td colspan="5" class="py-4 text-center text-gray-500">No beacons captured (wrong channel? try “hop”).</td></tr>'; |
| 4942 | else body.innerHTML = d.aps.map(a => `<tr class="border-b border-slate-800/50 cursor-pointer hover:bg-slate-800/40" title="Open in Spectrum Analyzer" onclick="wifiPivotFromDefense('${a.bssid}','${encodeURIComponent(a.ssid || '').replace(/'/g, '%27')}')"> |
| 4943 | <td class="py-1 pr-2">${a.ssid || '<span class=\'text-gray-500 italic\'>hidden</span>'}</td> |
| 4944 | <td class="py-1 pr-2 font-mono text-[11px]">${a.bssid}</td> |
| 4945 | <td class="py-1 pr-2">${a.channel == null ? '—' : a.channel}</td> |
| 4946 | <td class="py-1 pr-2">${a.rssi == null ? '—' : a.rssi + ' dBm'}</td> |
| 4947 | <td class="py-1 pr-2">${a.beacons}</td></tr>`).join(''); |
| 4948 | } |
| 4949 | |
| 4950 | // ============================================================================ |
| 4951 | // Network diagnostics (Diagnostics / Switch & L2 / Interfaces sub-tabs) |
| 4952 | // Backend: /api/net/* (see network_diagnostics.py) |
| 4953 | // ============================================================================ |
| 4954 | |
| 4955 | // Last-fetched payloads for each net panel, so "Export CSV" has data to dump. |
nothing calls this directly
no test coverage detected