() {
{ "title", "Online Map" },
diff --git a/Lora-Map/resources/admin/js/menu.js b/Lora-Map/resources/admin/js/menu.js
index 434ab2c..704d969 100644
--- a/Lora-Map/resources/admin/js/menu.js
+++ b/Lora-Map/resources/admin/js/menu.js
@@ -375,12 +375,16 @@ var Settings = {
if (typeof jsonsettings.Counting === "undefined") {
jsonsettings.Counting = [];
}
+ if (typeof jsonsettings.Sensors === "undefined") {
+ jsonsettings.Sensors = [];
+ }
var html = "Einstellungen
";
html += "
Startpunkt: Lat, Lon
";
html += "
";
html += "
Radius für das Grid um den Startpunkt: m
";
html += "
Fight Dedection Kameras:
" + this._renderFightDedection(jsonsettings.FightDedection) + "
";
html += "
Crowd Density Kameras:
" + this._renderCrowdDensity(jsonsettings.CrwodDensity) + "
";
+ html += "
Sensors:
" + this._renderSensorSettings(jsonsettings.Sensors) + "
";
html += "
";
document.getElementById("content").innerHTML = html + "
";
},
@@ -434,6 +438,26 @@ var Settings = {
}
ret.CrwodDensity = crowdjson;
+ var rowss = document.getElementById("sensortable").children[1].children;
+ var sensorjson = {};
+ for (i = 0; i < rowss.length; i++) {
+ if (rowss[i].children[0].children.length === 1) {
+ alert("Bitte zuerst alle Zeilen speichern oder Löschen!");
+ return;
+ }
+ id = rowss[i].children[0].innerText;
+ coord = rowss[i].children[2].innerHTML.split(";");
+ sensorjson[id] = {
+ "Poly": {
+ "Lat": this._filterFloat(coord[0]),
+ "Lon": this._filterFloat(coord[1])
+ },
+ "Level": this._filterFloat(rowss[i].children[3].innerText),
+ "Alias": rowss[i].children[1].innerText
+ };
+ }
+ ret.Sensors = sensorjson;
+
var savesettings = new XMLHttpRequest();
savesettings.onreadystatechange = function () {
if (savesettings.readyState === 4) {
@@ -447,6 +471,27 @@ var Settings = {
savesettings.open("POST", "/admin/set_json_settings", true);
savesettings.send(JSON.stringify(ret));
},
+ _renderSensorSettings: function (json) {
+ var ret = "";
+ ret += "";
+ ret += "ID | Alias | Koordinaten | Warn above | |
";
+
+ ret += "";
+ for (var id in json) {
+ ret += "" +
+ "" + id + " | " +
+ "" + json[id].Alias + " | " +
+ "" + json[id].Poly.Lat + ";" + json[id].Poly.Lon + " | " +
+ "" + json[id].Level + " | " +
+ "  | " +
+ "
";
+ }
+ ret += "";
+
+ ret += " | | | |  |
";
+ ret += "
";
+ return ret;
+ },
_renderFightDedection: function (json) {
var ret = "";
ret += "";
@@ -493,12 +538,21 @@ var Settings = {
ret += "
";
return ret;
},
+ AddSensor: function () {
+ var newrow = document.createElement("tr");
+ newrow.innerHTML = " | ";
+ newrow.innerHTML += " | ";
+ newrow.innerHTML += " | ";
+ newrow.innerHTML += " | ";
+ newrow.innerHTML += "  | ";
+ document.getElementById("sensortable").children[1].appendChild(newrow);
+ },
AddFight: function () {
var newrow = document.createElement("tr");
newrow.innerHTML = " | ";
newrow.innerHTML += " | ";
- newrow.innerHTML = " | ";
- newrow.innerHTML = " | ";
+ newrow.innerHTML += " | ";
+ newrow.innerHTML += " | ";
newrow.innerHTML += "  | ";
document.getElementById("fighttable").children[1].appendChild(newrow);
},
@@ -507,13 +561,36 @@ var Settings = {
newrow.innerHTML = " | ";
newrow.innerHTML += " | ";
newrow.innerHTML += " | ";
- newrow.innerHTML = " | ";
+ newrow.innerHTML += " | ";
newrow.innerHTML += "  | ";
document.getElementById("crowdtable").children[1].appendChild(newrow);
},
Abort: function (el) {
el.parentNode.removeChild(el);
},
+ SaveRowSensor: function (el) {
+ var coords = el.children[2].children[0].value;
+ var coord = coords.split(";");
+ var fail = false;
+ if (coord.length !== 2) {
+ fail = true;
+ } else if (isNaN(this._filterFloat(coord[0])) || isNaN(this._filterFloat(coord[1]))) {
+ fail = true;
+ }
+ if (isNaN(this._filterFloat(el.children[3].children[0].value))) {
+ alert("Die Eingabe des Alertlevel erwartet einen Float");
+ return;
+ }
+ if (fail) {
+ alert("Die Eingabe der Koordinaten ist nicht Korrekt!\n\nBeispiel:\n50.7;7.8");
+ return;
+ }
+ el.innerHTML = "" + el.children[0].children[0].value + " | " +
+ "" + el.children[1].children[0].value + " | " +
+ "" + coords + " | " +
+ "" + this._filterFloat(el.children[3].children[0].value) + " | " +
+ "  | ";
+ },
SaveRowfight: function (el) {
var coords = el.children[1].children[0].value.replace(/\n/gi, "
");
var coordscheck = coords.split("
");
@@ -541,7 +618,7 @@ var Settings = {
"" + coords + " | " +
"" + el.children[2].children[0].value + " | " +
"" + this._filterFloat(el.children[3].children[0].value) + " | " +
- "  | ";
+ "  | ";
},
SaveRowdensity: function (el) {
var coords = el.children[2].children[0].value.replace(/\n/gi, "
");
@@ -570,7 +647,7 @@ var Settings = {
"" + el.children[1].children[0].value + " | " +
"" + coords + " | " +
"" + el.children[3].children[0].value + " | " +
- "  | ";
+ "  | ";
},
Delete: function (el) {
var answ = window.prompt("Wollen sie den Eintrag für \"" + el.firstChild.innerHTML + "\" wirklich löschen?", "");
@@ -578,6 +655,13 @@ var Settings = {
el.parentNode.removeChild(el);
}
},
+ EditSensor: function (el) {
+ el.innerHTML = " | " +
+ " | " +
+ " | " +
+ " | " +
+ "  | ";
+ },
EditFight: function (el) {
el.innerHTML = " | " +
" | " +
diff --git a/Lora-Map/resources/css/global.css b/Lora-Map/resources/css/global.css
index 45019bb..69b38ff 100644
--- a/Lora-Map/resources/css/global.css
+++ b/Lora-Map/resources/css/global.css
@@ -21,6 +21,22 @@
color: #ffffff;
font-weight: bold;
}
+#bigmap .leaflet-map-pane .leaflet-marker-pane .mapsensor {
+ background-color: white;
+ border: 2px solid black;
+ padding: 5px;
+ border-radius: 10px;
+}
+#bigmap .leaflet-map-pane .leaflet-marker-pane .mapsensor span {
+ display: block;
+ text-align: center;
+}
+#bigmap .leaflet-map-pane .leaflet-marker-pane .mapsensor .name {
+ font-weight: bold;
+}
+#bigmap .leaflet-map-pane .leaflet-marker-pane .mapsensor .wind {
+ font-size: 18px;
+}
/* Optional: Makes the sample page fill the window. */
html, body {
@@ -318,22 +334,22 @@ object {
}
#overlays #cameracount {
- position: absolute;
- top: 10px;
- left: 61px;
- z-index: 50000;
- font-size: 11px;
- font-family: "Verdana";
- padding: 3px;
- display: inline-flex;
+ position: absolute;
+ top: 10px;
+ left: 61px;
+ z-index: 50000;
+ font-size: 11px;
+ font-family: "Verdana";
+ padding: 3px;
+ display: inline-flex;
+}
+#overlays #cameracount .camera {
+ background-color: white;
+ border: rgba(0,0,0,0.3) solid 2px;
+ border-radius: 5px;
+ padding: 4px;
+ margin-right: 5px;
}
- #overlays #cameracount .camera {
- background-color: white;
- border: rgba(0,0,0,0.3) solid 2px;
- border-radius: 5px;
- padding: 4px;
- margin-right: 5px;
- }
#overlays #cameracount .camera span {
display: block;
text-align: center;
diff --git a/Lora-Map/resources/js/functions.js b/Lora-Map/resources/js/functions.js
index af4a7f5..61c211d 100644
--- a/Lora-Map/resources/js/functions.js
+++ b/Lora-Map/resources/js/functions.js
@@ -28,6 +28,7 @@
MarkerObject._ParseAJAXPanic(json["panic"]);
OverlayObject._ParseAJAXCount(json["cameracount"]);
OverlayObject._ParseAJAXDensity(json["crowdcount"]);
+ MarkerObject._ParseAJAXSensors(json["sensors"]);
MenuObject._ParseAJAXWeatherAlerts(json["weatherwarnings"]);
MapObject._ParseAJAXFightDedection(json["fightdedect"]);
MapObject._ParseAJAXDensity(json["crowdcount"]);
@@ -45,6 +46,7 @@
MapObject._ParseAJAXGeo(json["getgeo"]);
MapObject._ParseAJAXSettings(json["startup"]);
OverlayObject._ParseAJAXSettings(json["startup"]);
+ MarkerObject._ParseAJAXSettings(json["startup"]);
}
};
getonce.open("GET", "/getonce", true);
diff --git a/Lora-Map/resources/js/marker.js b/Lora-Map/resources/js/marker.js
index 44dd496..ac833f9 100644
--- a/Lora-Map/resources/js/marker.js
+++ b/Lora-Map/resources/js/marker.js
@@ -3,6 +3,8 @@
PanicData: {},
LocationData: {},
VisibleMarkers: {},
+ _Sensors: {},
+ _SensorSettings: {},
Start: function () {
return this;
},
@@ -90,6 +92,36 @@
}
}
},
+ _ParseAJAXSensors: function (sensorjson) {
+ for (var sensorid in sensorjson) {
+ if (sensorjson.hasOwnProperty(sensorid)) {
+ if (this._SensorSettings.hasOwnProperty(sensorid)) {
+ var sensordata = sensorjson[sensorid];
+ var sensorsettings = this._SensorSettings[sensorid];
+
+ if (!this._Sensors.hasOwnProperty(sensorid)) { //Sensor is not drawn until now
+ var sensor = null;
+ var sensorIcon = L.divIcon({
+ className: 'sensoricon',
+ iconSize: [60, 120],
+ iconAnchor: [30, 60],
+ html: '' + sensorsettings.Alias + '' +
+ '' + sensordata.Temperature + ' °C' +
+ '' + sensordata.Windspeed + ' m/s' +
+ '' + sensordata.Humidity + ' %rl
'
+ });
+ sensor = L.marker(sensorsettings.Coordinates, { 'title': sensorsettings.Alias, 'icon': sensorIcon });
+ this._Sensors[sensorid] = sensor.addTo(MapObject.Map);
+ } else { //Sensor refresh!
+
+ }
+ }
+ }
+ }
+ },
+ _ParseAJAXSettings: function(json) {
+ this._SensorSettings = json["Sensors"];
+ },
ChangeFilter: function (select) {
this.VisibleMarkers = {};
if (select.selectedOptions.length > 0) {