From 40ecf2641e390031c674b6714283d161206eecc0 Mon Sep 17 00:00:00 2001 From: Nils Schneider Date: Thu, 26 Mar 2015 13:51:08 +0100 Subject: [PATCH] refactor map.js, show all offline nodes --- lib/main.js | 4 +--- lib/map.js | 52 +++++++++++++++++++++++++++++++++------------------- 2 files changed, 34 insertions(+), 22 deletions(-) diff --git a/lib/main.js b/lib/main.js index 4ccbf53..2a58676 100644 --- a/lib/main.js +++ b/lib/main.js @@ -66,8 +66,6 @@ function (Router, Map, Sidebar, Tabs, Container, Meshstats, Linklist, Nodelist, var newnodes = limit("firstseen", age, sortByKey("firstseen", nodes).filter(online)) var lostnodes = limit("lastseen", age, sortByKey("lastseen", nodes).filter(offline)) - var onlinenodes = nodes.filter(online) - var graph = data[1].batadv var graphnodes = data[0].nodes @@ -112,7 +110,7 @@ function (Router, Map, Sidebar, Tabs, Container, Meshstats, Linklist, Nodelist, d.target.node.neighbours.push({ node: d.source.node, link: d }) }) - map.setData(now, newnodes, lostnodes, onlinenodes, links) + map.setData(now, nodes, links, newnodes, lostnodes) meshstats.setData(nodes) nodelist.setData(now, nodes) linklist.setData(links) diff --git a/lib/map.js b/lib/map.js index 9569229..38ebbd3 100644 --- a/lib/map.js +++ b/lib/map.js @@ -49,11 +49,12 @@ define(function () { } var iconOnline = { color: "#1566A9", radius: 6, fillOpacity: 0.5, weight: 2, className: "stroke-first" } - var iconOffline = { color: "#D43E2A", radius: 6, fillOpacity: 0.5, weight: 2, className: "stroke-first" } + var iconOffline = { color: "#D43E2A", radius: 3, fillOpacity: 0.5, weight: 1, className: "stroke-first" } + var iconLost = { color: "#D43E2A", radius: 6, fillOpacity: 0.5, weight: 1, className: "stroke-first" } var iconAlert = { color: "#D43E2A", radius: 6, fillOpacity: 0.5, weight: 2, className: "stroke-first node-alert" } var iconNew = { color: "#558020", radius: 6, fillOpacity: 0.5, weight: 2, className: "stroke-first" } - var groupOnline, group + var groupOnline, groupOffline, groupNew, groupLost return function (linkScale, sidebar, router) { var self = this @@ -69,47 +70,60 @@ define(function () { L.tileLayer("https://otile{s}-s.mqcdn.com/tiles/1.0.0/osm/{z}/{x}/{y}.jpg", { subdomains: "1234", type: "osm", - attribution: "Map data Tiles © MapQuest , Map data © OpenStreetMap contributors, CC-BY-SA", + attribution: "Tiles © MapQuest, Data CC-BY-SA OpenStreetMap", maxZoom: 18 }).addTo(map) var nodeDict = {} var linkDict = {} - self.setData = function (now, newnodes, lostnodes, onlinenodes, links) { + self.setData = function (now, nodes, links, newnodes, lostnodes) { nodeDict = {} linkDict = {} var lines = addLinksToMap(linkDict, linkScale, links, router) + L.featureGroup(lines).addTo(map) - var nodes = newnodes.concat(lostnodes).filter(has_location) + var nodesOnline = subtract(nodes.filter(online), newnodes) + var nodesOffline = subtract(nodes.filter(offline), lostnodes) - var markers = nodes.map(mkMarker(nodeDict, function (d) { - if (d.flags.online) - return iconNew + var markersOnline = nodesOnline.filter(has_location) + .map(mkMarker(nodeDict, function (d) { return iconOnline }, router)) - if (d.lastseen.isAfter(moment(now).subtract(1, 'days'))) - return iconAlert + var markersOffline = nodesOffline.filter(has_location) + .map(mkMarker(nodeDict, function (d) { return iconOffline }, router)) - return iconOffline - }, router)) + var markersNew = newnodes.filter(has_location) + .map(mkMarker(nodeDict, function (d) { return iconNew }, router)) - var onlinemarkers = subtract(onlinenodes.filter(has_location), newnodes) - .map(mkMarker(nodeDict, function (d) { return iconOnline }, router)) + var markersLost = lostnodes.filter(has_location) + .map(mkMarker(nodeDict, function (d) { + if (d.lastseen.isAfter(moment(now).subtract(3, 'days'))) + return iconAlert + + return iconLost + }, router)) + + groupOffline = L.featureGroup(markersOffline).addTo(map) + groupOnline = L.featureGroup(markersOnline).addTo(map) + groupNew = L.featureGroup(markersNew).addTo(map) + groupLost = L.featureGroup(markersLost).addTo(map) - var groupLines = L.featureGroup(lines).addTo(map) - groupOnline = L.featureGroup(onlinemarkers).addTo(map) - group = L.featureGroup(markers).addTo(map) resetView() } function resetView() { resetMarkerStyles(nodeDict, linkDict) - var bounds = group.getBounds() + var bounds = L.latLngBounds([]) + bounds.extend(groupNew.getBounds()) + bounds.extend(groupLost.getBounds()) if (!bounds.isValid()) - bounds = groupOnline.getBounds() + bounds.extend(groupOnline.getBounds()) + + if (!bounds.isValid()) + bounds.extend(groupOffline.getBounds()) if (bounds.isValid()) setView(bounds)