[feat](trx-frontend-http): show APRS tracks only for selection
Co-authored-by: OpenAI Codex <codex@openai.com> Signed-off-by: Stan Grams <sjg@haxx.space>
This commit is contained in:
@@ -3428,6 +3428,7 @@ const APRS_TRACK_MAX_POINTS = 64;
|
|||||||
const AIS_TRACK_MAX_POINTS = 64;
|
const AIS_TRACK_MAX_POINTS = 64;
|
||||||
const aisMarkers = new Map();
|
const aisMarkers = new Map();
|
||||||
const vdesMarkers = new Map();
|
const vdesMarkers = new Map();
|
||||||
|
let selectedAprsTrackCall = null;
|
||||||
let selectedAisTrackMmsi = null;
|
let selectedAisTrackMmsi = null;
|
||||||
const HAM_BANDS = [
|
const HAM_BANDS = [
|
||||||
{ label: "2200m", meters: 2200 },
|
{ label: "2200m", meters: 2200 },
|
||||||
@@ -4060,6 +4061,7 @@ function syncAprsReceiverMarker() {
|
|||||||
|
|
||||||
window.clearMapMarkersByType = function(type) {
|
window.clearMapMarkersByType = function(type) {
|
||||||
if (type === "aprs") {
|
if (type === "aprs") {
|
||||||
|
selectedAprsTrackCall = null;
|
||||||
stationMarkers.forEach((entry) => {
|
stationMarkers.forEach((entry) => {
|
||||||
if (entry && entry.marker) {
|
if (entry && entry.marker) {
|
||||||
if (aprsMap && aprsMap.hasLayer(entry.marker)) entry.marker.removeFrom(aprsMap);
|
if (aprsMap && aprsMap.hasLayer(entry.marker)) entry.marker.removeFrom(aprsMap);
|
||||||
@@ -4223,6 +4225,13 @@ function initAprsMap() {
|
|||||||
const marker = e.popup._source;
|
const marker = e.popup._source;
|
||||||
clearMapRadioPath();
|
clearMapRadioPath();
|
||||||
setSelectedLocatorMarker(null);
|
setSelectedLocatorMarker(null);
|
||||||
|
if (selectedAprsTrackCall) {
|
||||||
|
const prevEntry = stationMarkers.get(String(selectedAprsTrackCall));
|
||||||
|
if (prevEntry && prevEntry.track && aprsMap && aprsMap.hasLayer(prevEntry.track)) {
|
||||||
|
prevEntry.track.removeFrom(aprsMap);
|
||||||
|
}
|
||||||
|
selectedAprsTrackCall = null;
|
||||||
|
}
|
||||||
if (selectedAisTrackMmsi) {
|
if (selectedAisTrackMmsi) {
|
||||||
const prevEntry = aisMarkers.get(String(selectedAisTrackMmsi));
|
const prevEntry = aisMarkers.get(String(selectedAisTrackMmsi));
|
||||||
if (prevEntry && prevEntry.track && aprsMap && aprsMap.hasLayer(prevEntry.track)) {
|
if (prevEntry && prevEntry.track && aprsMap && aprsMap.hasLayer(prevEntry.track)) {
|
||||||
@@ -4244,6 +4253,11 @@ function initAprsMap() {
|
|||||||
const entry = stationMarkers.get(marker._aprsCall);
|
const entry = stationMarkers.get(marker._aprsCall);
|
||||||
if (!entry) return;
|
if (!entry) return;
|
||||||
e.popup.setContent(buildAprsPopupHtml(marker._aprsCall, ll.lat, ll.lng, entry.info || "", entry.pkt));
|
e.popup.setContent(buildAprsPopupHtml(marker._aprsCall, ll.lat, ll.lng, entry.info || "", entry.pkt));
|
||||||
|
ensureAprsTrack(String(marker._aprsCall), entry);
|
||||||
|
if (entry.track && aprsMap && mapFilter.aprs && !aprsMap.hasLayer(entry.track)) {
|
||||||
|
entry.track.addTo(aprsMap);
|
||||||
|
}
|
||||||
|
selectedAprsTrackCall = String(marker._aprsCall);
|
||||||
setMapRadioPathTo(ll.lat, ll.lng, "aprs-radio-path");
|
setMapRadioPathTo(ll.lat, ll.lng, "aprs-radio-path");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -4283,6 +4297,13 @@ function initAprsMap() {
|
|||||||
aprsMap.on("popupclose", function() {
|
aprsMap.on("popupclose", function() {
|
||||||
clearMapRadioPath();
|
clearMapRadioPath();
|
||||||
setSelectedLocatorMarker(null);
|
setSelectedLocatorMarker(null);
|
||||||
|
if (selectedAprsTrackCall) {
|
||||||
|
const entry = stationMarkers.get(String(selectedAprsTrackCall));
|
||||||
|
if (entry && entry.track && aprsMap && aprsMap.hasLayer(entry.track)) {
|
||||||
|
entry.track.removeFrom(aprsMap);
|
||||||
|
}
|
||||||
|
selectedAprsTrackCall = null;
|
||||||
|
}
|
||||||
if (selectedAisTrackMmsi) {
|
if (selectedAisTrackMmsi) {
|
||||||
const entry = aisMarkers.get(String(selectedAisTrackMmsi));
|
const entry = aisMarkers.get(String(selectedAisTrackMmsi));
|
||||||
if (entry && entry.track && aprsMap && aprsMap.hasLayer(entry.track)) {
|
if (entry && entry.track && aprsMap && aprsMap.hasLayer(entry.track)) {
|
||||||
@@ -4340,6 +4361,13 @@ function initAprsMap() {
|
|||||||
if (!key) return;
|
if (!key) return;
|
||||||
if (kind === "source" && Object.prototype.hasOwnProperty.call(mapFilter, key)) {
|
if (kind === "source" && Object.prototype.hasOwnProperty.call(mapFilter, key)) {
|
||||||
mapFilter[key] = !mapFilter[key];
|
mapFilter[key] = !mapFilter[key];
|
||||||
|
if (!mapFilter.aprs && selectedAprsTrackCall) {
|
||||||
|
const entry = stationMarkers.get(String(selectedAprsTrackCall));
|
||||||
|
if (entry && entry.track && aprsMap && aprsMap.hasLayer(entry.track)) {
|
||||||
|
entry.track.removeFrom(aprsMap);
|
||||||
|
}
|
||||||
|
selectedAprsTrackCall = null;
|
||||||
|
}
|
||||||
if (!mapFilter.ais && selectedAisTrackMmsi) {
|
if (!mapFilter.ais && selectedAisTrackMmsi) {
|
||||||
const entry = aisMarkers.get(String(selectedAisTrackMmsi));
|
const entry = aisMarkers.get(String(selectedAisTrackMmsi));
|
||||||
if (entry && entry.track && aprsMap && aprsMap.hasLayer(entry.track)) {
|
if (entry && entry.track && aprsMap && aprsMap.hasLayer(entry.track)) {
|
||||||
@@ -4750,10 +4778,6 @@ function ensureAprsTrack(call, entry) {
|
|||||||
track.__trxType = "aprs";
|
track.__trxType = "aprs";
|
||||||
track._aprsCall = call;
|
track._aprsCall = call;
|
||||||
entry.track = track;
|
entry.track = track;
|
||||||
mapMarkers.add(track);
|
|
||||||
if (mapFilter.aprs) {
|
|
||||||
track.addTo(aprsMap);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function _aprsAddMarkerToMap(call, entry) {
|
function _aprsAddMarkerToMap(call, entry) {
|
||||||
|
|||||||
Reference in New Issue
Block a user