Browse Source

set document.title on router events

Nils Schneider 9 years ago
parent
commit
3b75f01ccd
2 changed files with 35 additions and 2 deletions
  1. 4 2
      lib/gui.js
  2. 31 0
      lib/title.js

+ 4 - 2
lib/gui.js

@@ -1,8 +1,8 @@
 define([ "chroma-js", "map", "sidebar", "tabs", "container", "meshstats",
          "linklist", "nodelist", "simplenodelist", "infobox/main",
-         "proportions", "forcegraph" ],
+         "proportions", "forcegraph", "title" ],
 function (chroma, Map, Sidebar, Tabs, Container, Meshstats, Linklist,
-          Nodelist, SimpleNodelist, Infobox, Proportions, ForceGraph) {
+          Nodelist, SimpleNodelist, Infobox, Proportions, ForceGraph, Title) {
   return function (config, router) {
     var self = this
     var dataTargets = []
@@ -59,6 +59,7 @@ function (chroma, Map, Sidebar, Tabs, Container, Meshstats, Linklist,
     }
     contentDiv.appendChild(buttonToggle)
 
+    var title = new Title(config)
     var infobox = new Infobox(config, sidebar, router)
     var tabs = new Tabs()
     var overview = new Container()
@@ -86,6 +87,7 @@ function (chroma, Map, Sidebar, Tabs, Container, Meshstats, Linklist,
     tabs.add("Verbindungen", linklist)
     tabs.add("Statistiken", statistics)
 
+    router.addTarget(title)
     router.addTarget(infobox)
 
     addContent(Map)

+ 31 - 0
lib/title.js

@@ -0,0 +1,31 @@
+define(function () {
+   return function (config) {
+    function setTitle(d) {
+      var title = [config.siteName]
+
+      if (d !== undefined)
+        title.push(d)
+
+      document.title = title.join(": ")
+    }
+
+    this.resetView = function () {
+      setTitle()
+    }
+
+    this.gotoNode = function (d) {
+      if (d)
+        setTitle(d.nodeinfo.hostname)
+    }
+
+    this.gotoLink = function (d) {
+      if (d)
+        setTitle(d.source.node.nodeinfo.hostname + " – " + d.target.node.nodeinfo.hostname)
+    }
+
+    this.destroy = function () {
+    }
+
+    return this
+  }
+})