GUI -- Persisted state of hosts/offline-devices/port-hilite; and a little refactoring to boot.
- Added asNumbers() to prefs.js.

Change-Id: I58b98bb660a525bc1af2498d81e86be6a4b06e66
diff --git a/web/gui/src/main/webapp/app/view/topo/topoLink.js b/web/gui/src/main/webapp/app/view/topo/topoLink.js
index 8c8fd82..49678d8 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoLink.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoLink.js
@@ -241,17 +241,20 @@
 
     // ======================
 
-    function togglePorts() {
-        showPorts = !showPorts;
+    function togglePorts(x) {
+        var kev = (x === 'keyev'),
+            on = kev ? !showPorts : !!x,
+            what = on ? 'Enable' : 'Disable',
+            handler = on ? mouseMoveHandler : null;
 
-        var what = showPorts ? 'Enable' : 'Disable',
-            handler = showPorts ? mouseMoveHandler : null;
+        showPorts = on;
 
-        if (!showPorts) {
+        if (!on) {
             enhanceLink(null);
         }
         svg.on('mousemove', handler);
         flash.flash(what + ' port highlighting');
+        return on;
     }
 
     function deselectLink() {