diff options
Diffstat (limited to 'framework/src/onos/web/gui/src/main/webapp/app/fw/layer/veil.js')
-rw-r--r-- | framework/src/onos/web/gui/src/main/webapp/app/fw/layer/veil.js | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/framework/src/onos/web/gui/src/main/webapp/app/fw/layer/veil.js b/framework/src/onos/web/gui/src/main/webapp/app/fw/layer/veil.js new file mode 100644 index 00000000..fc0530af --- /dev/null +++ b/framework/src/onos/web/gui/src/main/webapp/app/fw/layer/veil.js @@ -0,0 +1,99 @@ +/* + * Copyright 2015 Open Networking Laboratory + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + ONOS GUI -- Layer -- Veil Service + + Provides a mechanism to display an overlaying div with information. + Used mainly for web socket connection interruption. + */ +(function () { + 'use strict'; + + // injected references + var $log, $route, fs, ks, gs; + + var veil; + + function init() { + var wSize = fs.windowSize(), + ww = wSize.width, + wh = wSize.height, + shrink = wh * 0.3, + birdDim = wh - shrink, + birdCenter = (ww - birdDim) / 2, + svg; + + veil = d3.select('#veil'); + + svg = veil.select('svg').attr({ + width: ww, + height: wh + }).style('opacity', 0.2); + + gs.addGlyph(svg, 'bird', birdDim, false, [birdCenter, shrink/2]); + } + + // msg should be an array of strings + function show(msg) { + var msgs = fs.isA(msg) || [msg], + pdiv = veil.select('.msg'); + pdiv.selectAll('p').remove(); + + msgs.forEach(function (line) { + pdiv.append('p').text(line); + }); + + veil.style('display', 'block'); + ks.enableKeys(false); + } + + function hide() { + veil.style('display', 'none'); + ks.enableKeys(true); + } + + // function that only invokes the veil if the caller is the current view + // TODO: review - is this deprecated ? + 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', '$route', 'FnService', 'KeyService', 'GlyphService', + + function (_$log_, _$route_, _fs_, _ks_, _gs_) { + $log = _$log_; + $route = _$route_; + fs = _fs_; + ks = _ks_; + gs = _gs_; + + return { + init: init, + show: show, + hide: hide, + lostServer: lostServer + }; + }]); + +}()); |