blob: a8da7af971d447b2c0e0535396928639083488cf [file] [log] [blame]
// path painter topology overlay - client side
//
// This is the glue that binds our business logic (in ppTopov.js)
// to the overlay framework.
(function () {
'use strict';
// injected refs
var $log, tov, ns, tts, lts, sel;
// function to be replaced by the localization bundle function
var topoLion = function (x) {
return '#ttrafov#' + x + '#';
};
// our overlay definition
var overlay = {
overlayId: 'od-overlay',
glyphId: 'm_disjointPaths',
tooltip: 'ONLP Data Overlay',
activate: function () {
$log.debug("ONLP data topology overlay ACTIVATED");
},
deactivate: function () {
lts.clear();
$log.debug("ONLP data topology overlay DEACTIVATED");
},
// detail panel button definitions
buttons: {
showOnlpView: {
gid: 'chain',
tt: 'ONLP data',
cb: function (data) {
$log.debug('ONLP action invoked on selection:', sel);
ns.navTo('onlp', { devId: sel.id });
}
},
showDeviceFlows: {
gid: 'm_flows',
tt: function () { return topoLion('tr_btn_show_device_flows'); },
cb: function (data) { tts.showDeviceLinkFlows(); },
},
},
// 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: function () { return topoLion('tr_btn_cancel_monitoring'); },
gid: 'm_xMark',
},
A: {
cb: function () { tts.showAllTraffic(); },
tt: function () { return topoLion('tr_btn_monitor_all'); },
gid: 'm_allTraffic',
},
F: {
cb: function () { tts.showDeviceLinkFlows(); },
tt: function () { return topoLion('tr_btn_show_dev_link_flows'); },
gid: 'm_flows',
},
_keyOrder: [
'0', 'A', 'F',
],
},
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();
},
// hooks for when the selection changes...
single: function (data) {
$log.debug('selection data:', data);
sel = data;
tov.addDetailButton('showOnlpView');
tov.addDetailButton('showDeviceFlows');
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);
},
// localization bundle injection hook
injectLion: function (bundle) {
topoLion = bundle;
tts.setLionBundle(bundle);
},
},
};
// invoke code to register with the overlay service
angular.module('ovOdTopov')
.run(['$log', 'TopoOverlayService', 'NavService', 'TopoTrafficService',
'OnlpDemoTopovService',
function (_$log_, _tov_, _ns_, _tts_, _lts_) {
$log = _$log_;
tov = _tov_;
ns = _ns_;
tts = _tts_;
lts = _lts_;
tov.register(overlay);
}]);
}());