add links to aircraft tracking sites
This commit is contained in:
parent
32575a1824
commit
204c725a75
|
|
@ -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>' +
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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"),
|
||||||
|
]
|
||||||
|
)
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue