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

@@ -115,7 +115,7 @@ paths:
default: false
- name: dx_call_includes
in: query
description: "Limit the alerts to only ones where the DX callsign includes the supplied string (case-insensitive). Generally a complete callsign, but you can supply a shorter string for partial matches."
description: "Limit the spots to only ones where the DX callsign includes the supplied string (case-insensitive). Generally a complete callsign, but you can supply a shorter string for partial matches."
required: false
schema:
type: string
@@ -125,6 +125,12 @@ paths:
required: false
schema:
type: string
- name: text_includes
in: query
description: "Limit the spots to only ones where some significant text (DX callsign or comment) includes the supplied string (case-insensitive)."
required: false
schema:
type: string
- name: needs_good_location
in: query
description: "Return only spots with a 'good' location. (See the spot `dx_location_good` parameter for details. Useful for map-based clients, to avoid spots with 'bad' locations e.g. loads of cluster spots ending up in the centre of the DXCC entitity.)"
@@ -215,7 +221,7 @@ paths:
$ref: "#/components/schemas/Continent"
- name: dx_call_includes
in: query
description: "Limit the alerts to only ones where the DX callsign includes the supplied string (case-insensitive). Generally a complete callsign, but you can supply a shorter string for partial matches."
description: "Limit the spots to only ones where the DX callsign includes the supplied string (case-insensitive). Generally a complete callsign, but you can supply a shorter string for partial matches."
required: false
schema:
type: string
@@ -225,6 +231,12 @@ paths:
required: false
schema:
type: string
- name: text_includes
in: query
description: "Limit the spots to only ones where some significant text (DX callsign or comment) includes the supplied string (case-insensitive)."
required: false
schema:
type: string
- name: needs_good_location
in: query
description: "Return only spots with a 'good' location. (See the spot `dx_location_good` parameter for details. Useful for map-based clients, to avoid spots with 'bad' locations e.g. loads of cluster spots ending up in the centre of the DXCC entitity.)"
@@ -304,6 +316,12 @@ paths:
required: false
schema:
type: string
- name: text_includes
in: query
description: "Limit the alerts to only ones where some significant text (DX callsign, freqs/modes, or comment) includes the supplied string (case-insensitive)."
required: false
schema:
type: string
responses:
'200':
description: Success
@@ -359,6 +377,12 @@ paths:
required: false
schema:
type: string
- name: text_includes
in: query
description: "Limit the alerts to only ones where some significant text (DX callsign, freqs/modes, or comment) includes the supplied string (case-insensitive)."
required: false
schema:
type: string
responses:
'200':
description: Success

View File

@@ -80,7 +80,7 @@ div.container {
/* SPOTS/ALERTS PAGES, SETTINGS/STATUS AREAS */
input#filter-dx-call {
input#search {
max-width: 12em;
margin-right: 1rem;
padding-left: 2em;
@@ -337,7 +337,7 @@ div.band-spot:hover span.band-spot-info {
overflow: scroll;
}
/* Filter/search DX Call field should be smaller on mobile */
input#filter-dx-call {
input#search {
max-width: 9em;
margin-right: 0;
}

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;
}