refactor map.js, show all offline nodes

This commit is contained in:
Nils Schneider 2015-03-26 13:51:08 +01:00
parent ccd4b1652b
commit 40ecf2641e
2 changed files with 34 additions and 22 deletions

View File

@ -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)

View File

@ -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 &copy; <a href=\"https://www.mapquest.com/\" target=\"_blank\">MapQuest</a> <img src=\"https://developer.mapquest.com/content/osm/mq_logo.png\" />, Map data © OpenStreetMap contributors, CC-BY-SA",
attribution: "Tiles &copy; <a href=\"https://www.mapquest.com/\" target=\"_blank\">MapQuest</a>, 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
if (d.lastseen.isAfter(moment(now).subtract(1, 'days')))
return iconAlert
return iconOffline
}, router))
var onlinemarkers = subtract(onlinenodes.filter(has_location), newnodes)
var markersOnline = nodesOnline.filter(has_location)
.map(mkMarker(nodeDict, function (d) { return iconOnline }, router))
var groupLines = L.featureGroup(lines).addTo(map)
groupOnline = L.featureGroup(onlinemarkers).addTo(map)
group = L.featureGroup(markers).addTo(map)
var markersOffline = nodesOffline.filter(has_location)
.map(mkMarker(nodeDict, function (d) { return iconOffline }, router))
var markersNew = newnodes.filter(has_location)
.map(mkMarker(nodeDict, function (d) { return iconNew }, 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)
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)