X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=dashboard%2Fwebapp-frontend%2Fsrc%2Fapp%2Fui%2Finstance-selector-dialog%2Finstance-selector-dialog.component.ts;fp=dashboard%2Fwebapp-frontend%2Fsrc%2Fapp%2Fui%2Finstance-selector-dialog%2Finstance-selector-dialog.component.ts;h=c9f927c8f2bb89c4cb89a76bdb89770994d9b8f2;hb=64a5e9470799236f0af4ce2df98f77c94eb1bed3;hp=0000000000000000000000000000000000000000;hpb=a0180adc6a1e1ec09472549596428b70d48db3fc;p=portal%2Fric-dashboard.git diff --git a/dashboard/webapp-frontend/src/app/ui/instance-selector-dialog/instance-selector-dialog.component.ts b/dashboard/webapp-frontend/src/app/ui/instance-selector-dialog/instance-selector-dialog.component.ts new file mode 100644 index 00000000..c9f927c8 --- /dev/null +++ b/dashboard/webapp-frontend/src/app/ui/instance-selector-dialog/instance-selector-dialog.component.ts @@ -0,0 +1,68 @@ +/*- + * ========================LICENSE_START================================= + * O-RAN-SC + * %% + * Copyright (C) 2020 AT&T Intellectual Property + * %% + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================LICENSE_END=================================== + */ + +import { Component, OnInit } from '@angular/core'; +import { FormControl, FormGroup, Validators } from '@angular/forms'; +import { MatDialogRef } from '@angular/material/dialog'; +import { finalize } from 'rxjs/operators'; +import { RicInstance, RicRegion } from '../../interfaces/dashboard.types'; +import { InstanceSelectorService } from '../../services/instance-selector/instance-selector.service'; +import { LoadingDialogService } from '../../services/ui/loading-dialog.service'; + +@Component({ + selector: 'rd-instance-selector-dialog', + templateUrl: './instance-selector-dialog.component.html', +}) +export class InstanceSelectorDialogComponent implements OnInit { + + private allRegions: RicRegion[]; + private regionInstances: RicInstance[]; + private instanceForm: FormGroup; + + constructor( + private dialogRef: MatDialogRef, + private instanceSelectorService: InstanceSelectorService, + private loadingDialogService: LoadingDialogService) { } + + ngOnInit() { + this.instanceForm = new FormGroup({ + instance: new FormControl('', [Validators.required]) + }); + + this.loadingDialogService.startLoading('Loading RIC instances'); + this.instanceSelectorService.getAllInstances() + .pipe( + finalize(() => this.loadingDialogService.stopLoading()) + ) + .subscribe((regArray: RicRegion[]) => { + this.allRegions = regArray; + }); + } + + changeInstance(selectedInstance: RicInstance) { + this.instanceSelectorService.updateSelectedInstance(selectedInstance); + this.dialogRef.close(true); + } + + changeRegion(selectedRegion: RicRegion) { + this.instanceForm.setValue({ instance: '' }); + this.regionInstances = selectedRegion.instances; + } +}