Topo2: fix incorrectly patched review (sorry Steven).

Change-Id: Ib87a554b2311ac4258a70396f4fd6246546fb81b
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Breadcrumb.js b/web/gui/src/main/webapp/app/view/topo2/topo2Breadcrumb.js
index c0b8f9c..6e80613 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Breadcrumb.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Breadcrumb.js
@@ -23,7 +23,7 @@
 
     'use strict';
 
-    var $log, wss;
+    var $log, $loc, wss;
 
     // Internal
     var breadcrumbContainer,
@@ -57,10 +57,13 @@
         // Remove breadcrumbs after index;
         breadcrumbs.splice(index + 1);
 
+        // TODO: This is duplicated code - See Topo2SubRegion:navigateToRegion()
         wss.sendEvent('topo2navRegion', {
             rid: data.id
         });
 
+        $loc.search('regionId', data.id);
+
         layout.createForceElements();
         layout.transitionDownRegion();
 
@@ -112,10 +115,11 @@
 
     angular.module('ovTopo2')
     .factory('Topo2BreadcrumbService', [
-        '$log', 'WebSocketService',
-        function (_$log_, _wss_) {
+        '$log', '$location', 'WebSocketService',
+        function (_$log_, _$loc_, _wss_) {
 
             $log = _$log_;
+            $loc = _$loc_;
             wss = _wss_;
 
             return {
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Force.js b/web/gui/src/main/webapp/app/view/topo2/topo2Force.js
index 5849b61..62e3c16 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Force.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Force.js
@@ -23,8 +23,7 @@
     'use strict';
 
     // injected refs
-    var $log,
-        wss;
+    var $log, $loc, wss;
 
     var t2is, t2rs, t2ls, t2vs, t2bcs, t2ss, t2bgs;
     var svg, forceG, uplink, dim, opts, zoomer;
@@ -48,77 +47,24 @@
         t2bcs.addLayout(t2ls);
         t2rs.layout = t2ls;
         t2ss.init(svg, zoomer);
+
+        navToBookmarkedRegion($loc.search().regionId);
     }
 
     function destroy() {
         $log.debug('Destroy topo force layout');
     }
 
-    // ========================== Temporary Code (to be deleted later)
-
-    function request(dir, rid) {
-        wss.sendEvent('topo2navRegion', {
-            rid: rid
-        });
-    }
-
-    function doTmpCurrentLayout(data) {
-        var topdiv = d3.select('#topo2tmp');
-        var parentRegion = data.parent;
-        var span = topdiv.select('.parentRegion').select('span');
-        span.text(parentRegion || '[no parent]');
-        span.classed('nav-me', Boolean(parentRegion));
-    }
-
-    function doTmpCurrentRegion(data) {
-        var topdiv = d3.select('#topo2tmp');
-        var span = topdiv.select('.thisRegion').select('span');
-        var div;
-
-        span.text(data.id);
-
-        div = topdiv.select('.subRegions').select('div');
-        data.subregions.forEach(function (r) {
-
-            function nav() {
-                request('down', r.id);
-            }
-
-            div.append('p')
-                .classed('nav-me', true)
-                .text(r.id)
-                .on('click', nav);
-        });
-
-        div = topdiv.select('.devices').select('div');
-        data.layerOrder.forEach(function (tag, idx) {
-            var devs = data.devices[idx];
-            devs.forEach(function (d) {
-                div.append('p')
-                    .text('[' + tag + '] ' + d.id);
+    function navToBookmarkedRegion(regionId) {
+        $log.debug('navToBookmarkedRegion:', regionId);
+        if (regionId) {
+            wss.sendEvent('topo2navRegion', {
+                rid: regionId
             });
 
-        });
-
-        div = topdiv.select('.hosts').select('div');
-        data.layerOrder.forEach(function (tag, idx) {
-            var hosts = data.hosts[idx];
-            hosts.forEach(function (h) {
-                div.append('p')
-                    .text('[' + tag + '] ' + h.id);
-            });
-        });
-
-        div = topdiv.select('.links').select('div');
-        var links = data.links;
-        links.forEach(function (lnk) {
-            div.append('p')
-                .text(lnk.id);
-        });
-    }
-
-    function doTmpPeerRegions(data) {
-
+            t2ls.createForceElements();
+            t2ls.transitionDownRegion();
+        }
     }
 
     // ========================== Event Handlers
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2SubRegion.js b/web/gui/src/main/webapp/app/view/topo2/topo2SubRegion.js
index 0852788..b3259d4 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2SubRegion.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2SubRegion.js
@@ -40,10 +40,10 @@
 
     angular.module('ovTopo2')
     .factory('Topo2SubRegionService', [
-        'WebSocketService', 'Topo2Collection', 'Topo2NodeModel',
+        '$location', 'WebSocketService', 'Topo2Collection', 'Topo2NodeModel',
         'Topo2SubRegionPanelService',
 
-        function (wss, _c_, NodeModel, t2srp) {
+        function ($loc, wss, _c_, NodeModel, t2srp) {
 
             Collection = _c_;
 
@@ -85,6 +85,8 @@
                         rid: this.get('id')
                     });
 
+                    $loc.search('regionId', this.get('id'));
+
                     var layout = this.collection.region.layout;
                     layout.createForceElements();
                     layout.transitionDownRegion();
diff --git a/web/gui/src/main/webapp/onos.js b/web/gui/src/main/webapp/onos.js
index 631ef84..2e893d3 100644
--- a/web/gui/src/main/webapp/onos.js
+++ b/web/gui/src/main/webapp/onos.js
@@ -152,6 +152,10 @@
                         controller: viewCtrlName(vid),
                         controllerAs: 'ctrl',
                         templateUrl: viewTemplateUrl(vid)
+
+                        // Disable reload on $loc.hash() changes for bookmarked topo regions
+                        // reloadOnSearch: (vid !== 'topo2')
+                        // <SDH> assume this is not needed for ?regionId=... query string
                     });
                 }
             });