refactor router

This commit is contained in:
Nils Schneider 2015-03-27 22:25:28 +01:00
parent 40ecf2641e
commit f5dbd56a70
3 changed files with 21 additions and 14 deletions

View file

@ -45,7 +45,7 @@ function (Router, Map, Sidebar, Tabs, Container, Meshstats, Linklist, Nodelist,
Promise.all(urls.map(getJSON)) Promise.all(urls.map(getJSON))
.then(function (d) { createGUI(); return d }) .then(function (d) { createGUI(); return d })
.then(handle_data) .then(handle_data)
.then(function () { router.loadState(window.location.hash) }) .then(function () { router.start() })
function handle_data(data) { function handle_data(data) {
var nodedict = data[0] var nodedict = data[0]

View file

@ -108,8 +108,6 @@ define(function () {
groupOnline = L.featureGroup(markersOnline).addTo(map) groupOnline = L.featureGroup(markersOnline).addTo(map)
groupNew = L.featureGroup(markersNew).addTo(map) groupNew = L.featureGroup(markersNew).addTo(map)
groupLost = L.featureGroup(markersLost).addTo(map) groupLost = L.featureGroup(markersLost).addTo(map)
resetView()
} }
function resetView() { function resetView() {

View file

@ -43,28 +43,41 @@ define(function () {
function loadState(s) { function loadState(s) {
if (!s) if (!s)
return return false
if (!s.startsWith("#!")) if (!s.startsWith("#!"))
return return false
var args = s.slice(2).split(":") var args = s.slice(2).split(":")
if (args.length == 1 && args[0] == "")
resetView(false)
if (args[0] === "n") { if (args[0] === "n") {
var id = args[1] var id = args[1]
if (id in objects.nodes) if (id in objects.nodes) {
gotoNode(objects.nodes[id]) gotoNode(objects.nodes[id])
return true
}
} }
if (args[0] === "l") { if (args[0] === "l") {
var id = args[1] var id = args[1]
if (id in objects.links) if (id in objects.links) {
gotoLink(objects.links[id]) gotoLink(objects.links[id])
return true
}
}
return false
}
self.start = function () {
if (!loadState(window.location.hash))
resetView(false)
window.onpopstate = function (d) {
if (!loadState(d.state))
resetView(false)
} }
} }
@ -94,8 +107,6 @@ define(function () {
} }
self.addTarget = function (d) { targets.push(d) } self.addTarget = function (d) { targets.push(d) }
self.loadState = loadState
self.setData = function (nodes, links) { self.setData = function (nodes, links) {
objects.nodes = {} objects.nodes = {}
objects.links = {} objects.links = {}
@ -109,8 +120,6 @@ define(function () {
}) })
} }
window.onpopstate = function (d) { loadState(d.state) }
return self return self
} }
}) })