From 0bb9cf36787ca4656442ebfed4a985abc2cac070 Mon Sep 17 00:00:00 2001 From: Marat Fayzullin Date: Thu, 29 Feb 2024 19:33:26 -0500 Subject: [PATCH] DSC messages finally show up, URL storage moved to Utils.js. --- htdocs/lib/MapManager.js | 4 +-- htdocs/lib/MapMarkers.js | 16 +++++------ htdocs/lib/MessagePanel.js | 54 ++++++++++++++------------------------ htdocs/lib/Utils.js | 22 ++++++++++++++++ htdocs/map-google.js | 4 --- htdocs/map-leaflet.js | 4 --- htdocs/openwebrx.js | 6 ++--- owrx/dsc.py | 3 +-- 8 files changed, 53 insertions(+), 60 deletions(-) diff --git a/htdocs/lib/MapManager.js b/htdocs/lib/MapManager.js index 26e6beb7..7ea33f14 100644 --- a/htdocs/lib/MapManager.js +++ b/htdocs/lib/MapManager.js @@ -103,10 +103,10 @@ MapManager.prototype.process = function(e) { Utils.setVesselUrl(this.config.vessel_url); } if ('flight_url' in this.config) { - flight_url = this.config.flight_url; + Utils.setFlightUrl(this.config.flight_url); } if ('modes_url' in this.config) { - modes_url = this.config.modes_url; + Utils.setIcaoUrl(this.config.modes_url); } break; diff --git a/htdocs/lib/MapMarkers.js b/htdocs/lib/MapMarkers.js index c54d4fec..bcde0cac 100644 --- a/htdocs/lib/MapMarkers.js +++ b/htdocs/lib/MapMarkers.js @@ -737,11 +737,11 @@ AircraftMarker.prototype.getInfoHTML = function(name, receiverMarker = null) { } if (this.icao) { - detailsString += Utils.makeListItem('ICAO', Utils.linkify(this.icao, modes_url)); + detailsString += Utils.makeListItem('ICAO', Utils.linkifyIcao(this.icao)); } if (this.aircraft) { - detailsString += Utils.makeListItem('Aircraft', Utils.linkify(this.aircraft, flight_url)); + detailsString += Utils.makeListItem('Aircraft', Utils.linkifyFlight(this.aircraft)); } if (this.squawk) { @@ -792,19 +792,15 @@ AircraftMarker.prototype.getInfoHTML = function(name, receiverMarker = null) { } // Linkify title based on what it is (flight, aircraft, ICAO code) - var text = this.flight? this.flight : this.aircraft? this.aircraft : name; - var url = null; if (this.flight && this.flight.match(/^[A-Z]{3}[0-9]+[A-Z]*$/)) { - name = this.flight; - url = flight_url; + name = Utils.linkifyFlight(this.flight); } else if(this.aircraft) { - name = this.aircraft; - url = flight_url; + name = Utils.linkifyFlight(this.aircraft); } else if(name.match(/^[0-9A-F]{6}$/)) { - url = modes_url; + name = Utils.linkifyIcao(name); } - return '

' + Utils.linkify(name, url, text) + distance + '

' + return '

' + name + distance + '

' + '
' + timeString + ' using ' + this.mode + '
' + commentString + detailsString + messageString; }; diff --git a/htdocs/lib/MessagePanel.js b/htdocs/lib/MessagePanel.js index a611a646..8d6a6758 100644 --- a/htdocs/lib/MessagePanel.js +++ b/htdocs/lib/MessagePanel.js @@ -342,8 +342,6 @@ HfdlMessagePanel = function(el) { MessagePanel.call(this, el); this.initClearTimer(); this.modes = ['HFDL', 'VDL2', 'ADSB', 'ACARS']; - this.flight_url = null; - this.modes_url = null; } HfdlMessagePanel.prototype = Object.create(MessagePanel.prototype); @@ -352,14 +350,6 @@ HfdlMessagePanel.prototype.supportsMessage = function(message) { return this.modes.indexOf(message['mode']) >= 0; }; -HfdlMessagePanel.prototype.setFlightUrl = function(url) { - this.flight_url = url; -}; - -HfdlMessagePanel.prototype.setModeSUrl = function(url) { - this.modes_url = url; -}; - HfdlMessagePanel.prototype.render = function() { $(this.el).append($( '' + @@ -383,11 +373,11 @@ HfdlMessagePanel.prototype.pushMessage = function(msg) { var flight = !msg.flight? '' : !msg.flight.match(/^[A-Z]{3}[0-9]+[A-Z]*$/)? msg.flight - : Utils.linkify(msg.flight, this.flight_url); + : Utils.linkifyFlight(msg.flight); var aircraft = - msg.aircraft? Utils.linkify(msg.aircraft, this.flight_url) - : msg.icao? Utils.linkify(msg.icao, this.modes_url) + msg.aircraft? Utils.linkifyFlight(msg.aircraft) + : msg.icao? Utils.linkifyIcao(msg.icao) : ''; var tstamp = @@ -445,8 +435,6 @@ $.fn.hfdlMessagePanel = function() { AdsbMessagePanel = function(el) { MessagePanel.call(this, el); this.clearButton.css('display', 'none'); - this.flight_url = null; - this.modes_url = null; this.receiver_pos = null; } @@ -460,14 +448,6 @@ AdsbMessagePanel.prototype.setReceiverPos = function(pos) { if (pos.lat && pos.lon) this.receiver_pos = pos; }; -AdsbMessagePanel.prototype.setFlightUrl = function(url) { - this.flight_url = url; -}; - -AdsbMessagePanel.prototype.setModeSUrl = function(url) { - this.modes_url = url; -}; - AdsbMessagePanel.prototype.render = function() { $(this.el).append($( '
' + @@ -498,11 +478,11 @@ AdsbMessagePanel.prototype.pushMessage = function(msg) { // Flight identificators var flight = - entry.flight? Utils.linkify(entry.flight, this.flight_url) + entry.flight? Utils.linkifyFlight(entry.flight) : ''; var aircraft = - entry.aircraft? Utils.linkify(entry.aircraft, this.flight_url) - : entry.icao? Utils.linkify(entry.icao, this.modes_url) + entry.aircraft? Utils.linkifyFlight(entry.aircraft) + : entry.icao? Utils.linkifyIcao(entry.icao) : ''; // Altitude and climb / descent @@ -589,9 +569,15 @@ DscMessagePanel.prototype.render = function() { DscMessagePanel.prototype.pushMessage = function(msg) { var tstamp = 0; - var src = '*'; - var dst = '*'; - var data = ''; + var bcolor = msg.color? msg.color : '#000'; + var fcolor = msg.color? '#000' : '#FFF'; + var src = msg.src? Utils.linkifyVessel(msg.src) : '*'; + var dst = msg.dst? Utils.linkifyVessel(msg.dst) : '*'; + var data = ( + (msg.category? ' ' + msg.category : '') + + (msg.format? ' ' + msg.format : '') + + (msg.eos? ' ' + msg.eos : '') + ).trim().toUpperCase(); // Append report var $b = $(this.el).find('tbody'); @@ -602,7 +588,7 @@ DscMessagePanel.prototype.pushMessage = function(msg) { '' + '' + '' - )); + ).css('background-color', bcolor).css('color', fcolor)); // Append messsage if present if (msg.message) { @@ -659,10 +645,10 @@ IsmMessagePanel.prototype.formatAttr = function(msg, key) { IsmMessagePanel.prototype.pushMessage = function(msg) { // Get basic information, assume white color if missing - var address = msg.hasOwnProperty('id')? msg.id : "???"; - var device = msg.hasOwnProperty('model')? msg.model : ""; - var tstamp = msg.hasOwnProperty('time')? msg.time : ""; - var color = msg.hasOwnProperty('color')? msg.color : "#FFF"; + var address = msg.hasOwnProperty('id')? msg.id : '???'; + var device = msg.hasOwnProperty('model')? msg.model : ''; + var tstamp = msg.hasOwnProperty('time')? msg.time : ''; + var color = msg.hasOwnProperty('color')? msg.color : '#FFF'; // Append message header (address, time, etc) var $b = $(this.el).find('tbody'); diff --git a/htdocs/lib/Utils.js b/htdocs/lib/Utils.js index 4c9837d3..4486373c 100644 --- a/htdocs/lib/Utils.js +++ b/htdocs/lib/Utils.js @@ -6,6 +6,8 @@ function Utils() {} Utils.callsign_url = null; Utils.vessel_url = null; +Utils.flight_url = null; +Utils.icao_url = null; // Set URL for linkifying callsigns Utils.setCallsignUrl = function(url) { @@ -17,6 +19,16 @@ Utils.setVesselUrl = function(url) { this.vessel_url = url; }; +// Set URL for linkifying flight and aircraft IDs +Utils.setFlightUrl = function(url) { + this.flight_url = url; +}; + +// Set URL for linkifying ICAO aircraft IDs +Utils.setIcaoUrl = function(url) { + this.icao_url = url; +}; + // Escape HTML code. Utils.htmlEscape = function(input) { return $('
').text(input).html() @@ -73,6 +85,16 @@ Utils.linkifyVessel = function(mmsi) { return this.linkify(mmsi, this.vessel_url, mmsi, this.mmsi2country(mmsi)); }; +// Create link to a flight or an aircraft +Utils.linkifyFlight = function(flight, content = null) { + return this.linkify(flight, this.flight_url, content); +}; + +// Create link to a MODE-S ICAO ID +Utils.linkifyIcao = function(icao, content = null) { + return this.linkify(icao, this.icao_url, content); +}; + // Create link to tune OWRX to the given frequency and modulation. Utils.linkifyFreq = function(freq, mod) { var text; diff --git a/htdocs/map-google.js b/htdocs/map-google.js index 0c3665a1..a2031dcb 100644 --- a/htdocs/map-google.js +++ b/htdocs/map-google.js @@ -1,7 +1,3 @@ -// Marker.linkify() uses these URLs -var flight_url = null; -var modes_url = null; - // reasonable default; will be overriden by server var retention_time = 2 * 60 * 60 * 1000; diff --git a/htdocs/map-leaflet.js b/htdocs/map-leaflet.js index b24c16db..25df397f 100644 --- a/htdocs/map-leaflet.js +++ b/htdocs/map-leaflet.js @@ -1,7 +1,3 @@ -// Marker.linkify() uses these URLs -var flight_url = null; -var modes_url = null; - var mapSources = [ { name: 'OpenStreetMap', diff --git a/htdocs/openwebrx.js b/htdocs/openwebrx.js index 712cfe47..903a8090 100644 --- a/htdocs/openwebrx.js +++ b/htdocs/openwebrx.js @@ -1076,15 +1076,13 @@ function on_ws_recv(evt) { if ('flight_url' in config) { var hfdl_panel = $('#openwebrx-panel-hfdl-message').hfdlMessagePanel(); var adsb_panel = $('#openwebrx-panel-adsb-message').adsbMessagePanel(); - hfdl_panel.setFlightUrl(config['flight_url']); - adsb_panel.setFlightUrl(config['flight_url']); + Utils.setFlightUrl(config['flight_url']); } if ('modes_url' in config) { var hfdl_panel = $('#openwebrx-panel-hfdl-message').hfdlMessagePanel(); var adsb_panel = $('#openwebrx-panel-adsb-message').adsbMessagePanel(); - hfdl_panel.setModeSUrl(config['modes_url']); - adsb_panel.setModeSUrl(config['modes_url']); + Utils.setIcaoUrl(config['modes_url']); } if ('callsign_url' in config) { diff --git a/owrx/dsc.py b/owrx/dsc.py index 6a66b41f..36b68715 100644 --- a/owrx/dsc.py +++ b/owrx/dsc.py @@ -19,10 +19,9 @@ class DscParser(TextParser): if self.service: return None # Expect JSON data in text form - logger.debug("TEXT: {0}".format(msg)) out = json.loads(msg) # Add mode name and a color to identify the sender out["mode"] = "DSC" out["color"] = self.colors.getColor(out["src"]) - logger.debug("JSON: {0}".format(out)) + logger.debug("{0}".format(out)) return out
' + dst + '' + data + '