mirror of
https://github.com/Kpa-clawbot/meshcore-analyzer.git
synced 2026-05-26 14:44:09 +00:00
fix: filter WebSocket packets by time window on packets page
WS broadcast pushes all packets regardless of the selected time window filter. This caused old packets to appear in the table even when the API correctly returned zero results for the time range. Add time window check to the WS packet filter — drops packets with timestamps older than the selected window cutoff. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
+28
-28
@@ -22,9 +22,9 @@
|
||||
<meta name="twitter:title" content="CoreScope">
|
||||
<meta name="twitter:description" content="Real-time MeshCore LoRa mesh network analyzer — live packet visualization, node tracking, channel decryption, and route analysis.">
|
||||
<meta name="twitter:image" content="https://raw.githubusercontent.com/Kpa-clawbot/corescope/master/public/og-image.png">
|
||||
<link rel="stylesheet" href="style.css?v=1775023114">
|
||||
<link rel="stylesheet" href="home.css?v=1775023114">
|
||||
<link rel="stylesheet" href="live.css?v=1775023114">
|
||||
<link rel="stylesheet" href="style.css?v=1775023782">
|
||||
<link rel="stylesheet" href="home.css?v=1775023782">
|
||||
<link rel="stylesheet" href="live.css?v=1775023782">
|
||||
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css"
|
||||
integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY="
|
||||
crossorigin="anonymous">
|
||||
@@ -81,30 +81,30 @@
|
||||
<main id="app" role="main"></main>
|
||||
|
||||
<script src="vendor/qrcode.js"></script>
|
||||
<script src="roles.js?v=1775023114"></script>
|
||||
<script src="customize.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="region-filter.js?v=1775023114"></script>
|
||||
<script src="hop-resolver.js?v=1775023114"></script>
|
||||
<script src="hop-display.js?v=1775023114"></script>
|
||||
<script src="app.js?v=1775023114"></script>
|
||||
<script src="home.js?v=1775023114"></script>
|
||||
<script src="packet-filter.js?v=1775023114"></script>
|
||||
<script src="packets.js?v=1775023114"></script>
|
||||
<script src="geo-filter-overlay.js?v=1775023114"></script>
|
||||
<script src="map.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="channels.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="nodes.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="traces.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="analytics.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="audio.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="audio-v1-constellation.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="audio-v2-constellation.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="audio-lab.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="live.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="observers.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="observer-detail.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="compare.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="node-analytics.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="perf.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="roles.js?v=1775023782"></script>
|
||||
<script src="customize.js?v=1775023782" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="region-filter.js?v=1775023782"></script>
|
||||
<script src="hop-resolver.js?v=1775023782"></script>
|
||||
<script src="hop-display.js?v=1775023782"></script>
|
||||
<script src="app.js?v=1775023782"></script>
|
||||
<script src="home.js?v=1775023782"></script>
|
||||
<script src="packet-filter.js?v=1775023782"></script>
|
||||
<script src="packets.js?v=1775023782"></script>
|
||||
<script src="geo-filter-overlay.js?v=1775023782"></script>
|
||||
<script src="map.js?v=1775023782" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="channels.js?v=1775023782" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="nodes.js?v=1775023782" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="traces.js?v=1775023782" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="analytics.js?v=1775023782" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="audio.js?v=1775023782" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="audio-v1-constellation.js?v=1775023782" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="audio-v2-constellation.js?v=1775023782" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="audio-lab.js?v=1775023782" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="live.js?v=1775023782" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="observers.js?v=1775023782" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="observer-detail.js?v=1775023782" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="compare.js?v=1775023782" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="node-analytics.js?v=1775023782" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="perf.js?v=1775023782" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -324,6 +324,13 @@
|
||||
|
||||
// Check if new packets pass current filters
|
||||
const filtered = newPkts.filter(p => {
|
||||
// Respect time window filter — drop packets outside the selected window
|
||||
const windowMin = savedTimeWindowMin;
|
||||
if (windowMin > 0) {
|
||||
const cutoff = new Date(Date.now() - windowMin * 60000).toISOString();
|
||||
const pktTime = p.latest || p.timestamp || p.first_seen;
|
||||
if (pktTime && pktTime < cutoff) return false;
|
||||
}
|
||||
if (filters.type) { const types = filters.type.split(',').map(Number); if (!types.includes(p.payload_type)) return false; }
|
||||
if (filters.observer) { const obsSet = new Set(filters.observer.split(',')); if (!obsSet.has(p.observer_id)) return false; }
|
||||
if (filters.hash && p.hash !== filters.hash) return false;
|
||||
|
||||
Reference in New Issue
Block a user