From 857eee185e2a267009a4b50be14648321cc8a93d Mon Sep 17 00:00:00 2001 From: Joerg Lehmann Date: Wed, 10 Mar 2021 20:34:14 +0100 Subject: [PATCH] add some map logic... --- metrics.go | 7 +++++ snippets/tracker.html | 19 ++++++++++-- static/css/map.css | 36 ++++++++++++++++++++++ static/js/map.js.orig | 69 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 128 insertions(+), 3 deletions(-) create mode 100644 static/css/map.css create mode 100644 static/js/map.js.orig diff --git a/metrics.go b/metrics.go index b92d6ad..e6d2e4e 100644 --- a/metrics.go +++ b/metrics.go @@ -4,6 +4,7 @@ import ( "bufio" "bytes" "fmt" + "html/template" "io/ioutil" "log" "net/http" @@ -13,11 +14,14 @@ import ( type OneMetric struct { Deveui string + DeveuiJS template.JS Alias string Readonly bool Timestamp string Lat string Lon string + LatJS template.JS + LonJS template.JS Vbat string Fw string BatteryPercent string @@ -336,8 +340,10 @@ func getLastMetrics(deveui string) OneMetric { field := s[7] if field == "lat" { res.Lat = value + res.LatJS = template.JS(value) } else if field == "lon" { res.Lon = value + res.LonJS = template.JS(value) } else if field == "vbat" { res.Vbat = value } else if field == "fw" { @@ -346,6 +352,7 @@ func getLastMetrics(deveui string) OneMetric { } } res.Deveui = deveui + res.DeveuiJS = template.JS(deveui) res.Alias = getDevAlias(deveui) res.Readonly = false res.ActiveUntil = getActiveUntil(deveui) diff --git a/snippets/tracker.html b/snippets/tracker.html index 6301ca0..7b6d129 100644 --- a/snippets/tracker.html +++ b/snippets/tracker.html @@ -132,6 +132,22 @@ Sie erhalten eine E-Mail, sobald die Zahlung erfolgreich abgeschlossen ist. + + +
+ + +
Abo aktiv bis @@ -161,13 +177,10 @@ Sie erhalten eine E-Mail, sobald die Zahlung erfolgreich abgeschlossen ist. {{ end }}
- {{end}} - - {{ else }}

Bitte zuerst einloggen

{{end}} diff --git a/static/css/map.css b/static/css/map.css new file mode 100644 index 0000000..0729a77 --- /dev/null +++ b/static/css/map.css @@ -0,0 +1,36 @@ +.map { + height: 350px; +} +.popup { + background-color: white; + padding-left: 8px; + padding-bottom: 8px; + padding-top: 8px; + width: 220px; + color: #555; + font: 11px tahoma,arial,verdana,sans-serif; +} +.title { + margin-top: -4px; + font-weight: bold; +} +.subtitle { + font-style: normal; + margin-bottom: -3px; + margin-top: -5px; +} +.middle { + margin-top: -9px; +} +.close { + cursor: pointer; + text-decoration: none; + position: absolute; + top: 2px; + right: 8px; + font-size: larger; + font-weight: bold; +} +button { + cursor: pointer; +} diff --git a/static/js/map.js.orig b/static/js/map.js.orig new file mode 100644 index 0000000..975ba8a --- /dev/null +++ b/static/js/map.js.orig @@ -0,0 +1,69 @@ +// Create a GeoAdmin Map +var map = new ga.Map({ + + // Define the div where the map is placed + target: 'map', + + // Create a view + view: new ol.View({ + + // Define the default resolution + // 10 means that one pixel is 10m width and height + // List of resolution of the WMTS layers: + // 650, 500, 250, 100, 50, 20, 10, 5, 2.5, 2, 1, 0.5, 0.25, 0.1 + resolution: 650, + + // Define a coordinate CH1903+ (EPSG:2056) for the center of the view + center: [2660000, 1190000] + }) +}); + +// Create a background layer +var lyr1 = ga.layer.create('ch.swisstopo.pixelkarte-grau'); + +// Add the layers in the map +map.addLayer(lyr1); + +var position = [2709136, 1270186]; + +// Zoom on the position +map.getView().setCenter(position); +map.getView().setResolution(10); + +// Create the layer with the icon +var vectorLayer = new ol.layer.Vector({ + source: new ol.source.Vector({ + features: [new ol.Feature({ + geometry: new ol.geom.Point(position) + })] + }), + style: new ol.style.Style({ + image: new ol.style.Icon({ + anchor: [0.5, 0.5], + anchorXUnits: 'fraction', + anchorYUnits: 'fraction', + src: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oLCAwhG8L1qXwAAAJ1SURBVDjLTZPBThRBEIa/6uleYtDVA8QHUGIw4ehVb3Ii+AK+guGid696Ud/AN4BAiFw9ePUAbmK4SIAo7OxuZtnZmZ7umfLQED1U0of6qur/q1oA9PgYWVlBBwNHCGt4v8Ws3GRa9BmPoSimDIc7jEYfqOtD+fw56MYGsruL6GCAPH6Mqjq+f9+jbZ9T1zArYVoo4zFMJsJoBMMh5PkBT55syNu3QZ89QwD07MxxcjJBZJEQFGME7+H8HC4vIc+5LqSMRsJsVuDcsnz7Fozu7zuOjvYoy0WKqeKccP8+3LkDvoHJJEVRwHQqVJVydXWXP392dXXVWcpyjbZ9DiggGIGmgdNTOPkFFxc3MMxmUJaCb5TQrBPCmmU43AKg64QQElhVMBrDZJzgsryBoaohBiFGEHllyfNNOoW2BV9DNU8G3gBlCfM51HWCQ4BOQQxo98Ly+3cfa5UQJCVVCZjP07uuUzQNhAhdB5kBI4qau5Y8hyxLlb3/B3gPtU9gDBDbZJPNQIRr2Viqaor3fWJMyU2T3G8aaGOS1ikYAZOBMSlAiLGwVNUOV1cvaVuIMU0S22uwTbvJDFgLCwsJjhFUQXXbEOMHQoC6VrxPBdr4H5wl8N49WFqC27eh11NcD5z7ZFjoHaJ6QIhCjErbpe4qSa+zcOsWLC4mCaqKdYK1X/D1YTrlN68de/s51byPqoIImUnde700Qa8HoIgIIRT8OFqWeRWMrq8j794HHj1YQuQA1XSNxkCWKSJK26YVqgqdfuHnz2WZV0EfPrz+TE+fIl+/oqurDu/XMGYLkU2c62MtwJQs28aYj1TVoQwGQVdWkONj/gL3ho+XUT2DTgAAAABJRU5ErkJggg==' + }) + }) +}); +map.addLayer(vectorLayer); + +// Create the popup +var popup = new ol.Overlay({ + position: position, + element: $( + '') +}); +map.addOverlay(popup); +alert("Blabla");