Remove unnecessary parameter (region id) when layout already encapsulates that data.
- pull out scale as well as pan, for consistency.

Change-Id: I9f8f5f7f99a2dca621f2e8f652e36adf4f3971d3
diff --git a/tools/test/topos/regions-bayarea-grid.sh b/tools/test/topos/regions-bayarea-grid.sh
index 80716cf..d890495 100755
--- a/tools/test/topos/regions-bayarea-grid.sh
+++ b/tools/test/topos/regions-bayarea-grid.sh
@@ -268,7 +268,7 @@
 
 onos ${host} <<-EOF
 
-layout-add root @bayareaGEO . . 0.4
+layout-add root @bayareaGEO . . 4.5 0.0 0.0
 
 layout-add lC01 +segmentRouting c01 . 0.9 5.2 -4.0
 layout-add lC02 +segmentRouting c02
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/topo/Topo2Jsonifier.java b/web/gui/src/main/java/org/onosproject/ui/impl/topo/Topo2Jsonifier.java
index e133775..b407171 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/topo/Topo2Jsonifier.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/topo/Topo2Jsonifier.java
@@ -210,21 +210,20 @@
      *
      * @param layout the layout to transform
      * @param crumbs list of layouts in bread-crumb order
-     * @param rid    current region id
      * @return a JSON representation of the data
      */
-    ObjectNode layout(UiTopoLayout layout, List<UiTopoLayout> crumbs, String rid) {
+    ObjectNode layout(UiTopoLayout layout, List<UiTopoLayout> crumbs) {
         ObjectNode result = objectNode()
                 .put("id", layout.id().toString())
                 .put("parent", nullIsEmpty(layout.parent()))
                 .put("region", nullIsEmpty(layout.regionId()))
                 .put("regionName", UiRegion.safeName(layout.region()));
         addCrumbs(result, crumbs);
-        addBgRef(result, layout, rid);
+        addBgRef(result, layout);
         return result;
     }
 
-    private void addBgRef(ObjectNode result, UiTopoLayout layout, String rid) {
+    private void addBgRef(ObjectNode result, UiTopoLayout layout) {
         String mapId = layout.geomap();
         String sprId = layout.sprites();
 
@@ -235,10 +234,10 @@
             result.put("bgType", GRID).put("bgId", sprId);
         }
 
-        attachZoomData(result, layout, rid);
+        attachZoomData(result, layout);
     }
 
-    private void attachZoomData(ObjectNode result, UiTopoLayout layout, String rid) {
+    private void attachZoomData(ObjectNode result, UiTopoLayout layout) {
 
         ObjectNode zoomData = objectNode();
 
@@ -246,6 +245,7 @@
         addCfgZoomData(zoomData, layout);
 
         // next, retrieve user-set zoom data, if we have it
+        String rid = layout.regionId().toString();
         ObjectNode userZoom = metaUi.get(contextKey(rid, ZOOM_KEY));
         if (userZoom != null) {
             zoomData.set("usr", userZoom);
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/topo/Topo2ViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/topo/Topo2ViewMessageHandler.java
index e5946f9..3c93110 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/topo/Topo2ViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/topo/Topo2ViewMessageHandler.java
@@ -19,7 +19,6 @@
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.google.common.collect.ImmutableSet;
 import org.onlab.osgi.ServiceDirectory;
-import org.onosproject.net.region.Region;
 import org.onosproject.ui.RequestHandler;
 import org.onosproject.ui.UiConnection;
 import org.onosproject.ui.UiMessageHandler;
@@ -95,14 +94,9 @@
 
     // ==================================================================
 
-    private String currentRegionId() {
-        Region current = topoSession.currentLayout().region();
-        return current == null ? "(root)" : current.id().toString();
-    }
-
     private ObjectNode mkLayoutMessage(UiTopoLayout currentLayout) {
         List<UiTopoLayout> crumbs = topoSession.breadCrumbs();
-        return t2json.layout(currentLayout, crumbs, currentRegionId());
+        return t2json.layout(currentLayout, crumbs);
     }
 
     private ObjectNode mkRegionMessage(UiTopoLayout currentLayout) {
@@ -115,7 +109,8 @@
     private ObjectNode mkPeersMessage(UiTopoLayout currentLayout) {
         Set<UiNode> peers = topoSession.getPeerNodes(currentLayout);
         ObjectNode peersPayload = objectNode();
-        peersPayload.set("peers", t2json.closedNodes(currentRegionId(), peers));
+        String rid = currentLayout.regionId().toString();
+        peersPayload.set("peers", t2json.closedNodes(rid, peers));
         return peersPayload;
     }
 
@@ -211,7 +206,8 @@
         public void process(ObjectNode payload) {
             // NOTE: metadata for a node is stored within the context of the
             //       current region.
-            t2json.updateMeta(currentRegionId(), payload);
+            String rid = topoSession.currentLayout().regionId().toString();
+            t2json.updateMeta(rid, payload);
         }
     }
 
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Background.js b/web/gui/src/main/webapp/app/view/topo2/topo2Background.js
index 29c6a93..525cd07 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Background.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Background.js
@@ -70,7 +70,8 @@
                         this.zoomData = data.bgZoom;
 
                         var _this = this,
-                            pan = zoomPan(this.zoomData);
+                            pan = zoomPan(this.zoomData),
+                            scale = zoomScale(this.zoomData);
 
                         if (this.bgType === 'geo') {
 
@@ -78,12 +79,12 @@
                             t2sls.hide();
                             t2ms.show();
 
-                            t2ms.setUpMap(data.bgId, data.bgFilePath, zoomScale(data.bgZoom))
+                            t2ms.setUpMap(data.bgId, data.bgFilePath, scale)
                             .then(function (proj) {
                                 t2mcs.projection(proj);
                                 $log.debug('** We installed the projection:', proj);
                                 _this.region.loaded('bgRendered', true);
-                                t2zs.panAndZoom(pan, zoomScale(_this.zoomData), 1000);
+                                t2zs.panAndZoom(pan, scale, 1000);
                             });
                         } else if (this.bgType === 'grid') {
 
@@ -94,7 +95,7 @@
                             t2sls.loadLayout(data.bgId).then(function (spriteLayout) {
                                 _this.background.layout = spriteLayout;
                                 _this.region.loaded('bgRendered', true);
-                                t2zs.panAndZoom(pan, zoomScale(_this.zoomData), 1000);
+                                t2zs.panAndZoom(pan, scale, 1000);
                             });
                         } else {
                             // No background type - Tell the region the background is ready for placing nodes
@@ -112,7 +113,6 @@
                     }
                 });
 
-
                 return instance || new BackgroundView();
             }
         ]);