Fix SSE connections not respecting filters #3

This commit is contained in:
Ian Renton
2025-12-23 22:24:30 +00:00
parent 7fe478e040
commit 70dc1b495c
6 changed files with 67 additions and 15 deletions

View File

@@ -5,6 +5,12 @@ let rowCount = 0;
// Load spots and populate the table.
function loadSpots() {
// If we have an ongoing SSE connection, stop it so it doesn't interfere with our reload
if (evtSource != null) {
evtSource.close();
}
// Make the new query
$.getJSON('/api/v1/spots' + buildQueryString(), function(jsonData) {
// Store last updated time
lastUpdateTime = moment.utc();
@@ -14,17 +20,14 @@ function loadSpots() {
// Update table
updateTable();
// Start SSE connection to fetch updates in the background
restartSSEConnection();
startSSEConnection();
});
}
// Start an SSE connection (closing an existing one if it exists). This will then be used to add to the table on the
// fly.
function restartSSEConnection() {
if (evtSource != null) {
evtSource.close();
}
evtSource = new EventSource('/api/v1/spots/stream');
function startSSEConnection() {
evtSource = new EventSource('/api/v1/spots/stream' + buildQueryString());
evtSource.onmessage = function(event) {
// Store last updated time
@@ -74,8 +77,8 @@ function buildQueryString() {
}
});
str = str + "limit=" + $("#spots-to-fetch option:selected").val();
if ($("#filter-dx-call").val() != "") {
str = str + "&dx_call_includes=" + encodeURIComponent($("#filter-dx-call").val());
if ($("#search").val() != "") {
str = str + "&text_includes=" + encodeURIComponent($("#search").val());
}
return str;
}