Updated fn-spec to include classNames
Removed Classnames file and added code to fn.js
Fixed typo dimentions to dimensions
Moved Device/Link logic from Topo2D3 into the model
Model now calls onChange when any property is changed via the set Method

WIP - Added d3 force layout for devices and lines

Change-Id: I4d1afd3cd4cecf2f719e27f4be5d1e874bd9e342
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 ff1d52f..45c2652 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Region.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Region.js
@@ -24,12 +24,13 @@
 
     var $log,
         wss,
+        Model,
         t2sr,
         t2ds,
         t2hs,
         t2ls;
 
-    var regions;
+    var region;
 
     function init() {
         regions = {};
@@ -37,25 +38,46 @@
 
     function addRegion(data) {
 
-        var region = {
-            subregions: t2sr.createSubRegionCollection(data.subregions),
-            devices: t2ds.createDeviceCollection(data.devices, data),
-            hosts: t2hs.createHostCollection(data.hosts),
-            links: t2ls.createLinkCollection(data.links),
-        };
+        region = new Model({
+            id: data.id,
+            layerOrder: data.layerOrder
+        });
+
+        region.set({
+            subregions: t2sr.createSubRegionCollection(data.subregions, region),
+            devices: t2ds.createDeviceCollection(data.devices, region),
+            hosts: t2hs.createHostCollection(data.hosts, region),
+            links: t2ls.createLinkCollection(data.links, region),
+        });
+
+        region.set('test', 2);
+
+        angular.forEach(region.get('links').models, function (link) {
+            link.createLink();
+        });
 
         $log.debug('Region: ', region);
     }
 
+    function regionNodes() {
+        return [].concat(region.get('devices').models, region.get('hosts').models);
+    }
+
+
+    function regionLinks() {
+        return region.get('links').models;
+    }
+
     angular.module('ovTopo2')
     .factory('Topo2RegionService',
-        ['$log', 'WebSocketService', 'Topo2SubRegionService', 'Topo2DeviceService',
+        ['$log', 'WebSocketService', 'Topo2Model', 'Topo2SubRegionService', 'Topo2DeviceService',
         'Topo2HostService', 'Topo2LinkService',
 
-        function (_$log_, _wss_, _t2sr_, _t2ds_, _t2hs_, _t2ls_) {
+        function (_$log_, _wss_, _Model_, _t2sr_, _t2ds_, _t2hs_, _t2ls_) {
 
             $log = _$log_;
             wss = _wss_;
+            Model = _Model_
             t2sr = _t2sr_;
             t2ds = _t2ds_;
             t2hs = _t2hs_;
@@ -65,6 +87,9 @@
                 init: init,
 
                 addRegion: addRegion,
+                regionNodes: regionNodes,
+                regionLinks: regionLinks,
+
                 getSubRegions: t2sr.getSubRegions
             };
         }]);