diff --git a/public/observer-detail.js b/public/observer-detail.js
index fb2fc4a1..640d74e3 100644
--- a/public/observer-detail.js
+++ b/public/observer-detail.js
@@ -150,6 +150,14 @@
First Seen
${obs.first_seen ? new Date(obs.first_seen).toLocaleDateString() : 'โ'}
+
+
Last Status Update
+
${obs.last_seen ? timeAgo(obs.last_seen) + '
' + new Date(obs.last_seen).toLocaleString() + '' : 'โ'}
+
+
+
Last Packet Observation
+
${obs.last_packet_at ? timeAgo(obs.last_packet_at) + '
' + new Date(obs.last_packet_at).toLocaleString() + '' : 'never'}
+
ID: ${obs.id}
diff --git a/public/observers.js b/public/observers.js
index 3619eaf7..3a46ecef 100644
--- a/public/observers.js
+++ b/public/observers.js
@@ -75,6 +75,17 @@
return { cls: 'health-red', label: 'Offline' };
}
+ function packetBadge(o) {
+ if (!o.last_packet_at) return '
๐กโ never';
+ const pktAgo = Date.now() - new Date(o.last_packet_at).getTime();
+ const statusAgo = o.last_seen ? Date.now() - new Date(o.last_seen).getTime() : Infinity;
+ const gap = pktAgo - statusAgo;
+ if (gap > 600000) {
+ return `
๐กโ ${timeAgo(o.last_packet_at)}`;
+ }
+ return timeAgo(o.last_packet_at);
+ }
+
function uptimeStr(firstSeen) {
if (!firstSeen) return 'โ';
const ms = Date.now() - new Date(firstSeen).getTime();
@@ -123,7 +134,7 @@