Add multi-layer RIC instance selector
[portal/ric-dashboard.git] / webapp-frontend / src / app / rd.component.ts
1 /*-
2  * ========================LICENSE_START=================================
3  * O-RAN-SC
4  * %%
5  * Copyright (C) 2019 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  * ========================LICENSE_END===================================
19  */
20 import { Component, OnInit } from '@angular/core';
21 import { Subscription } from 'rxjs';
22 import { RicInstance } from './interfaces/dashboard.types';
23 import { InstanceSelectorService } from './services/instance-selector/instance-selector.service';
24 import { InstanceSelectorDialogService } from './services/ui/instance-selector-dialog.service';
25 import { UiService } from './services/ui/ui.service';
26
27 @Component({
28   selector: 'rd-root',
29   templateUrl: './rd.component.html',
30   styleUrls: ['./rd.component.scss']
31 })
32 export class RdComponent implements OnInit {
33   showMenu = false;
34   darkModeActive: boolean;
35
36   private selectedInstanceName: string = 'Select RIC instance';
37   private instanceChange: Subscription;
38
39   constructor(
40     public ui: UiService,
41     private instanceSelectorDialogService: InstanceSelectorDialogService,
42     private instanceSelectorService: InstanceSelectorService) {
43   }
44
45   ngOnInit() {
46     this.ui.darkModeState.subscribe((value) => {
47       this.darkModeActive = value;
48     });
49
50     this.instanceChange = this.instanceSelectorService.getSelectedInstance().subscribe((instance: RicInstance) => {
51       if (instance.name) {
52         this.selectedInstanceName = instance.name;
53       } else {
54         this.openInstanceSelectorDialog()
55       }
56     });
57   }
58
59   ngOnDestroy() {
60     this.instanceChange.unsubscribe();
61   }
62
63   modeToggleSwitch() {
64     this.ui.darkModeState.next(!this.darkModeActive);
65   }
66
67   openInstanceSelectorDialog() {
68     this.instanceSelectorDialogService.openInstanceSelectorDialog();
69   }
70
71 }