GUI -- Added VeilService.lostServer() function to only invoke the veil if the calling controller is the current controller.
- removed test code from rest.js

Change-Id: I2e05b42a10a1e66a7a26210e347c584c6fbd5bf2
diff --git a/web/gui/src/main/webapp/app/fw/layer/veil.js b/web/gui/src/main/webapp/app/fw/layer/veil.js
index 0b4ae9f..91de19e 100644
--- a/web/gui/src/main/webapp/app/fw/layer/veil.js
+++ b/web/gui/src/main/webapp/app/fw/layer/veil.js
@@ -24,7 +24,7 @@
     'use strict';
 
     // injected references
-    var $log, fs, ks;
+    var $log, $route, fs, ks;
 
     var veil, pdiv, svg;
 
@@ -46,12 +46,23 @@
         ks.enableKeys(true);
     }
 
+    // function that only invokes the veil if the caller is the current view
+    function lostServer(ctrlName, msg) {
+        if ($route.current.$$route.controller === ctrlName) {
+            $log.debug('VEIL-service: ', ctrlName);
+            show(msg)
+        } else {
+            $log.debug('VEIL-service: IGNORING ', ctrlName);
+        }
+    }
+
     angular.module('onosLayer')
     .factory('VeilService',
-        ['$log', 'FnService', 'KeyService', 'GlyphService',
+        ['$log', '$route', 'FnService', 'KeyService', 'GlyphService',
 
-        function (_$log_, _fs_, _ks_, gs) {
+        function (_$log_, _$route_, _fs_, _ks_, gs) {
             $log = _$log_;
+            $route = _$route_;
             fs = _fs_;
             ks = _ks_;
 
@@ -76,7 +87,8 @@
 
             return {
                 show: show,
-                hide: hide
+                hide: hide,
+                lostServer: lostServer
             };
     }]);
 
diff --git a/web/gui/src/main/webapp/app/fw/remote/rest.js b/web/gui/src/main/webapp/app/fw/remote/rest.js
index a7640cd..aa451f9 100644
--- a/web/gui/src/main/webapp/app/fw/remote/rest.js
+++ b/web/gui/src/main/webapp/app/fw/remote/rest.js
@@ -22,100 +22,14 @@
 
     var $log;
 
-
-    // TODO: remove temporary test code
-    var fakeData = {
-        '1': {
-            "devices": [{
-                "id": "of:0000000000000001",
-                "available": true,
-                "_iconid_available": "deviceOnline",
-                "role": "MASTER",
-                "mfr": "Nicira, Inc.",
-                "hw": "Open vSwitch",
-                "sw": "2.0.1",
-                "serial": "None",
-                "annotations": {
-                    "protocol": "OF_10"
-                }
-            },
-            {
-                "id": "of:0000000000000004",
-                "available": false,
-                "_iconid_available": "deviceOffline",
-                "role": "MASTER",
-                "mfr": "Nicira, Inc.",
-                "hw": "Open vSwitch",
-                "sw": "2.0.1",
-                "serial": "None",
-                "annotations": {
-                    "protocol": "OF_10"
-                }
-            },
-            {
-                "id": "of:0000000000000092",
-                "available": false,
-                "_iconid_available": "deviceOffline",
-                "role": "MASTER",
-                "mfr": "Nicira, Inc.",
-                "hw": "Open vSwitch",
-                "sw": "2.0.1",
-                "serial": "None",
-                "annotations": {
-                    "protocol": "OF_10"
-                }
-            }]
-        },
-        '2': {
-            "devices": [{
-                "id": "of:0000000000000002",
-                "available": true,
-                "_iconid_available": "deviceOnline",
-                "role": "MASTER",
-                "mfr": "Nicira, Inc.",
-                "hw": "Open vSwitch",
-                "sw": "2.0.0",
-                "serial": "None",
-                "annotations": {
-                    "protocol": "OF_10"
-                }
-            },
-            {
-                "id": "of:0000000000000006",
-                "available": true,
-                "_iconid_available": "deviceOnline",
-                "role": "MASTER",
-                "mfr": "Nicira, Inc.",
-                "hw": "Open vSwitch",
-                "sw": "2.1.1",
-                "serial": "None",
-                "annotations": {
-                    "protocol": "OF_10"
-                }
-            }]
-        },
-        'empty': {
-            devices: []
-        }
-    };
-
-    function getFakeData(url) {
-        var id = url.slice(5);
-
-        return fakeData[id] || fakeData.empty;
-    }
-
     angular.module('onosRemote')
-        .factory('RestService', ['$log', '$http', 'UrlFnService',
+    .factory('RestService',
+        ['$log', '$http', 'UrlFnService',
+
         function (_$log_, $http, ufs) {
             $log = _$log_;
 
-            function get(url, callback) {
-                // TODO: remove temporary test code
-                if (url.match(/^test\//)) {
-                    callback(getFakeData(url));
-                    return;
-                }
+            function get(url, callback, errorCb) {
                 var fullUrl = ufs.rsUrl(url);
 
                 $http.get(fullUrl).then(function (response) {
@@ -123,8 +37,11 @@
                     callback(response.data);
                 }, function (response) {
                     // error
-                    $log.warn('Failed to retrieve JSON data: ' + fullUrl,
-                        response.status, response.data);
+                    var  emsg = 'Failed to retrieve JSON data: ' + fullUrl;
+                    $log.warn(emsg, response.status, response.data);
+                    if (errorCb) {
+                        errorCb(emsg);
+                    }
                 });
             }
 
@@ -132,5 +49,4 @@
                 get: get
             };
         }]);
-
 }());
diff --git a/web/gui/src/main/webapp/app/view/device/device.js b/web/gui/src/main/webapp/app/view/device/device.js
index f979abf..8a1eca1 100644
--- a/web/gui/src/main/webapp/app/view/device/device.js
+++ b/web/gui/src/main/webapp/app/view/device/device.js
@@ -23,9 +23,9 @@
 
     angular.module('ovDevice', [])
     .controller('OvDeviceCtrl',
-        ['$log', '$scope', '$location', 'RestService',
+        ['$log', '$scope', '$location', 'RestService', 'VeilService',
 
-        function ($log, $scope, $location, rs) {
+        function ($log, $scope, $location, rs, vs) {
             var self = this;
             self.deviceData = [];
 
@@ -36,6 +36,8 @@
                 var url = 'device' + urlSuffix;
                 rs.get(url, function (data) {
                     self.deviceData = data.devices;
+                }, function (errMsg) {
+                    vs.lostServer('OvDeviceCtrl', errMsg);
                 });
             };
             $scope.sortCallback();
diff --git a/web/gui/src/main/webapp/app/view/topo/topoEvent.js b/web/gui/src/main/webapp/app/view/topo/topoEvent.js
index a412467..099ba4e 100644
--- a/web/gui/src/main/webapp/app/view/topo/topoEvent.js
+++ b/web/gui/src/main/webapp/app/view/topo/topoEvent.js
@@ -99,7 +99,7 @@
     function onWsClose(reason) {
         $log.log('web socket closed; reason=', reason);
         wsock = null;
-        vs.show([
+        vs.lostServer('OvTopoCtrl', [
             'Oops!',
             'Web-socket connection to server closed...',
             'Try refreshing the page.'