[Bug 3308] Using the Refresh Button create a new instance of the graph 01/21001/3
authorMaxime Millette-Coulombe <mmcoulombe@inocybe.com>
Wed, 20 May 2015 17:47:58 +0000 (13:47 -0400)
committerMaxime Millette-Coulombe <mmcoulombe@inocybe.com>
Mon, 8 Jun 2015 13:31:29 +0000 (13:31 +0000)
When we click on the button, it will refresh the data.

Change-Id: Iedfe64ace1516e921c32f2f52f0caefdbb2666ed
Signed-off-by: Maxime Millette-Coulombe <mmcoulombe@inocybe.com>
(cherry picked from commit ea133f0554ebc46d567be606d0e7e674f17aa488)

modules/graph-resources/src/main/resources/graph/index.js
modules/graph-resources/src/main/resources/graph/renderer.js
modules/topology-resources/src/main/resources/topology/topology.controller.js

index 9ab0fced9da7a4903501b59f7200da209a829ba2..2ed1d2572c5b19e10272b5533c613783e94f68a1 100644 (file)
@@ -3,6 +3,23 @@ module.exports = function() {
     var GraphRenderer = require('./renderer.js');
     var topology = null;
 
+    function _load(nodes, links) {
+        nodes.forEach(function (node) {
+            topology.addNode(node.id, {
+                title:node.title,
+                group:node.group,
+                label:node.label,
+                value:node.value
+            });
+        });
+        links.forEach(function (link) {
+            topology.addLink(link.from, link.to, {
+                id: link.id,
+                title: link.title
+            });
+        });
+    }
+
     // public API
     return {
         start : function(id) {
@@ -17,27 +34,17 @@ module.exports = function() {
                 console.error(e.name, e.message);
             }
         },
-        refresh: function() {
-            //TODO : Implement me (:
+        refresh: function(nodes, links) {
+            //tmp
+            topology.beginUpdate();
+            topology.clear();
+            _load(nodes, links);
+            topology.endUpdate();
+            renderer.refresh(topology);
         },
         loadGraph: function(nodes, links) {
             topology = new Graph();
-
-            nodes.forEach(function (node) {
-                topology.addNode(node.id, {
-                    title:node.title,
-                    group:node.group,
-                    label:node.label,
-                    value:node.value
-                });
-            });
-
-            links.forEach(function (link) {
-                topology.addLink(link.from, link.to, {
-                    id: link.id,
-                    title: link.title
-                });
-            });
+            _load(nodes, links);
         }
     };
 };
index 69fc98d8f511384d6f02461eb0ca23bb855fb526..3518afa65896a2b352867f033621e871d4b76da7 100644 (file)
@@ -77,16 +77,28 @@ module.exports = function(id, graph, config) {
         }
     };
 
+    function displayGraph() {
+        // step the layout to make a good looking graph
+        // remove after cause it's heavy for nothing
+        for (var i = 0; i < 1000; ++i) {
+            layout.step();
+        }
+        layout.dispose();
+        centerGraph();
+    }
+
     // public API
     return {
         run : function() {
-            // step the layout to make a good looking graph
-            // remove after cause it's heavy for nothing
-            for (var i = 0; i < 1000; ++i) {
-                layout.step();
-            }
-            layout.dispose();
-            centerGraph();
+            displayGraph();
+            requestAnimFrame(loop);
+        },
+        refresh: function(topology) {
+            cancelAnimationFrame(loop);
+            stage.removeChildren();
+            topology.forEachNode(initializeNode);
+            topology.forEachLink(initializeLink);
+            displayGraph();
             requestAnimFrame(loop);
         }
     };
index ed8aad78247fff5e6b19325cc19055f2237d3778..dcfe2f54c3565c0d6e07303b9e4d62d0ecd75c2d 100644 (file)
@@ -15,9 +15,13 @@ define(['app/topology/topology.module','app/topology/topology.services', 'graphR
 
           var inNodes = data.nodes;
           var inEdges = data.links;
-          graphRenderer = new GraphRenderer();
-          graphRenderer.loadGraph(inNodes, inEdges);
-          graphRenderer.start('topology_simple');
+          if (!graphRenderer) {
+            graphRenderer = new GraphRenderer();
+            graphRenderer.loadGraph(inNodes, inEdges);
+            graphRenderer.start('topology_simple');
+          } else {
+            graphRenderer.refresh(inNodes, inEdges);
+          }
       });
     };