blob: f241c83025004d7fb137b88525226e62c29a4ab1 [file] [log] [blame]
Bri Prebilic Cole96f26472015-03-31 13:07:05 -07001/*
Brian O'Connor5ab426f2016-04-09 01:19:45 -07002 * Copyright 2015-present Open Networking Laboratory
Bri Prebilic Cole96f26472015-03-31 13:07:05 -07003 *
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 -- Intent View Module
19 */
20
21(function () {
22 'use strict';
23
Viswanath KSP0f297702016-08-13 18:02:43 +053024 var dialogId = 'remove-intent-dialog',
25 dialogOpts = {
26 edge: 'right'
27 };
28
Bri Prebilic Cole96f26472015-03-31 13:07:05 -070029 angular.module('ovIntent', [])
30 .controller('OvIntentCtrl',
Simon Hunt4a6b54b2015-10-27 22:08:25 -070031 ['$log', '$scope', 'TableBuilderService', 'NavService',
Viswanath KSP0f297702016-08-13 18:02:43 +053032 'TopoTrafficService', 'DialogService',
Bri Prebilic Cole96f26472015-03-31 13:07:05 -070033
Viswanath KSP0f297702016-08-13 18:02:43 +053034 function ($log, $scope, tbs, ns, tts, ds) {
Kavitha Alagesan98c00062016-08-23 18:20:42 -070035 $scope.briefTip = 'Switch to brief view';
36 $scope.detailTip = 'Switch to detailed view';
37 $scope.brief = true;
Viswanath KSP317f3292016-09-04 14:13:22 +053038 $scope.intentState = 'NA';
39 $scope.fired = false;
Bri Prebilic Cole96f26472015-03-31 13:07:05 -070040
Simon Hunt4e412732015-10-27 15:25:39 -070041 function selCb($event, row) {
42 $log.debug('Got a click on:', row);
Simon Hunt4a6b54b2015-10-27 22:08:25 -070043 var m = /(\d+)\s:\s(.*)/.exec(row.appId),
44 id = m ? m[1] : null,
45 name = m ? m[2] : null;
46
Simon Hunt144bd792015-10-28 11:46:36 -070047 $scope.intentData = ($scope.selId && m) ? {
Viswanath KSP0f297702016-08-13 18:02:43 +053048 appId: id,
49 appName: name,
50 key: row.key
Simon Hunt4a6b54b2015-10-27 22:08:25 -070051 } : null;
Viswanath KSP317f3292016-09-04 14:13:22 +053052
53 $scope.intentState = row.state;
54 }
55
56 function respCb() {
57 if ($scope.fired) {
58 if ($scope.changedData) {
59 $scope.intentState = $scope.changedData.state;
60 }
61 $scope.fired = false;
62 }
Simon Hunt4e412732015-10-27 15:25:39 -070063 }
64
65 tbs.buildTable({
66 scope: $scope,
67 tag: 'intent',
68 selCb: selCb,
Viswanath KSP317f3292016-09-04 14:13:22 +053069 respCb: respCb,
Simon Hunt4e412732015-10-27 15:25:39 -070070 idKey: 'key'
71 });
72
73 $scope.topoTip = 'Show selected intent on topology view';
Viswanath KSP0f297702016-08-13 18:02:43 +053074 $scope.deactivateTip = 'Remove selected intent';
Simon Hunt4e412732015-10-27 15:25:39 -070075
76 $scope.showIntent = function () {
Simon Hunt4a6b54b2015-10-27 22:08:25 -070077 var d = $scope.intentData;
Simon Hunt144bd792015-10-28 11:46:36 -070078 d && ns.navTo('topo', d);
Simon Hunt4e412732015-10-27 15:25:39 -070079 };
80
Viswanath KSP317f3292016-09-04 14:13:22 +053081 $scope.isIntentInstalled = function () {
82 return $scope.intentState === 'Installed';
83 };
84
Viswanath KSP0f297702016-08-13 18:02:43 +053085 $scope.deactivateIntent = function () {
86 var content = ds.createDiv();
87
88 content.append('p')
89 .text('Are you sure you want to remove the selected intent?');
90
91 function dOk() {
92 var d = $scope.intentData;
93 d && tts.removeIntent(d);
Viswanath KSP317f3292016-09-04 14:13:22 +053094 $scope.fired = true;
Viswanath KSP0f297702016-08-13 18:02:43 +053095 }
96
97 function dCancel() {
98 ds.closeDialog();
99 $log.debug('Canceling remove-intent action');
100 }
101
102 ds.openDialog(dialogId, dialogOpts)
103 .setTitle('Confirm Action')
104 .addContent(content)
105 .addOk(dOk)
106 .addCancel(dCancel)
107 .bindKeys();
108 };
109
Kavitha Alagesan98c00062016-08-23 18:20:42 -0700110 $scope.briefToggle = function () {
111 $scope.brief = !$scope.brief;
112 };
113
Viswanath KSP0f297702016-08-13 18:02:43 +0530114 $scope.$on('$destroy', function () {
115 ds.closeDialog();
116 $log.debug('OvIntentCtrl has been destroyed');
117 });
118
119 $log.debug('OvIntentCtrl has been created');
Simon Hunt4e412732015-10-27 15:25:39 -0700120 }]);
Bri Prebilic Cole96f26472015-03-31 13:07:05 -0700121}());