support-multiple-ric-instances
[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 { finalize } from 'rxjs/operators';
22 import { RicInstance } from './interfaces/dashboard.types';
23 import { InstanceSelectorService } from './services/instance-selector/instance-selector.service';
24 import { LoadingDialogService } from './services/ui/loading-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   private instanceArray: RicInstance[];
36   private selectedInstanceKey: string;
37
38   constructor(
39     public ui: UiService,
40     private instanceSelectorService: InstanceSelectorService,
41     private loadingDialogService: LoadingDialogService) {
42   }
43
44   ngOnInit() {
45     this.ui.darkModeState.subscribe((value) => {
46       this.darkModeActive = value;
47     });
48     this.loadingDialogService.startLoading('Loading RIC instances');
49     this.instanceSelectorService.getInstanceArray()
50       .pipe(
51         finalize(() => this.loadingDialogService.stopLoading())
52       )
53       .subscribe((instanceArray: RicInstance[]) => {
54         this.instanceArray = instanceArray;
55         this.selectedInstanceKey = instanceArray[0].key;
56       })
57   }
58
59   toggleMenu() {
60     this.showMenu = !this.showMenu;
61   }
62
63   modeToggleSwitch() {
64     this.ui.darkModeState.next(!this.darkModeActive);
65   }
66
67   changeInstance(selectedInstancekey: string) {
68     this.instanceSelectorService.updateSelectedInstance(selectedInstancekey);
69   }
70
71 }