v2.26.12: fix AIS/ADS-B dashboards ignoring configured observer position

Pass DEFAULT_LATITUDE/DEFAULT_LONGITUDE from config to both standalone
dashboard templates so observer-location.js uses .env values instead of
falling back to hardcoded London coordinates on first visit.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Smittix
2026-03-14 21:11:46 +00:00
parent 7ed039564b
commit 6b9c4ebebd
5 changed files with 29 additions and 8 deletions

View File

@@ -7,10 +7,17 @@ import os
import sys import sys
# Application version # Application version
VERSION = "2.26.11" VERSION = "2.26.12"
# Changelog - latest release notes (shown on welcome screen) # Changelog - latest release notes (shown on welcome screen)
CHANGELOG = [ CHANGELOG = [
{
"version": "2.26.12",
"date": "March 2026",
"highlights": [
"AIS and ADS-B dashboards now use configured observer position from .env",
]
},
{ {
"version": "2.26.11", "version": "2.26.11",
"date": "March 2026", "date": "March 2026",

View File

@@ -40,6 +40,8 @@ from config import (
ADSB_DB_PORT, ADSB_DB_PORT,
ADSB_DB_USER, ADSB_DB_USER,
ADSB_HISTORY_ENABLED, ADSB_HISTORY_ENABLED,
DEFAULT_LATITUDE,
DEFAULT_LONGITUDE,
SHARED_OBSERVER_LOCATION_ENABLED, SHARED_OBSERVER_LOCATION_ENABLED,
) )
from utils import aircraft_db from utils import aircraft_db
@@ -1197,6 +1199,8 @@ def adsb_dashboard():
'adsb_dashboard.html', 'adsb_dashboard.html',
shared_observer_location=SHARED_OBSERVER_LOCATION_ENABLED, shared_observer_location=SHARED_OBSERVER_LOCATION_ENABLED,
adsb_auto_start=ADSB_AUTO_START, adsb_auto_start=ADSB_AUTO_START,
default_latitude=DEFAULT_LATITUDE,
default_longitude=DEFAULT_LONGITUDE,
embedded=embedded, embedded=embedded,
) )

View File

@@ -15,7 +15,7 @@ import time
from flask import Blueprint, Response, jsonify, render_template, request from flask import Blueprint, Response, jsonify, render_template, request
import app as app_module import app as app_module
from config import SHARED_OBSERVER_LOCATION_ENABLED from config import DEFAULT_LATITUDE, DEFAULT_LONGITUDE, SHARED_OBSERVER_LOCATION_ENABLED
from utils.constants import ( from utils.constants import (
AIS_RECONNECT_DELAY, AIS_RECONNECT_DELAY,
AIS_SOCKET_TIMEOUT, AIS_SOCKET_TIMEOUT,
@@ -542,5 +542,7 @@ def ais_dashboard():
return render_template( return render_template(
'ais_dashboard.html', 'ais_dashboard.html',
shared_observer_location=SHARED_OBSERVER_LOCATION_ENABLED, shared_observer_location=SHARED_OBSERVER_LOCATION_ENABLED,
default_latitude=DEFAULT_LATITUDE,
default_longitude=DEFAULT_LONGITUDE,
embedded=embedded, embedded=embedded,
) )

View File

@@ -36,6 +36,8 @@
<script> <script>
window.INTERCEPT_SHARED_OBSERVER_LOCATION = {{ shared_observer_location | tojson }}; window.INTERCEPT_SHARED_OBSERVER_LOCATION = {{ shared_observer_location | tojson }};
window.INTERCEPT_ADSB_AUTO_START = {{ adsb_auto_start | tojson }}; window.INTERCEPT_ADSB_AUTO_START = {{ adsb_auto_start | tojson }};
window.INTERCEPT_DEFAULT_LAT = {{ default_latitude | tojson }};
window.INTERCEPT_DEFAULT_LON = {{ default_longitude | tojson }};
</script> </script>
{% if offline_settings.assets_source == 'local' %} {% if offline_settings.assets_source == 'local' %}
<script defer src="{{ url_for('static', filename='vendor/leaflet/leaflet.js') }}"></script> <script defer src="{{ url_for('static', filename='vendor/leaflet/leaflet.js') }}"></script>
@@ -340,8 +342,8 @@
<div class="control-group"> <div class="control-group">
<span class="control-group-label">LOCATION</span> <span class="control-group-label">LOCATION</span>
<div class="control-group-items"> <div class="control-group-items">
<input type="text" id="obsLat" value="51.5074" onchange="updateObserverLoc()" style="width: 70px;" title="Latitude" placeholder="Lat"> <input type="text" id="obsLat" value="{{ default_latitude }}" onchange="updateObserverLoc()" style="width: 70px;" title="Latitude" placeholder="Lat">
<input type="text" id="obsLon" value="-0.1278" onchange="updateObserverLoc()" style="width: 70px;" title="Longitude" placeholder="Lon"> <input type="text" id="obsLon" value="{{ default_longitude }}" onchange="updateObserverLoc()" style="width: 70px;" title="Longitude" placeholder="Lon">
<span id="gpsIndicator" class="gps-indicator" style="display: none;" title="GPS connected via gpsd"><span class="gps-dot"></span> GPS</span> <span id="gpsIndicator" class="gps-indicator" style="display: none;" title="GPS connected via gpsd"><span class="gps-dot"></span> GPS</span>
</div> </div>
</div> </div>
@@ -643,7 +645,9 @@
if (parsed.lat !== undefined && parsed.lat !== null && parsed.lon !== undefined && parsed.lon !== null) return parsed; if (parsed.lat !== undefined && parsed.lat !== null && parsed.lon !== undefined && parsed.lon !== null) return parsed;
} catch (e) {} } catch (e) {}
} }
return { lat: 51.5074, lon: -0.1278 }; const defaultLat = window.INTERCEPT_DEFAULT_LAT || 51.5074;
const defaultLon = window.INTERCEPT_DEFAULT_LON || -0.1278;
return { lat: defaultLat, lon: defaultLon };
})(); })();
let rangeRingsLayer = null; let rangeRingsLayer = null;
let observerMarker = null; let observerMarker = null;

View File

@@ -35,6 +35,8 @@
<!-- Deferred scripts --> <!-- Deferred scripts -->
<script> <script>
window.INTERCEPT_SHARED_OBSERVER_LOCATION = {{ shared_observer_location | tojson }}; window.INTERCEPT_SHARED_OBSERVER_LOCATION = {{ shared_observer_location | tojson }};
window.INTERCEPT_DEFAULT_LAT = {{ default_latitude | tojson }};
window.INTERCEPT_DEFAULT_LON = {{ default_longitude | tojson }};
</script> </script>
{% if offline_settings.assets_source == 'local' %} {% if offline_settings.assets_source == 'local' %}
<script defer src="{{ url_for('static', filename='vendor/leaflet/leaflet.js') }}"></script> <script defer src="{{ url_for('static', filename='vendor/leaflet/leaflet.js') }}"></script>
@@ -185,8 +187,8 @@
<div class="control-group"> <div class="control-group">
<span class="control-group-label">LOCATION</span> <span class="control-group-label">LOCATION</span>
<div class="control-group-items"> <div class="control-group-items">
<input type="text" id="obsLat" value="51.5074" onchange="updateObserverLoc()" style="width: 70px;" title="Latitude" placeholder="Lat"> <input type="text" id="obsLat" value="{{ default_latitude }}" onchange="updateObserverLoc()" style="width: 70px;" title="Latitude" placeholder="Lat">
<input type="text" id="obsLon" value="-0.1278" onchange="updateObserverLoc()" style="width: 70px;" title="Longitude" placeholder="Lon"> <input type="text" id="obsLon" value="{{ default_longitude }}" onchange="updateObserverLoc()" style="width: 70px;" title="Longitude" placeholder="Lon">
</div> </div>
</div> </div>
@@ -248,7 +250,9 @@
if (window.ObserverLocation && ObserverLocation.getForModule) { if (window.ObserverLocation && ObserverLocation.getForModule) {
return ObserverLocation.getForModule('ais_observerLocation'); return ObserverLocation.getForModule('ais_observerLocation');
} }
return { lat: 51.5074, lon: -0.1278 }; const defaultLat = window.INTERCEPT_DEFAULT_LAT || 51.5074;
const defaultLon = window.INTERCEPT_DEFAULT_LON || -0.1278;
return { lat: defaultLat, lon: defaultLon };
})(); })();
let rangeRingsLayer = null; let rangeRingsLayer = null;
let observerMarker = null; let observerMarker = null;