Topo2: Update links on websocket events
Change-Id: I6a8b05cc0eaf67e2b10dd39aeb4b876c61c40ec6
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Region.js b/web/gui/src/main/webapp/app/view/topo2/topo2Region.js
index 09b8cd8..7938fd6 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Region.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Region.js
@@ -26,7 +26,7 @@
var Model;
// Internal
- var instance
+ var instance;
// 'static' vars
var ROOT = '(root)';
@@ -101,6 +101,9 @@
regionLinks: function () {
return (this.model) ? this.model.get('links').models : [];
},
+ getLink: function (linkId) {
+ return this.model.get('links').get(linkId);
+ },
filterRegionNodes: function (predicate) {
var nodes = this.regionNodes();
return _.filter(nodes, predicate);
@@ -138,6 +141,27 @@
}
return false;
+ },
+
+ update: function (event) {
+ if (this[event.type]) {
+ this[event.type](event);
+ this.layout.update();
+ } else {
+ $log.error("Unhanded topology update", event);
+ }
+ },
+
+ // Topology update event handlers
+ LINK_ADDED_OR_UPDATED: function (event) {
+ if (event.memo === 'added') {
+ var link = this.model.get('links').add(event.data);
+ link.createLink();
+ }
+ },
+ LINK_REMOVED: function (event) {
+ var link = this.getLink(event.subject);
+ link.remove();
}
});
@@ -146,6 +170,7 @@
}
return getInstance();
+
}]);
})();