From b53f95efecd4bb9c2b3de09ab5af2d5d7d1956e6 Mon Sep 17 00:00:00 2001 From: BlubbFish Date: Tue, 26 Mar 2019 18:43:26 +0100 Subject: [PATCH] change parsing of names.json make marker visible in menu.js --- Lora-Map/Model/Botclient.cs | 8 +++- Lora-Map/Model/Marker.cs | 46 +++++++++++++++++++++- Lora-Map/names.json | 18 ++++++++- Lora-Map/resources/icons/marker/Marker.svg | 2 +- Lora-Map/resources/js/menu.js | 14 +++++-- 5 files changed, 80 insertions(+), 8 deletions(-) diff --git a/Lora-Map/Model/Botclient.cs b/Lora-Map/Model/Botclient.cs index bdcc23f..c587ea0 100644 --- a/Lora-Map/Model/Botclient.cs +++ b/Lora-Map/Model/Botclient.cs @@ -61,9 +61,15 @@ namespace Fraunhofer.Fit.IoT.LoraMap.Model { if(marker.ContainsKey(id)) { if(marker[id].ContainsKey("name") && marker[id]["name"].IsString) { this.Name = (String)marker[id]["name"]; + } else { + this.Name = id; } - if(marker[id].ContainsKey("icon") && marker[id]["icon"].IsString) { + if(marker[id].ContainsKey("marker.svg") && marker[id]["marker.svg"].IsObject) { + this.Icon = Marker.ParseMarkerConfig(marker[id]["marker.svg"], this.Name); + } else if(marker[id].ContainsKey("icon") && marker[id]["icon"].IsString) { this.Icon = (String)marker[id]["icon"]; + } else { + this.Icon = null; } } else { this.Name = id; diff --git a/Lora-Map/Model/Marker.cs b/Lora-Map/Model/Marker.cs index 17fd017..b6417df 100644 --- a/Lora-Map/Model/Marker.cs +++ b/Lora-Map/Model/Marker.cs @@ -1,6 +1,7 @@ using System; using System.IO; using System.Xml; +using LitJson; namespace Fraunhofer.Fit.IoT.LoraMap.Model { @@ -12,6 +13,27 @@ namespace Fraunhofer.Fit.IoT.LoraMap.Model this.ParseParams(hash); } + public static String ParseMarkerConfig(JsonData json, String name) { + String ret = "icons/marker/Marker.svg"; + if(json.ContainsKey("person") && json["person"].IsObject) { + ret += "?icon=person"; + if(json["person"].ContainsKey("org") && json["person"]["org"].IsString) { + ret += "&person-org=" + (String)json["person"]["org"]; + } + if(json["person"].ContainsKey("funct") && json["person"]["funct"].IsString) { + ret += "&person-funct=" + (String)json["person"]["funct"]; + } + if(json["person"].ContainsKey("rang") && json["person"]["rang"].IsString) { + ret += "&person-rang=" + (String)json["person"]["rang"]; + } + if(json["person"].ContainsKey("text") && json["person"]["text"].IsString) { + ret += "&person-text=" + (String)json["person"]["text"]; + } + } + ret += (ret.Contains("?")) ? "&name=" + name : "?name=" + name; + return ret; + } + private void ParseParams(String hash) { String[] parts = hash.Split('&'); foreach(String part in parts) { @@ -24,8 +46,30 @@ namespace Fraunhofer.Fit.IoT.LoraMap.Model xmlname.Item(0).InnerText = keyvalue[1]; } break; + case "marker-bg": + if(keyvalue[1].ToLower() == "hidden") { + XmlNodeList markerbg = this.svg.DocumentElement.SelectNodes("//*[local-name()='defs'][@id='global-def']"); + if(markerbg.Count == 1) { + markerbg[0].InnerXml += ""; + } + XmlNodeList root = this.svg.DocumentElement.SelectNodes("//*[local-name()='svg']"); + if(root.Count == 1) { + foreach(XmlAttribute item in root[0].Attributes) { + if(item.Name.ToLower() == "height") { + item.Value = "38px"; + } + if(item.Name.ToLower() == "width") { + item.Value = "40px"; + } + if(item.Name.ToLower() == "viewbox") { + item.Value = "8 35 70 100"; + } + } + } + } + break; case "icon": - if(keyvalue[1] == "person") { + if(keyvalue[1].ToLower() == "person") { XmlNodeList xmlicon = this.svg.DocumentElement.SelectNodes("//*[local-name()='defs'][@id='global-def']"); if (xmlicon.Count == 1) { xmlicon.Item(0).InnerXml += ""; diff --git a/Lora-Map/names.json b/Lora-Map/names.json index da7f704..65ce723 100644 --- a/Lora-Map/names.json +++ b/Lora-Map/names.json @@ -1,10 +1,24 @@ { "A": { "name": "26/91", - "icon": "icons/marker/Marker.svg?name=26/91&icon=person&person-org=thw&person-funct=fueh&person-rang=zug&person-text=TZ" + "marker.svg": { + "person": { + "org": "thw", + "funct": "fueh", + "rang": "zug", + "text": "TZ" + } + } }, "C": { "name": "27/92", - "icon": "icons/marker/Marker.svg?name=27/92&icon=person&person-org=thw&person-funct=fueh&person-rang=trupp&person-text=B1" + "marker.svg": { + "person": { + "org": "thw", + "funct": "fueh", + "rang": "trupp", + "text": "B1" + } + } } } \ No newline at end of file diff --git a/Lora-Map/resources/icons/marker/Marker.svg b/Lora-Map/resources/icons/marker/Marker.svg index 9526606..8638e6d 100644 --- a/Lora-Map/resources/icons/marker/Marker.svg +++ b/Lora-Map/resources/icons/marker/Marker.svg @@ -1,6 +1,6 @@ - +