added svcapi ui and camunda code
[it/otf.git] / otf-frontend / client / src / app / layout / components / header / header.component.ts
1 /*  Copyright (c) 2019 AT&T Intellectual Property.                             #\r
2 #                                                                              #\r
3 #   Licensed under the Apache License, Version 2.0 (the "License");            #\r
4 #   you may not use this file except in compliance with the License.           #\r
5 #   You may obtain a copy of the License at                                    #\r
6 #                                                                              #\r
7 #       http://www.apache.org/licenses/LICENSE-2.0                             #\r
8 #                                                                              #\r
9 #   Unless required by applicable law or agreed to in writing, software        #\r
10 #   distributed under the License is distributed on an "AS IS" BASIS,          #\r
11 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #\r
12 #   See the License for the specific language governing permissions and        #\r
13 #   limitations under the License.                                             #\r
14 ##############################################################################*/\r
15 \r
16 \r
17 import { Component, OnInit, ViewChild } from '@angular/core';\r
18 import { Router, NavigationEnd } from '@angular/router';\r
19 import { TranslateService } from '@ngx-translate/core';\r
20 import { AuthService } from 'app/shared/services/auth.service';\r
21 import { CookieService } from 'ngx-cookie-service';\r
22 import { GroupService } from 'app/shared/services/group.service';\r
23 import { UserService } from 'app/shared/services/user.service';\r
24 //import { group } from '@angular/animations';\r
25 import { CreateGroupModalComponent } from 'app/shared/modules/create-group-modal/create-group-modal.component';\r
26 import { MatDialog } from '@angular/material/dialog';\r
27 import { NavItem } from 'app/shared/components/menu-item/menu-item.component';\r
28 import { MatMenuTrigger } from '@angular/material';\r
29 \r
30 \r
31 @Component({\r
32     selector: 'app-header',\r
33     templateUrl: './header.component.html',\r
34     styleUrls: ['./header.component.scss']\r
35 })\r
36 \r
37 export class HeaderComponent implements OnInit {\r
38     pushRightClass: string = 'push-right';\r
39     myStyle: object = {};\r
40     myParams: object = {};\r
41     width: number = 100;\r
42     height: number = 100;\r
43 \r
44     public groups: Array<NavItem>;\r
45     public selectedGroup;\r
46 \r
47     @ViewChild('goupMenuTrigger') groupMenu: MatMenuTrigger;\r
48     \r
49 \r
50     constructor(\r
51         private translate: TranslateService,\r
52         public router: Router,\r
53         private auth: AuthService,\r
54         private cookie: CookieService,\r
55         public _groups: GroupService,\r
56         private user: UserService,\r
57         private modal: MatDialog\r
58         \r
59     ) {\r
60 \r
61         this.translate.addLangs(['en', 'fr', 'ur', 'es', 'it', 'fa', 'de', 'zh-CHS']);\r
62         this.translate.setDefaultLang('en');\r
63         const browserLang = this.translate.getBrowserLang();\r
64         this.translate.use(browserLang.match(/en|fr|ur|es|it|fa|de|zh-CHS/) ? browserLang : 'en');\r
65 \r
66 \r
67         this.router.events.subscribe(val => {\r
68             if (\r
69                 val instanceof NavigationEnd &&\r
70                 window.innerWidth <= 992 &&\r
71                 this.isToggled()\r
72             ) {\r
73                 this.toggleSidebar();\r
74             }\r
75         });\r
76     }\r
77     public currentUser;// = {};\r
78     public username;\r
79 \r
80 \r
81     ngOnInit() {\r
82        \r
83        \r
84         this.currentUser = JSON.parse(this.cookie.get('currentUser'));\r
85         this.username = this.currentUser["firstName"] + " " + this.currentUser["lastName"];\r
86         \r
87        \r
88 \r
89         this._groups.setUp();\r
90 \r
91         this._groups.listChange().subscribe(res => {\r
92             this.groups = res;\r
93         });\r
94        \r
95         // if (!window.localStorage.getItem("currentGroupId"))\r
96         // {\r
97         //     if (!(this.currentUser.defaultGroup)){\r
98         //         let userPatch = {\r
99         //             _id : this.currentUser._id,\r
100         //            defaultGroup : this.currentUser.groups[0].groupId,\r
101         //            defaultGroupEnabled: false  \r
102         //         };\r
103     \r
104         //         this.user.patch(userPatch).subscribe((res) => {\r
105         //             console.log(res)\r
106         //             console.log("Created first default group for user. Default group has been added!")\r
107         //         })\r
108             \r
109         //     }\r
110         //     else {\r
111     \r
112         //         this._groups.setGroup({_id: this.currentUser.defaultGroup})\r
113     \r
114         //     }\r
115         // }\r
116 \r
117         //this._groups.setUp();\r
118 \r
119         this._groups.listChange().subscribe(res => {\r
120             res = this._groups.format(res);\r
121             //set menu fields\r
122             this.setNavFields(res);\r
123             this.groups = res as Array<NavItem>;\r
124         });\r
125 \r
126         this._groups.groupChange().subscribe(res => {\r
127             \r
128             this.selectedGroup = res;\r
129         });\r
130 \r
131     }\r
132 \r
133     setNavFields(groups){\r
134         groups.forEach((elem, val) => {\r
135             groups[val].displayName = elem.groupName;\r
136             this.setNavFields(groups[val].children);\r
137         });\r
138     }\r
139 \r
140     print(){\r
141         \r
142     }\r
143 \r
144     changeGroup(group) {\r
145         this.groupMenu.closeMenu();\r
146        // Patch to add update Default Group\r
147 \r
148        // If the Default Group Enabled does not exist (users havent saved a default group)\r
149         if (!this.currentUser.defaultGroupEnabled)\r
150         {\r
151             let userPatch = {\r
152                 _id : this.currentUser._id,\r
153                 defaultGroup: group._id\r
154             };\r
155 \r
156             this.user.patch(userPatch).subscribe((res) =>{\r
157                 \r
158                 \r
159             })\r
160         }\r
161         // If the default Group Enabled exists (Users saved a default group)\r
162         else{\r
163             \r
164             //Take the default group from the user input\r
165         }\r
166 \r
167     \r
168         \r
169         this._groups.setGroup(group);\r
170    \r
171     }\r
172 \r
173     createGroup(){\r
174         this.modal.open(CreateGroupModalComponent, {\r
175             width: '50%'\r
176         }).afterClosed().subscribe((result) => {\r
177             if(result){\r
178                 this.groups.push(result);\r
179             }\r
180         });\r
181     }\r
182     \r
183     isToggled(): boolean {\r
184         const dom: Element = document.querySelector('body');\r
185         return dom.classList.contains(this.pushRightClass);\r
186     }\r
187 \r
188     toggleSidebar() {\r
189         const dom: any = document.querySelector('body');\r
190         dom.classList.toggle(this.pushRightClass);\r
191     }\r
192 \r
193     rltAndLtr() {\r
194         const dom: any = document.querySelector('body');\r
195         dom.classList.toggle('rtl');\r
196     }\r
197 \r
198     onLoggedout() {\r
199         this.auth.logout();\r
200     }\r
201 \r
202     changeLang(language: string) {\r
203         this.translate.use(language);\r
204     }\r
205 }\r