Add Xapp Onboarder frontend UI
[portal/ric-dashboard.git] / dashboard / 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, RicRegion } 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   selectedInstanceName: string = 'Select RIC instance';
36   private instanceChange: Subscription;
37
38   constructor(
39     public ui: UiService,
40     private instanceSelectorDialogService: InstanceSelectorDialogService,
41     private instanceSelectorService: InstanceSelectorService) {
42   }
43
44   ngOnInit() {
45     this.ui.darkModeState.subscribe((value) => {
46       this.darkModeActive = value;
47     });
48
49     this.instanceChange = this.instanceSelectorService.getSelectedInstance().subscribe((instance: RicInstance) => {
50       if (instance.name) {
51         this.selectedInstanceName = instance.name;
52       } else {
53         this.instanceSelectorService.getAllInstances().subscribe((regArray: RicRegion[]) => {
54           this.instanceSelectorService.updateSelectedInstance(regArray[0].instances[0]);
55         });
56       }
57     });
58   }
59
60   ngOnDestroy() {
61     this.instanceChange.unsubscribe();
62   }
63
64   modeToggleSwitch() {
65     this.ui.darkModeState.next(!this.darkModeActive);
66   }
67
68   openInstanceSelectorDialog() {
69     this.instanceSelectorDialogService.openInstanceSelectorDialog();
70   }
71
72 }