mirror of
https://github.com/Kpa-clawbot/meshcore-analyzer.git
synced 2026-08-28 20:08:19 +00:00
Fix multi-select filters: client-side filtering, no unnecessary API calls
- Remove type/observer params from /api/packets calls (server ignores them) - Add client-side type/observer filtering in renderTableRows() - Change filter handlers to re-render instead of re-fetch - Update displayed count to reflect filtered results
This commit is contained in:
+1
-1
@@ -84,7 +84,7 @@
|
||||
<script src="hop-resolver.js?v=1774126708"></script>
|
||||
<script src="app.js?v=1774126708"></script>
|
||||
<script src="home.js?v=1774042199"></script>
|
||||
<script src="packets.js?v=1774140381"></script>
|
||||
<script src="packets.js?v=1774141031"></script>
|
||||
<script src="map.js?v=1774126708" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="channels.js?v=1774331200" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
<script src="nodes.js?v=1774126708" onerror="console.error('Failed to load:', this.src)"></script>
|
||||
|
||||
+14
-5
@@ -346,10 +346,8 @@
|
||||
try {
|
||||
const params = new URLSearchParams();
|
||||
params.set('limit', '100');
|
||||
if (filters.type !== undefined && filters.type !== '') params.set('type', filters.type);
|
||||
const regionParam = RegionFilter.getRegionParam();
|
||||
if (regionParam) params.set('region', regionParam);
|
||||
if (filters.observer) params.set('observer', filters.observer);
|
||||
if (filters.hash) params.set('hash', filters.hash);
|
||||
if (filters.node) params.set('node', filters.node);
|
||||
params.set('groupByHash', 'true'); // always fetch grouped
|
||||
@@ -522,7 +520,7 @@
|
||||
if (filters.observer) localStorage.setItem('meshcore-observer-filter', filters.observer); else localStorage.removeItem('meshcore-observer-filter');
|
||||
buildObserverMenu();
|
||||
updateObsTrigger();
|
||||
loadPackets();
|
||||
renderTableRows();
|
||||
});
|
||||
|
||||
// --- Type multi-select ---
|
||||
@@ -564,7 +562,7 @@
|
||||
if (filters.type) localStorage.setItem('meshcore-type-filter', filters.type); else localStorage.removeItem('meshcore-type-filter');
|
||||
buildTypeMenu();
|
||||
updateTypeTrigger();
|
||||
loadPackets();
|
||||
renderTableRows();
|
||||
});
|
||||
|
||||
// Close multi-select menus on outside click
|
||||
@@ -816,7 +814,6 @@
|
||||
|
||||
// Update dynamic parts of the header
|
||||
const countEl = document.querySelector('#pktLeft .count');
|
||||
if (countEl) countEl.textContent = `(${totalCount})`;
|
||||
const groupBtn = document.getElementById('fGroup');
|
||||
if (groupBtn) groupBtn.classList.toggle('active', groupByHash);
|
||||
|
||||
@@ -837,6 +834,18 @@
|
||||
}
|
||||
}
|
||||
|
||||
// Client-side type/observer filtering
|
||||
if (filters.type) {
|
||||
const types = filters.type.split(',').map(Number);
|
||||
displayPackets = displayPackets.filter(p => types.includes(p.payload_type));
|
||||
}
|
||||
if (filters.observer) {
|
||||
const obsIds = new Set(filters.observer.split(','));
|
||||
displayPackets = displayPackets.filter(p => obsIds.has(p.observer_id));
|
||||
}
|
||||
|
||||
if (countEl) countEl.textContent = `(${displayPackets.length})`;
|
||||
|
||||
if (!displayPackets.length) {
|
||||
tbody.innerHTML = '<tr><td colspan="10" class="text-center text-muted" style="padding:24px">' + (filters.myNodes ? 'No packets from your claimed/favorited nodes' : 'No packets found') + '</td></tr>';
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user