diff --git a/CHANGELOG.md b/CHANGELOG.md index 468f542..ccf2e31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ ### Change Log for Node-RED Worldmap - - v1.5.7 - tidy up sidc entry, and drag-ability of nodes on drawing layer. + - v1.5.9 - Allow latest mark added to open popup, and allow `popped=false` to close. + - v1.5.7 - Tidy up sidc entry, and drag-ability of nodes on drawing layer. - v1.5.6 - Add search command and clear search functionality. - v1.5.5 - Allow multiple overlays to be enabled at once - Issue #53 - v1.5.4 - Allow remote update of the split position via `msg.command.split` diff --git a/README.md b/README.md index 3e1d23b..6fd77da 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,8 @@ map web page for plotting "things" on. ### Updates -- v1.5.7 - tidy up sidc entry, and drag-ability of nodes on drawing layer. +- v1.5.9 - Allow latest mark added to open popup, and allow `popped=false` to close. +- v1.5.7 - Tidy up sidc entry, and drag-ability of nodes on drawing layer. - v1.5.6 - Add search command and clear search functionality. - v1.5.5 - Allow multiple overlays to be enabled at once - Issue #53 - v1.5.4 - Allow remote update of the split position via `msg.command.split` @@ -66,7 +67,7 @@ Optional properties include - **weblink** : adds a link to an external page for more information. Either set a url as a *string*, or an *object* like `{name:"BBC News", url:"news.bbc.co.uk", target:"_new"}` - **addtoheatmap** : set to false to exclude point from contributing to heatmap layer. (default true) - **intensity** : set to a value of 0.1 - 1.0 to set the intensity of the point on heatmap layer. (default 1.0) - - **popped** : set to true to automatically open the popup info box. + - **popped** : set to true to automatically open the popup info box, set to false to close it. - **popup** : html to fill the popup if you don't want the automatic default of the properties list. Any other `msg.payload` properties will be added to the icon popup text box. diff --git a/package.json b/package.json index b623a27..588c1cb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "node-red-contrib-web-worldmap", - "version": "1.5.7", + "version": "1.5.9", "description": "A Node-RED node to provide a web page of a world map for plotting things on.", "dependencies": { "cgi": "0.3.1", diff --git a/worldmap.html b/worldmap.html index 7bd0dfc..c47315d 100644 --- a/worldmap.html +++ b/worldmap.html @@ -144,7 +144,7 @@ then by default ⌘⇧m - ctrl-shift-m will load the m icon: "white-globe.png", align: "right", label: function() { - return this.name||"world map"; + return this.name||this.path.substr(1)||"world map"; }, labelStyle: function() { return this.name?"node_label_italic":""; diff --git a/worldmap/index.html b/worldmap/index.html index 4b7ea18..fc36ad9 100644 --- a/worldmap/index.html +++ b/worldmap/index.html @@ -112,6 +112,7 @@ var startpos = [51.03, -1.379]; // Start location - somewhere in UK :-) var startzoom = 10; var map; +var allData = {}; var markers = {}; var polygons = {}; var layers = {}; @@ -844,6 +845,7 @@ var delMarker = function(dname) { map.removeLayer(markers[dname]); delete markers[dname]; } + delete allData[dname]; ws.send(JSON.stringify({action:"delete", name:dname})); map.closePopup(); } @@ -851,9 +853,9 @@ var delMarker = function(dname) { // the MAIN add something to map function function setMarker(data) { //console.log("DATA",typeof data, data); + data = allData[data.name] = Object.assign(allData[data.name]||{},data); var ll; var lli = null; - var stay = popped; var opt = {}; opt.color = data.color || "#910000"; opt.fillColor = data.fillColor || "#910000"; @@ -1210,12 +1212,17 @@ function setMarker(data) { delete data.weblink; } - popped = stay; - if (data.hasOwnProperty("popped") && (data.popped == true) ) { + if (data.hasOwnProperty("popped") && (data.popped === true)) { popped = true; popid = data.name; delete data.popped; } + if (data.hasOwnProperty("popped") && (data.popped === false)) { + if ((popid == data.name) && (popmark)) { + popped = false; + popmark.closePopup(); + } + } // Add any remaining properties to the info box delete data.lat; @@ -1245,7 +1252,6 @@ function setMarker(data) { markers[data.name] = marker; layers[lay].addLayer(marker); } - if ((data.hdg != null) && (data.bearing == null)) { data.bearing = data.hdg; delete data.hdg; } if (data.bearing != null) { // if there is a heading if (data.speed != null) { data.length = parseFloat(data.speed || "0") * 50; } // and a speed @@ -1284,10 +1290,17 @@ function setMarker(data) { } } if (panit) { - map.setView(ll,map.getZoom()); + if (popped) { + map.setView(ll,map.getZoom()); + popped = true; + } + else { map.setView(ll,map.getZoom()); } } - if (popped) { - if (popid == data.name) { marker.openPopup(); } + if (popped === true) { + if (popid == data.name) { + if (popmark) { popmark.closePopup(); } + marker.openPopup(); + } else { popmark.openPopup(); } } } diff --git a/worldmap/worldmap.appcache b/worldmap/worldmap.appcache index 4459fe3..1501b7f 100644 --- a/worldmap/worldmap.appcache +++ b/worldmap/worldmap.appcache @@ -1,5 +1,5 @@ CACHE MANIFEST -# date: Oct 17th 2018 - v1.5.6 +# date: Nov 9th 2018 - v1.5.9 CACHE: index.html