blob: d962b8e248768c12f619b2d906ede59aee8afdd6 [file] [log] [blame]
Simon Hunt86388b12015-01-09 14:23:26 -08001/*
Brian O'Connora09fe5b2017-08-03 21:12:30 -07002 * Copyright 2015-present Open Networking Foundation
Simon Hunt86388b12015-01-09 14:23:26 -08003 *
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 -- Navigation Module
Simon Hunt86388b12015-01-09 14:23:26 -080019 */
20(function () {
21 'use strict';
22
23 // injected dependencies
Bri Prebilic Cole8f07f0d2015-04-23 13:28:43 -070024 var $log, $location, $window, fs;
Simon Hunt86388b12015-01-09 14:23:26 -080025
26 // internal state
27 var navShown = false;
Artur Juszczyk2a4e1ac2017-11-15 16:11:16 +010028 var ovParamsDataNs = {};
Simon Hunt86388b12015-01-09 14:23:26 -080029
30 function updatePane() {
31 var vis = navShown ? 'visible' : 'hidden';
32 d3.select('#nav').style('visibility', vis);
33 }
34
Simon Hunt86388b12015-01-09 14:23:26 -080035 function showNav() {
36 navShown = true;
37 updatePane();
38 }
39 function hideNav() {
40 navShown = false;
41 updatePane();
42 }
43 function toggleNav() {
44 navShown = !navShown;
45 updatePane();
46 }
Simon Hunt9d286562015-03-09 13:53:50 -070047 function hideIfShown() {
48 if (navShown) {
49 hideNav();
50 return true;
51 }
52 return false;
53 }
Simon Hunt86388b12015-01-09 14:23:26 -080054
Artur Juszczyk2a4e1ac2017-11-15 16:11:16 +010055 function isEmpty(obj) {
56 for (var x in obj) { return false; }
57 return true;
58 }
59
Bri Prebilic Cole8f07f0d2015-04-23 13:28:43 -070060 function navTo(path, params) {
Artur Juszczyk2a4e1ac2017-11-15 16:11:16 +010061
Bri Prebilic Cole8f07f0d2015-04-23 13:28:43 -070062 var url;
Artur Juszczyk2a4e1ac2017-11-15 16:11:16 +010063 if (params.hasOwnProperty('ovParams') && !isEmpty(params.ovParams) ) {
64 ovParamsDataNs = params.ovParams;
65 delete params.ovParams;
66 }
67
Bri Prebilic Cole8f07f0d2015-04-23 13:28:43 -070068 if (!path) {
69 $log.warn('Not a valid navigation path');
70 return null;
71 }
72 $location.url('/' + path);
73
74 if (fs.isO(params)) {
75 $location.search(params);
76 } else if (params !== undefined) {
77 $log.warn('Query params not an object', params);
78 }
79
80 url = $location.absUrl();
81 $log.log('Navigating to ', url);
82 $window.location.href = url;
Artur Juszczyk2a4e1ac2017-11-15 16:11:16 +010083
84 }
85
86 function getOvParamsData() {
87 return ovParamsDataNs;
Bri Prebilic Cole8f07f0d2015-04-23 13:28:43 -070088 }
89
Simon Hunt86388b12015-01-09 14:23:26 -080090 angular.module('onosNav', [])
Bri Prebilic Cole8f07f0d2015-04-23 13:28:43 -070091 .controller('NavCtrl', ['$log',
92
93 function (_$log_) {
Simon Hunt86388b12015-01-09 14:23:26 -080094 var self = this;
95 $log = _$log_;
96
97 self.hideNav = hideNav;
98 $log.log('NavCtrl has been created');
Steven Burrows1c2a9682017-07-14 16:52:46 +010099 },
Simon Hunt86388b12015-01-09 14:23:26 -0800100 ])
Bri Prebilic Cole8f07f0d2015-04-23 13:28:43 -0700101 .factory('NavService',
102 ['$log', '$location', '$window', 'FnService',
Simon Hunt86388b12015-01-09 14:23:26 -0800103
Artur Juszczyk2a4e1ac2017-11-15 16:11:16 +0100104 function (_$log_, _$location_, _$window_, _fs_ ) {
Bri Prebilic Cole8f07f0d2015-04-23 13:28:43 -0700105 $log = _$log_;
106 $location = _$location_;
107 $window = _$window_;
108 fs = _fs_;
109
Artur Juszczyk2a4e1ac2017-11-15 16:11:16 +0100110
Bri Prebilic Cole8f07f0d2015-04-23 13:28:43 -0700111 return {
112 showNav: showNav,
113 hideNav: hideNav,
114 toggleNav: toggleNav,
115 hideIfShown: hideIfShown,
Steven Burrows1c2a9682017-07-14 16:52:46 +0100116 navTo: navTo,
Artur Juszczyk2a4e1ac2017-11-15 16:11:16 +0100117 navPassedData: getOvParamsData,
Bri Prebilic Cole8f07f0d2015-04-23 13:28:43 -0700118 };
Simon Hunt86388b12015-01-09 14:23:26 -0800119 }]);
120
121}());