hook up switchctrl all/local
diff --git a/web/ons-demo/RELEASE_NOTES.txt b/web/ons-demo/RELEASE_NOTES.txt
index 725dd23..41f4fcd 100644
--- a/web/ons-demo/RELEASE_NOTES.txt
+++ b/web/ons-demo/RELEASE_NOTES.txt
@@ -1,4 +1,11 @@
** April 8, 2013 **
+- map view
+- onos nodes at top
+- count only active switches in header
+- hook up switchctrl all and local actions
+
+
+** April 8, 2013 **
- add explicit timeout logic so that the GUI doesn't have to be refreshed if the API misbehaves
** April 8, 2013 **
diff --git a/web/ons-demo/css/layout.default.css b/web/ons-demo/css/layout.default.css
index 2aa16fe..297e31b 100644
--- a/web/ons-demo/css/layout.default.css
+++ b/web/ons-demo/css/layout.default.css
@@ -102,15 +102,20 @@
width: 100%;
}
-#controllerList {
+#onos {
display: -webkit-box;
- -webkit-box-orient: horizontal;
- overflow: scroll;
+}
+
+#actions {
+ display: -webkit-box;
}
#controllers {
display: -webkit-box;
+ overflow: scroll;
+ -webkit-box-flex: 1.0;
}
+
.controller {
margin: .25em;
background-color: blue;
diff --git a/web/ons-demo/css/skin.default.css b/web/ons-demo/css/skin.default.css
index 843fa4a..ae7dc4a 100644
--- a/web/ons-demo/css/skin.default.css
+++ b/web/ons-demo/css/skin.default.css
@@ -98,7 +98,7 @@
background-color: black;
}
-.header, #controllers {
+.header, #onos {
border-bottom: 1px solid #AAA;;
}
@@ -194,8 +194,20 @@
padding: .25em;
padding-left: 2.5em;
position: relative;
+ border: 1px solid #444;
+ color: white;
+ position: relative;
}
+.controller:hover {
+ border: 1px solid white;
+}
+
+.action, .controller {
+ font-size: 20px;
+}
+
+
.black-eye {
position: absolute;
top: 0px;
@@ -295,6 +307,7 @@
.color2 {
opacity: .15;
+ pointer-events: none;
fill: #FFBA00;
background-color: #FFBA00;
}
@@ -343,6 +356,7 @@
.color9 {
opacity: .2;
+ pointer-events: none;
fill: #F53D65;
background-color: #F53D65;
}
@@ -368,6 +382,27 @@
background-color: #6949D7;
}
+.action {
+ margin: .25em;
+ padding: .25em;
+ padding-left: 1em;
+ padding-right: 1em;
+ border: 1px solid #AAA;
+ background-color: #444;
+ display: -webkit-box;
+ -webkit-box-pack: center;
+ -webkit-box-align: center;
+ color: white;
+}
+
+.action:hover {
+ border: 1px solid #FFF;
+}
+
+.action:active {
+ background-color: #222;
+}
+
@-webkit-keyframes pending {
from {
diff --git a/web/ons-demo/index.html b/web/ons-demo/index.html
index 4663262..ca930ec 100644
--- a/web/ons-demo/index.html
+++ b/web/ons-demo/index.html
@@ -19,7 +19,14 @@
<div id='lastUpdated' class='status'><span class='static'>Last updated:</span><span id='lastUpdate' class='dynamic'>Mon Mar 18 11:11:12 PDT 2013</span></div>
</div>
- <div id='controllers'></div>
+ <div id='onos'>
+ <div id='controllers'></div>
+ <div id='actions'>
+ <div id='action-all' class='action'>ALL</div>
+ <div id='action-local' class='action'>LOCAL</div>
+ <div id='action-scale' class='action'>SCALE</div>
+ </div>
+ </div>
<div id='topologyArea'>
<div id='svg-container'></div>
diff --git a/web/ons-demo/js/controller.js b/web/ons-demo/js/controller.js
index fbc381e..211fa97 100644
--- a/web/ons-demo/js/controller.js
+++ b/web/ons-demo/js/controller.js
@@ -50,6 +50,10 @@
var flowId = parseInt(flow.flowId, 16);
var url = '/proxy/gui/iperf/rate/' + flowId;
callURL(url, cb);
+ },
+ switchControllerCmd: function (cmd) {
+ var url = '/proxy/gui/switchctrl/' + cmd;
+ callURL(url);
}
};
@@ -92,3 +96,12 @@
function getIPerfData(flow, cb) {
controllerFunctions.getIPerfDataCmd(flow, cb);
}
+
+function switchLocal() {
+ controllerFunctions.switchControllerCmd('local');
+}
+
+function switchAll() {
+ controllerFunctions.switchControllerCmd('all');
+}
+
diff --git a/web/ons-demo/js/init.js b/web/ons-demo/js/init.js
index 2fc897d..dd11bf8 100644
--- a/web/ons-demo/js/init.js
+++ b/web/ons-demo/js/init.js
@@ -7,5 +7,23 @@
showFlowChooser();
});
+ d3.select('#action-all').on('click', function () {
+ var prompt = "Switch controllers to all?"
+ if (confirm(prompt)) {
+ switchAll();
+ }
+ });
+
+ d3.select('#action-local').on('click', function () {
+ var prompt = "Switch controllers to local?"
+ if (confirm(prompt)) {
+ switchLocal();
+ }
+ });
+
+ d3.select('#action-scale').on('click', function () {
+ alert('scale')
+ });
+
createTopologyView(cb);
}