diff --git a/static/js/core/settings-manager.js b/static/js/core/settings-manager.js
index ddc0831..bc4215f 100644
--- a/static/js/core/settings-manager.js
+++ b/static/js/core/settings-manager.js
@@ -8,7 +8,7 @@ const Settings = {
'offline.enabled': false,
'offline.assets_source': 'cdn',
'offline.fonts_source': 'cdn',
- 'offline.tile_provider': 'openstreetmap',
+ 'offline.tile_provider': 'cartodb_dark',
'offline.tile_server_url': ''
},
diff --git a/static/js/modes/meshtastic.js b/static/js/modes/meshtastic.js
index e199a77..24ecc50 100644
--- a/static/js/modes/meshtastic.js
+++ b/static/js/modes/meshtastic.js
@@ -26,6 +26,23 @@ const Meshtastic = (function() {
initMap();
loadPorts();
checkStatus();
+ setupEventDelegation();
+ }
+
+ /**
+ * Setup event delegation for dynamically created elements
+ */
+ function setupEventDelegation() {
+ // Handle traceroute button clicks in Leaflet popups
+ document.addEventListener('click', function(e) {
+ const tracerouteBtn = e.target.closest('.mesh-traceroute-btn');
+ if (tracerouteBtn) {
+ const nodeId = tracerouteBtn.dataset.nodeId;
+ if (nodeId) {
+ sendTraceroute(nodeId);
+ }
+ }
+ });
}
/**
@@ -636,7 +653,7 @@ const Meshtastic = (function() {
${node.last_heard ? `Last heard: ${new Date(node.last_heard).toLocaleTimeString()}
` : ''}
${telemetryHtml}
${envHtml}
- ${!isLocal ? `` : ''}
+ ${!isLocal ? `` : ''}
`;
diff --git a/templates/adsb_dashboard.html b/templates/adsb_dashboard.html
index 9ce5ebe..be0c710 100644
--- a/templates/adsb_dashboard.html
+++ b/templates/adsb_dashboard.html
@@ -2340,8 +2340,9 @@ sudo make install
maxZoom: 15
});
- L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
- attribution: '© OpenStreetMap contributors'
+ L.tileLayer('https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}{r}.png', {
+ attribution: '© OSM © CARTO',
+ maxZoom: 19
}).addTo(radarMap);
// Draw range rings after map is ready
diff --git a/templates/ais_dashboard.html b/templates/ais_dashboard.html
index 64c5ae3..02a3bd0 100644
--- a/templates/ais_dashboard.html
+++ b/templates/ais_dashboard.html
@@ -390,9 +390,9 @@
zoomControl: true
});
- // OpenStreetMap tile layer
- L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
- attribution: '© OpenStreetMap contributors',
+ // Dark themed map tiles
+ L.tileLayer('https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}{r}.png', {
+ attribution: '© OSM © CARTO',
maxZoom: 19
}).addTo(vesselMap);
diff --git a/templates/index.html b/templates/index.html
index 21b8831..cb2c23b 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -7591,9 +7591,9 @@
aprsMap = L.map('aprsMap').setView([initialLat, initialLon], initialZoom);
- // OpenStreetMap with roads - better for APRS station tracking
- L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
- attribution: '© OpenStreetMap contributors',
+ // Dark themed map tiles
+ L.tileLayer('https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}{r}.png', {
+ attribution: '© OSM © CARTO',
maxZoom: 19
}).addTo(aprsMap);
@@ -8495,9 +8495,9 @@
attributionControl: false
});
- L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
- maxZoom: 19,
- attribution: '© OpenStreetMap contributors'
+ L.tileLayer('https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}{r}.png', {
+ attribution: '© OSM © CARTO',
+ maxZoom: 19
}).addTo(groundTrackMap);
// Add observer marker
diff --git a/templates/satellite_dashboard.html b/templates/satellite_dashboard.html
index 80287d9..44ce834 100644
--- a/templates/satellite_dashboard.html
+++ b/templates/satellite_dashboard.html
@@ -416,8 +416,9 @@
worldCopyJump: true
});
- L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
- attribution: '© OpenStreetMap contributors'
+ L.tileLayer('https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}{r}.png', {
+ attribution: '© OSM © CARTO',
+ maxZoom: 19
}).addTo(groundMap);
}