diff options
Diffstat (limited to 'framework/src/onos/web/gui/src/main/webapp/app/view/topo/topoTrafficNew.js')
-rw-r--r-- | framework/src/onos/web/gui/src/main/webapp/app/view/topo/topoTrafficNew.js | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/framework/src/onos/web/gui/src/main/webapp/app/view/topo/topoTrafficNew.js b/framework/src/onos/web/gui/src/main/webapp/app/view/topo/topoTrafficNew.js new file mode 100644 index 00000000..cb4bc49a --- /dev/null +++ b/framework/src/onos/web/gui/src/main/webapp/app/view/topo/topoTrafficNew.js @@ -0,0 +1,159 @@ +/* + * 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 -- Topology Traffic Overlay Module. + Defines behavior for viewing different traffic modes. + Installed as a Topology Overlay. + */ +(function () { + 'use strict'; + + // injected refs + var $log, tov, tts; + + // NOTE: no internal state here -- see TopoTrafficService for that + + // NOTE: providing button disabling requires too big a refactoring of + // the button factory etc. Will have to be done another time. + + + // traffic overlay definition + var overlay = { + overlayId: 'traffic', + glyphId: 'allTraffic', + tooltip: 'Traffic Overlay', + + // NOTE: Traffic glyphs already installed as part of the base ONOS set. + + activate: function () { + $log.debug("Traffic overlay ACTIVATED"); + }, + + deactivate: function () { + tts.cancelTraffic(true); + $log.debug("Traffic overlay DEACTIVATED"); + }, + + // detail panel button definitions + // (keys match button identifiers, also defined in TrafficOverlay.java) + buttons: { + showDeviceFlows: { + gid: 'flows', + tt: 'Show Device Flows', + cb: function (data) { tts.showDeviceLinkFlows(); } + }, + + showRelatedTraffic: { + gid: 'relatedIntents', + tt: 'Show Related Traffic', + cb: function (data) { tts.showRelatedIntents(); } + } + }, + + // key bindings for traffic overlay toolbar buttons + // NOTE: fully qual. button ID is derived from overlay-id and key-name + keyBindings: { + 0: { + cb: function () { tts.cancelTraffic(true); }, + tt: 'Cancel traffic monitoring', + gid: 'xMark' + }, + + A: { + cb: function () { tts.showAllFlowTraffic(); }, + tt: 'Monitor all traffic using flow stats', + gid: 'allTraffic' + }, + Q: { + cb: function () { tts.showAllPortTraffic(); }, + tt: 'Monitor all traffic using port stats', + gid: 'allTraffic' + }, + F: { + cb: function () { tts.showDeviceLinkFlows(); }, + tt: 'Show device link flows', + gid: 'flows' + }, + V: { + cb: function () { tts.showRelatedIntents(); }, + tt: 'Show all related intents', + gid: 'relatedIntents' + }, + leftArrow: { + cb: function () { tts.showPrevIntent(); }, + tt: 'Show previous related intent', + gid: 'prevIntent' + }, + rightArrow: { + cb: function () { tts.showNextIntent(); }, + tt: 'Show next related intent', + gid: 'nextIntent' + }, + W: { + cb: function () { tts.showSelectedIntentTraffic(); }, + tt: 'Monitor traffic of selected intent', + gid: 'intentTraffic' + }, + + _keyOrder: [ + '0', 'A', 'Q', 'F', 'V', 'leftArrow', 'rightArrow', 'W' + ] + }, + + hooks: { + // hook for handling escape key + escape: function () { + // Must return true to consume ESC, false otherwise. + return tts.cancelTraffic(true); + }, + + // hooks for when the selection changes... + empty: function () { + tts.cancelTraffic(); + }, + single: function (data) { + tts.requestTrafficForMode(); + }, + multi: function (selectOrder) { + tts.requestTrafficForMode(); + tov.addDetailButton('showRelatedTraffic'); + }, + + // mouse hooks + mouseover: function (m) { + // m has id, class, and type properties + tts.requestTrafficForMode(true); + }, + mouseout: function () { + tts.requestTrafficForMode(true); + } + } + }; + + // invoke code to register with the overlay service + angular.module('ovTopo') + .run(['$log', 'TopoOverlayService', 'TopoTrafficService', + + function (_$log_, _tov_, _tts_) { + $log = _$log_; + tov = _tov_; + tts = _tts_; + tov.register(overlay); + }]); + +}()); |