diff --git a/templates/index.html b/templates/index.html index 2970619..c2c88b8 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1337,25 +1337,31 @@ +
+
📋 Selected Device
+
+
Click a device to view details
+
+
🔵 Discovered Devices (0)
-
+
Start scanning to discover devices...
-
+
+
📍 Tracker Detection
+
+
Monitoring for AirTags, Tiles, and other trackers...
+
+
+

📈 BT Signal History

Select a device from the list
-
-
📍 Tracker Detection
-
-
Monitoring for AirTags, Tiles, and other trackers...
-
-
@@ -6054,10 +6060,91 @@ if (device) { document.getElementById('btSignalGraphDevice').textContent = device.name || mac; document.getElementById('btTargetMac').value = mac; + updateBtSelectedDevice(device); } updateBtDeviceList(); // Refresh to show selection } + // Update the selected device details panel + function updateBtSelectedDevice(device) { + const panel = document.getElementById('btSelectedDevice'); + if (!panel || !device) return; + + const typeIcon = { + 'phone': '📱', 'audio': '🎧', 'wearable': '⌚', 'tracker': '📍', + 'computer': '💻', 'input': '⌨️', 'other': '📶' + }[device.device_type || device.type] || '📶'; + + const rssiColor = device.rssi > -50 ? 'var(--accent-green)' : + device.rssi > -70 ? 'var(--accent-cyan)' : + device.rssi > -85 ? 'var(--accent-orange)' : 'var(--accent-red)'; + + const signalBars = Math.max(1, Math.min(5, Math.floor((device.rssi + 100) / 10))); + const barsHtml = Array(5).fill(0).map((_, i) => + `
` + ).join(''); + + let trackerInfo = ''; + if (device.findmy) { + trackerInfo = ` +
+
🍎 ${escapeHtml(device.findmy.type)}
+
${escapeHtml(device.findmy.network)} Network Device
+
`; + } else if (device.tracker) { + trackerInfo = ` +
+
📍 ${escapeHtml(device.tracker.name)}
+
Tracking Device Detected
+
`; + } + + panel.innerHTML = ` +
+
+
${typeIcon} ${escapeHtml(device.name || 'Unknown Device')}
+
${escapeHtml((device.device_type || device.type || 'unknown').toUpperCase())}
+
+
+
${device.rssi || '--'} dBm
+
${barsHtml}
+
+
+
+
+
MAC ADDRESS
+
${escapeHtml(device.mac)}
+
+
+
MANUFACTURER
+
${escapeHtml(device.manufacturer || 'Unknown')}
+
+
+
ADDRESS TYPE
+
${escapeHtml(device.address_type || 'Unknown')}
+
+
+
LAST SEEN
+
${device.last_seen ? new Date(device.last_seen * 1000).toLocaleTimeString() : 'Now'}
+
+
+ ${trackerInfo} +
+ + +
+ `; + } + + // Copy text to clipboard helper + function copyToClipboard(text) { + navigator.clipboard.writeText(text).then(() => { + showNotification('Copied', text); + }).catch(() => { + showInfo('Failed to copy to clipboard'); + }); + } + // Update tracker list panel function updateBtTrackerList() { const listEl = document.getElementById('btTrackerList');