From 339864a5727727a0955be85585bc52d30cf0b572 Mon Sep 17 00:00:00 2001 From: Marat Fayzullin Date: Sun, 31 Jul 2022 14:40:20 -0400 Subject: [PATCH 01/15] Now calculating waterfall colors based on what is on the screen (with zoom). --- htdocs/openwebrx.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/htdocs/openwebrx.js b/htdocs/openwebrx.js index 7a075e9..a0848db 100644 --- a/htdocs/openwebrx.js +++ b/htdocs/openwebrx.js @@ -942,9 +942,15 @@ var waterfall_measure_minmax_now = false; var waterfall_measure_minmax_continuous = false; function waterfall_measure_minmax_do(what) { + // Get visible range + var range = get_visible_freq_range(); + var start = center_freq - bandwidth / 2; + // this is based on an oversampling factor of about 1,25 - var ignored = .1 * what.length; - var data = what.slice(ignored, -ignored); + range.start = Math.max(0.1, (range.start - start) / bandwidth); + range.end = Math.min(0.9, (range.end - start) / bandwidth); + + var data = what.slice(range.start * what.length, range.end * what.length); return { min: Math.min.apply(Math, data), max: Math.max.apply(Math, data) From ff4355541143203d9c503fe06e8bf962a79d2d1d Mon Sep 17 00:00:00 2001 From: Marat Fayzullin Date: Sun, 31 Jul 2022 15:01:15 -0400 Subject: [PATCH 02/15] Now resetting zoom when changing to a different profile. --- htdocs/openwebrx.js | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/openwebrx.js b/htdocs/openwebrx.js index 7a075e9..e02f3ef 100644 --- a/htdocs/openwebrx.js +++ b/htdocs/openwebrx.js @@ -778,6 +778,7 @@ function on_ws_recv(evt) { $('#openwebrx-sdr-profiles-listbox').val(currentprofile.toString()); waterfall_clear(); + zoom_set(0); } if ('tuning_precision' in config) From 2ccdc90cc5a8be2bf9c7f408cff54e8705aed89d Mon Sep 17 00:00:00 2001 From: Marat Fayzullin Date: Mon, 25 Jul 2022 22:55:18 -0400 Subject: [PATCH 03/15] Added an option to add callsign database URL for lookups on a map. --- htdocs/map.js | 17 +++++++++++++++-- owrx/config/defaults.py | 1 + owrx/connection.py | 1 + owrx/controllers/settings/general.py | 7 +++++++ 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/htdocs/map.js b/htdocs/map.js index af879d0..9a5141f 100644 --- a/htdocs/map.js +++ b/htdocs/map.js @@ -37,6 +37,7 @@ $(function(){ var retention_time = 2 * 60 * 60 * 1000; var strokeOpacity = 0.8; var fillOpacity = 0.35; + var callsign_url = null; var colorKeys = {}; var colorScale = chroma.scale(['red', 'blue', 'green']).mode('hsl'); @@ -286,6 +287,9 @@ $(function(){ if ('map_position_retention_time' in config) { retention_time = config.map_position_retention_time * 1000; } + if ('callsign_url' in config) { + callsign_url = config['callsign_url']; + } break; case "update": processUpdates(json.value); @@ -340,6 +344,15 @@ $(function(){ return infowindow; } + var linkifyCallsign = function(callsign) { + if ((callsign_url == null) || (callsign_url == '')) + return callsign; + else + return '' + callsign + ''; + }; + var infowindow; var showLocatorInfoWindow = function(locator, pos) { var infowindow = getInfoWindow(); @@ -357,7 +370,7 @@ $(function(){ '
    ' + inLocator.map(function(i){ var timestring = moment(i.lastseen).fromNow(); - var message = i.callsign + ' (' + timestring + ' using ' + i.mode; + var message = linkifyCallsign(i.callsign) + ' (' + timestring + ' using ' + i.mode; if (i.band) message += ' on ' + i.band; message += ')'; return '
  • ' + message + '
  • ' @@ -378,7 +391,7 @@ $(function(){ commentString = '
    ' + marker.comment + '
    '; } infowindow.setContent( - '

    ' + callsign + '

    ' + + '

    ' + linkifyCallsign(callsign) + '

    ' + '
    ' + timestring + ' using ' + marker.mode + ( marker.band ? ' on ' + marker.band : '' ) + '
    ' + commentString ); diff --git a/owrx/config/defaults.py b/owrx/config/defaults.py index f03dded..203c257 100644 --- a/owrx/config/defaults.py +++ b/owrx/config/defaults.py @@ -147,6 +147,7 @@ defaultConfig = PropertyLayer( squelch_auto_margin=10, google_maps_api_key="", map_position_retention_time=2 * 60 * 60, + callsign_url="https://www.qrzcq.com/call/{}", decoding_queue_workers=2, decoding_queue_length=10, wsjt_decoding_depth=3, diff --git a/owrx/connection.py b/owrx/connection.py index 699da31..dfb526c 100644 --- a/owrx/connection.py +++ b/owrx/connection.py @@ -456,6 +456,7 @@ class MapConnection(OpenWebRxClient): "google_maps_api_key", "receiver_gps", "map_position_retention_time", + "callsign_url", "receiver_name", ) filtered_config.wire(self.write_config) diff --git a/owrx/controllers/settings/general.py b/owrx/controllers/settings/general.py index 232c543..7958368 100644 --- a/owrx/controllers/settings/general.py +++ b/owrx/controllers/settings/general.py @@ -168,6 +168,13 @@ class GeneralSettingsController(SettingsFormController): infotext="Specifies how log markers / grids will remain visible on the map", append="s", ), + TextInput( + "callsign_url", + "Callsign database URL", + infotext="Specifies callsign lookup URL, such as QRZ.COM " + + "or QRZCQ.COM. Place curly brackers ({}) where callsign " + + "is supposed to be.", + ), ), ] From bb625a5f9f99777d5958f465693fd61446dc4ac2 Mon Sep 17 00:00:00 2001 From: Marat Fayzullin Date: Sun, 24 Jul 2022 22:57:56 -0400 Subject: [PATCH 04/15] Added filter boundaries display. --- htdocs/lib/Demodulator.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/htdocs/lib/Demodulator.js b/htdocs/lib/Demodulator.js index b43adce..79282b6 100644 --- a/htdocs/lib/Demodulator.js +++ b/htdocs/lib/Demodulator.js @@ -81,6 +81,12 @@ Envelope.prototype.draw = function(visible_range){ scale_ctx.fill(); scale_ctx.globalAlpha = 1; scale_ctx.stroke(); + scale_ctx.lineWidth = 1; + scale_ctx.textAlign = "left"; + scale_ctx.fillText(this.demodulator.high_cut.toString(), to_px + env_att_w, env_h2); + scale_ctx.textAlign = "right"; + scale_ctx.fillText(this.demodulator.low_cut.toString(), from_px - env_att_w, env_h2); + scale_ctx.lineWidth = 3; } if (typeof line !== "undefined") // out of screen? { From e92b6d657bbde1ea7bbc9f311896ff097cc9511e Mon Sep 17 00:00:00 2001 From: Marat Fayzullin Date: Sun, 31 Jul 2022 16:10:33 -0400 Subject: [PATCH 05/15] Addressing comments from jketterl. --- htdocs/map.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/map.js b/htdocs/map.js index 9a5141f..8c9ea8c 100644 --- a/htdocs/map.js +++ b/htdocs/map.js @@ -348,9 +348,9 @@ $(function(){ if ((callsign_url == null) || (callsign_url == '')) return callsign; else - return '' + callsign + ''; + '">' + callsign + ''; }; var infowindow; From 4423c7f13a4ed696832493a08a36b7ddd340ebdd Mon Sep 17 00:00:00 2001 From: Marat Fayzullin Date: Thu, 15 Sep 2022 19:34:39 -0400 Subject: [PATCH 06/15] Adding distance display to the info windows. --- htdocs/map.js | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/htdocs/map.js b/htdocs/map.js index 8c9ea8c..8acbaa8 100644 --- a/htdocs/map.js +++ b/htdocs/map.js @@ -353,6 +353,23 @@ $(function(){ '">' + callsign + ''; }; + var distanceKm = function(p1, p2) { + // Earth radius in km + var R = 6371.0; + // Convert degrees to radians + var rlat1 = p1.lat() * (Math.PI/180); + var rlat2 = p2.lat() * (Math.PI/180); + // Compute difference in radians + var difflat = rlat2-rlat1; + var difflon = (p2.lng()-p1.lng()) * (Math.PI/180); + // Compute distance + d = 2 * R * Math.asin(Math.sqrt( + Math.sin(difflat/2) * Math.sin(difflat/2) + + Math.cos(rlat1) * Math.cos(rlat2) * Math.sin(difflon/2) * Math.sin(difflon/2) + )); + return Math.round(d); + } + var infowindow; var showLocatorInfoWindow = function(locator, pos) { var infowindow = getInfoWindow(); @@ -364,8 +381,10 @@ $(function(){ }).sort(function(a, b){ return b.lastseen - a.lastseen; }); + var distance = receiverMarker? + " (at " + distanceKm(receiverMarker.position, pos) + "km)" : ""; infowindow.setContent( - '

    Locator: ' + locator + '

    ' + + '

    Locator: ' + locator + distance + '

    ' + '
    Active Callsigns:
    ' + '
      ' + inLocator.map(function(i){ From 7a61f991ad68c3e19887c809e046c86f5e4f6d55 Mon Sep 17 00:00:00 2001 From: Marat Fayzullin Date: Fri, 16 Sep 2022 00:02:17 -0400 Subject: [PATCH 07/15] Removed parentheses, added a space before "km". --- htdocs/map.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/map.js b/htdocs/map.js index 8acbaa8..71cae3a 100644 --- a/htdocs/map.js +++ b/htdocs/map.js @@ -382,7 +382,7 @@ $(function(){ return b.lastseen - a.lastseen; }); var distance = receiverMarker? - " (at " + distanceKm(receiverMarker.position, pos) + "km)" : ""; + " at " + distanceKm(receiverMarker.position, pos) + " km" : ""; infowindow.setContent( '

      Locator: ' + locator + distance + '

      ' + '
      Active Callsigns:
      ' + From c150eca75c0009a2e6504e64958c7574187a444d Mon Sep 17 00:00:00 2001 From: Jakob Ketterl Date: Mon, 19 Sep 2022 18:46:11 +0200 Subject: [PATCH 08/15] fifisdr fixes --- CHANGELOG.md | 2 ++ debian/changelog | 3 +++ owrx/source/__init__.py | 5 ++++- owrx/source/direct.py | 16 ++++++++++++---- owrx/source/fifi_sdr.py | 14 ++++++++++++++ 5 files changed, 35 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dd450b4..3dbdb27 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,6 @@ **unreleased** +- FifiSDR support fixed (pipeline formats now line up correctly) +- Added "Device" input for FifiSDR devices for sound card selection **1.2.0** - Major rewrite of all demodulation components to make use of the new csdr/pycsdr and digiham/pydigiham demodulator diff --git a/debian/changelog b/debian/changelog index 430bfef..c32b8c7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,8 @@ openwebrx (1.3.0) UNRELEASED; urgency=low + * FifiSDR support fixed (pipeline formats now line up correctly) + * Added "Device" input for FifiSDR devices for sound card selection + -- Jakob Ketterl Thu, 16 Jun 2022 21:47:00 +0000 openwebrx (1.2.0) bullseye jammy; urgency=low diff --git a/owrx/source/__init__.py b/owrx/source/__init__.py index ae790be..618d773 100644 --- a/owrx/source/__init__.py +++ b/owrx/source/__init__.py @@ -249,10 +249,13 @@ class SdrSource(ABC): def getPort(self): return self.port + def _getTcpSourceFormat(self): + return Format.COMPLEX_FLOAT + def _getTcpSource(self): with self.modificationLock: if self.tcpSource is None: - self.tcpSource = TcpSource(self.port, Format.COMPLEX_FLOAT) + self.tcpSource = TcpSource(self.port, self._getTcpSourceFormat()) return self.tcpSource def getBuffer(self): diff --git a/owrx/source/direct.py b/owrx/source/direct.py index e4a5eaf..e8c2025 100644 --- a/owrx/source/direct.py +++ b/owrx/source/direct.py @@ -11,6 +11,10 @@ logger = logging.getLogger(__name__) class DirectSource(SdrSource, metaclass=ABCMeta): + def __init__(self, id, props): + self._conversion = None + super().__init__(id, props) + def onPropertyChange(self, changes): logger.debug("restarting sdr source due to property changes: {0}".format(changes)) self.stop() @@ -48,6 +52,10 @@ class DirectSource(SdrSource, metaclass=ABCMeta): def getFormatConversion(self) -> Optional[Chain]: return None + def _getTcpSourceFormat(self): + conversion = self.getFormatConversion() + return Format.COMPLEX_FLOAT if conversion is None else conversion.getInputFormat() + # override this in subclasses, if necessary def sleepOnRestart(self): pass @@ -57,12 +65,12 @@ class DirectSource(SdrSource, metaclass=ABCMeta): source = self._getTcpSource() buffer = Buffer(source.getOutputFormat()) source.setWriter(buffer) - conversion = self.getFormatConversion() - if conversion is not None: - conversion.setReader(buffer.getReader()) + self._conversion = self.getFormatConversion() + if self._conversion is not None: + self._conversion.setReader(buffer.getReader()) # this one must be COMPLEX_FLOAT buffer = Buffer(Format.COMPLEX_FLOAT) - conversion.setWriter(buffer) + self._conversion.setWriter(buffer) self.buffer = buffer return self.buffer diff --git a/owrx/source/fifi_sdr.py b/owrx/source/fifi_sdr.py index 660c65f..e3999b3 100644 --- a/owrx/source/fifi_sdr.py +++ b/owrx/source/fifi_sdr.py @@ -4,6 +4,8 @@ from subprocess import Popen from csdr.chain import Chain from pycsdr.modules import Convert, Gain from pycsdr.types import Format +from typing import List +from owrx.form.input import Input, TextInput import logging @@ -49,3 +51,15 @@ class FifiSdrDeviceDescription(DirectSourceDeviceDescription): def supportsPpm(self): # not currently mapped, and it's unclear how this should be sent to the device return False + + def getInputs(self) -> List[Input]: + return super().getInputs() + [ + TextInput( + "device", + "Device identifier", + infotext="Alsa audio device identifier", + ), + ] + + def getDeviceOptionalKeys(self): + return super().getDeviceOptionalKeys() + ["device"] From c07e33d19de241dd98b6e3ef1ef294b5c2d76fe1 Mon Sep 17 00:00:00 2001 From: Jakob Ketterl Date: Mon, 19 Sep 2022 19:07:23 +0200 Subject: [PATCH 09/15] update csdr and pycsdr dependencies in docker --- docker/scripts/install-owrx-tools.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docker/scripts/install-owrx-tools.sh b/docker/scripts/install-owrx-tools.sh index 7292a50..748b452 100755 --- a/docker/scripts/install-owrx-tools.sh +++ b/docker/scripts/install-owrx-tools.sh @@ -31,11 +31,13 @@ popd rm -rf js8py git clone https://github.com/jketterl/csdr.git -cmakebuild csdr 0.18.0 +# latest develop as of 2022-09-19 (fifisdr fixes) +cmakebuild csdr 5061ed54666e4ef0ccd9b259bb591c2123a3a3f8 git clone https://github.com/jketterl/pycsdr.git cd pycsdr -git checkout 0.18.0 +# latest develop as of 2022-09-19 (fifisdr fixes) +git checkout 1154d090b5fb2f0de45b3bf62851ac665e251e28 ./setup.py install install_headers cd .. rm -rf pycsdr From 811d95c7bc9b56367f17b9d5cb23389f86e0f817 Mon Sep 17 00:00:00 2001 From: Jakob Ketterl Date: Mon, 19 Sep 2022 18:46:11 +0200 Subject: [PATCH 10/15] fifisdr fixes --- CHANGELOG.md | 4 ++++ debian/changelog | 7 +++++++ owrx/source/__init__.py | 5 ++++- owrx/source/direct.py | 16 ++++++++++++---- owrx/source/fifi_sdr.py | 14 ++++++++++++++ 5 files changed, 41 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 962d2cd..19dd2d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +**1.2.1** +- FifiSDR support fixed (pipeline formats now line up correctly) +- Added "Device" input for FifiSDR devices for sound card selection + **1.2.0** - Major rewrite of all demodulation components to make use of the new csdr/pycsdr and digiham/pydigiham demodulator modules diff --git a/debian/changelog b/debian/changelog index 0425bbe..f5db2fe 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +openwebrx (1.2.1) bullseye jammy; urgency=low + + * FifiSDR support fixed (pipeline formats now line up correctly) + * Added "Device" input for FifiSDR devices for sound card selection + + -- Jakob Ketterl Thu, 16 Jun 2022 21:47:00 +0000 + openwebrx (1.2.0) bullseye jammy; urgency=low * Major rewrite of all demodulation components to make use of the new diff --git a/owrx/source/__init__.py b/owrx/source/__init__.py index ae790be..618d773 100644 --- a/owrx/source/__init__.py +++ b/owrx/source/__init__.py @@ -249,10 +249,13 @@ class SdrSource(ABC): def getPort(self): return self.port + def _getTcpSourceFormat(self): + return Format.COMPLEX_FLOAT + def _getTcpSource(self): with self.modificationLock: if self.tcpSource is None: - self.tcpSource = TcpSource(self.port, Format.COMPLEX_FLOAT) + self.tcpSource = TcpSource(self.port, self._getTcpSourceFormat()) return self.tcpSource def getBuffer(self): diff --git a/owrx/source/direct.py b/owrx/source/direct.py index e4a5eaf..e8c2025 100644 --- a/owrx/source/direct.py +++ b/owrx/source/direct.py @@ -11,6 +11,10 @@ logger = logging.getLogger(__name__) class DirectSource(SdrSource, metaclass=ABCMeta): + def __init__(self, id, props): + self._conversion = None + super().__init__(id, props) + def onPropertyChange(self, changes): logger.debug("restarting sdr source due to property changes: {0}".format(changes)) self.stop() @@ -48,6 +52,10 @@ class DirectSource(SdrSource, metaclass=ABCMeta): def getFormatConversion(self) -> Optional[Chain]: return None + def _getTcpSourceFormat(self): + conversion = self.getFormatConversion() + return Format.COMPLEX_FLOAT if conversion is None else conversion.getInputFormat() + # override this in subclasses, if necessary def sleepOnRestart(self): pass @@ -57,12 +65,12 @@ class DirectSource(SdrSource, metaclass=ABCMeta): source = self._getTcpSource() buffer = Buffer(source.getOutputFormat()) source.setWriter(buffer) - conversion = self.getFormatConversion() - if conversion is not None: - conversion.setReader(buffer.getReader()) + self._conversion = self.getFormatConversion() + if self._conversion is not None: + self._conversion.setReader(buffer.getReader()) # this one must be COMPLEX_FLOAT buffer = Buffer(Format.COMPLEX_FLOAT) - conversion.setWriter(buffer) + self._conversion.setWriter(buffer) self.buffer = buffer return self.buffer diff --git a/owrx/source/fifi_sdr.py b/owrx/source/fifi_sdr.py index 660c65f..e3999b3 100644 --- a/owrx/source/fifi_sdr.py +++ b/owrx/source/fifi_sdr.py @@ -4,6 +4,8 @@ from subprocess import Popen from csdr.chain import Chain from pycsdr.modules import Convert, Gain from pycsdr.types import Format +from typing import List +from owrx.form.input import Input, TextInput import logging @@ -49,3 +51,15 @@ class FifiSdrDeviceDescription(DirectSourceDeviceDescription): def supportsPpm(self): # not currently mapped, and it's unclear how this should be sent to the device return False + + def getInputs(self) -> List[Input]: + return super().getInputs() + [ + TextInput( + "device", + "Device identifier", + infotext="Alsa audio device identifier", + ), + ] + + def getDeviceOptionalKeys(self): + return super().getDeviceOptionalKeys() + ["device"] From 94269e211e806ce14f820c869cc7b6eb040ce4f1 Mon Sep 17 00:00:00 2001 From: Jakob Ketterl Date: Tue, 20 Sep 2022 18:01:43 +0200 Subject: [PATCH 11/15] fix changelog timestamp --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index f5db2fe..57ddc0d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,7 +3,7 @@ openwebrx (1.2.1) bullseye jammy; urgency=low * FifiSDR support fixed (pipeline formats now line up correctly) * Added "Device" input for FifiSDR devices for sound card selection - -- Jakob Ketterl Thu, 16 Jun 2022 21:47:00 +0000 + -- Jakob Ketterl Tue, 20 Sep 2022 16:01:00 +0000 openwebrx (1.2.0) bullseye jammy; urgency=low From 6c01d484934e3204ab4610b35ef8c83acfbdb863 Mon Sep 17 00:00:00 2001 From: Jakob Ketterl Date: Tue, 20 Sep 2022 18:06:03 +0200 Subject: [PATCH 12/15] update version --- owrx/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/owrx/version.py b/owrx/version.py index a939c77..063c62f 100644 --- a/owrx/version.py +++ b/owrx/version.py @@ -1,5 +1,5 @@ from distutils.version import LooseVersion -_versionstring = "1.2.0" +_versionstring = "1.2.1" looseversion = LooseVersion(_versionstring) openwebrx_version = "v{0}".format(looseversion) From e20d94e24129fa2326ced5e6eb318b14bc0ae069 Mon Sep 17 00:00:00 2001 From: Jakob Ketterl Date: Tue, 20 Sep 2022 18:51:09 +0200 Subject: [PATCH 13/15] update dependencies for docker --- docker/scripts/install-owrx-tools.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/scripts/install-owrx-tools.sh b/docker/scripts/install-owrx-tools.sh index 7292a50..24217f2 100755 --- a/docker/scripts/install-owrx-tools.sh +++ b/docker/scripts/install-owrx-tools.sh @@ -31,11 +31,11 @@ popd rm -rf js8py git clone https://github.com/jketterl/csdr.git -cmakebuild csdr 0.18.0 +cmakebuild csdr 0.18.1 git clone https://github.com/jketterl/pycsdr.git cd pycsdr -git checkout 0.18.0 +git checkout 0.18.1 ./setup.py install install_headers cd .. rm -rf pycsdr From 0127e32ea1c0534b7b5bfae67cb0f9022c1b2f2b Mon Sep 17 00:00:00 2001 From: Marat Fayzullin Date: Mon, 26 Sep 2022 15:24:59 -0400 Subject: [PATCH 14/15] Removing dash from APRS callsigns and showing distance to them. --- htdocs/map.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/htdocs/map.js b/htdocs/map.js index 71cae3a..3a0c0a8 100644 --- a/htdocs/map.js +++ b/htdocs/map.js @@ -342,14 +342,14 @@ $(function(){ delete infowindow.locator; delete infowindow.callsign; return infowindow; - } + }; var linkifyCallsign = function(callsign) { if ((callsign_url == null) || (callsign_url == '')) return callsign; else return '' + callsign + ''; }; @@ -368,7 +368,7 @@ $(function(){ Math.cos(rlat1) * Math.cos(rlat2) * Math.sin(difflon/2) * Math.sin(difflon/2) )); return Math.round(d); - } + }; var infowindow; var showLocatorInfoWindow = function(locator, pos) { @@ -406,16 +406,20 @@ $(function(){ var marker = markers[callsign]; var timestring = moment(marker.lastseen).fromNow(); var commentString = ""; + var distance = ""; if (marker.comment) { commentString = '
      ' + marker.comment + '
      '; } + if (receiverMarker) { + distance = " at " + distanceKm(receiverMarker.position, marker.position) + " km"; + } infowindow.setContent( - '

      ' + linkifyCallsign(callsign) + '

      ' + + '

      ' + linkifyCallsign(callsign) + distance + '

      ' + '
      ' + timestring + ' using ' + marker.mode + ( marker.band ? ' on ' + marker.band : '' ) + '
      ' + commentString ); infowindow.open(map, marker); - } + }; var showReceiverInfoWindow = function(marker) { var infowindow = getInfoWindow() @@ -424,7 +428,7 @@ $(function(){ '
      Receiver location
      ' ); infowindow.open(map, marker); - } + }; var getScale = function(lastseen) { var age = new Date().getTime() - lastseen; From 8a7e91be3841f7ac7ac3a462ad8986026100388b Mon Sep 17 00:00:00 2001 From: Jakob Ketterl Date: Fri, 30 Sep 2022 18:51:47 +0200 Subject: [PATCH 15/15] update all docker dependencies --- docker/scripts/install-connectors.sh | 2 +- docker/scripts/install-dependencies-runds.sh | 2 +- docker/scripts/install-owrx-tools.sh | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docker/scripts/install-connectors.sh b/docker/scripts/install-connectors.sh index 2564668..ee3c7ca 100755 --- a/docker/scripts/install-connectors.sh +++ b/docker/scripts/install-connectors.sh @@ -24,7 +24,7 @@ apt-get update apt-get -y install --no-install-recommends $BUILD_PACKAGES git clone https://github.com/jketterl/owrx_connector.git -cmakebuild owrx_connector 0.6.0 +cmakebuild owrx_connector 0.6.1 apt-get -y purge --autoremove $BUILD_PACKAGES apt-get clean diff --git a/docker/scripts/install-dependencies-runds.sh b/docker/scripts/install-dependencies-runds.sh index 32c6c9a..6fc5410 100755 --- a/docker/scripts/install-dependencies-runds.sh +++ b/docker/scripts/install-dependencies-runds.sh @@ -25,7 +25,7 @@ apt-get update apt-get -y install --no-install-recommends $STATIC_PACKAGES $BUILD_PACKAGES git clone https://github.com/jketterl/runds_connector.git -cmakebuild runds_connector 0.2.1 +cmakebuild runds_connector 0.2.2 apt-get -y purge --autoremove $BUILD_PACKAGES apt-get clean diff --git a/docker/scripts/install-owrx-tools.sh b/docker/scripts/install-owrx-tools.sh index 24217f2..947cd7c 100755 --- a/docker/scripts/install-owrx-tools.sh +++ b/docker/scripts/install-owrx-tools.sh @@ -46,11 +46,11 @@ cp codecserver/conf/codecserver.conf /usr/local/etc/codecserver cmakebuild codecserver 0.2.0 git clone https://github.com/jketterl/digiham.git -cmakebuild digiham 0.6.0 +cmakebuild digiham 0.6.1 git clone https://github.com/jketterl/pydigiham.git cd pydigiham -git checkout 0.6.0 +git checkout 0.6.1 ./setup.py install cd .. rm -rf pydigiham