From 0bc3f6c1e7ae88607275d6a078199058ab63f3da Mon Sep 17 00:00:00 2001 From: BlubbFish Date: Mon, 29 Apr 2019 23:08:46 +0200 Subject: [PATCH] [1.2.6] New Types of marker for person --- Lora-Map/Model/Marker.cs | 13 +++++ Lora-Map/Properties/AssemblyInfo.cs | 5 +- Lora-Map/resources/admin/js/menu.js | 78 +++++++++++++++++++++++++---- 3 files changed, 84 insertions(+), 12 deletions(-) diff --git a/Lora-Map/Model/Marker.cs b/Lora-Map/Model/Marker.cs index b6417df..fedef22 100644 --- a/Lora-Map/Model/Marker.cs +++ b/Lora-Map/Model/Marker.cs @@ -29,6 +29,13 @@ namespace Fraunhofer.Fit.IoT.LoraMap.Model if(json["person"].ContainsKey("text") && json["person"]["text"].IsString) { ret += "&person-text=" + (String)json["person"]["text"]; } + if(json["person"].ContainsKey("typ") && json["person"]["typ"].IsArray) { + foreach(JsonData item in json["person"]["typ"]) { + if(item.IsString) { + ret += "&person-typ=" + (String)item; + } + } + } } ret += (ret.Contains("?")) ? "&name=" + name : "?name=" + name; return ret; @@ -100,6 +107,12 @@ namespace Fraunhofer.Fit.IoT.LoraMap.Model xmlpersontext.Item(0).InnerText = keyvalue[1]; } break; + case "person-typ": + XmlNodeList xmlpersontyp = this.svg.DocumentElement.SelectNodes("//*[local-name()='defs'][@id='people-def']"); + if(xmlpersontyp.Count == 1) { + xmlpersontyp.Item(0).InnerXml += ""; + } + break; } } } diff --git a/Lora-Map/Properties/AssemblyInfo.cs b/Lora-Map/Properties/AssemblyInfo.cs index 7576b35..7c414f9 100644 --- a/Lora-Map/Properties/AssemblyInfo.cs +++ b/Lora-Map/Properties/AssemblyInfo.cs @@ -33,8 +33,8 @@ using System.Runtime.InteropServices; // Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden, // übernehmen, indem Sie "*" eingeben: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.2.5")] -[assembly: AssemblyFileVersion("1.2.5")] +[assembly: AssemblyVersion("1.2.6")] +[assembly: AssemblyFileVersion("1.2.6")] /* * 1.1.1 Add Debian package config @@ -50,4 +50,5 @@ using System.Runtime.InteropServices; * 1.2.3 #9 display polygons and marker on the map * 1.2.4 Can draw Textmarkers on the Map, use MGRS (UTM) on the Map * 1.2.5 #10 text Letzer Datenempfang is too long when scrollbar is there and #11 set textsize for every zoomlevel +* 1.2.6 New Types of marker for person */ diff --git a/Lora-Map/resources/admin/js/menu.js b/Lora-Map/resources/admin/js/menu.js index f9925fb..7202629 100644 --- a/Lora-Map/resources/admin/js/menu.js +++ b/Lora-Map/resources/admin/js/menu.js @@ -78,6 +78,11 @@ var NamesEditor = { 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 ""; }, @@ -98,6 +103,17 @@ var NamesEditor = { 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; }, @@ -191,29 +207,43 @@ var NamesEditor = { ie.innerHTML = "
" + "
" + "
" + - this.CreateSelectBox("Typ", "icon", query, { "person": "Person" }, "iconeditor-type-") + "
" + + 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, group) { + CreateSelectBox: function (title, key, query, options, muliple, group) { var html = title + ": "; - var eventtext = "NamesEditor.ChangeLinkPreview(\"" + key + "\",this.value);"; + var eventtext = "NamesEditor.ChangeLinkPreview(\"" + key + "\",this.selectedOptions);"; if (typeof group !== "undefined") { eventtext += " document.getElementById(\"" + group + "\"+this.value).style.display = \"block\";'"; } - html += ""; + if (typeof muliple === "undefined" || muliple === null) { + html += ""; + } for (var value in options) { if (query.hasOwnProperty(key) && query[key] === value) { html += ""; + } else if (query.hasOwnProperty(key) && Array.isArray(query[key])) { + var notinqueryarray = true; + for (var i in query[key]) { + if (query[key][i] === value) { + notinqueryarray = false; + html += ""; + } + } + if (notinqueryarray) { + html += ""; + } } else { html += ""; } @@ -235,14 +265,31 @@ var NamesEditor = { var pairs = query.split("&"); for (var i = 0; i < pairs.length; i++) { var pair = pairs[i].split("="); - queryobj[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || ""); + 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) { - query.push(encodeURIComponent(id) + "=" + encodeURIComponent(queryobj[id])); + 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("&"); }, @@ -253,10 +300,21 @@ var NamesEditor = { ChangeLinkPreview: function (key, val) { var cur = this.SplitUrlIntoParts(document.getElementById("markerprev").data); var query = this.SplitQueryIntoObject(cur.query); - if (val === "---") { - delete query[key]; + 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 { - query[key] = val; + if (val === "---" || val === "") { + delete query[key]; + } else { + query[key] = val; + } } document.getElementById("markerprev").data = cur.file + "?" + this.JoinObjectIntoQuery(query); }