From e9cb5d54be460fe1a272bf3c72451da9505eced2 Mon Sep 17 00:00:00 2001 From: Jakob Ketterl Date: Sat, 27 Feb 2021 01:00:38 +0100 Subject: [PATCH] send changed keys over websocket connection for the map --- htdocs/map.js | 89 +++++++++++++++++++++++++--------------------- owrx/connection.py | 15 ++++---- 2 files changed, 57 insertions(+), 47 deletions(-) diff --git a/htdocs/map.js b/htdocs/map.js index 8b2003f..af879d0 100644 --- a/htdocs/map.js +++ b/htdocs/map.js @@ -1,4 +1,4 @@ -(function(){ +$(function(){ var query = window.location.search.replace(/^\?/, '').split('&').map(function(v){ var s = v.split('='); var r = {}; @@ -212,6 +212,8 @@ var reconnect_timeout = false; + var config = {} + var connect = function(){ var ws = new WebSocket(ws_url); ws.onopen = function(){ @@ -225,58 +227,65 @@ return } if (e.data.substr(0, 16) == "CLIENT DE SERVER") { - console.log("Server acknowledged WebSocket connection."); return } try { var json = JSON.parse(e.data); switch (json.type) { case "config": - var config = json.value; - var receiverPos = { - lat: config.receiver_gps.lat, - lng: config.receiver_gps.lon - }; - if (!map) $.getScript("https://maps.googleapis.com/maps/api/js?key=" + config.google_maps_api_key).done(function(){ - map = new google.maps.Map($('.openwebrx-map')[0], { - center: receiverPos, - zoom: 5, - }); + Object.assign(config, json.value); + if ('receiver_gps' in config) { + var receiverPos = { + lat: config.receiver_gps.lat, + lng: config.receiver_gps.lon + }; + if (!map) $.getScript("https://maps.googleapis.com/maps/api/js?key=" + config.google_maps_api_key).done(function(){ + map = new google.maps.Map($('.openwebrx-map')[0], { + center: receiverPos, + zoom: 5, + }); - $.getScript("static/lib/nite-overlay.js").done(function(){ - nite.init(map); - setInterval(function() { nite.refresh() }, 10000); // every 10s - }); - $.getScript('static/lib/AprsMarker.js').done(function(){ - processUpdates(updateQueue); - updateQueue = []; - }); + $.getScript("static/lib/nite-overlay.js").done(function(){ + nite.init(map); + setInterval(function() { nite.refresh() }, 10000); // every 10s + }); + $.getScript('static/lib/AprsMarker.js').done(function(){ + processUpdates(updateQueue); + updateQueue = []; + }); - var $legend = $(".openwebrx-map-legend"); - setupLegendFilters($legend); - map.controls[google.maps.ControlPosition.LEFT_BOTTOM].push($legend[0]); + var $legend = $(".openwebrx-map-legend"); + setupLegendFilters($legend); + map.controls[google.maps.ControlPosition.LEFT_BOTTOM].push($legend[0]); - if (!receiverMarker) { - receiverMarker = new google.maps.Marker(); - receiverMarker.addListener('click', function() { - showReceiverInfoWindow(receiverMarker); + if (!receiverMarker) { + receiverMarker = new google.maps.Marker(); + receiverMarker.addListener('click', function() { + showReceiverInfoWindow(receiverMarker); + }); + } + receiverMarker.setOptions({ + map: map, + position: receiverPos, + title: config['receiver_name'], + config: config + }); + }); else { + receiverMarker.setOptions({ + map: map, + position: receiverPos, + config: config }); } + } + if ('receiver_name' in config && receiverMarker) { receiverMarker.setOptions({ - map: map, - position: receiverPos, - title: config['receiver_name'], - config: config - }); - }); else { - receiverMarker.setOptions({ - map: map, - position: receiverPos, - title: config['receiver_name'], - config: config + title: config['receiver_name'] }); } - retention_time = config.map_position_retention_time * 1000; + if ('map_position_retention_time' in config) { + retention_time = config.map_position_retention_time * 1000; + } break; case "update": processUpdates(json.value); @@ -464,4 +473,4 @@ }); } -})(); +}); diff --git a/owrx/connection.py b/owrx/connection.py index 93ccdba..bc6f589 100644 --- a/owrx/connection.py +++ b/owrx/connection.py @@ -459,14 +459,15 @@ class MapConnection(OpenWebRxClient): super().__init__(conn) pm = Config.get() - self.write_config( - pm.filter( - "google_maps_api_key", - "receiver_gps", - "map_position_retention_time", - "receiver_name", - ).__dict__() + filtered_config = pm.filter( + "google_maps_api_key", + "receiver_gps", + "map_position_retention_time", + "receiver_name", ) + filtered_config.wire(self.write_config) + + self.write_config(filtered_config.__dict__()) Map.getSharedInstance().addClient(self)