2 import {IAppConfigurtaion, User, IUser} from "app/models";
3 import {IUserResourceClass, IUserResource} from "app/services";
5 export class MenuItem {
11 children:Array<MenuItem>
14 export interface IEcompHeaderDirectiveScope extends ng.IScope {
15 menuData:Array<MenuItem>;
20 megaMenuDataObjectTemp:Array<any>;
21 megaMenuDataObject:Array<any>;
23 selectedTopMenu:MenuItem;
24 selectedSubMenu:MenuItem;
26 firstMenuLevelClick:Function;
27 subMenuEnterAction:Function;
28 subMenuLeaveAction:Function;
30 memuItemClick:Function;
34 export class EcompHeaderDirective implements ng.IDirective {
36 constructor(private $http:ng.IHttpService,
37 private sdcConfig:IAppConfigurtaion,
38 private UserResourceClass:IUserResourceClass) {
48 public replace = true;
49 public restrict = 'E';
50 public controller = EcompHeaderController;
52 template = ():string => {
53 return 'src/app/directives/ecomp-header/ecomp-header.html';
56 link = ($scope:IEcompHeaderDirectiveScope, $elem:JQuery, attr:any) => {
58 if (!$scope.clickableLogo) {
59 $scope.clickableLogo = "true";
62 let findMenuItemById = (menuId):MenuItem => {
63 let selectedMenuItem:MenuItem = _.find($scope.menuData, (item:MenuItem)=> {
64 if (item.menuId === menuId) {
68 return selectedMenuItem;
71 let initUser = ():void => {
72 let defaultUserId:string;
73 let user:IUserResource = this.UserResourceClass.getLoggedinUser();
75 defaultUserId = this.$http.defaults.headers.common[this.sdcConfig.cookie.userIdSuffix];
76 user = this.UserResourceClass.get({id: defaultUserId}, ():void => {
77 $scope.user = new User(user);
80 $scope.user = new User(user);
84 $scope.firstMenuLevelClick = (menuId:number):void => {
85 let selectedMenuItem:MenuItem = _.find($scope.megaMenuDataObjectTemp, (item:MenuItem)=> {
86 if (item.menuId === menuId) {
90 if (selectedMenuItem) {
91 $scope.selectedTopMenu = selectedMenuItem;
92 //console.log("Selected menu item: " + selectedMenuItem.text);
96 $scope.subMenuEnterAction = (menuId:number):void => {
97 $scope.selectedSubMenu = findMenuItemById(menuId);
100 $scope.subMenuLeaveAction = (menuId:number):void => {
101 $scope.selectedTopMenu = undefined;
104 $scope.memuItemClick = (menuItem:MenuItem):void => {
106 window.location.href = menuItem.url;
108 console.log("Menu item: " + menuItem.text + " does not have defined URL!");
116 public static factory = ($http:ng.IHttpService,
117 sdcConfig:IAppConfigurtaion,
118 UserResourceClass:IUserResourceClass)=> {
119 return new EcompHeaderDirective($http, sdcConfig, UserResourceClass);
124 export class EcompHeaderController {
127 getAttachId:Function;
141 constructor(private $element:JQuery,
142 private $scope:IEcompHeaderDirectiveScope,
143 private $attrs:ng.IAttributes,
144 private $animate:any) {
146 this.$scope = $scope;
148 this.$scope.$watch('menuData', (newVal, oldVal) => {
158 this.$scope.contactUsUrl = "https://wiki.web.att.com/display/EcompPortal/ECOMP+Portal+Home";
159 this.$scope.getAccessUrl = "http://ecomp-tlv-dev2.uccentral.att.com:8080/ecompportal/get_access";
161 let unflatten = (array, parent?, tree?) => {
162 tree = typeof tree !== 'undefined' ? tree : [];
163 parent = typeof parent !== 'undefined' ? parent : {menuId: null};
164 let children = _.filter(array, function (child) {
165 return child["parentMenuId"] == parent.menuId;
167 if (!_.isEmpty(children)) {
168 if (parent.menuId === null) {
171 parent['children'] = children
173 _.each(children, function (child) {
174 unflatten(array, child)
180 let menuStructureConvert = (menuItems) => {
181 console.log(menuItems);
182 this.$scope.megaMenuDataObjectTemp = [
194 url: this.$scope.contactUsUrl
201 url: this.$scope.getAccessUrl
203 return this.$scope.megaMenuDataObjectTemp;
206 let a = unflatten(this.$scope.menuData);
207 this.$scope.megaMenuDataObject = menuStructureConvert(a);
208 //console.log(this.$scope.megaMenuDataObject);
212 EcompHeaderDirective.factory.$inject = ['$http', 'sdcConfig', 'Sdc.Services.UserResourceService'];