From 15e4188b10b5b731ed846f9f0ec4977abf08df38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Pleva=C4=8D?= Date: Fri, 6 Oct 2023 08:11:39 +0200 Subject: [PATCH] Added support for add station --- web/API/stations.php | 19 +++++++++++ web/VIEWS/dashboard.html | 65 ++++++++++++++++++++++++++++++++++++++ web/static/js/dashboard.js | 46 +++++++++++++++++++++++++++ 3 files changed, 130 insertions(+) create mode 100644 web/static/js/dashboard.js diff --git a/web/API/stations.php b/web/API/stations.php index b8a981d..8e2401b 100644 --- a/web/API/stations.php +++ b/web/API/stations.php @@ -48,4 +48,23 @@ } return $res; + } + + function add($params) { + $stations = new \wsos\database\core\table(\DAL\station::class); + + $myStation = new \DAL\station(); + $myStation->name->set($params["name"]); + $myStation->description->set($params["description"]); + $myStation->locator->set([ + "gps" => [ + "lat" => floatval($params["lat"]), + "lon" => floatval($params["lon"]), + "alt" => floatval($params["alt"]) + ] + ]); + + $myStation->commit(); + + return ["id" => $myStation->id->get()]; } \ No newline at end of file diff --git a/web/VIEWS/dashboard.html b/web/VIEWS/dashboard.html index aed49e9..f94edf6 100644 --- a/web/VIEWS/dashboard.html +++ b/web/VIEWS/dashboard.html @@ -134,6 +134,9 @@

Stations

+
@@ -182,6 +185,68 @@ + + + diff --git a/web/static/js/dashboard.js b/web/static/js/dashboard.js new file mode 100644 index 0000000..701813d --- /dev/null +++ b/web/static/js/dashboard.js @@ -0,0 +1,46 @@ +function addStation() { + var station = new FormData(); + + var name = document.getElementById("station-name").value; + var lat = document.getElementById("station-lat").value; + var lon = document.getElementById("station-lon").value; + var alt = document.getElementById("station-alt").value; + var description = document.getElementById("station-description").value; + + station.append('name', name); + station.append('lat', lat); + station.append('lon', lon); + station.append('alt', alt); + station.append('description', description); + + var xhttp = new XMLHttpRequest(); + xhttp.onreadystatechange = function() { + if (this.readyState == 4 && this.status == 200) { + alert(JSON.parse(this.responseText).id); + } + }; + + xhttp.open("POST", "/api/station/add", true); + xhttp.send(station); +} + +function updateStationMap() { + setTimeout(function(){ stationMap.invalidateSize()}, 400); + + var lat = document.getElementById("station-lat").value; + var lon = document.getElementById("station-lon").value; + + var newLatLon = new L.LatLng(lat, lon); + stationMarker.setLatLng(newLatLon); + + stationMap.setView(stationMarker.getLatLng(), 5); + } + + +var stationMap = L.map('stationMap').setView([0, 0], 1); + +L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', { + attribution: '© OpenStreetMap contributors' +}).addTo(stationMap); + +var stationMarker = L.marker([0, 0]).addTo(stationMap).bindPopup('Your station coordinates');