topoToolbar.js
2.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
/*
* 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 Toolbar Module.
Functions for creating and interacting with the toolbar.
*/
(function () {
// injected references
var $log, tbs, api;
// internal state
var toolbar, keyData;
// constants
var name = 'topo-tbar';
// key to button mapping data
var k2b = {
O: { id: 'summary-tog', gid: 'summary', isel: true},
I: { id: 'instance-tog', gid: 'uiAttached', isel: true },
D: { id: 'details-tog', gid: 'details', isel: true },
H: { id: 'hosts-tog', gid: 'endstation', isel: false },
M: { id: 'offline-tog', gid: 'switch', isel: true },
P: { id: 'ports-tog', gid: 'ports', isel: true },
B: { id: 'bkgrnd-tog', gid: 'map', isel: true }
};
function init(_api_) {
api = _api_;
}
function initKeyData() {
keyData = d3.map(k2b);
keyData.forEach(function(key, value) {
var data = api.getActionEntry(key);
value.cb = data[0]; // on-click callback
value.tt = data[1]; // tooltip
});
}
function addToggle(key) {
var v = keyData.get(key);
v.tog = toolbar.addToggle(v.id, v.gid, v.isel, v.cb, v.tt);
}
function addFirstRow() {
addToggle('I');
addToggle('O');
addToggle('D');
toolbar.addSeparator();
addToggle('H');
addToggle('M');
addToggle('P');
addToggle('B');
}
function createToolbar() {
initKeyData();
toolbar = tbs.createToolbar(name);
addFirstRow();
toolbar.show();
}
function destroyToolbar() {
tbs.destroyToolbar(name);
}
// allows us to ensure the button states track key strokes
function keyListener(key) {
var v = keyData.get(key);
if (v) {
// we have a valid button mapping
if (v.tog) {
// it's a toggle button
v.tog.toggleNoCb();
}
}
}
angular.module('ovTopo')
.factory('TopoToolbarService', ['$log', 'ToolbarService',
function (_$log_, _tbs_) {
$log = _$log_;
tbs = _tbs_;
return {
init: init,
createToolbar: createToolbar,
destroyToolbar: destroyToolbar,
keyListener: keyListener
};
}]);
}());