mirror of
https://github.com/pablorevilla-meshtastic/meshview.git
synced 2026-03-04 23:27:46 +01:00
Add popups on the packet details map.
This commit is contained in:
@@ -50,8 +50,10 @@
|
||||
iconUrl: 'data:image/png;base64,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',
|
||||
iconSize: [32, 32],
|
||||
});
|
||||
{% for u in uplinked_cord %}
|
||||
L.marker({{u | tojson}}, {icon: radioTower}).addTo(markers);
|
||||
{% for u in uplinked_nodes %}
|
||||
var m = L.marker([{{u.lat}}, {{u.long}}], {icon: radioTower});
|
||||
m.bindPopup('[{{u.short_name}}] {{u.long_name}}<br/>Hops: {{u.hops}}<br/>SNR: {{u.snr}}<br/>RSSI: {{u.rssi}}');
|
||||
m.addTo(markers);
|
||||
details_map.fitBounds(markers.getBounds().pad(.7));
|
||||
{% endfor %}
|
||||
</script>
|
||||
|
||||
+29
-5
@@ -397,6 +397,16 @@ async def events(request):
|
||||
except ConnectionResetError:
|
||||
return
|
||||
|
||||
@dataclass
|
||||
class UplinkedNode:
|
||||
lat: float
|
||||
long: float
|
||||
long_name: str
|
||||
short_name: str
|
||||
hops: int
|
||||
snr: float
|
||||
rssi: float
|
||||
|
||||
|
||||
@routes.get("/packet_details/{packet_id}")
|
||||
async def packet_details(request):
|
||||
@@ -408,16 +418,30 @@ async def packet_details(request):
|
||||
if packet.from_node and packet.from_node.last_lat:
|
||||
from_node_cord = [packet.from_node.last_lat * 1e-7 , packet.from_node.last_long * 1e-7]
|
||||
|
||||
uplinked_cord = []
|
||||
uplinked_nodes = []
|
||||
for p in packets_seen:
|
||||
if p.node.last_lat:
|
||||
uplinked_cord.append([p.node.last_lat * 1e-7 , p.node.last_long * 1e-7])
|
||||
if p.topic.startswith('mqtt-meshtastic-org'):
|
||||
hops = 666
|
||||
else:
|
||||
hops = p.hop_start - p.hop_limit
|
||||
uplinked_nodes.append(
|
||||
UplinkedNode(
|
||||
lat=p.node.last_lat * 1e-7,
|
||||
long=p.node.last_long * 1e-7,
|
||||
long_name=p.node.long_name,
|
||||
short_name=p.node.short_name,
|
||||
hops=hops,
|
||||
snr=p.rx_snr,
|
||||
rssi=p.rx_rssi,
|
||||
)
|
||||
)
|
||||
|
||||
map_center = None
|
||||
if from_node_cord:
|
||||
map_center = from_node_cord
|
||||
elif uplinked_cord:
|
||||
map_center = uplinked_cord[0]
|
||||
elif uplinked_nodes:
|
||||
map_center = [uplinked_nodes[0].lat, uplinked_nodes[0].long]
|
||||
|
||||
template = env.get_template("packet_details.html")
|
||||
return web.Response(
|
||||
@@ -425,7 +449,7 @@ async def packet_details(request):
|
||||
packets_seen=packets_seen,
|
||||
map_center=map_center,
|
||||
from_node_cord=from_node_cord,
|
||||
uplinked_cord=uplinked_cord,
|
||||
uplinked_nodes=uplinked_nodes,
|
||||
),
|
||||
content_type="text/html",
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user