fix flow drawing in geo layout
diff --git a/web/ons-demo/js/flows.js b/web/ons-demo/js/flows.js
index ae148e7..6975c29 100644
--- a/web/ons-demo/js/flows.js
+++ b/web/ons-demo/js/flows.js
@@ -7,7 +7,7 @@
}
});
- var flows = d3.select('svg').selectAll('.flow').data(topologyFlows);
+ var flows = flowLayer.selectAll('.flow').data(topologyFlows);
flows.enter().append("svg:path").attr('class', 'flow')
.attr('stroke-dasharray', '4, 10')
@@ -34,13 +34,17 @@
var pt1 = document.querySelector('svg').createSVGPoint();
pt1.x = s1.attr('x');
pt1.y = s1.attr('y');
- pt1 = pt1.matrixTransform(s1[0][0].getCTM());
+ if (drawingRings) {
+ pt1 = pt1.matrixTransform(s1[0][0].getCTM());
+ }
pts.push(pt1);
var pt2 = document.querySelector('svg').createSVGPoint();
pt2.x = s2.attr('x');
pt2.y = s2.attr('y');
- pt2 = pt2.matrixTransform(s2[0][0].getCTM());
+ if (drawingRings) {
+ pt2 = pt2.matrixTransform(s2[0][0].getCTM());
+ }
pts.push(pt2);
} else if (d.dataPath && d.dataPath.flowEntries) {
@@ -51,7 +55,9 @@
var pt = document.querySelector('svg').createSVGPoint();
pt.x = s.attr('x');
pt.y = s.attr('y');
- pt = pt.matrixTransform(s[0][0].getCTM());
+ if (drawingRings) {
+ pt = pt.matrixTransform(s[0][0].getCTM());
+ }
pts.push(pt);
} else {
console.log('flow refers to non-existent switch: ' + flowEntry.dpid.value);
@@ -197,12 +203,12 @@
var i;
for (i=0; i < pointsToDisplay; ++i) {
var sample = flow.iperfData.samples[i];
- var height = 30 * sample/1000000;
- if (height > 30)
- height = 30;
+ var height = 28 * sample/1000000;
+ if (height > 28)
+ height = 28;
pts.push({
x: i * 1000/(pointsToDisplay-1),
- y: 32 - height
+ y: 30 - height
})
}
return pts;
@@ -299,7 +305,10 @@
}
updateSelectedFlowsTable();
- updateSelectedFlowsTopology();
+ // on app init, the table is updated before the svg is constructed
+ if (flowLayer) {
+ updateSelectedFlowsTopology();
+ }
}
function selectFlow(flow) {
diff --git a/web/ons-demo/js/globals.js b/web/ons-demo/js/globals.js
index 7681957..2063ba5 100644
--- a/web/ons-demo/js/globals.js
+++ b/web/ons-demo/js/globals.js
@@ -43,4 +43,15 @@
/***************************************************************************************************
a mapping from controller name to color used for color coding the topology and ONOS nodes views
***************************************************************************************************/
-var controllerColorMap = {};
\ No newline at end of file
+var controllerColorMap = {};
+
+/***************************************************************************************************
+defined by rings.js or map.js this is where the flows are drawn.
+***************************************************************************************************/
+var flowLayer;
+
+/***************************************************************************************************
+hack to make the old ring drawing code compatible with the shared flow drawing code
+will be obsoleted once the ring drawing code is disposed of
+***************************************************************************************************/
+var drawingRings;
\ No newline at end of file
diff --git a/web/ons-demo/js/map.js b/web/ons-demo/js/map.js
index d40c9cb..35ca77d 100644
--- a/web/ons-demo/js/map.js
+++ b/web/ons-demo/js/map.js
@@ -111,6 +111,8 @@
switchLayer = topology.append('g');
labelsLayer = topology.append('g');
linksLayer = topology.append('g');
+ flowLayer = topology.append('g');
+
cb();
});
diff --git a/web/ons-demo/js/rings.js b/web/ons-demo/js/rings.js
index 29907f6..979d28b 100644
--- a/web/ons-demo/js/rings.js
+++ b/web/ons-demo/js/rings.js
@@ -13,6 +13,11 @@
topology = svg.append('svg:svg').attr('id', 'viewBox').attr('viewBox', '0 0 1000 1000').attr('preserveAspectRatio', 'none').
attr('id', 'viewbox').append('svg:g').attr('id', 'topology').attr('transform', 'translate(500 500)');
+ flowLayer = d3.select('svg');
+
+ // hack to make the shared flow drawing code work
+ drawingRings = true;
+
cb();
}
diff --git a/web/ons-demo/js/utils.js b/web/ons-demo/js/utils.js
index d907225..be7cf53 100644
--- a/web/ons-demo/js/utils.js
+++ b/web/ons-demo/js/utils.js
@@ -80,7 +80,25 @@
***************************************************************************************************/
function updateHeader() {
d3.select('#lastUpdate').text(new Date());
- d3.select('#activeSwitches').text(model.edgeSwitches.length + model.aggregationSwitches.length + model.coreSwitches.length);
+
+ var count = 0;
+ model.edgeSwitches.forEach(function (s) {
+ if (s.state === 'ACTIVE') {
+ count += 1;
+ }
+ });
+ model.aggregationSwitches.forEach(function (s) {
+ if (s.state === 'ACTIVE') {
+ count += 1;
+ }
+ });
+ model.coreSwitches.forEach(function (s) {
+ if (s.state === 'ACTIVE') {
+ count += 1;
+ }
+ });
+
+ d3.select('#activeSwitches').text(count);
d3.select('#activeFlows').text(model.flows.length);
}