|
@@ -1,13 +1,12 @@
|
|
|
define([ "chroma-js", "map", "sidebar", "tabs", "container", "meshstats",
|
|
|
"legend", "linklist", "nodelist", "simplenodelist", "infobox/main",
|
|
|
- "proportions", "forcegraph", "title", "about" ],
|
|
|
+ "proportions", "forcegraph", "title", "about", "datadistributor",
|
|
|
+ "filters/filtergui", "filters/hostname" ],
|
|
|
function (chroma, Map, Sidebar, Tabs, Container, Meshstats, Legend, Linklist,
|
|
|
Nodelist, SimpleNodelist, Infobox, Proportions, ForceGraph,
|
|
|
- Title, About) {
|
|
|
+ Title, About, DataDistributor, FilterGUI, HostnameFilter) {
|
|
|
return function (config, router) {
|
|
|
var self = this
|
|
|
- var dataTargets = []
|
|
|
- var latestData
|
|
|
var content
|
|
|
var contentDiv
|
|
|
|
|
@@ -17,16 +16,17 @@ function (chroma, Map, Sidebar, Tabs, Container, Meshstats, Legend, Linklist,
|
|
|
var buttons = document.createElement("div")
|
|
|
buttons.classList.add("buttons")
|
|
|
|
|
|
- function dataTargetRemove(d) {
|
|
|
- dataTargets = dataTargets.filter( function (e) { return d !== e })
|
|
|
- }
|
|
|
+ var fanout = new DataDistributor()
|
|
|
+ var fanoutUnfiltered = new DataDistributor()
|
|
|
+ fanoutUnfiltered.add(fanout)
|
|
|
|
|
|
function removeContent() {
|
|
|
if (!content)
|
|
|
return
|
|
|
|
|
|
router.removeTarget(content)
|
|
|
- dataTargetRemove(content)
|
|
|
+ fanout.remove(content)
|
|
|
+
|
|
|
content.destroy()
|
|
|
|
|
|
content = null
|
|
@@ -38,10 +38,7 @@ function (chroma, Map, Sidebar, Tabs, Container, Meshstats, Legend, Linklist,
|
|
|
content = new K(config, linkScale, sidebar.getWidth, router, buttons)
|
|
|
content.render(contentDiv)
|
|
|
|
|
|
- if (latestData)
|
|
|
- content.setData(latestData)
|
|
|
-
|
|
|
- dataTargets.push(content)
|
|
|
+ fanout.add(content)
|
|
|
router.addTarget(content)
|
|
|
}
|
|
|
|
|
@@ -82,15 +79,15 @@ function (chroma, Map, Sidebar, Tabs, Container, Meshstats, Legend, Linklist,
|
|
|
var lostnodeslist = new SimpleNodelist("lost", "lastseen", router, "Verschwundene Knoten")
|
|
|
var nodelist = new Nodelist(router)
|
|
|
var linklist = new Linklist(linkScale, router)
|
|
|
- var statistics = new Proportions(config)
|
|
|
+ var statistics = new Proportions(config, fanout)
|
|
|
var about = new About()
|
|
|
|
|
|
- dataTargets.push(meshstats)
|
|
|
- dataTargets.push(newnodeslist)
|
|
|
- dataTargets.push(lostnodeslist)
|
|
|
- dataTargets.push(nodelist)
|
|
|
- dataTargets.push(linklist)
|
|
|
- dataTargets.push(statistics)
|
|
|
+ fanoutUnfiltered.add(meshstats)
|
|
|
+ fanoutUnfiltered.add(newnodeslist)
|
|
|
+ fanoutUnfiltered.add(lostnodeslist)
|
|
|
+ fanout.add(nodelist)
|
|
|
+ fanout.add(linklist)
|
|
|
+ fanout.add(statistics)
|
|
|
|
|
|
sidebar.add(header)
|
|
|
header.add(meshstats)
|
|
@@ -99,6 +96,13 @@ function (chroma, Map, Sidebar, Tabs, Container, Meshstats, Legend, Linklist,
|
|
|
overview.add(newnodeslist)
|
|
|
overview.add(lostnodeslist)
|
|
|
|
|
|
+ var filterGUI = new FilterGUI(fanout)
|
|
|
+ fanout.watchFilters(filterGUI)
|
|
|
+ header.add(filterGUI)
|
|
|
+
|
|
|
+ var hostnameFilter = new HostnameFilter()
|
|
|
+ fanout.addFilter(hostnameFilter)
|
|
|
+
|
|
|
sidebar.add(tabs)
|
|
|
tabs.add("Aktuelles", overview)
|
|
|
tabs.add("Knoten", nodelist)
|
|
@@ -114,13 +118,7 @@ function (chroma, Map, Sidebar, Tabs, Container, Meshstats, Legend, Linklist,
|
|
|
|
|
|
router.view("m")
|
|
|
|
|
|
- self.setData = function (data) {
|
|
|
- latestData = data
|
|
|
-
|
|
|
- dataTargets.forEach(function (d) {
|
|
|
- d.setData(data)
|
|
|
- })
|
|
|
- }
|
|
|
+ self.setData = fanoutUnfiltered.setData
|
|
|
|
|
|
return self
|
|
|
}
|