From f0ef5bb371c47156dec931f2adab028c884c5744 Mon Sep 17 00:00:00 2001 From: Jakob Ketterl Date: Sun, 29 Mar 2020 21:40:29 +0200 Subject: [PATCH] add location picker so set receiver location --- htdocs/admin.html | 3 +++ htdocs/css/admin.css | 4 ++++ htdocs/settings.js | 23 +++++++++++++++++++++++ owrx/form/__init__.py | 9 +++++++-- 4 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 htdocs/settings.js diff --git a/htdocs/admin.html b/htdocs/admin.html index b7310f6..54e8fe4 100644 --- a/htdocs/admin.html +++ b/htdocs/admin.html @@ -5,6 +5,9 @@ + + + diff --git a/htdocs/css/admin.css b/htdocs/css/admin.css index d948451..8836244 100644 --- a/htdocs/css/admin.css +++ b/htdocs/css/admin.css @@ -14,3 +14,7 @@ body { .buttons { text-align: right; } + +.row .map-input { + margin: 15px 15px 0; +} diff --git a/htdocs/settings.js b/htdocs/settings.js new file mode 100644 index 0000000..89c3eea --- /dev/null +++ b/htdocs/settings.js @@ -0,0 +1,23 @@ +$(function(){ + $(".map-input").each(function(el) { + var $el = $(this); + var field_id = $el.attr("for"); + var $lat = $('#' + field_id + '-lat'); + var $lon = $('#' + field_id + '-lon'); + $.getScript("https://maps.googleapis.com/maps/api/js?key=" + $el.data("key")).done(function(){ + $el.css("height", "200px"); + var lp = new locationPicker($el.get(0), { + lat: parseFloat($lat.val()), + lng: parseFloat($lon.val()) + }, { + zoom: 7 + }); + + google.maps.event.addListener(lp.map, 'idle', function(event){ + var pos = lp.getMarkerPosition(); + $lat.val(pos.lat); + $lon.val(pos.lng); + }); + }); + }) +}); \ No newline at end of file diff --git a/owrx/form/__init__.py b/owrx/form/__init__.py index 399665a..2861683 100644 --- a/owrx/form/__init__.py +++ b/owrx/form/__init__.py @@ -1,5 +1,6 @@ from abc import ABC, abstractmethod from owrx.service import ServiceDetector +from owrx.config import Config class Input(ABC): @@ -81,13 +82,17 @@ class FloatInput(NumberInput): class LocationInput(Input): def render_input(self, value): - # TODO make this work and pretty return """
{inputs}
+
+
+
""".format( - inputs="".join(self.render_sub_input(value, id) for id in ["lat", "lon"]) + id=self.id, + inputs="".join(self.render_sub_input(value, id) for id in ["lat", "lon"]), + key=Config.get()["google_maps_api_key"], ) def render_sub_input(self, value, id):