mirror of
https://github.com/pablorevilla-meshtastic/meshview.git
synced 2026-07-08 19:01:10 +02:00
Compare commits
23 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 707b2ebbbd | |||
| d259230e05 | |||
| 7367155fec | |||
| efca531855 | |||
| d16976e5d1 | |||
| fca376486a | |||
| 96efe27abc | |||
| bd9d8ae265 | |||
| 698f4ad77f | |||
| 1bb84f4c4d | |||
| 17b91bbc7c | |||
| 2692333fe2 | |||
| ed18e2003c | |||
| 65386be327 | |||
| 973dcbfe51 | |||
| 2490284435 | |||
| 90767f94b4 | |||
| e0023bc8eb | |||
| 432e9f2b67 | |||
| a0fbed0a88 | |||
| 8ca388acb8 | |||
| f87831c3a5 | |||
| 9c40ce2d59 |
+29
-19
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user