(name)
| 2261 | <span>${n.ap_count} AP${n.ap_count > 1 ? 's' : ''}</span> |
| 2262 | <span>${n.security}</span> |
| 2263 | <span style="color:${_wifiSignalColor(n.best_signal)}">${n.best_signal}dBm</span> |
| 2264 | </div></div>`).join('') || '<div class="py-4 text-center text-gray-500">No networks.</div>'; |
| 2265 | } |
| 2266 | |
| 2267 | function wifiExportCsv() { |
| 2268 | const d = _wifiState.data; if (!d) return; |
| 2269 | const cols = ['ssid', 'bssid', 'vendor', 'band', 'channel', 'width', 'standard', 'nss', 'max_phy_mbps', 'signal', 'snr', 'security', 'pmf', 'enterprise', 'wps', 'channel_util', 'tx_power_dbm', 'country']; |
| 2270 | const rows = [cols.join(',')].concat(d.aps.map(a => cols.map(c => { |
| 2271 | let v = a[c]; if (v == null) v = ''; v = String(v).replace(/"/g, '""'); |
| 2272 | return /[",\n]/.test(v) ? `"${v}"` : v; |
| 2273 | }).join(','))); |
| 2274 | const blob = new Blob([rows.join('\n')], { type: 'text/csv' }); |
| 2275 | const url = URL.createObjectURL(blob); |
| 2276 | const a = document.createElement('a'); |
no test coverage detected