Topo2: Reset node position and unpin
Refactored NodeModel
Added class to the surrounding rect for selected class
Renamed Panels to avoid conflict with classic topo
Topo2: Details Panel for single device selection
Topo2: Added Equalize Masters keyboard shortcut
Topo2: Toggle Link Port highlighting
Topo2: Node Labels was returning empty string
       if friendly name was null
Topo2: Reset map zoom and panning

Change-Id: I0a949b2f8205e1abcfcac5aaec65c18d76e77cff
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2.js b/web/gui/src/main/webapp/app/view/topo2/topo2.js
index 5c8332c..48f06d0 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2.js
@@ -24,7 +24,7 @@
     'use strict';
 
     // references to injected services
-    var $scope, $log, fs, mast, ks, zs,
+    var $scope, $log, fs, mast, ks,
         gs, sus, ps, t2es, t2fs, t2is, t2bcs, t2kcs, t2ms, t2mcs, t2zs;
 
     // DOM elements
@@ -81,19 +81,20 @@
     angular.module('ovTopo2', ['onosUtil', 'onosSvg', 'onosRemote'])
     .controller('OvTopo2Ctrl',
         ['$scope', '$log', '$location',
-        'FnService', 'MastService', 'KeyService', 'ZoomService',
+        'FnService', 'MastService', 'KeyService',
         'GlyphService', 'MapService', 'SvgUtilService', 'FlashService',
         'WebSocketService', 'PrefsService', 'ThemeService',
         'Topo2EventService', 'Topo2ForceService', 'Topo2InstanceService',
         'Topo2BreadcrumbService', 'Topo2KeyCommandService', 'Topo2MapService',
-        'Topo2MapConfigService', 'Topo2SummaryPanelService', 'Topo2ZoomService',
+        'Topo2MapConfigService', 'Topo2ZoomService',
+        'Topo2SummaryPanelService', 'Topo2DeviceDetailsPanel',
 
         function (_$scope_, _$log_, _$loc_,
-            _fs_, _mast_, _ks_, _zs_,
+            _fs_, _mast_, _ks_,
             _gs_, _ms_, _sus_, _flash_,
             _wss_, _ps_, _th_,
             _t2es_, _t2fs_, _t2is_, _t2bcs_, _t2kcs_, _t2ms_, _t2mcs_,
-            summaryPanel, _t2zs_
+            _t2zs_, summaryPanel, detailsPanel
         ) {
 
             var params = _$loc_.search(),
@@ -115,7 +116,6 @@
             fs = _fs_;
             mast = _mast_;
             ks = _ks_;
-            zs = _zs_;
 
             gs = _gs_;
             sus = _sus_;
@@ -156,6 +156,8 @@
                 ks.unbindKeys();
                 t2fs.destroy();
                 t2is.destroy();
+                summaryPanel.destroy();
+                detailsPanel.destroy();
             });
 
             // svg layer and initialization of components
@@ -176,7 +178,7 @@
             t2es.bindHandlers();
 
             // Add the map SVG Group
-            t2ms.init(zoomLayer).then(
+            t2ms.init(zoomLayer, zoomer).then(
                 function (proj) {
                     var z = ps.getPrefs('topo_zoom', { tx: 0, ty: 0, sc: 1 });
                     zoomer.panZoom([z.tx, z.ty], z.sc);
@@ -219,6 +221,7 @@
             // $log.debug('registered overlays...', tov.list());
 
             summaryPanel.init();
+            detailsPanel.init();
 
             $log.log('OvTopo2Ctrl has been created');
         }]);