blob: 1b49a98b2040b0a6f2916a70833b9a0874ba56f5 [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';
Viswanath KSP813a20d2016-09-13 04:25:41 +053075 $scope.purgeTip = 'Purge selected intent';
Simon Hunt4e412732015-10-27 15:25:39 -070076
77 $scope.showIntent = function () {
Simon Hunt4a6b54b2015-10-27 22:08:25 -070078 var d = $scope.intentData;
Simon Hunt144bd792015-10-28 11:46:36 -070079 d && ns.navTo('topo', d);
Simon Hunt4e412732015-10-27 15:25:39 -070080 };
81
Viswanath KSP317f3292016-09-04 14:13:22 +053082 $scope.isIntentInstalled = function () {
83 return $scope.intentState === 'Installed';
84 };
85
Viswanath KSP813a20d2016-09-13 04:25:41 +053086 $scope.isIntentWithdrawn = function () {
87 return $scope.intentState === 'Withdrawn';
88 };
Viswanath KSP0f297702016-08-13 18:02:43 +053089
Viswanath KSP813a20d2016-09-13 04:25:41 +053090 function executeAction(bPurge) {
91 var content = ds.createDiv(),
92 txt = bPurge ? 'purge' : 'withdraw' ;
93
94 $scope.intentData.intentPurge = bPurge;
95
96 content.append('p').
97 text('Are you sure you want to '+ txt +
98 ' the selected intent?');
Viswanath KSP0f297702016-08-13 18:02:43 +053099
100 function dOk() {
101 var d = $scope.intentData;
Viswanath KSP813a20d2016-09-13 04:25:41 +0530102 $log.debug(d);
Viswanath KSP0f297702016-08-13 18:02:43 +0530103 d && tts.removeIntent(d);
Viswanath KSP317f3292016-09-04 14:13:22 +0530104 $scope.fired = true;
Viswanath KSP0f297702016-08-13 18:02:43 +0530105 }
106
107 function dCancel() {
108 ds.closeDialog();
109 $log.debug('Canceling remove-intent action');
110 }
111
112 ds.openDialog(dialogId, dialogOpts)
113 .setTitle('Confirm Action')
114 .addContent(content)
115 .addOk(dOk)
116 .addCancel(dCancel)
117 .bindKeys();
Viswanath KSP813a20d2016-09-13 04:25:41 +0530118 }
119
120 $scope.deactivateIntent = function () {
121 executeAction(false);
122 };
123
124 $scope.purgeIntent = function () {
125 executeAction(true);
Viswanath KSP0f297702016-08-13 18:02:43 +0530126 };
127
Kavitha Alagesan98c00062016-08-23 18:20:42 -0700128 $scope.briefToggle = function () {
129 $scope.brief = !$scope.brief;
130 };
131
Viswanath KSP0f297702016-08-13 18:02:43 +0530132 $scope.$on('$destroy', function () {
133 ds.closeDialog();
134 $log.debug('OvIntentCtrl has been destroyed');
135 });
136
137 $log.debug('OvIntentCtrl has been created');
Simon Hunt4e412732015-10-27 15:25:39 -0700138 }]);
Bri Prebilic Cole96f26472015-03-31 13:07:05 -0700139}());