var AdminMenu = { Names: function () { var ajaxnames = new XMLHttpRequest(); ajaxnames.onreadystatechange = function () { if (ajaxnames.readyState === 4 && ajaxnames.status === 200) { NamesEditor.ParseJson(ajaxnames.responseText); } }; ajaxnames.open("GET", "/admin/get_json_names", true); ajaxnames.send(); return false; }, Overlay: function () { return false; }, Settings: function () { var ajaxsettings = new XMLHttpRequest(); ajaxsettings.onreadystatechange = function () { if (ajaxsettings.readyState === 4 && ajaxsettings.status === 200) { Settings.ParseJson(JSON.parse(ajaxsettings.responseText)); } }; ajaxsettings.open("GET", "/admin/get_json_settings", true); ajaxsettings.send(); return false; }, ExImport: function () { var ajaxnames = new XMLHttpRequest(); ajaxnames.onreadystatechange = function () { if (ajaxnames.readyState === 4 && ajaxnames.status === 200) { var ajaxgeo = new XMLHttpRequest(); ajaxgeo.onreadystatechange = function () { if (ajaxgeo.readyState === 4 && ajaxgeo.status === 200) { var ajaxsettings = new XMLHttpRequest(); ajaxsettings.onreadystatechange = function () { if (ajaxsettings.readyState === 4 && ajaxsettings.status === 200) { ExImport.ParseJson(ajaxnames.responseText, ajaxgeo.responseText, ajaxsettings.responseText); } }; ajaxsettings.open("GET", "/admin/get_json_settings", true); ajaxsettings.send(); } }; ajaxgeo.open("GET", "/admin/get_json_geo", true); ajaxgeo.send(); } }; ajaxnames.open("GET", "/admin/get_json_names", true); ajaxnames.send(); return false; } }; var NamesEditor = { iconeditorcounter: 0, ParseJson: function (jsontext) { document.getElementById("content").innerHTML = ""; var namesconfig = JSON.parse(jsontext); var html = "
Namenseinträge in den Einstellungen
"; html += ""; html += ""; html += ""; for (var id in namesconfig) { if (namesconfig.hasOwnProperty(id)) { var nameentry = namesconfig[id]; html += "" + "" + ""; if (nameentry.hasOwnProperty("marker.svg")) { html += ""; } else if (nameentry.hasOwnProperty("icon")) { html += ""; } else { html += ""; } html += "" + ""; } } html += ""; html += ""; html += "
IDNameIcon
" + id + "" + nameentry["name"] + "" + this.ParseIcon(nameentry["marker.svg"]) + "
"; document.getElementById("content").innerHTML = html + "
"; }, ParseIcon: function (markerobj) { var url = "../icons/marker/Marker.svg"; if (markerobj.hasOwnProperty("person")) { url += "?icon=person&marker-bg=hidden"; if (markerobj["person"].hasOwnProperty("org")) { url += "&person-org=" + markerobj["person"]["org"]; } if(markerobj["person"].hasOwnProperty("funct")) { url += "&person-funct=" + markerobj["person"]["funct"]; } if(markerobj["person"].hasOwnProperty("rang")) { url += "&person-rang=" + markerobj["person"]["rang"]; } if(markerobj["person"].hasOwnProperty("text")) { url += "&person-text=" + markerobj["person"]["text"]; } if (markerobj["person"].hasOwnProperty("typ") && Array.isArray(markerobj["person"]["typ"])) { for (i in markerobj["person"]["typ"]) { url += "&person-typ=" + markerobj["person"]["typ"][i]; } } } return ""; }, BuildIconJson: function (url) { var query = this.SplitQueryIntoObject(this.SplitUrlIntoParts(url).query); var markerobj = {}; if (query.hasOwnProperty("icon") && query["icon"] === "person") { markerobj["person"] = {}; if (query.hasOwnProperty("person-org")) { markerobj["person"]["org"] = query["person-org"]; } if (query.hasOwnProperty("person-funct")) { markerobj["person"]["funct"] = query["person-funct"]; } if (query.hasOwnProperty("person-rang")) { markerobj["person"]["rang"] = query["person-rang"]; } if (query.hasOwnProperty("person-text")) { markerobj["person"]["text"] = query["person-text"]; } if (query.hasOwnProperty("person-typ")) { if (Array.isArray(query["person-typ"])) { markerobj["person"]["typ"] = new Array(); for (var i in query["person-typ"]) { markerobj["person"]["typ"].push(query["person-typ"][i]); } } else { markerobj["person"]["typ"] = new Array(); markerobj["person"]["typ"].push(query["person-typ"]); } } } return markerobj; }, Add: function () { var newrow = document.createElement("tr"); newrow.innerHTML = ""; newrow.innerHTML += ""; newrow.innerHTML += " wähle Icon"; newrow.innerHTML += " "; document.getElementById("nametable").children[1].appendChild(newrow); }, Save: function () { var rows = document.getElementById("nametable").children[1].children; var namejson = {}; for (var i = 0; i < rows.length; i++) { if (rows[i].children[0].children.length === 1) { alert("Bitte zuerst alle Zeilen speichern oder Löschen!"); return; } var id = rows[i].children[0].innerText; var name = rows[i].children[1].innerText; namejson[id] = { "name": name }; if (rows[i].children[2].children[0].hasAttribute("data")) { namejson[id]["marker.svg"] = this.BuildIconJson(rows[i].children[2].children[0].data); } } var savenames = new XMLHttpRequest(); savenames.onreadystatechange = function () { if (savenames.readyState === 4) { if (savenames.status === 200) { alert("Änderungen gespeichert!"); } else if (savenames.status === 501) { alert("Ein Fehler ist aufgetreten (invalid JSON)!"); } } }; savenames.open("POST", "/admin/set_json_names", true); savenames.send(JSON.stringify(namejson)); }, Delete: function (el) { var name = el.firstChild.innerHTML; var answ = window.prompt("Wollen sie den Eintrag für \"" + name + "\" wirklich löschen?", ""); if (answ !== null) { el.parentNode.removeChild(el); } }, Edit: function (el) { var id = el.children[0].innerText; var name = el.children[1].innerText; var url = null; if (el.children[2].children[0].hasAttribute("data")) { url = el.children[2].children[0].data; } el.innerHTML = ""; el.innerHTML += ""; if (url === null) { el.innerHTML += " wähle Icon"; } else { el.innerHTML += " "; } el.innerHTML += " "; }, Abort: function (el) { el.parentNode.removeChild(el); }, SaveRow: function (el) { var id = el.children[0].children[0].value; var name = el.children[1].children[0].value; var url = null; if (el.children[2].children.length === 2) { url = el.children[2].children[1].data; } el.innerHTML = "" + id + "" + "" + name + ""; if (url === null) { el.innerHTML += ""; } else { el.innerHTML += ""; } el.innerHTML += " "; }, IconEditor: function (el) { var url = "../icons/marker/Marker.svg?marker-bg=hidden"; el.id = "icon_edit_" + this.iconeditorcounter++; if (el.children.length === 2) { url = el.children[1].data; } var query = this.SplitQueryIntoObject(this.SplitUrlIntoParts(url).query); var ie = document.createElement("div"); ie.id = "iconeditor"; ie.innerHTML = "
" + "
" + "
" + this.CreateSelectBox("Typ", "icon", query, { "person": "Person" }, null, "iconeditor-type-") + "
" + "
" + this.CreateSelectBox("Organisation", "person-org", query, { "fw": "Feuerwehr", "thw": "Technisches Hilfswerk", "hilo": "Hilfsorganisationen, Bundeswehr", "fueh": "Einrichtungen der Führung", "pol": "Polizei, Bundespolizei, Zoll", "sonst": "Sonstige Einrichtungen der Gefahrenabwehr" }) + "
" + this.CreateSelectBox("Funktion", "person-funct", query, { "sonder": "Sonder", "fueh": "Führung" }) + "
" + this.CreateSelectBox("Rang", "person-rang", query, { "trupp": "Trupp", "grupp": "Gruppe", "zug":"Zug" }) + "
" + "Text:
" + this.CreateSelectBox("Typ", "person-typ", query, { "loesch": "Brandbekämpfung/Löscheinsatz", "sani": "Rettungswesen, Sanitätswesen, Gesundheitswesen", "betreu": "Betreuung" }, true) + "
" + "
" + "
" + "
" + "
"; document.getElementsByTagName("body")[0].appendChild(ie); }, CreateSelectBox: function (title, key, query, options, muliple, group) { var html = title + ": "; var eventtext = "NamesEditor.ChangeLinkPreview(\"" + key + "\",this.selectedOptions);"; if (typeof group !== "undefined") { eventtext += " document.getElementById(\"" + group + "\"+this.value).style.display = \"block\";'"; } html += ""; return html; }, SaveIconEditor: function (id) { var cell = document.getElementById(id); cell.innerHTML = " "; cell.removeAttribute("id"); document.getElementById("iconeditor").remove(); }, SplitQueryIntoObject: function (query) { if (query.indexOf("?") !== -1) { query = query.split("?")[1]; } var queryobj = {}; var pairs = query.split("&"); for (var i = 0; i < pairs.length; i++) { var pair = pairs[i].split("="); if (queryobj.hasOwnProperty(decodeURIComponent(pair[0]))) { if (Array.isArray(queryobj[decodeURIComponent(pair[0])])) { queryobj[decodeURIComponent(pair[0])].push(decodeURIComponent(pair[1] || "")); } else { var tmp = queryobj[decodeURIComponent(pair[0])]; queryobj[decodeURIComponent(pair[0])] = new Array(); queryobj[decodeURIComponent(pair[0])].push(tmp); queryobj[decodeURIComponent(pair[0])].push(decodeURIComponent(pair[1] || "")); } } else { queryobj[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || ""); } } return queryobj; }, JoinObjectIntoQuery: function (queryobj) { var query = new Array(); for (var id in queryobj) { if (Array.isArray(queryobj[id])) { for (var i in queryobj[id]) { query.push(encodeURIComponent(id) + "=" + encodeURIComponent(queryobj[id][i])); } } else { query.push(encodeURIComponent(id) + "=" + encodeURIComponent(queryobj[id])); } } return query.join("&"); }, SplitUrlIntoParts: function (url) { var parts = url.split("?"); return { "file": parts[0], "query": parts[1] || "" }; }, ChangeLinkPreview: function (key, val) { var cur = this.SplitUrlIntoParts(document.getElementById("markerprev").data); var query = this.SplitQueryIntoObject(cur.query); if (typeof val === "object") { query[key] = new Array(); for (var i = 0; i < val.length; i++) { query[key].push(val[i].value); if (val[i].value === "---") { delete query[key]; break; } } } else { if (val === "---" || val === "") { delete query[key]; } else { query[key] = val; } } document.getElementById("markerprev").data = cur.file + "?" + this.JoinObjectIntoQuery(query); } }; var Settings = { ParseJson: function (jsonsettings) { var html = "
Einstellungen
"; html += "
Startlocation: Lat, Lon
"; html += "
CellId's für DWD-Wetterwarnungen: (Trennen durch \";\", cap_warncellids_csv)
"; html += "
"; document.getElementById("content").innerHTML = html + "
"; }, Save: function () { var ret = {}; ret.StartPos = {}; ret.StartPos.lat = parseFloat(document.getElementById("startlat").value.replace(",", ".")); ret.StartPos.lon = parseFloat(document.getElementById("startlon").value.replace(",", ".")); ret.CellIds = document.getElementById("wetterids").value.split(";"); var savesettings = new XMLHttpRequest(); savesettings.onreadystatechange = function () { if (savesettings.readyState === 4) { if (savesettings.status === 200) { alert("Änderungen gespeichert!"); } else if (savesettings.status === 501) { alert("Ein Fehler ist aufgetreten (invalid JSON)!"); } } }; savesettings.open("POST", "/admin/set_json_settings", true); savesettings.send(JSON.stringify(ret)); } }; var ExImport = { ParseJson: function (jsonnames, jsongeo, jsonsettings) { html = "
Ex- und Import der Einstellungen
"; html += "
names.json (Namen und Icons)
"; html += "
geo.json (Layer on the MAP) Kml Konverter
"; html += "
settings.json (Settings of the Map)
"; html += "
"; document.getElementById("content").innerHTML = html; document.getElementById("ex_names").value = jsonnames; document.getElementById("ex_geo").value = jsongeo; document.getElementById("ex_settings").value = jsonsettings; }, SaveNames: function () { var savenames = new XMLHttpRequest(); savenames.onreadystatechange = function () { if (savenames.readyState === 4) { if (savenames.status === 200) { alert("Änderungen an names.json gespeichert!"); } else if (savenames.status === 501) { alert("Ein Fehler ist aufgetreten (invalid JSON)!"); } } }; savenames.open("POST", "/admin/set_json_names", true); savenames.send(document.getElementById("ex_names").value); }, SaveGeo: function () { var savegeo = new XMLHttpRequest(); savegeo.onreadystatechange = function () { if (savegeo.readyState === 4) { if (savegeo.status === 200) { alert("Änderungen an geo.json gespeichert!"); } else if (savegeo.status === 501) { alert("Ein Fehler ist aufgetreten (invalid JSON)!"); } } }; savegeo.open("POST", "/admin/set_json_geo", true); savegeo.send(document.getElementById("ex_geo").value); }, SaveSettings: function () { var savesettings = new XMLHttpRequest(); savesettings.onreadystatechange = function () { if (savesettings.readyState === 4) { if (savesettings.status === 200) { alert("Änderungen an settings.json gespeichert!"); } else if (savesettings.status === 501) { alert("Ein Fehler ist aufgetreten (invalid JSON)!"); } } }; savesettings.open("POST", "/admin/set_json_settings", true); savesettings.send(document.getElementById("ex_settings").value); } };