add links to aircraft tracking sites

This commit is contained in:
Jakob Ketterl 2023-08-28 21:30:31 +02:00
parent 32575a1824
commit 204c725a75
3 changed files with 39 additions and 4 deletions

View File

@ -35,6 +35,7 @@ $(function(){
var strokeOpacity = 0.8; var strokeOpacity = 0.8;
var fillOpacity = 0.35; var fillOpacity = 0.35;
var callsign_service; var callsign_service;
var aircraft_tracking_service;
var colorKeys = {}; var colorKeys = {};
var colorScale = chroma.scale(['red', 'blue', 'green']).mode('hsl'); var colorScale = chroma.scale(['red', 'blue', 'green']).mode('hsl');
@ -318,6 +319,9 @@ $(function(){
if ('callsign_service' in config) { if ('callsign_service' in config) {
callsign_service = config['callsign_service']; callsign_service = config['callsign_service'];
} }
if ('aircraft_tracking_service' in config) {
aircraft_tracking_service = config['aircraft_tracking_service'];
}
break; break;
case "update": case "update":
processUpdates(json.value); processUpdates(json.value);
@ -386,7 +390,7 @@ $(function(){
// we can reuse the same logic for displaying and indexing // we can reuse the same logic for displaying and indexing
var sourceToString = sourceToKey; var sourceToString = sourceToKey;
var linkifySource = function(source) { var linkifyCallsign = function(source) {
var callsignString = sourceToString(source); var callsignString = sourceToString(source);
switch (callsign_service) { switch (callsign_service) {
case "qrzcq": case "qrzcq":
@ -401,6 +405,25 @@ $(function(){
} }
}; };
var linkifyAircraft = function(source, identification) {
var aircraftString = identification || source.icao;
var link = false;
switch (aircraft_tracking_service) {
case 'flightaware':
link = 'https://flightaware.com/live/modes/' + source.icao;
if (identification) link += "/ident/" + identification
link += '/redirect';
break;
case 'planefinder':
if (identification) link = 'https://planefinder.net/flight/' + identification;
break;
}
if (link) {
return '<a target="_blank" href="' + link + '">' + aircraftString + '</a>';
}
return aircraftString;
}
var distanceKm = function(p1, p2) { var distanceKm = function(p1, p2) {
// Earth radius in km // Earth radius in km
var R = 6371.0; var R = 6371.0;
@ -435,7 +458,7 @@ $(function(){
'<ul>' + '<ul>' +
inLocator.map(function(i){ inLocator.map(function(i){
var timestring = moment(i.lastseen).fromNow(); var timestring = moment(i.lastseen).fromNow();
var message = linkifySource(i.source) + ' (' + timestring + ' using ' + i.mode; var message = linkifyCallsign(i.source) + ' (' + timestring + ' using ' + i.mode;
if (i.band) message += ' on ' + i.band; if (i.band) message += ' on ' + i.band;
message += ')'; message += ')';
return '<li>' + message + '</li>' return '<li>' + message + '</li>'
@ -461,7 +484,7 @@ $(function(){
} }
var title; var title;
if (marker.icao) { if (marker.icao) {
title = marker.identification || marker.icao; title = linkifyAircraft(source, marker.identification);
if ('altitude' in marker) { if ('altitude' in marker) {
commentString += '<div>Altitude: ' + marker.altitude + ' ft</div>'; commentString += '<div>Altitude: ' + marker.altitude + ' ft</div>';
} }
@ -478,7 +501,7 @@ $(function(){
commentString += '<div>TAS: ' + marker.TAS + ' kt</div>/'; commentString += '<div>TAS: ' + marker.TAS + ' kt</div>/';
} }
} else { } else {
linkifySource(source); title = linkifyCallsign(source);
} }
infowindow.setContent( infowindow.setContent(
'<h3>' + title + distance + '</h3>' + '<h3>' + title + distance + '</h3>' +

View File

@ -459,6 +459,7 @@ class MapConnection(OpenWebRxClient):
"receiver_gps", "receiver_gps",
"map_position_retention_time", "map_position_retention_time",
"callsign_service", "callsign_service",
"aircraft_tracking_service",
"receiver_name", "receiver_name",
) )
self.configSub = filtered_config.wire(self.write_config) self.configSub = filtered_config.wire(self.write_config)

View File

@ -183,6 +183,17 @@ class GeneralSettingsController(SettingsFormController):
Option("aprsfi", "aprs.fi"), Option("aprsfi", "aprs.fi"),
], ],
), ),
DropdownInput(
"aircraft_tracking_service",
"Aircraft tracking service",
infotext="Allows users to navigate to an external flight tracking service by clicking on flight "
+ "numbers",
options=[
Option(None, "disabled"),
Option("flightaware", "FlightAware"),
Option("planefinder", "planefinder"),
]
)
), ),
] ]