Topo2: Adding hosts and regions to the update model
Change-Id: I0473e2cb06803bbd3245db329db60f5fbcf13ea4
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 a03c839..7ab0b10 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Region.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Region.js
@@ -57,6 +57,15 @@
});
this.model = new RegionModel();
+ this.createEmptyModel();
+
+ },
+ createEmptyModel: function () {
+ this.model.set({ subregions: t2sr.createSubRegionCollection([], this) });
+ this.model.set({ devices: t2ds.createDeviceCollection([], this) });
+ this.model.set({ hosts: t2hs.createHostCollection([], this) });
+ this.model.set({ peerRegions: t2pr.createCollection([], this) });
+ this.model.set({ links: t2ls.createLinkCollection([], this) });
},
isLoadComplete: function() {
return this.bgRendered && this.regionData && this.peers;
@@ -90,11 +99,8 @@
this.layout.createForceLayout();
},
clear: function () {
-
this.regionData = null;
-
- if (!this.model)
- return;
+ this.createEmptyModel();
},
isRootRegion: function () {
return this.model.get('id') === ROOT;
@@ -151,7 +157,6 @@
return false;
},
deselectLink: function () {
- console.log('remove link')
var selected = _.filter(this.regionLinks(), function (link) {
return link.get('selected', true);
});
@@ -171,6 +176,10 @@
update: function (event) {
+ if (!this.isLoadComplete()){
+ this.layout.createForceLayout();
+ }
+
if (this[event.type]) {
this[event.type](event);
} else {
@@ -182,9 +191,18 @@
// Topology update event handlers
LINK_ADDED_OR_UPDATED: function (event) {
+
+ var regionLinks = this.model.get('links'),
+ device;
+
+ if (!regionLinks) {
+ this.model.set({ links: t2ls.createLinkCollection([], this) })
+ }
+
if (event.memo === 'added') {
var link = this.model.get('links').add(event.data);
link.createLink();
+ $log.debug('Added Link', link);
}
},
LINK_REMOVED: function (event) {
@@ -194,7 +212,12 @@
},
DEVICE_ADDED_OR_UPDATED: function (event) {
- var device;
+ var regionDevices = this.model.get('devices'),
+ device;
+
+ if (!regionDevices) {
+ this.model.set({ devices: t2ds.createDeviceCollection([], this) })
+ }
if (event.memo === 'added') {
device = this.model.get('devices').add(event.data);
@@ -206,6 +229,32 @@
},
DEVICE_REMOVED: function (event) {
device.remove();
+ },
+ HOST_ADDED_OR_UPDATED: function (event) {
+ var regionHosts = this.model.get('hosts'),
+ host;
+
+ if (!regionHosts) {
+ this.model.set({ hosts: t2hs.createHostCollection([], this) })
+ }
+
+ if (event.memo === 'added') {
+ host = this.model.get('hosts').add(event.data);
+ $log.debug('Added host', host);
+ }
+ },
+ REGION_ADDED_OR_UPDATED: function (event) {
+ var regionSubRegions = this.model.get('subregions'),
+ region;
+
+ if (!regionSubRegions) {
+ this.model.set({ subregions: t2sr.createSubRegionCollection([], this) })
+ }
+
+ if (event.memo === 'added') {
+ region = this.model.get('subregions').add(event.data);
+ $log.debug('Added region', region);
+ }
}
});