23 Commits

Author SHA1 Message Date
Pablo Revilla 707b2ebbbd Merge branch 'master' into 3.0.6 2026-04-30 11:32:37 -07:00
pablorevilla-meshtastic d259230e05 fixed issue reported on issue #143 2026-04-17 15:26:53 -07:00
pablorevilla-meshtastic 7367155fec add note bottom of page 2026-04-03 13:47:29 -07:00
pablorevilla-meshtastic efca531855 remove duplicates from nodes in net.html 2026-04-03 13:44:41 -07:00
pablorevilla-meshtastic d16976e5d1 filter at chat.html 2026-04-03 11:55:50 -07:00
pablorevilla-meshtastic fca376486a Add filter to firehose 2026-04-03 11:49:42 -07:00
pablorevilla-meshtastic 96efe27abc add channel to firehouse 2026-04-03 11:40:56 -07:00
pablorevilla-meshtastic bd9d8ae265 remove file 2026-04-03 10:36:51 -07:00
pablorevilla-meshtastic 698f4ad77f Update protobuf 2026-04-03 10:32:05 -07:00
pablorevilla-meshtastic 1bb84f4c4d update latest list of instances 2026-04-01 12:40:42 -07:00
pablorevilla-meshtastic 17b91bbc7c more changes to report 2026-04-01 11:37:01 -07:00
pablorevilla-meshtastic 2692333fe2 changes to reports 2026-04-01 11:34:04 -07:00
pablorevilla-meshtastic ed18e2003c Fix MQTT store bug. 2026-04-01 10:46:57 -07:00
pablorevilla-meshtastic 65386be327 1 2026-03-05 11:39:36 -08:00
pablorevilla-meshtastic 973dcbfe51 fixed the db and added more reporting 2026-03-05 11:36:26 -08:00
pablorevilla-meshtastic 2490284435 fix ingestion error 2026-03-05 10:05:14 -08:00
pablorevilla-meshtastic 90767f94b4 update schemma 2026-03-05 10:03:17 -08:00
pablorevilla-meshtastic e0023bc8eb Added DB configuration and snapshot for basic detaisl 2026-03-05 09:57:34 -08:00
pablorevilla-meshtastic 432e9f2b67 Adapt PR 102 relay node display to packet page 2026-02-24 13:39:14 -08:00
Paul Picazo a0fbed0a88 Add migration script to introduce relay_node column in packet_seen table 2026-02-24 13:38:48 -08:00
Paul Picazo 8ca388acb8 Add relay_node field to PacketSeen model and update template for display 2026-02-24 13:38:48 -08:00
pablorevilla-meshtastic f87831c3a5 small map change 2026-02-18 16:17:18 -08:00
pablorevilla-meshtastic 9c40ce2d59 add world meshview tag 2026-02-18 15:32:16 -08:00
2 changed files with 29 additions and 19 deletions
View File
+29 -19
View File
@@ -235,7 +235,6 @@ function labelFor(key, fallback){
function buildNodePopup(node){
const labels = {
channel: labelFor("channel_label", "Channel"),
nodeId: labelFor("node_id", "Node ID"),
model: labelFor("model_label", "Model"),
role: labelFor("role_label", "Role"),
mqtt: labelFor("mqtt_gateway", "MQTT Gateway"),
@@ -244,16 +243,13 @@ function buildNodePopup(node){
yes: mapTranslations.yes || "Yes",
no: mapTranslations.no || "No"
};
const displayName = node.long_name || node.short_name || `Node ${node.node_id}`;
const shortName = node.short_name ? ` (${escapeHtml(node.short_name)})` : "";
return `
<b><a href="/node/${node.node_id}">${escapeHtml(displayName)}</a>${shortName}</b><br>
<b><a href="/node/${node.node_id}">${node.long_name}</a> (${node.short_name})</b><br>
<b>${labels.nodeId}</b> ${node.node_id}<br>
<b>${labels.channel}</b> ${escapeHtml(node.channel || "N/A")}<br>
<b>${labels.model}</b> ${escapeHtml(node.hw_model || "N/A")}<br>
<b>${labels.role}</b> ${escapeHtml(node.role || "N/A")}<br>
<b>${labels.channel}</b> ${node.channel}<br>
<b>${labels.model}</b> ${node.hw_model}<br>
<b>${labels.role}</b> ${node.role}<br>
<b>${labels.mqtt}</b> ${node.is_mqtt_gateway ? labels.yes : labels.no}<br>
${
@@ -264,7 +260,7 @@ function buildNodePopup(node){
${
node.firmware
? `<b>${labels.firmware}</b> ${escapeHtml(node.firmware)}<br>`
? `<b>${labels.firmware}</b> ${node.firmware}<br>`
: ""
}
`;
@@ -472,18 +468,34 @@ function renderNodesOnMap(){
marker.nodeId = node.key;
marker.originalColor = color;
markerById[node.key] = marker;
marker.bindPopup(buildNodePopup(node), {
autoPan: true,
closeButton: true
});
marker.on('click', e => {
if(e.originalEvent){
L.DomEvent.stopPropagation(e.originalEvent);
const popup = `
<a href="/node/${node.node_id}">${node.long_name}</a> (${node.short_name})<br>
<span data-translate-lang="channel_label"></span> ${node.channel}<br>
<span data-translate-lang="model_label"></span> ${node.hw_model}<br>
<span data-translate-lang="role_label"></span> ${node.role}<br>
<span data-translate-lang="mqtt_gateway"></span> ${
node.is_mqtt_gateway ? (mapTranslations.yes || "Yes") : (mapTranslations.no || "No")
}<br>
${
node.last_seen_us
? `<span data-translate-lang="last_seen"></span> ${timeAgoFromUs(node.last_seen_us)}<br>`
: ""
}
${
node.firmware
? `<span data-translate-lang="firmware"></span> ${node.firmware}<br>`
: ""
}
`;
marker.on('click', () => {
onNodeClick(node);
marker.setPopupContent(buildNodePopup(node));
marker.openPopup();
onNodeClick(node);
});
});
@@ -603,8 +615,6 @@ async function onNodeClick(node){
}
map.on('click', e=>{
if(e.originalEvent.defaultPrevented) return;
if(!e.originalEvent.target.classList.contains('leaflet-interactive')){
edgeLayer.clearLayers();
selectedNodeId=null;