8fece9d16993b58ea281dda2b8aa6aab96558955
[vid.git] / epsdk-app-onap / src / main / webapp / WEB-INF / fusion / jsp / ebz / ebz_header.jsp
1 <%--
2   ================================================================================
3   eCOMP Portal SDK
4   ================================================================================
5   Copyright (C) 2017 AT&T Intellectual Property
6   ================================================================================
7   Licensed under the Apache License, Version 2.0 (the "License");
8   you may not use this file except in compliance with the License.
9   You may obtain a copy of the License at
10   
11        http://www.apache.org/licenses/LICENSE-2.0
12   
13   Unless required by applicable law or agreed to in writing, software
14   distributed under the License is distributed on an "AS IS" BASIS,
15   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16   See the License for the specific language governing permissions and
17   limitations under the License.
18   ================================================================================
19   --%>
20 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
21 <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
22 <%@ page isELIgnored="false"%>
23 <%@ page import="org.onap.portalsdk.core.util.SystemProperties"%>
24 <%@ page import="org.onap.portalsdk.core.onboarding.util.PortalApiProperties"%>
25 <%@ page import="org.onap.portalsdk.core.onboarding.util.PortalApiConstants"%>
26 <%@ page import="org.onap.portalsdk.core.domain.MenuData"%>
27 <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/ebz_header/header.css">
28 <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/ebz_header/portal_ebz_header.css">
29 <link rel="stylesheet" type="text/css" href="app/fusion/external/ebz/sandbox/styles/style.css" >
30
31
32 <%--<script src= "app/fusion/external/ebz/angular_js/angular.js"></script> --%>
33 <script src="app/fusion/external/angular-1.4.8/angular.min.js"></script>
34 <script src="app/fusion/external/angular-1.4.8/angular-route.min.js"></script>
35 <script src="app/fusion/external/angular-1.4.8/angular-sanitize.min.js"></script>
36 <script src="app/fusion/external/angular-1.4.8/angular-cookies.min.js"></script>
37 <script src="app/fusion/external/ebz/angular_js/app.js"></script>
38 <script src="app/fusion/external/ebz/angular_js/gestures.js"></script>
39 <script src="static/js/jquery-1.10.2.js"></script>
40 <script src="app/fusion/scripts/modalService.js"></script>
41 <script src="static/js/jquery.mask.min.js" type="text/javascript"></script>
42 <script src="static/js/jquery-ui.js" type="text/javascript"></script>
43 <script src="app/fusion/external/ebz/sandbox/att-abs-tpls.js" type="text/javascript"></script>
44 <script src="static/fusion/js/att_angular_gridster/ui-gridster-tpls.js"></script>
45 <script src="static/fusion/js/att_angular_gridster/angular-gridster.js"></script>
46 <script src= "app/fusion/external/ebz/angular_js/checklist-model.js"></script>
47 <script type="text/javascript" src="app/fusion/external/lodash/lodash.min.0.10.js"></script>
48 <%--<script src="app/fusion/external/angular-ui/ui-bootstrap-tpls-1.1.2.min.js"></script>--%>
49 <script src="app/fusion/external/angular-1.4.8/angular-touch.min.js"></script>
50 <script src="app/fusion/external/angular-1.4.8/angular-animate.min.js"></script>
51 <script src="app/fusion/external/angular-bootstrap/ui-bootstrap-tpls.min.js"></script>
52 <script src="app/fusion/scripts/services/userInfoService.js"></script>
53 <script src="app/fusion/scripts/services/leftMenuService.js"></script>
54
55
56 <jsp:include page="/WEB-INF/fusion/jsp/ebz/loginSnippet.html" ></jsp:include> 
57
58 <c:set var="UserName"   value="<%= session.getAttribute(\"fullName\")%>" />
59 <c:set var="UserFirstName"      value="<%= session.getAttribute(\"first_name\")%>" />
60
61 <% 
62         String contactUsLink = SystemProperties.getProperty(SystemProperties.CONTACT_US_LINK);
63         String redirectUrl = PortalApiProperties.getProperty(PortalApiConstants.ECOMP_REDIRECT_URL);
64         String portalUrl = redirectUrl.substring(0, redirectUrl.lastIndexOf('/')) + "/process_csp";
65         String getAccessLink = redirectUrl.substring(0, redirectUrl.lastIndexOf('/')) + "/get_access";  
66 %>
67 <c:set var="returnPortalUrl" value="<%=portalUrl%>" />
68 <c:set var="contactUsLink" value="<%=contactUsLink%>" />
69 <c:set var="getAccessLink" value="<%=getAccessLink%>" />
70 <style>
71 .att-drawer{
72         z-index:997 !important;
73 }
74
75 .secondaryMenuContainer{
76         z-index:1000;
77 }
78 .megamenu-tabs .megamenu__item {
79         padding: 0 0;
80 }
81 .megamenu-tabs .megamenu__item span {
82     font-size: 18px;
83 }
84
85 .submenu-tabs {
86    line-height:50px;
87 }
88 .submenu-tabs .sub__menu{
89         top:5px;
90 }
91
92 .top-megamenu .megamenu-tabs ul{
93         width:98%;
94         list-style: none;
95 }
96
97 </style>
98 <%@include  file="/WEB-INF/fusion/jsp/ebz/loginSnippet.html" %>
99
100 <div style="position: relative; z-index: 999;">
101         <div ng-controller="headerController">
102         
103                  <div class="headerContainer" id="headerContainer" ng-cloak  ng-show="{{showHeader && false}}">
104                         <div id="megaMenuContainer" class="megaMenuContainer" style="margin-top: 0; overflow: visible;">
105                                 <div>
106                                         <!--for mega Menu-->
107                                         <!-- Mega Menu parent-tab directive with three models menu-items, active-sub-menu, active-menu -->
108                                         <div id="topMenu" class="top-megamenu" ng-mouseleave="activeClickSubMenu.x.active=false; activeClickMenu.x.active=false">
109                                                 <div style="float:left;width:100%;"parent-tab menu-items="megaMenuDataObject" active-sub-menu='activeClickSubMenu.x' active-menu='activeClickMenu.x'>
110                                         <div parentmenu-tabs mega-menu="true" menu-items="megaMenuDataObject" style="height:55px;">
111                                                                 <div style="float:left">
112                                                                         <li class="megamenu__item" style="line-height:55px;" onclick="returnToPortal()">
113                                                                                 <img src="app/fusion/external/ebz/images/att_logo.png" class="ATTLogo"   ></span>
114 <!--                                                                                    <a id='returnPortal' class="primaryMenuOptionLink" style="font-weight: 400 !important; font-family: clearview_att_bold !important; font-size: 18px;">ECOMP</a>
115  -->                                                                            <strong style="font-weight: 400 !important; font-family: clearview_att_bold !important; font-size: 18px;" id='returnPortal' >ECOMP Portal</strong>
116                                                                         </li>                                                                           
117                                                                         <div menu-tabs mega-menu="true" tab-name="item.text" menu-item="item" active-menu="activeClickMenu.x" 
118                                                                         ng-repeat="item in megaMenuDataObject" style="font-size: 18px;" ng-mousedown="loadFavorites()" >
119                                                         <div parentmenu-tabs sub-menu="true" ng-show="activeClickMenu.x.active && item.active" menu-items="activeClickMenu.x.children">
120                                                         <!-- Second level menu -->
121                                                                         <div>
122                                                                                 <div menu-tabs sub-menu="true" tab-name="subItem.text" 
123                                                                                         tab-url="subItem.url"  menu-item="subItem" 
124                                                                                         ng-repeat="subItem in activeClickMenu.x.children | orderBy : 'column'" active-menu="activeClickSubMenu.x" 
125                                                                                         sub-item-active="{{subItem.active}}" style="float:left;" aria-label="{{subItem.text}}"
126                                                  ng-mouseenter="submenuLevelAction(subItem.text,subItem.column)"
127                                                  ng-mouseleave="submenuLevelAction(subItem.text,subItem.column)"
128                                                 ng-click="submenuLevelAction(subItem.text,subItem.column)"  >
129                                                 <i ng-if="subItem.text=='Favorites'" id="favorite-star"
130                                                    class="icon-star favorites-icon-active">
131                                                 </i>
132                                                                                 </div>
133                                                                                                 
134                                                         <div class="sub__menu" ng-mouseleave="activeClickSubMenu.x.active=false" >
135                                                                 <ul ng-show="activeClickSubMenu.x.active"  role="menubar" class="columns">
136                                        <!-- Third level menu -->                                                                                
137                                                                     <div menu-tabs menu-item="subItem" 
138                                                                     class="columns-div"
139                                                                     ng-repeat="subItem in activeClickSubMenu.x.children | orderBy : 'column'" 
140                                                                     ng-show="activeClickSubMenu.x.active">
141
142                                                             <i id="favorite-selector-third-level"
143                                                                ng-show="isUrlFavorite(subItem.menuId)==false"
144                                                                class="icon-star favorites-icon-inactive"
145                                                                ng-if="subItem.url.length > 1">
146                                                             </i>                                                                            
147                                                             <i id="favorite-selector-third-level"
148                                                                ng-show="isUrlFavorite(subItem.menuId)"
149                                                                class="icon-star favorites-icon-active"
150                                                                ng-if="subItem.url.length > 1">
151                                                             </i>                                                                            
152                                                                                                                 <span class="title" aria-label="{{subItem.text}}" 
153                                                                                                                 ng-click="goToUrl(subItem)">{{subItem.text}}</span>
154                                                         <!-- Fourth level menus -->     
155                                                                         <div att-links-list="">
156                                                             <i id="favorite-selector-fourth-level"
157                                                                class="icon-star favorites-icon-inactive"
158                                                                ng-show="isUrlFavorite(tabValue.menuId)==false"
159                                                                ng-if="tabValue.url.length > 1">
160
161                                                             </i>
162                                                             <i id="favorite-selector-fourth-level"
163                                                                class="icon-star favorites-icon-active"
164                                                                ng-show="isUrlFavorite(tabValue.menuId)"
165                                                                ng-if="tabValue.url.length > 1">
166
167                                                             </i>
168                                                                             <span role="menuitem" att-links-list-item="" 
169                                                                             ng-repeat="tabValue in subItem.children" 
170                                                                             ng-click="goToUrl(tabValue)" 
171                                                                             att-accessibility-click="13,32" 
172                                                                             ng-class="{'disabled': tabValue.disabled}">{{tabValue.text}}</span>
173                                                                         </div>
174                                                                         <hr ng-show="!$last"/>
175                                                                         
176                                                                     </div>
177                                                                  </ul>
178                                    <!-- Favorites level menu -->
179                                                                                                 <div class="favorites-window" ng-show='favoritesWindow' ng-mouseleave="hideFavoritesWindow()">
180                                                                                                         <div id="favorites-menu-items" ng-show="showFavorites">
181                                                                                                                 <div ng-repeat="subItem in favoritesMenuItems" att-links-list="" style='display: inline'>
182                                                                                                                                 <i id="favorite-selector-favorites-list" class="icon-star favorites-icon-active">
183                                                                                                                                 </i>
184                                                                                                                                 <a id="favorites-list" aria-label="{{subItem.text}}"
185                                                                                                                                    ng-click="goToUrl(subItem)" 
186                                                                                                                                    style="margin-left: 3px; margin-right: 20px; text-decoration: none;  color: #666666;">
187                                                                                                                                    {{subItem.text}}
188                                                                                                                                 </a>
189                                                                                                                 </div>
190                                                                                                                 <div>
191                                                                                                                         <br>
192                                                                                                                         <p style='font-weight: 400; font-family: clearview_att_bold !important;
193                                                                                                                         font-size: 18px; text-align: center; background-color: lightgray;
194                                                                                                                         width: 400px; margin-left: 25%; margin-right: 25%;'>
195                                                                                                                                 Manage favorites on ECOMP Portal.
196                                                                                                                         </p>
197                                                                                                                 </div>
198                                                                                                         </div>
199                                                                   <!-- Favorites when empty -->
200                                                                                                                 <div id="favorites-empty" ng-show='favoritesWindow' ng-show="emptyFavorites">
201                                                                         <div id="favorites-empty" ng-show="emptyFavorites" class="favorites-window-empty">
202                                                                             <div>
203                                                                                 <img src="app/fusion/external/ebz/images/no_favorites_star.png">
204                                                                                 <p class='favoritesLargeText'>No Favorites</p>
205                                                                                                                                         <p class='favoritesNormalText'>Manage favorites on ECOMP Portal.</p>
206                                                                             </div>
207                                                                         </div>
208                                                                                                                 </div>
209                                                                                                         </div>
210                                                                         
211                                                                 </div>
212                                                             </div>
213                                                         </div> 
214                                                     </div >
215                                                     <li class="megamenu__item" style="line-height:55px;" ng-if="loadMenufail">
216                                                                                 <strong style="font-weight: 400 !important; font-family: clearview_att_bold !important; font-size: 18px;" >Unable to load menus</strong>
217                                                                         </li>
218 <!--                                                                            <li class="megamenu__item" style="width: 20%;">&nbsp;</li>
219  -->                                                                    </div>
220                                                                 <!--  Login Snippet-->
221                                                                 <div  style="float:right">
222                                                                         <li id="bcLoginSnippet" class="megamenu__item" style="width: 140px;" >
223                                                                                 <div popover="loginSnippet.html"  aria-label="Login Snippet"    referby="loginSnippet" att-accessibility-click="13,32" popover-style="\" popover-placement="below" style="width: 200px;">
224                                                                                         <div class="icon-user-small login-snippet-icon"></div>
225                                                                                         <div class="login-snippet-text" style="display: inline-block; font-size:12px; margin-left:5px;overflow: hidden; max-height: 31px;   max-width:120px; padding-top: 0px; margin-top: 0px; white-space: nowrap;" ng-bind="userProfile.firstName"></div>
226                                                                                 </div>
227                                                                         </li>
228                                                                         <li class="megamenu__item" style="width:120px;">&nbsp;</li>
229                                                                 </div>
230                                                                 
231                                                         </div>          
232                                                 </div>
233                                                 <div style="clear: both"></div>
234                                         </div>
235                                         </div>
236                                 </div>
237                         </div>
238                 <div class="license-notification" id="license-notification">
239                         <a href="javascript:void(0)" style="background-color:#bbb;" class="button button--small" tooltip="Please contact ECOMP Portal team to get the license" tooltip-placement="below" tooltip-style="light"  tooltip-popup-delay="500" >
240                                 <span style="">{{app_name_full}}</span>
241                         </a>                                                                    
242                 </div>
243                 <div style="position: relative; color: black; top: 70px;">
244                         <div ng-cloak>          
245                                 <span ng-style="adjustHLeftMenu('burgerIcon')" style="z-index:998; position:fixed; left:0%; font-size:35px; margin-left:10px;text-decoration:none;">
246                                         <a ng-click="toggleDrawer();isOpen = !isOpen" href="javascript:void(0);" class="arrow-icon-left" >
247                                         <span class="icon-hamburger"></span></a>        
248                                         <span ng-init="isOpen = true" ng-show="isOpen" style="font-size:16px; position:relative; top:-8px; left:-15px;">&nbsp&nbsp&nbsp {{app_name}}</span>
249                                         <span data-tests-id='app-version' ng-show="isOpen" style="font-size:13px; position:relative; top:15px; left:-45px; color:#666666;">{{app_version}}</span>
250                                 </span>
251                                 <div att-drawer drawer-slide="left" drawer-custom-top="{{drawer_custom_top}}px" drawer-size="200px" drawer-open="drawerOpen" drawer-custom-height="100%" >
252                                     <div ng-style="adjustHLeftMenu('leftMenu')">
253                                             <div class="attDrawer" style="margin-top:{{drawer_margin_top}}px;">   
254                                                 <div style="margin-left:10px; margin-right:10px;">
255                                                         <accordion close-others="true" css="att-accordion--no-box">
256                                                     <accordion-group ng-repeat="parent in menuItems" heading="{{parent.parentLabel}}" child="{{parent.parentAction}}" parent-link="{{parent.parentAction}}" image-source="{{parent.parentImageSrc}}" child-length="{{parent.childItemList.length}}" is-open="parent.open">
257                                                         <div ng-repeat="subMenu in parent.childItemList" style="font-size:12px; margin-left:10px;">
258                                                                 <a href="{{subMenu.action}}" style="font-size:12px; color:#666666;" >{{subMenu.label}}</a>
259                                                         </div>
260                                                     </accordion-group>
261                                                 </accordion>
262                                                         </div>                                          
263                                             </div>
264                                     </div>
265                                 </div>
266                         </div>          
267                 </div>
268         </div>
269 </div>
270 <script>    
271         function returnToPortal(){
272                 window.location.href = "<c:out value='${returnPortalUrl}'/>";
273         }
274         detectScrollEvent = function() {
275                 var footerOff = $('#footerContainer').offset().top;
276                 var headOff = $('#headerContainer').offset().top;
277                 var winHeight = $(window).height();
278                 if ((footerOff - headOff) <= winHeight) {
279                         $('.att-drawer').css({
280                                 "height" : footerOff - headOff - 55
281                         });
282                 } else {
283                         $('.att-drawer').css({
284                                 "height" : "94vh"
285                         });
286                 }
287         }
288         $(window).scroll(function() {
289                 if ($('.att-drawer').is(':visible')) {
290                         detectScrollEvent();
291                 }
292         });
293         app.controller("headerController", function($scope, $timeout, $log, $http, UserInfoService, $window, $cookies,LeftMenuService) {
294                 // $log.debug('HeaderController started');
295                 $scope.jsonMenuData = [];
296                 $scope.loadMenufail=false;
297                 $scope.app_name = "";
298                 $scope.app_name_full = "";
299                 $scope.megaMenuDataObject =[];
300                 $scope.activeClickSubMenu = {
301                         x: ''
302         };
303         $scope.activeClickMenu = {
304                         x: ''
305         };
306                 $scope.favoritesMenuItems = [];
307         $scope.favoriteItemsCount = 0;
308         $scope.showFavorites = false;
309         $scope.emptyFavorites = false;
310         $scope.favoritesWindow = false;
311         $scope.userProfile={
312                         firstName:'',
313                         lastName:'',
314                         fullName:'',
315                         email:''
316         }
317                 $scope.app_version="";
318         /*Put user info into fields*/
319         $scope.inputUserInfo = function(userInfo){
320                 if (typeof(userInfo) != "undefined" && userInfo!=null && userInfo!=''){
321                         if (typeof(userInfo.USER_FIRST_NAME) != "undefined" && userInfo.USER_FIRST_NAME!=null && userInfo.USER_FIRST_NAME!='')
322                                 $scope.userProfile.firstName = userInfo.USER_FIRST_NAME;
323                         if (typeof(userInfo.USER_LAST_NAME) != "undefined" && userInfo.USER_LAST_NAME!=null && userInfo.USER_LAST_NAME!='')
324                                 $scope.userProfile.lastName = userInfo.USER_LAST_NAME;
325                         if (typeof(userInfo.USER_EMAIL) != "undefined" && userInfo.USER_EMAIL!=null && userInfo.USER_EMAIL!='')                         
326                                 $scope.userProfile.email = userInfo.USER_EMAIL;
327                 }               
328         }
329          /*getting user info from session*/
330         $scope.getUserNameFromSession = function(){
331                 UserInfoService.getFunctionalMenuStaticDetailSession()
332                 .then(function (res) {
333                                 $scope.userProfile.firstName = res.firstName;
334                                 $scope.redirectUrl = res.portalUrl;
335                 });
336         }
337         $scope.getTopMenuStaticInfo=function() {
338                 var promise = UserInfoService.getFunctionalMenuStaticDetailShareContext();
339                 promise.then(
340                                 function(res) {                                         
341                                         if(res==null || res==''){
342                                                 $log.info('failed getting static User information');    
343                                                 $scope.getUserNameFromSession();
344                                         }else{
345                                                 $log.info('Received static User information');
346                                                 var resData = res;                                              
347                                                 $scope.inputUserInfo(resData);                                  
348                                                 $scope.userProfile.fullName = $scope.userProfile.firstName+ ' '+ $scope.userProfile.lastName;                                   
349                                         }
350                                 },
351                                 function(err) {
352                                         $log.info('failed getting static User information');                                    
353                                 }
354                 );
355                 }
356                         
357                 var unflatten = function( array, parent, tree ){
358                         tree = typeof tree !== 'undefined' ? tree : [];
359                         parent = typeof parent !== 'undefined' ? parent : { menuId: null };
360                         var children = _.filter( array, function(child){ return child.parentMenuId == parent.menuId; });
361                 
362                         if( !_.isEmpty( children )  ){
363                                 if( parent.menuId === null ){
364                                                 tree = children;
365                                 }else{
366                                         parent['children'] = children
367                                 }
368                                 _.each( children, function( child ){ unflatten( array, child ) } );
369                         }
370
371                         return tree;
372                 }
373                 
374                 var menuStructureConvert = function(menuItems) {
375                         var megaMenuDataObjectTemp = [
376                                          {
377                                                  text: "ECOMP",
378                                                  children:menuItems
379                                          },
380                                          {
381                                                  text: "Help",
382                                                  children: [{
383                                                          text:"Contact Us",
384                                                          url:"<c:out value='${contactUsLink}'/>"
385                                                  },
386                                                  {
387                                                          text:"Get Access",
388                                                          url:"<c:out value='${getAccessLink}'/>"
389                                                  }]
390                                          }
391                                          ];
392                         return megaMenuDataObjectTemp;
393                 }; 
394                 
395                 
396                 /*Left Menu*/
397                 LeftMenuService.getAppName().then(function(response){
398                         var j = response; 
399                         try{
400                                 if(j && j !== "null" && j!== "undefined"){
401                                         // console.log("app name is " + $scope.app_name);
402                                         $scope.app_name_full = j.data;
403                                         var processed_app_name = j.data;
404                                         var indexOfLic = processed_app_name.indexOf('[');
405                                         if(indexOfLic>-1) {
406                                                 if (jQuery('.license-notification')!=null)
407                                                         jQuery('.license-notification').css("display", "none"); 
408                                         }
409                                         var n = processed_app_name.length;
410                                         if (n > 15) {
411                                                 n = 15;
412                                         }
413                                         if(n > indexOfLic && indexOfLic > 0) {
414                                                 n = indexOfLic;
415                                         }
416                                         $scope.app_name_full = $scope.app_name_full.substr(0, n);
417                                         $scope.app_name = processed_app_name.substr(0, n);
418                                         
419                                 }else{
420                                         throw "Get app_name response is not an object/is empty"; 
421                                 }  
422                         }catch (e) {
423                                 console.log("error happened while trying to get app name "+e);
424                                 return;
425                 }              
426                 },function(error){
427                         console.log('getAppName failed', error);
428                 });
429
430                 LeftMenuService.getAppVersion().then(function(response){
431                         var j = response;
432                         try{
433                                 if(j){
434                                         $scope.app_version = j.displayVersion;
435
436                                 }else{
437                                         throw "Version response is not in expected format.";
438                                 }
439                         }catch (e) {
440                                 console.log("Error happened while trying to get app version: "+e);
441                                 return;
442                         }
443                 },function(error){
444                         console.log('getAppVersion failed', error);
445                 });
446
447             $scope.getTopMenuStaticInfo();      
448         $scope.getMenu=function() {
449                 
450                  $http({
451                         method: "GET",
452                         url: 'get_functional_menu',
453 // TIMEOUT USED FOR LOCAL TESTING ONLY                          
454 //                      timeout: 100
455                  }).success(function (response) {
456                         if(response == '101: Timeout') {
457                                 $log.error('Timeout attempting to get_functional_menu');
458                         // TIMEOUT USED FOR LOCAL TESTING ONLY                          
459 //                              $scope.createErrorMenu();
460                                 $scope.megaMenuDataObject = menuStructureConvert('');
461                         }else {
462                                 $log.debug('get_functional_menu success: ' + response);                                                         
463                                 if(typeof response != 'undefined' && response.length!=0 && typeof response[0] != 'undefined' && typeof response[0].error!="undefined"){
464 // createErrorMenu() USED FOR LOCAL TESTING ONLY
465 //                                      $scope.createErrorMenu();
466                                         $scope.megaMenuDataObject = menuStructureConvert('');
467                                 //      $scope.loadMenufail=true;
468                                 }else{
469                                         $scope.jsonMenuData = unflatten( response );
470                                         $scope.megaMenuDataObject = menuStructureConvert($scope.jsonMenuData);
471                                 }
472                         }
473                 }).error(function (response){
474 // createErrorMenu() USED FOR LOCAL TESTING ONLY                                
475 //                              $scope.createErrorMenu();
476
477                                 //$scope.loadMenufail=true;
478                                 $scope.megaMenuDataObject = menuStructureConvert('');
479                         $log.debug('REST API failed get_functional_menu...'+ response);
480                   });
481                 }
482         $scope.adjustHLeftMenu = function (type){
483                 $scope.showHeader = ($cookies.show_app_header == undefined ? true : $cookies.show_app_header);
484                 
485                 if($scope.showHeader == true) {
486                         $scope.drawer_margin_top = 60;
487                         $scope.drawer_custom_top = 5;
488                         $scope.toggle_drawer_top = 5;
489                 }
490                 else  {
491                         
492                         $scope.drawer_margin_top = 50;
493                         $scope.drawer_custom_top = 5;
494                         $scope.toggle_drawer_top = 5;
495                 }
496                 if(type=='burgerIcon'){
497                         return { "top": $scope.toggle_drawer_top+"px"};
498                 }else if(type=='leftMenu'){
499                         return { "margin-top": $scope.drawer_margin_top+"px"};
500                 }else
501                         return;
502         }
503         $scope.adjustHeader=function() {
504                 $scope.showHeader = ($cookies.show_app_header == undefined ? true : $cookies.show_app_header);
505                 
506                 if($scope.showHeader == true) {
507                         $scope.drawer_margin_top = 50;
508                         $scope.drawer_custom_top = 5;
509                         $scope.toggle_drawer_top = 5;
510                 }
511                 else  {
512                         
513                         $scope.drawer_margin_top = 40;
514                         $scope.drawer_custom_top = 5;
515                         $scope.toggle_drawer_top = 5;
516                 }
517                 
518                 
519         }
520         
521         
522                 //$scope.getMenu();
523                 $scope.adjustHeader();
524                 
525
526                 /* **************************************************************************/
527                 /* Logic for the favorite menus is here */
528
529             $scope.loadFavorites = function () {
530                 $log.debug('loadFavorites has happened.');
531                 if ($scope.favoritesMenuItems == '') {
532                     $scope.generateFavoriteItems();
533                     $log.debug('loadFavorites is calling generateFavoriteItems()');
534                 } else {
535                     $log.debug('loadFavorites is NOT calling generateFavoriteItems()');
536                 }
537             }
538             
539             $scope.goToUrl = function (item) {
540                 $log.info("goToUrl called")
541                 $log.info(item);
542
543                 var url = item.url;
544                 var restrictedApp = item.restrictedApp;
545                 $log.debug('Restricted app status is: ' + restrictedApp);
546                 if (!url) {
547                     $log.info('No url found for this application, doing nothing..');
548                     return;
549                 }
550                 if (restrictedApp) {
551                     $window.open(url, '_blank');
552                 } else {
553                     $window.open(url, '_self');
554                 }
555
556             }
557             
558             $scope.submenuLevelAction = function(index, column) {
559                 if ($scope.favoritesMenuItems == '') {
560                     $scope.generateFavoriteItems();
561                     $log.debug('submenuLevelAction is calling generateFavoriteItems()');
562                 }
563                 $log.debug('item hovered/clicked: ' + index + '; column = ' + column);
564                 if (column == 2) {  // 2 is Design
565                     $scope.favoritesWindow = false;
566                     $scope.showFavorites = false;
567                     $scope.emptyFavorites = false;
568                 }
569                 if (index=='Favorites' && $scope.favoriteItemsCount != 0) {
570                     $log.debug('Showing Favorites window');
571                     $scope.favoritesWindow = true;
572                     $scope.showFavorites = true;
573                     $scope.emptyFavorites = false;
574                 }
575                 if (index=='Favorites' && $scope.favoriteItemsCount == 0) {
576                     $log.debug('Hiding Favorites window in favor of No Favorites Window');
577                     $scope.favoritesWindow = true;
578                     $scope.showFavorites = false;
579                     $scope.emptyFavorites = true;
580                 }
581                 if (column > 2) {
582                     $scope.favoritesWindow = false;
583                     $scope.showFavorites = false;
584                     $scope.emptyFavorites = false;
585                 }
586             };
587             
588             $scope.hideFavoritesWindow = function() {
589                 $log.debug('$scope.hideFavoritesWindow has been called');
590                 $scope.showFavorites = false;
591                 $scope.emptyFavorites = false;
592             }
593             
594             $scope.isUrlFavorite = function (menuId) {
595 //                 $log.debug('array objects in menu favorites = ' + $scope.favoriteItemsCount + '; menuId=' + menuId);
596                 var jsonMenu =  JSON.stringify($scope.favoritesMenuItems);
597                 var isMenuFavorite =  jsonMenu.indexOf('menuId\":' + menuId);
598                 if (isMenuFavorite==-1) {
599                     return false;
600                 } else {
601                     return true;
602                 }
603
604             }
605                             
606             $scope.generateFavoriteItems  = function() {
607                 $http({
608                         method: "GET",
609                         url: 'get_favorites',
610                 // TIMEOUT USED FOR LOCAL TESTING ONLY                          
611 //                                              timeout: 100
612                             }).success(function (response) {
613                                                 if (response == '101: Timeout') {
614                                                 $log.error('Timeout attempting to get_favorites_menu');
615                                         } else {
616                                                 if(typeof response != 'undefined' && response.length!=0 && typeof response[0] != 'undefined' && typeof response[0].error!="undefined"){
617                                                     $log.error('REST API failed get_favorites' + response);
618                                                         }else{
619                                                                 $log.debug('get_favorites = ' + JSON.stringify(response));
620                                                                 $scope.favoritesMenuItems = response;
621                                         $scope.favoriteItemsCount = Object.keys($scope.favoritesMenuItems).length;
622                                         $log.info('number of favorite menus: ' + $scope.favoriteItemsCount);
623                                 }
624                                                 }
625                                         }).error(function (response){
626                                             $log.error('REST API failed get_favorites' + response);
627                 //createFavoriteErrorMenu() USED FOR LOCAL TESTING ONLY                         
628 //                                                      $scope.createFavoriteErrorMenu();
629                                         });
630                 }
631                             
632                                 $scope.createFavoriteErrorMenu=function() {
633                                 $scope.favoritesMenuItems = [
634 //                                                           {
635 //                                                                  "menuId": "93",
636 //                                                                  "text": "JSONLint",
637 //                                                                  "url": "http://http://jsonlint.com"
638 //                                                                },
639 //                                                                {
640 //                                                                  "menuId": "22",
641 //                                                                  "text": "ECOMP Wasteland",
642 //                                                                  "url": "https://ecomp.homer.att.com/ecompportal/applicationsHome"
643 //                                                                },
644 //                                                                {
645 //                                                                  "menuId": "94",
646 //                                                                  "text": "HROneStop",
647 //                                                                  "url": "http://ebiz.sbc.com/hronestop"
648 //                                                                },
649 //                                                                {
650 //                                                                  "menuId": "91",
651 //                                                                  "text": "Andy and his Astrophotgraphy",
652 //                                                                  "url": "https://ecomp.homer.att.com/ecompportal/applicationsHome"
653 //                                                                }
654                                                                 ];
655                                 $scope.favoriteItemsCount = Object.keys($scope.favoritesMenuItems).length;
656                                 $log.info('number of favorite menus: ' + $scope.favoriteItemsCount);
657                                 }
658                             
659                 /* end of Favorite Menu code */
660                 /* **************************************************************************/
661
662                 
663                 /* **************************************************************************/
664                 // THIS IS USED FOR LOCAL TESTING ONLY
665                 /* **************************************************************************/
666
667                         $scope.createErrorMenu=function() {
668                 $scope.jsonMenuData = [
669                                    {
670                                     "menuId": 1,
671                                     "column": 2,
672                                     "text": "Design",
673                                     "parentMenuId": null,
674                                     "url": ""
675                                   },
676                                   {
677                                     "menuId": 2,
678                                     "column": 3,
679                                     "text": "Infrastructure Ordering",
680                                     "parentMenuId": null,
681                                     "url": ""
682                                   },
683                                   {
684                                     "menuId": 3,
685                                     "column": 4,
686                                     "text": "Service Creation",
687                                     "parentMenuId": null,
688                                     "url": ""
689                                   },
690                                   {
691                                     "menuId": 4,
692                                     "column": 5,
693                                     "text": "Service Mgmt",
694                                     "parentMenuId": null,
695                                     "url": ""
696                                   },
697                                   {
698                                     "menuId": 90,
699                                     "column": 1,
700                                     "text": "Google",
701                                     "parentMenuId": 1,
702                                     "url": "http://google.com"
703                                   },
704                                   {
705                                     "menuId": 91,
706                                     "column": 1,
707                                     "text": "Mike Little's Coffee Cup",
708                                     "parentMenuId": 2,
709                                     "url": "http://coffee.com"
710                                   },
711                                   {
712                                     "menuId": 92,
713                                     "column": 2,
714                                     "text": "Andy and his Astrophotgraphy",
715                                     "parentMenuId": 3,
716                                     "url": "http://nightskypix.com"
717                                   },
718                                   {
719                                     "menuId": 93,
720                                     "column": 1,
721                                     "text": "JSONLint",
722                                     "parentMenuId": 4,
723                                     "url": "http://http://jsonlint.com"
724                                   },
725                                   {
726                                     "menuId": 94,
727                                     "column": 2,
728                                     "text": "HROneStop",
729                                     "parentMenuId": 4,
730                                     "url": "http://ebiz.sbc.com/hronestop"
731                                   },
732                                   {
733                                     "menuId": 95,
734                                     "column": 2,
735                                     "text": "4th Level App4a R16",
736                                     "parentMenuId": 4,
737                                     "url": "http://www.e-access.att.com/ecomp_portal_ist/ecompportal/widgets"
738                                   },
739                                   {
740                                     "menuId": 96,
741                                     "column": 3,
742                                     "text": "3rd Level App1c R200",
743                                     "parentMenuId": 4,
744                                     "url": "http://app1c.com"
745                                   },
746                                   {
747                                     "menuId": 97,
748                                     "column": 1,
749                                     "text": "3rd Level App4b R16",
750                                     "parentMenuId": 5,
751                                     "url": "http://app4b.com"
752                                   },
753                                   {
754                                     "menuId": 98,
755                                     "column": 2,
756                                     "text": "3rd Level App2b R16",
757                                     "parentMenuId": 5,
758                                     "url": "http://app2b.com"
759                                   },
760                                   {
761                                     "menuId": 99,
762                                     "column": 1,
763                                     "text": "Favorites",
764                                     "parentMenuId": null,
765                                     "url": ""
766                                   }
767                                 ];
768                         $scope.jsonMenuData = unflatten( $scope.jsonMenuData );
769                         $scope.megaMenuDataObject = menuStructureConvert($scope.jsonMenuData);
770 //                      $log.debug(JSON.stringify($scope.jsonMenuData));
771         }
772                 var childItemList="";
773                 var parentList = "";
774                 try{
775                         childItemList = ${menu.childItemList};
776                         parentList = ${menu.parentList};
777                 }catch(err){
778                         console.log("ebz_header: failed to get child/parent lists", err);
779                 }
780                 
781                 var pageUrl = window.location.href.split('/')[window.location.href.split('/').length-1];
782                 
783                 $scope.menuItems = [];
784                 for (var i = 0; i < parentList.length; i++) {
785                         $scope.openCurrentMenu = false;
786                  if(pageUrl==parentList[i].action)
787                                 $scope.openCurrentMenu = true;
788                         $scope.childItemList = childItemList[i];
789                         for(chIndex in  $scope.childItemList){
790                                 if($scope.childItemList.length>0)
791                                         if($scope.childItemList[chIndex].action!=null){
792                                                 if($scope.childItemList[chIndex].action==pageUrl)
793                                                         $scope.openCurrentMenu = true;
794                                         }
795                         }
796                         $scope.item = {
797                                 parentLabel : parentList[i].label,
798                                 parentAction : parentList[i].action,
799                                 parentImageSrc : parentList[i].imageSrc,
800                                 open:$scope.openCurrentMenu,
801                                 childItemList : $scope.childItemList
802                         }
803                         $scope.menuItems.push($scope.item);
804                 }
805                 $scope.arrowShow = true;
806                 $scope.drawerOpen = false;
807                 $scope.subMenuContent = false;
808                 $scope.toggleSubMenu = function() {
809                         $scope.subMenuContent = !$scope.subMenuContent;
810                 };
811
812                 var drawerOpen = 'open';
813                 if (drawerOpen == 'open') {
814                         $scope.drawerOpen = true;
815                         $scope.arrowShow = true;
816                 } else {
817                         $scope.arrowShow = false;
818                 }
819                 $scope.arrowShow = true;
820                 $scope.drawerOpen = false;
821                 $scope.toggleDrawer = function() {
822                         $scope.drawerOpen = !($scope.drawerOpen);
823                         if ($scope.drawerOpen) {
824                                 $scope.arrowShow = true;                                
825                                 if (document.getElementById('mContent')!=null)
826                                         document.getElementById('mContent').style.marginLeft = "0px";                   
827                         } else {
828                                 $scope.arrowShow = false;
829                                 if (document.getElementById('mContent')!=null)
830                                         document.getElementById('mContent').style.marginLeft = "-150px";
831                         }
832                 };
833                 //var drawerOpen = getCookie('drawerOpen');
834                 if (drawerOpen == 'open') {
835                         $scope.drawerOpen = true;
836                         $scope.arrowShow = true;
837                 } else {
838                         $scope.arrowShow = false;
839                 }
840                 $timeout(function() {
841                         detectScrollEvent();
842                 }, 800);
843                 
844         });
845         
846         app.filter("ellipsis", function(){
847             return function(text, length){
848                 if (text) {
849                     var ellipsis = text.length > length ? "..." : "";
850                     return text.slice(0, length) + ellipsis;
851                 };
852                 return text;        
853             }
854         });
855 </script>