X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=ecomp-portal-FE-common%2Fclient%2Fapp%2Fviews%2Fheader%2Fheader.controller.js;h=33cb84546d2b322e8ed10609ec78587968b56b18;hb=refs%2Fchanges%2F85%2F4985%2F2;hp=961362a5eb6178d3ff565bf830088a3be5c1d7dc;hpb=ba838f2e13f1e8050c75e68bd3733d56d8f416d5;p=portal.git diff --git a/ecomp-portal-FE-common/client/app/views/header/header.controller.js b/ecomp-portal-FE-common/client/app/views/header/header.controller.js index 961362a5..33cb8454 100644 --- a/ecomp-portal-FE-common/client/app/views/header/header.controller.js +++ b/ecomp-portal-FE-common/client/app/views/header/header.controller.js @@ -1,449 +1,558 @@ -/*- - * ================================================================================ - * ECOMP Portal - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property - * ================================================================================ - * 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. - * ================================================================================ - */ -'use strict'; -(function () { - class HeaderCtrl { - constructor($log, $window, userProfileService, menusService, $scope, ECOMP_URL_REGEX, $cookies, $state,auditLogService,notificationService) { - this.firstName = ''; - this.lastName = ''; - this.$log = $log; - this.menusService = menusService; - this.$scope = $scope; - this.favoritesMenuItems = ''; - $scope.favoriteItemsCount = 0; - $scope.favoritesMenuItems = ''; - $scope.showFavorites = false; - $scope.emptyFavorites = false; - $scope.favoritesWindow = false; - $scope.notificationCount=0; - $scope.showNotification = true; - - $scope.hideMenus = false; - - $scope.menuItems = []; - $scope.activeClickSubMenu = { - x: '' - }; - $scope.activeClickMenu = { - x: '' - }; - $scope.megaMenuDataObject =[]; - $scope.notificationCount= notificationService.notificationCount; - this.isLoading = true; - this.ECOMP_URL_REGEX = ECOMP_URL_REGEX; - - var unflatten = function( array, parent, tree ){ - - tree = typeof tree !== 'undefined' ? tree : []; - parent = typeof parent !== 'undefined' ? parent : { menuId: null }; - var children = _.filter( array, function(child){ return child.parentMenuId == parent.menuId; }); - - if( !_.isEmpty( children ) ){ - if( parent.menuId === null ){ - tree = children; - }else{ - parent['children'] = children - } - _.each( children, function( child ){ unflatten( array, child ) } ); - } - - return tree; - } - - userProfileService.getFunctionalMenuStaticInfo() - .then(res=> { - // $log.debug('HeaderCtrl::getFunctionalMenuStaticInfo: getting Functional Menu Static Info init'); - if(res==null || res.firstName==null || res.firstName=='' || res.lastName==null || res.lastName=='' ){ - // $log.info('HeaderCtrl::getFunctionalMenuStaticInfo: failed getting userinfo from shared context.. '); - $log.info('HeaderCtrl: failed to get all required data, trying user profile'); - userProfileService.getUserProfile() - .then(profile=> { - // $log.debug('HeaderCtrl:: getting userinfo from session success'); - this.firstName = profile.firstName; - this.lastName = profile.lastName; - // $log.debug('HeaderCtrl::getFunctionalMenuStaticInfo: user has the following roles: ' + profile.roles); - }).catch(err=> { - $log.error('Header Controller:: getUserProfile() failed: ' + err); - }); - } else { - // $log.debug('HeaderCtrl: fetched Functional Menu Static Info successfully',res); - this.firstName = res.firstName; - this.lastName = res.lastName; - } - - menusService.GetFunctionalMenuForUser() - .then(jsonHeaderMenu=> { - $scope.menuItems = unflatten( jsonHeaderMenu ); - $scope.megaMenuDataObject = $scope.menuItems; - }).catch(err=> { - $log.error('HeaderCtrl::GetFunctionalMenuForUser: HeaderCtrl json returned: ' + err); - }); - - }).catch(err=> { - $log.error('HeaderCtrl::getFunctionalMenuStaticInfo failed: ' + err); - }); - - //store audit log - $scope.auditLog = function(app,type) { - var comment = 'type: '+type+ ',title: '+app.text+",url: "+app.url; - auditLogService.storeAudit(app.appid,'functional',comment); - }; - - $scope.loadFavorites = function () { - $scope.hideMenus = false; - // $log.debug('HeaderCtrl::loadFavorites: loadFavorites has happened.'); - if ($scope.favoritesMenuItems == '') { - generateFavoriteItems(); - // $log.debug('HeaderCtrl::loadFavorites: loadFavorites is calling generateFavoriteItems()'); - } else { - // $log.debug('HeaderCtrl::loadFavorites: loadFavorites is NOT calling generateFavoriteItems()'); - } - } - - $scope.goToUrl = (item) => { - // $log.error('HeaderCtrl::goToUrl has started',item); - let url = item.url; - let restrictedApp = item.restrictedApp; - if (!url) { - $log.warn('HeaderCtrl::goToUrl: No url found for this application, doing nothing..'); - return; - } - if (restrictedApp) { - $window.open(url, '_blank'); - } else { - if(item.url=="getAccess" || item.url=="contactUs"){ - // if (url = window.location.href) - $state.go("root."+url); - } else { - var tabContent = { id: new Date(), title: item.text, url: item.url,appId:item.appid }; - $cookies.putObject('addTab', tabContent ); - } - // $log.debug('HeaderCtrl::goToUrl: url = ', url); - } - $scope.hideMenus = true; - } - - - - $scope.submenuLevelAction = function(index, column) { - if ($scope.favoritesMenuItems == '') { - generateFavoriteItems(); - // $log.debug('HeaderCtrl::submenuLevelAction: submenuLevelAction is calling generateFavoriteItems()'); - } else { - // $log.debug('submenuLevelAction is NOT calling generateFavoriteItems()'); - } - // $log.debug('item hovered: ' + index + '; column = ' + column); - // if (column == 2) { // 2 is Design - // // This is an admitted hack. See aw3218 for reasons why - // $log.debug('submenuLevelAction column == 2'); - // $scope.favoritesWindow = false; - // $scope.showFavorites = false; - // $scope.emptyFavorites = false; - // } - if (index=='Favorites' && $scope.favoriteItemsCount != 0) { - // $log.debug('HeaderCtrl::submenuLevelAction: Showing Favorites window'); - // generateFavoriteItems(); - $scope.favoritesWindow = true; - $scope.showFavorites = true; - $scope.emptyFavorites = false; - } - if (index=='Favorites' && $scope.favoriteItemsCount == 0) { - // $log.debug('HeaderCtrl::submenuLevelAction: Hiding Favorites window in favor of No Favorites Window'); - // generateFavoriteItems(); - $scope.favoritesWindow = true; - $scope.showFavorites = false; - $scope.emptyFavorites = true; - } - if (index!='Favorites' ) { - $scope.favoritesWindow = false; - $scope.showFavorites = false; - $scope.emptyFavorites = false; - } - - }; - - $scope.hideFavoritesWindow = function() { - $scope.showFavorites = false; - $scope.emptyFavorites = false; - // $scope.thirdFourthMenus = true; - } - - $scope.isUrlFavorite = function (menuId) { - // $log.debug('array objects in menu favorites = ' + $scope.favoriteItemsCount + '; menuId=' + menuId); - var jsonMenu = JSON.stringify($scope.favoritesMenuItems); - var isMenuFavorite = jsonMenu.indexOf('menuId\":' + menuId); - // $log.debug('jsonMenu.indexOf(menuId:' + jsonMenu.indexOf('menuId\":'+menuId)); - // $log.debug('isMenuFavorite= ' + isMenuFavorite); - if (isMenuFavorite==-1) { - return false; - } else { - return true; - } - - } - - let generateFavoriteItems = () => { - menusService.getFavoriteItems() - .then(favorites=> { - // $log.debug('HeaderCtrl.getFavoriteItems:: ' + JSON.stringify(favorites)); - $scope.favoritesMenuItems = favorites; - $scope.favoriteItemsCount = Object.keys(favorites).length; - // $log.info('HeaderCtrl.getFavoriteItems:: number of favorite menus: ' + $scope.favoriteItemsCount); - }).catch(err=> { - $log.error('HeaderCtrl.getFavoriteItems:: Error retrieving Favorites menus: ' + err); - }); - } - - $scope.setAsFavoriteItem = function(event, menuId){ - var jsonMenuID = angular.toJson({'menuId': + menuId }); - // $log.debug('HeaderCtrl::setFavoriteItems: ' + jsonMenuID + " - " + event.target.id); - - menusService.setFavoriteItem(jsonMenuID) - .then(() => { - // var elementId = '#'+ event.currentTarget.id; - angular.element('#' + event.target.id).css('color', '#fbb313'); - generateFavoriteItems(); - }).catch(err=> { - $log.error('HeaderCtrl::setFavoriteItems:: API setFavoriteItem error: ' + err); - }); - }; - - $scope.removeAsFavoriteItem = function(event, menuId){ - // $log.debug('-----------------------------removeAsFavoriteItem: ' + menuId + " - " + event.target.id); - menusService.removeFavoriteItem(menuId) - .then(() => { - angular.element('#' + event.target.id).css('color', '#666666'); - generateFavoriteItems(); - }).catch(err=> { - $log.error('HeaderCtrl::removeAsFavoriteItem: API removeFavoriteItem error: ' + err); - }); - }; - - $scope.goToPortal = (headerText, url) => { - if (!url) { - $log.warn('HeaderCtrl::goToPortal: No url found for this application, doing nothing..'); - return; - } - if (!ECOMP_URL_REGEX.test(url)) { - url = 'http://' + url; - } - - if(headerText.startsWith("vUSP")) { - window.open(url, '_blank');//, '_self' - } - else { - var tabContent = { id: new Date(), title: headerText, url: url }; - $cookies.putObject('addTab', tabContent ); - } - }; - - } - } - class LoginSnippetCtrl { - constructor($log, $scope, $cookies, $timeout, userProfileService, sessionService) { - $scope.firstName=""; - $scope.lastName=""; - $scope.displayUserAppRoles=false; - $scope.allAppsLogout = function(){ - - var cookieTabs = $cookies.getObject('visInVisCookieTabs'); - if(cookieTabs!=null){ - for(var t in cookieTabs){ - - var url = cookieTabs[t].content; - if(url != "") { - sessionService.logout(url); - } - } - } - // wait for individual applications to log out before the portal logout - $timeout(function() { - window.location = "logout.htm"; - }, 2000); - } - - - try { - userProfileService.getFunctionalMenuStaticInfo() - .then(res=> { - // $log.info('HeaderCtrl::LoginSnippetCtrl: Login information: ' + JSON.stringify(res)); - $scope.firstName = res.firstName; - $scope.lastName = res.lastName; - $scope.loginSnippetEmail = res.email; - $scope.loginSnippetUserid = res.userId; - $scope.lastLogin = res.last_login; - }).catch(err=> { - $log.error('HeaderCtrl::LoginSnippetCtrl: failed in getFunctionalMenuStaticInfo: ' + err); - }); - } catch (err) { - $log.error('HeaderCtrl::LoginSnippetCtrl caught exception: ' + err); - } - - $scope.getUserApplicationRoles= function(){ - $scope.userapproles = []; - if($scope.displayUserAppRoles) - $scope.displayUserAppRoles = false; - else - $scope.displayUserAppRoles = true; - - userProfileService.getUserAppRoles($scope.loginSnippetUserid) - .then(res=>{ - - for(var i=0;i { - notificationService.decrementRefreshCount(); - var count = notificationService.getRefreshCount(); - if (res==null || res.data==null || res.data.message!='success') { - $log.error('NotificationCtrl::updateNotifications: failed to get notifications'); - if (intervalPromise != null) - $interval.cancel(intervalPromise); - } else if(count<=0){ - if (intervalPromise != null) - $interval.cancel(intervalPromise); - } else { - $scope.notifications = []; - notificationService.setNotificationCount(res.data.response.length); - for(var i=0;i { - $log.error('NotificationCtrl::getNotification: caught exception: ' + err); - if (intervalPromise != null) - $interval.cancel(intervalPromise); - }); - } - $scope.getNotification(); - function updateNotifications() { - $scope.getNotification(); - } - $scope.start = function(rate) { - // stops any running interval to avoid two intervals running at the same time - $scope.stop(); - // store the interval promise - intervalPromise = $interval(updateNotifications, rate); - }; - - $scope.stop = function() { - $interval.cancel(intervalPromise); - }; - - - $scope.showDetailedJsonMessage=function (selectedAdminNotification) { - if (selectedAdminNotification.source!=='EP'){ - var messageObject=JSON.parse(selectedAdminNotification.message); - var html=""; - html+='

'+'Message Source'+' : '+selectedAdminNotification.source+'

'; - html+='

'+'Message Title'+' : '+selectedAdminNotification.title+'

'; - for(var field in messageObject){ - if(field=='eventDate'||field=='lastModifiedDate'){ - html+='

'+field+' : '+new Date(+messageObject[field])+'

'; - - }else{ - html+='

'+field+' : '+messageObject[field]+'

'; - - } - } - - var modalInstance = ngDialog.open({ - templateUrl: 'app/views/user-notifications-admin/user.notifications.Json.details.modal.page.html', - controller: 'userNotificationCtrl', - resolve: { - message: function () { - var message = { - title: '', - text: html - - }; - return message; - }, - - } - }); - - } - }; - - notificationService.getNotificationRate().then(res=> { - if (res == null || res.response == null) { - $log.error('NotificationCtrl: failed to notification update rate or duration, check system.properties file.'); - } else { - var rate = parseInt(res.response.updateRate); - var duration = parseInt(res.response.updateDuration); - notificationService.setMaxRefreshCount(parseInt(duration/rate)+1); - notificationService.setRefreshCount(notificationService.maxCount); - if (rate != NaN && duration != NaN) { - $scope.updateRate=rate; - $scope.start($scope.updateRate); - } - } - }).catch(err=> { - $log.error('NotificationCtrl: getNotificationRate() failed: ' + err); - }); - - $scope.deleteNotification = function(index){ - if ($scope.notifications[index].id == null || $scope.notifications[index].id == '') { - $log.error('NotificationCtrl: failed to delete Notification.'); - return; - } - notificationService.setNotificationRead($scope.notifications[index].id); - $scope.notifications.splice(index,1); - notificationService.setNotificationCount($scope.notifications.length); - } - } - } - NotificationCtrl.$inject = ['$log', '$scope', '$cookies', '$timeout', 'sessionService','notificationService','$interval','ngDialog']; - LoginSnippetCtrl.$inject = ['$log', '$scope', '$cookies', '$timeout','userProfileService', 'sessionService']; - HeaderCtrl.$inject = ['$log', '$window', 'userProfileService', 'menusService', '$scope', 'ECOMP_URL_REGEX','$cookies','$state','auditLogService','notificationService']; - angular.module('ecompApp').controller('HeaderCtrl', HeaderCtrl); - angular.module('ecompApp').controller('loginSnippetCtrl', LoginSnippetCtrl); - angular.module('ecompApp').controller('notificationCtrl', NotificationCtrl); - -})(); +/*- + * ================================================================================ + * ECOMP Portal + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property + * ================================================================================ + * 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. + * ================================================================================ + */ +'use strict'; +(function () { + class HeaderCtrl { + constructor($log, $window, userProfileService, menusService, $scope, ECOMP_URL_REGEX, $cookies, $state,auditLogService,notificationService,recommendationService,ngDialog) { + this.firstName = ''; + this.lastName = ''; + this.$log = $log; + this.menusService = menusService; + this.$scope = $scope; + this.favoritesMenuItems = ''; + $scope.favoriteItemsCount = 0; + $scope.favoritesMenuItems = ''; + $scope.showFavorites = false; + $scope.emptyFavorites = false; + $scope.favoritesWindow = false; + $scope.notificationCount=0; + $scope.recommendationCount=0; + $scope.showNotification = true; + + $scope.hideMenus = false; + + $scope.menuItems = []; + $scope.activeClickSubMenu = { + x: '' + }; + $scope.activeClickMenu = { + x: '' + }; + $scope.megaMenuDataObject =[]; + $scope.notificationCount= notificationService.notificationCount; + $scope.recommendationCount= recommendationService.recommendationCount; + this.isLoading = true; + this.ECOMP_URL_REGEX = ECOMP_URL_REGEX; + + var unflatten = function( array, parent, tree ){ + + tree = typeof tree !== 'undefined' ? tree : []; + parent = typeof parent !== 'undefined' ? parent : { menuId: null }; + var children = _.filter( array, function(child){ return child.parentMenuId == parent.menuId; }); + + if( !_.isEmpty( children ) ){ + if( parent.menuId === null ){ + tree = children; + }else{ + parent['children'] = children + } + _.each( children, function( child ){ unflatten( array, child ) } ); + } + + return tree; + } + + userProfileService.getFunctionalMenuStaticInfo() + .then(res=> { + // $log.debug('HeaderCtrl::getFunctionalMenuStaticInfo: getting Functional Menu Static Info init'); + if(res==null || res.firstName==null || res.firstName=='' || res.lastName==null || res.lastName=='' ){ + // $log.info('HeaderCtrl::getFunctionalMenuStaticInfo: failed getting userinfo from shared context.. '); + $log.info('HeaderCtrl: failed to get all required data, trying user profile'); + userProfileService.getUserProfile() + .then(profile=> { + // $log.debug('HeaderCtrl:: getting userinfo from session success'); + this.firstName = profile.firstName; + this.lastName = profile.lastName; + // $log.debug('HeaderCtrl::getFunctionalMenuStaticInfo: user has the following roles: ' + profile.roles); + }).catch(err=> { + $log.error('Header Controller:: getUserProfile() failed: ' + err); + }); + } else { + // $log.debug('HeaderCtrl: fetched Functional Menu Static Info successfully',res); + this.firstName = res.firstName; + this.lastName = res.lastName; + } + + menusService.GetFunctionalMenuForUser() + .then(jsonHeaderMenu=> { + $scope.menuItems = unflatten( jsonHeaderMenu ); + $scope.megaMenuDataObject = $scope.menuItems; + }).catch(err=> { + $log.error('HeaderCtrl::GetFunctionalMenuForUser: HeaderCtrl json returned: ' + err); + }); + + }).catch(err=> { + $log.error('HeaderCtrl::getFunctionalMenuStaticInfo failed: ' + err); + }); + + //store audit log + $scope.auditLog = function(app,type) { + var comment = 'type: '+type+ ',title: '+app.text+",url: "+app.url; + auditLogService.storeAudit(app.appid,'functional',comment); + }; + + $scope.loadFavorites = function () { + $scope.hideMenus = false; + // $log.debug('HeaderCtrl::loadFavorites: loadFavorites has happened.'); + if ($scope.favoritesMenuItems == '') { + generateFavoriteItems(); + // $log.debug('HeaderCtrl::loadFavorites: loadFavorites is calling generateFavoriteItems()'); + } else { + // $log.debug('HeaderCtrl::loadFavorites: loadFavorites is NOT calling generateFavoriteItems()'); + } + } + + $scope.goToUrl = (item) => { + // $log.error('HeaderCtrl::goToUrl has started',item); + let url = item.url; + let restrictedApp = item.restrictedApp; + if (!url) { + $log.warn('HeaderCtrl::goToUrl: No url found for this application, doing nothing..'); + return; + } + if (restrictedApp) { + $window.open(url, '_blank'); + } else { + if(item.url=="getAccess" || item.url=="contactUs"){ + // if (url = window.location.href) + $state.go("root."+url); + } else { + var tabContent = { id: new Date(), title: item.text, url: item.url,appId:item.appid }; + $cookies.putObject('addTab', tabContent ); + } + // $log.debug('HeaderCtrl::goToUrl: url = ', url); + } + $scope.hideMenus = true; + } + + + + $scope.submenuLevelAction = function(index, column) { + if ($scope.favoritesMenuItems == '') { + generateFavoriteItems(); + // $log.debug('HeaderCtrl::submenuLevelAction: submenuLevelAction is calling generateFavoriteItems()'); + } else { + // $log.debug('submenuLevelAction is NOT calling generateFavoriteItems()'); + } + // $log.debug('item hovered: ' + index + '; column = ' + column); + // if (column == 2) { // 2 is Design + // // This is an admitted hack. See aw3218 for reasons why + // $log.debug('submenuLevelAction column == 2'); + // $scope.favoritesWindow = false; + // $scope.showFavorites = false; + // $scope.emptyFavorites = false; + // } + if (index=='Favorites' && $scope.favoriteItemsCount != 0) { + // $log.debug('HeaderCtrl::submenuLevelAction: Showing Favorites window'); + // generateFavoriteItems(); + $scope.favoritesWindow = true; + $scope.showFavorites = true; + $scope.emptyFavorites = false; + } + if (index=='Favorites' && $scope.favoriteItemsCount == 0) { + // $log.debug('HeaderCtrl::submenuLevelAction: Hiding Favorites window in favor of No Favorites Window'); + // generateFavoriteItems(); + $scope.favoritesWindow = true; + $scope.showFavorites = false; + $scope.emptyFavorites = true; + } + if (index!='Favorites' ) { + $scope.favoritesWindow = false; + $scope.showFavorites = false; + $scope.emptyFavorites = false; + } + + }; + + $scope.hideFavoritesWindow = function() { + $scope.showFavorites = false; + $scope.emptyFavorites = false; + // $scope.thirdFourthMenus = true; + } + + $scope.isUrlFavorite = function (menuId) { + // $log.debug('array objects in menu favorites = ' + $scope.favoriteItemsCount + '; menuId=' + menuId); + var jsonMenu = JSON.stringify($scope.favoritesMenuItems); + var isMenuFavorite = jsonMenu.indexOf('menuId\":' + menuId); + // $log.debug('jsonMenu.indexOf(menuId:' + jsonMenu.indexOf('menuId\":'+menuId)); + // $log.debug('isMenuFavorite= ' + isMenuFavorite); + if (isMenuFavorite==-1) { + return false; + } else { + return true; + } + + } + + /*Getting Ecomp portal Title*/ + + let getEcompPortalTitle = () => { + menusService.getEcompPortalTitle() + .then(title=> { + $scope.ecompTitle = title.response; + }).catch(err=> { + $log.error('HeaderCtrl.getEcompPortalTitle:: Error retrieving ECMOP portal title: ' + err); + }); + } + getEcompPortalTitle(); + + let generateFavoriteItems = () => { + menusService.getFavoriteItems() + .then(favorites=> { + // $log.debug('HeaderCtrl.getFavoriteItems:: ' + JSON.stringify(favorites)); + $scope.favoritesMenuItems = favorites; + $scope.favoriteItemsCount = Object.keys(favorites).length; + // $log.info('HeaderCtrl.getFavoriteItems:: number of favorite menus: ' + $scope.favoriteItemsCount); + }).catch(err=> { + $log.error('HeaderCtrl.getFavoriteItems:: Error retrieving Favorites menus: ' + err); + }); + } + + $scope.setAsFavoriteItem = function(event, menuId){ + var jsonMenuID = angular.toJson({'menuId': + menuId }); + // $log.debug('HeaderCtrl::setFavoriteItems: ' + jsonMenuID + " - " + event.target.id); + + menusService.setFavoriteItem(jsonMenuID) + .then(() => { + // var elementId = '#'+ event.currentTarget.id; + angular.element('#' + event.target.id).css('color', '#fbb313'); + generateFavoriteItems(); + }).catch(err=> { + $log.error('HeaderCtrl::setFavoriteItems:: API setFavoriteItem error: ' + err); + }); + }; + + $scope.removeAsFavoriteItem = function(event, menuId){ + // $log.debug('-----------------------------removeAsFavoriteItem: ' + menuId + " - " + event.target.id); + menusService.removeFavoriteItem(menuId) + .then(() => { + angular.element('#' + event.target.id).css('color', '#666666'); + generateFavoriteItems(); + }).catch(err=> { + $log.error('HeaderCtrl::removeAsFavoriteItem: API removeFavoriteItem error: ' + err); + }); + }; + + $scope.goToPortal = (headerText, url) => { + if (!url) { + $log.warn('HeaderCtrl::goToPortal: No url found for this application, doing nothing..'); + return; + } + if (!ECOMP_URL_REGEX.test(url)) { + url = 'http://' + url; + } + + if(headerText.startsWith("vUSP")) { + window.open(url, '_blank');//, '_self' + } + else { + var tabContent = { id: new Date(), title: headerText, url: url }; + $cookies.putObject('addTab', tabContent ); + } + }; + + $scope.editProfile = () => { + let data = null; + + ngDialog.open({ + templateUrl: 'app/views/header/profile-edit-dialogs/profile-edit.modal.html', + controller: 'EditProfileModalCtrl', + controllerAs: 'profileDetail', + data: '' + }).closePromise.then(needUpdate => { + if(needUpdate.value === true){ + // $log.debug('AdminsCtrl:openAddNewAdminModal:: updating table data...'); + updateTableData(); + } + }); + }; + } + } + class LoginSnippetCtrl { + constructor($log, $scope, $cookies, $timeout, userProfileService, sessionService) { + $scope.firstName=""; + $scope.lastName=""; + $scope.displayUserAppRoles=false; + $scope.allAppsLogout = function(){ + + var cookieTabs = $cookies.getObject('visInVisCookieTabs'); + if(cookieTabs!=null){ + for(var t in cookieTabs){ + + var url = cookieTabs[t].content; + if(url != "") { + sessionService.logout(url); + } + } + } + // wait for individual applications to log out before the portal logout + $timeout(function() { + window.location = "logout.htm"; + }, 2000); + } + + + try { + userProfileService.getFunctionalMenuStaticInfo() + .then(res=> { + // $log.info('HeaderCtrl::LoginSnippetCtrl: Login information: ' + JSON.stringify(res)); + $scope.firstName = res.firstName; + $scope.lastName = res.lastName; + $scope.loginSnippetEmail = res.email; + $scope.loginSnippetUserid = res.userId; + $scope.lastLogin = res.last_login; + }).catch(err=> { + $log.error('HeaderCtrl::LoginSnippetCtrl: failed in getFunctionalMenuStaticInfo: ' + err); + }); + } catch (err) { + $log.error('HeaderCtrl::LoginSnippetCtrl caught exception: ' + err); + } + + $scope.getUserApplicationRoles= function(){ + $scope.userapproles = []; + if($scope.displayUserAppRoles) + $scope.displayUserAppRoles = false; + else + $scope.displayUserAppRoles = true; + + userProfileService.getUserAppRoles($scope.loginSnippetUserid) + .then(res=>{ + + for(var i=0;i { + notificationService.decrementRefreshCount(); + var count = notificationService.getRefreshCount(); + if (res==null || res.data==null || res.data.message!='success') { + $log.error('NotificationCtrl::updateNotifications: failed to get notifications'); + if (intervalPromise != null) + $interval.cancel(intervalPromise); + } else if(count<=0){ + if (intervalPromise != null) + $interval.cancel(intervalPromise); + } else { + $scope.notifications = []; + notificationService.setNotificationCount(res.data.response.length); + for(var i=0;i { + $log.error('NotificationCtrl::getNotification: caught exception: ' + err); + if (intervalPromise != null) + $interval.cancel(intervalPromise); + }); + } + $scope.getNotification(); + function updateNotifications() { + $scope.getNotification(); + } + $scope.start = function(rate) { + // stops any running interval to avoid two intervals running at the same time + $scope.stop(); + // store the interval promise + intervalPromise = $interval(updateNotifications, rate); + }; + + $scope.stop = function() { + $interval.cancel(intervalPromise); + }; + + $scope.showDetailedJsonMessage=function (selectedAdminNotification) { + notificationService.getMessageRecipients(selectedAdminNotification.id).then(res =>{ + $scope.messageRecipients = res; + var messageObject=JSON.parse(selectedAdminNotification.message); + var html=""; + html+='

'+'Message Source'+' : '+selectedAdminNotification.source+'

'; + html+='

'+'Message Title'+' : '+selectedAdminNotification.title+'

'; + html+='

'+'Message Recipient'+' : '+$scope.messageRecipients+'

'; + + for(var field in messageObject){ + if(field=='eventDate'||field=='lastModifiedDate'){ + html+='

'+field+' : '+new Date(+messageObject[field])+'

'; + + }else{ + html+='

'+field+' : '+messageObject[field]+'

'; + + } + } + + var modalInstance = ngDialog.open({ + templateUrl: 'app/views/user-notifications-admin/user.notifications.Json.details.modal.page.html', + controller: 'userNotificationCtrl', + resolve: { + message: function () { + var message = { + title: '', + text: html + + }; + return message; + }, + + } + }); + + }).catch(err => { + $log.error('userNotificationsCtrl:getMessageRecipients:: error ', err); + $scope.isLoadingTable = false; + }); + }; + + notificationService.getNotificationRate().then(res=> { + if (res == null || res.response == null) { + $log.error('NotificationCtrl: failed to notification update rate or duration, check system.properties file.'); + } else { + var rate = parseInt(res.response.updateRate); + var duration = parseInt(res.response.updateDuration); + notificationService.setMaxRefreshCount(parseInt(duration/rate)+1); + notificationService.setRefreshCount(notificationService.maxCount); + if (rate != NaN && duration != NaN) { + $scope.updateRate=rate; + $scope.start($scope.updateRate); + } + } + }).catch(err=> { + $log.error('NotificationCtrl: getNotificationRate() failed: ' + err); + }); + + $scope.deleteNotification = function(index){ + if ($scope.notifications[index].id == null || $scope.notifications[index].id == '') { + $log.error('NotificationCtrl: failed to delete Notification.'); + return; + } + notificationService.setNotificationRead($scope.notifications[index].id); + $scope.notifications.splice(index,1); + notificationService.setNotificationCount($scope.notifications.length); + } + } + } + + class RecommendationCtrl{ + constructor($log, $scope, $cookies, $timeout, sessionService,recommendationService,notificationService,$interval,ngDialog) { + $scope.recommendations=[]; + var intervalPromise = null; + $scope.recommendationCount= recommendationService.recommendationCount; + console.log("$",$); + $scope.getRecommendations = function(){ + $("#recommendation-bulb").removeClass('icon-misc-bulbL').addClass('icon-misc-bulb') + recommendationService.getRecommendations() + + .then(res=> { + $("#recommendation-bulb").removeClass('icon-misc-bulb').addClass('icon-misc-bulbL') + recommendationService.decrementRefreshCount(); + var count = recommendationService.getRefreshCount(); + if ( res.data==null) { + $log.error('RecommendationCtrl::update Recommendation: failed to get recommendation'); + if (intervalPromise != null) + $interval.cancel(intervalPromise); + } else if(count>=0){ + if (intervalPromise != null) + $interval.cancel(intervalPromise); + } else { + $scope.recommendations = []; + recommendationService.setRecommendationCount(res.data.recommendations.length); + for(var i=0;i { + $log.error('RecommendationCtrl::gatRecommendations: caught exception: ' + err); + if (intervalPromise != null) + $interval.cancel(intervalPromise); + }); + } + $scope.getRecommendations(); + + function updateRecommendations() { + $scope.getRecommendations(); + } + + notificationService.getNotificationRate().then(res=> { + if (res == null || res.response == null) { + $log.error('NotificationCtrl: failed to notification update rate or duration, check system.properties file.'); + } else { + var rate = parseInt(res.response.updateRate); + var duration = parseInt(res.response.updateDuration); + notificationService.setMaxRefreshCount(parseInt(duration/rate)+1); + notificationService.setRefreshCount(notificationService.maxCount); + if (rate != NaN && duration != NaN) { + $scope.updateRate=rate; + setInterval(function(){$scope.getRecommendations();},rate); + + } + } + }).catch(err=> { + $log.error('NotificationCtrl: getNotificationRate() failed: ' + err); + }); + $scope.deleteRecommendation = function(index){ + if ($scope.recommendations[index] == null || $scope.recommendations[index] == '') { + $log.error('RecommendationCtrl: failed to delete Recommendation.'); + return; + } + $scope.recommendations.splice(index,1); + recommendationService.setRecommendationCount($scope.recommendations.length); + } + } + } + NotificationCtrl.$inject = ['$log', '$scope', '$cookies', '$timeout', 'sessionService','notificationService','$interval','ngDialog']; + RecommendationCtrl.$inject = ['$log', '$scope', '$cookies', '$timeout', 'sessionService','recommendationService','notificationService','$interval','ngDialog']; + LoginSnippetCtrl.$inject = ['$log', '$scope', '$cookies', '$timeout','userProfileService', 'sessionService']; + HeaderCtrl.$inject = ['$log', '$window', 'userProfileService', 'menusService', '$scope', 'ECOMP_URL_REGEX','$cookies','$state','auditLogService','notificationService','recommendationService','ngDialog']; + angular.module('ecompApp').controller('HeaderCtrl', HeaderCtrl); + angular.module('ecompApp').controller('loginSnippetCtrl', LoginSnippetCtrl); + angular.module('ecompApp').controller('notificationCtrl', NotificationCtrl); + angular.module('ecompApp').controller('recommendationCtrl', RecommendationCtrl); + +})();