Browse Source

forcegraph: test for localStorage before using it

Nils Schneider 9 years ago
parent
commit
aa237c2380
3 changed files with 23 additions and 5 deletions
  1. 11 0
      helper.js
  2. 11 5
      lib/forcegraph.js
  3. 1 0
      package.json

+ 11 - 0
helper.js

@@ -62,6 +62,17 @@ function dictGet(dict, key) {
   return dictGet(dict[k], key)
 }
 
+function localStorageTest() {
+  var test = 'test'
+  try {
+    localStorage.setItem(test, test)
+    localStorage.removeItem(test)
+    return true
+  } catch(e) {
+    return false
+  }
+}
+
 /* Helpers working with nodes */
 
 function offline(d) {

+ 11 - 5
lib/forcegraph.js

@@ -12,6 +12,9 @@ define(["d3"], function (d3) {
     var LINK_DISTANCE = 70
 
     function savePositions() {
+      if (!localStorageTest())
+        return
+
       var save = nodes.map( function (d) {
         return { id: d.id, x: d.x, y: d.y }
       })
@@ -140,13 +143,16 @@ define(["d3"], function (d3) {
     window.addEventListener("resize", resize)
 
     self.setData = function (data) {
-      var save = JSON.parse(localStorage.getItem("graph/nodeposition"))
       var nodePositions = {}
 
-      if (save)
-        save.forEach( function (d) {
-          nodePositions[d.id] = d
-        })
+      if (localStorageTest()) {
+        var save = JSON.parse(localStorage.getItem("graph/nodeposition"))
+
+        if (save)
+          save.forEach( function (d) {
+            nodePositions[d.id] = d
+          })
+      }
 
       links = data.graph.links.filter( function (d) {
         return !d.vpn

+ 1 - 0
package.json

@@ -30,6 +30,7 @@
       "has_location": false,
       "limit": false,
       "linkId": false,
+      "localStorageTest": false,
       "offline": false,
       "one": false,
       "online": false,