blob: 81625d213821d77777e0978a47849ca7ac801efc [file] [log] [blame]
Thomas Vachuskaee79ad32019-03-05 17:26:55 -08001/*
2 * Copyright 2015-present Open Networking Foundation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17/*
18 ONOS GUI -- Onlp View Module
19 */
20
21(function () {
22 'use strict';
23
24 // injected references
25 var $log, $scope, $location, tbs, fs, mast, wss, ns, prefs, is, ps;
26
27 // internal state
28 var nzFilter = true,
29 showDelta = false,
30 pStartY,
31 pHeight,
32 wSize;
33
34 var keyBindings = {
35 };
36
37 var defaultOnlpPrefsState = {
38 };
39
40 var prefsState = {};
41
42 function updatePrefsState(what, b) {
43 prefsState[what] = b ? 1 : 0;
44 prefs.setPrefs('onlp_prefs', prefsState);
45 }
46
47 function restoreConfigFromPrefs() {
48 prefsState = prefs.asNumbers(
49 prefs.getPrefs('onlp_prefs', defaultOnlpPrefsState)
50 );
51
52 $log.debug('ONLP - Prefs State:', prefsState);
53 }
54
55 angular.module('ovOnlp', [])
56 .controller('OvOnlpCtrl', [
57 '$log', '$scope', '$location',
58 'TableBuilderService', 'FnService', 'MastService', 'WebSocketService',
59 'NavService', 'PrefsService', 'IconService',
60 'PanelService',
61
62 function (_$log_, _$scope_, _$location_,
63 _tbs_, _fs_, _mast_, _wss_,
64 _ns_, _prefs_, _is_, _ps_) {
65 var params;
66 var tableApi;
67 $log = _$log_;
68 $scope = _$scope_;
69 $location = _$location_;
70 tbs = _tbs_;
71 fs = _fs_;
72 mast = _mast_;
73 wss = _wss_;
74 ns = _ns_;
75 prefs = _prefs_;
76 is = _is_;
77 ps = _ps_;
78
79 params = $location.search();
80
81 $scope.deviceTip = 'Show device table';
82 $scope.flowTip = 'Show flow view for this device';
83 $scope.groupTip = 'Show group view for this device';
84 $scope.meterTip = 'Show meter view for selected device';
85 $scope.pipeconfTip = 'Show pipeconf view for selected device';
86
87 if (params.hasOwnProperty('devId')) {
88 $scope.devId = params['devId'];
89 }
90
91 $scope.payloadParams = {
92 nzFilter: nzFilter,
93 showDelta: showDelta,
94 };
95
96 tableApi = tbs.buildTable({
97 scope: $scope,
98 tag: 'onlp',
99 query: params,
100 });
101
102 function filterToggleState() {
103 return {
104 nzFilter: nzFilter,
105 showDelta: showDelta,
106 };
107 }
108
109 $scope.nav = function (path) {
110 if ($scope.devId) {
111 ns.navTo(path, { devId: $scope.devId });
112 }
113 };
114
115 function getOperatorFromQuery(query) {
116
117 var operator = query.split(' '),
118 opFunc = null;
119
120 if (operator[0] === '>') {
121 opFunc = _.gt;
122 } else if (operator[0] === '>=') {
123 opFunc = _.gte;
124 } else if (operator[0] === '<') {
125 opFunc = _.lt;
126 } else if (operator[0] === '<=') {
127 opFunc = _.lte;
128 } else {
129 return {
130 operator: opFunc,
131 searchText: query,
132 };
133 }
134
135 return {
136 operator: opFunc,
137 searchText: operator[1],
138 };
139 }
140
141 $scope.customFilter = function (prop, val) {
142 if (!val) {
143 return;
144 }
145
146 var search = getOperatorFromQuery(val),
147 operator = search.operator,
148 searchText = search.searchText;
149
150 if (operator) {
151 return function (row) {
152 var queryBy = $scope.queryBy || '$';
153
154 if (queryBy !== '$') {
155 var rowValue = parseInt(row[$scope.queryBy].replace(/,/g, ''));
156 return operator(rowValue, parseInt(searchText)) ? row : null;
157 } else {
158 var keys = _.keysIn(row);
159
160 for (var i = 0, l = keys.length; i < l; i++) {
161 var rowValue = parseInt(row[keys[i]].replace(/,/g, ''));
162 if (operator(rowValue, parseInt(searchText))) {
163 return row;
164 }
165 }
166 }
167 };
168 } else {
169 var out = {};
170 out[$scope.queryBy || '$'] = $scope.query;
171 return out;
172 }
173 };
174
175 restoreConfigFromPrefs();
176
177 $scope.$on('$destroy', function () {
178 dps.destroy();
179 });
180
181 $log.log('OvOnlpCtrl has been created');
182 }]);
183}());