Working on Bay-Area-Region Demo.
- added latitude / longitude parameters to regions, so the icons can be "placed" on a GEO-map

Change-Id: I5cf939f22597d4658ab603459b2b3059ba0db0c9
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 9e02334..323ccee 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
@@ -36,6 +36,7 @@
 import org.onosproject.net.host.HostService;
 import org.onosproject.net.intent.IntentService;
 import org.onosproject.net.link.LinkService;
+import org.onosproject.net.region.Region;
 import org.onosproject.net.statistic.StatisticService;
 import org.onosproject.net.topology.TopologyService;
 import org.onosproject.ui.JsonUtils;
@@ -292,8 +293,8 @@
         return node;
     }
 
-    private void addProps(ObjectNode node, Device dev) {
-        Annotations annot = dev.annotations();
+    private void addProps(ObjectNode node, Annotated a) {
+        Annotations annot = a.annotations();
         ObjectNode props = objectNode();
         if (annot != null) {
             annot.keys().forEach(k -> props.put(k, annot.value(k)));
@@ -404,7 +405,10 @@
                 .put("nodeType", REGION)
                 .put("nDevs", region.deviceCount())
                 .put("nHosts", region.hostCount());
-        // TODO: complete closed-region details
+
+        Region r = region.backingRegion();
+        addGeoLocation(node, r);
+        addProps(node, r);
 
         addMetaUi(node, region.idAsString());
         return node;
diff --git a/web/gui/src/main/webapp/app/fw/svg/zoom.js b/web/gui/src/main/webapp/app/fw/svg/zoom.js
index cebe8c7..0effdc2 100644
--- a/web/gui/src/main/webapp/app/fw/svg/zoom.js
+++ b/web/gui/src/main/webapp/app/fw/svg/zoom.js
@@ -23,7 +23,7 @@
     // configuration
     var defaultSettings = {
         zoomMin: 0.05,
-        zoomMax: 10,
+        zoomMax: 50,
         zoomEnabled: function (ev) { return true; },
         zoomCallback: function () {}
     };
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Region.js b/web/gui/src/main/webapp/app/view/topo2/topo2Region.js
index 24df147..73b76a5 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Region.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Region.js
@@ -54,26 +54,35 @@
             link.createLink();
         });
 
+
+        // TODO: replace with an algorithm that computes appropriate transition
+        //        based on the location of the "region node" on the parent map
+
         // TEMP Map Zoom
         var regionPanZooms = {
             "(root)": {
-                scale: 0.8,
-                translate: [-384.5881010374517, -512.2527728775849]
+                scale: 4.21,
+                translate: [-2066.3049871603093, -2130.190726668792]
             },
-            rBrg: {
-                scale: 2.75,
-                translate: [-2929.288248714413, -3498.849169115524]
+            c01: {
+                scale: 19.8855,
+                translate: [-10375.91165337411, -10862.217941271818]
             },
-            rLon: {
-                scale: 2.75,
-                translate: [-2873.682762707102, -3320.483337006704]
+            c02: {
+                scale: 24.25,
+                translate: [-14169.70851936781, -15649.174761455488]
             },
-            rTha: {
-                scale: 7.5,
-                translate: [-8751.376289753565, -9950.962850877779]
+            c03: {
+                scale: 22.72,
+                translate: [-14950.92246589002, -15390.955326616648]
+            },
+            c04: {
+                scale: 26.24,
+                translate: [-16664.006814209282, -16217.021478816077]
             }
         };
 
+
         setTimeout(function () {
             var reigionPZ = regionPanZooms[region.get('id')];
             t2zs.panAndZoom(reigionPZ.translate, reigionPZ.scale);
diff --git a/web/gui/src/test/java/org/onosproject/ui/impl/topo/UiTopoLayoutManagerTest.java b/web/gui/src/test/java/org/onosproject/ui/impl/topo/UiTopoLayoutManagerTest.java
index 67fbf69..80578b0 100644
--- a/web/gui/src/test/java/org/onosproject/ui/impl/topo/UiTopoLayoutManagerTest.java
+++ b/web/gui/src/test/java/org/onosproject/ui/impl/topo/UiTopoLayoutManagerTest.java
@@ -19,6 +19,7 @@
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.onosproject.net.DefaultAnnotations;
 import org.onosproject.net.config.NetworkConfigRegistryAdapter;
 import org.onosproject.net.region.DefaultRegion;
 import org.onosproject.net.region.Region;
@@ -41,7 +42,8 @@
     }
 
     private static Region region(String id, String name, Region.Type type) {
-        return new DefaultRegion(regionId(id), name, type, null);
+        return new DefaultRegion(regionId(id), name, type,
+                DefaultAnnotations.EMPTY, null);
     }
 
     private static UiTopoLayout layout(String id, Region region, String parentId) {
diff --git a/web/gui/src/test/java/org/onosproject/ui/impl/topo/model/AbstractTopoModelTest.java b/web/gui/src/test/java/org/onosproject/ui/impl/topo/model/AbstractTopoModelTest.java
index 559a6be..71bc7d2 100644
--- a/web/gui/src/test/java/org/onosproject/ui/impl/topo/model/AbstractTopoModelTest.java
+++ b/web/gui/src/test/java/org/onosproject/ui/impl/topo/model/AbstractTopoModelTest.java
@@ -30,6 +30,7 @@
 import org.onosproject.mastership.MastershipService;
 import org.onosproject.mastership.MastershipServiceAdapter;
 import org.onosproject.net.ConnectPoint;
+import org.onosproject.net.DefaultAnnotations;
 import org.onosproject.net.DefaultDevice;
 import org.onosproject.net.DefaultHost;
 import org.onosproject.net.DefaultLink;
@@ -277,7 +278,7 @@
     protected static Region region(String id, Region.Type type,
                                    List<Set<NodeId>> masters) {
         return new DefaultRegion(RegionId.regionId(id), "Region-" + id,
-                type, masters);
+                type, DefaultAnnotations.EMPTY, masters);
     }
 
     /**