b0b882d3df5a2bdee1d767de58e6d487c1324f6d
[portal.git] / portal-FE-common / src / app / layout / components / tabbar / tabbar.component.ts
1 /*-
2  * ============LICENSE_START==========================================
3  * ONAP Portal
4  * ===================================================================
5  * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
6  * ===================================================================
7  *
8  * Unless otherwise specified, all software contained herein is licensed
9  * under the Apache License, Version 2.0 (the "License");
10  * you may not use this software except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  *             http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  *
21  * Unless otherwise specified, all documentation contained herein is licensed
22  * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
23  * you may not use this documentation except in compliance with the License.
24  * You may obtain a copy of the License at
25  *
26  *             https://creativecommons.org/licenses/by/4.0/
27  *
28  * Unless required by applicable law or agreed to in writing, documentation
29  * distributed under the License is distributed on an "AS IS" BASIS,
30  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31  * See the License for the specific language governing permissions and
32  * limitations under the License.
33  *
34  * ============LICENSE_END============================================
35  *
36  *
37  */
38 import { Component, OnInit } from '@angular/core';
39 import { FormControl } from '@angular/forms';
40 import { DomSanitizer } from '@angular/platform-browser';
41 import { Tab } from './tab';
42 import { AddTabFunctionService } from 'src/app/shared/services/tab/add-tab-function.service';
43
44 @Component({
45   selector: 'app-tabbar',
46   templateUrl: './tabbar.component.html',
47   styleUrls: ['./tabbar.component.scss']
48 })
49 export class TabbarComponent implements OnInit {
50
51   tabs = [];
52   mainTab = 'Home';
53   selected = new FormControl(0);
54   collapedSideBar: boolean;
55
56   constructor(private sanitizer: DomSanitizer, private addTabFuntionService: AddTabFunctionService) {
57
58   }
59
60   ngOnInit(): void {
61
62     this.addTabFuntionService.listen().subscribe((m: any) => {
63       console.log(m);
64       this.addTab(true, m.title, m.url);
65     })
66   }
67
68   addTab(selectAfterAdding: boolean, label: string, url: string) {
69     const tab = new Tab(label);
70     tab.url = this.sanitizer.bypassSecurityTrustResourceUrl(url);
71     tab.active = true;
72     this.tabs.push(tab);
73
74     if (selectAfterAdding) {
75       this.selected.setValue(this.tabs.length);
76     }
77   }
78
79   removeTab(index: number) {
80     this.tabs.splice(index, 1);
81   }
82
83   receiveCollapsed($event) {
84     this.collapedSideBar = $event;
85   }
86
87   tabChanged($event) {
88
89     for (const ttab of this.tabs) {
90       ttab.active = false;
91     }
92     if(this.tabs.length != 0 && $event.index != 0)
93       this.tabs[$event.index - 1].active = true;
94   }
95   
96   setStyle() {  
97     const style = {
98        'margin-left': this.collapedSideBar ? '80px' : '370px',
99     };
100     return style;
101   }
102 }