X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=webapp-frontend%2Fsrc%2Fapp%2Fpolicy%2Fpolicy-instance%2Fpolicy-instance.component.ts;h=5e29f3a9043a04f1d6320bf7ce53282ae96398fa;hb=75f920d496ae90fe09ed16e9d94d0a3c3bb431c0;hp=6441e563f0807c6f8416a06df9da3b2d5fe8708d;hpb=b0ff9d1cf925365ede88198824c5893c04b1c7b9;p=portal%2Fnonrtric-controlpanel.git diff --git a/webapp-frontend/src/app/policy/policy-instance/policy-instance.component.ts b/webapp-frontend/src/app/policy/policy-instance/policy-instance.component.ts index 6441e56..5e29f3a 100644 --- a/webapp-frontend/src/app/policy/policy-instance/policy-instance.component.ts +++ b/webapp-frontend/src/app/policy/policy-instance/policy-instance.component.ts @@ -33,7 +33,7 @@ import { BehaviorSubject, forkJoin } from "rxjs"; import { UiService } from "@services/ui/ui.service"; import { FormControl, FormGroup } from "@angular/forms"; import { MatTableDataSource } from "@angular/material/table"; -import { mergeMap } from "rxjs/operators"; +import { finalize, mergeMap, map } from "rxjs/operators"; @Component({ selector: "nrcp-policy-instance", @@ -41,12 +41,16 @@ import { mergeMap } from "rxjs/operators"; styleUrls: ["./policy-instance.component.scss"], }) export class PolicyInstanceComponent implements OnInit { + public slice: number = 1000; @Input() policyTypeSchema: PolicyTypeSchema; darkMode: boolean; instanceDataSource: MatTableDataSource; policyInstanceForm: FormGroup; private policyInstanceSubject = new BehaviorSubject([]); policyInstances: PolicyInstance[] = []; + private loadingSubject$ = new BehaviorSubject(false); + public loading$ = this.loadingSubject$.asObservable(); + public truncated = false; constructor( private policySvc: PolicyService, @@ -96,9 +100,17 @@ export class PolicyInstanceComponent implements OnInit { getPolicyInstances() { this.policyInstances = [] as PolicyInstance[]; + this.loadingSubject$.next(true); this.policySvc .getPolicyInstancesByType(this.policyTypeSchema.id) .pipe( + map((data) => { + if (data.policy_ids.length > this.slice) { + this.truncated = true; + data.policy_ids = data.policy_ids.slice(0, this.slice); + } + return data; + }), mergeMap((policyIds) => forkJoin( policyIds.policy_ids.map((id) => { @@ -108,7 +120,8 @@ export class PolicyInstanceComponent implements OnInit { ]); }) ) - ) + ), + finalize(() => this.loadingSubject$.next(false)) ) .subscribe((res) => { this.policyInstances = res.map((policy) => { @@ -154,14 +167,11 @@ export class PolicyInstanceComponent implements OnInit { } modifyInstance(instance: PolicyInstance): void { - let refreshedInstance: PolicyInstance; this.policySvc .getPolicyInstance(instance.policy_id) - .subscribe((refreshedJson: any) => { - refreshedInstance = refreshedJson; + .subscribe((refreshedJson: PolicyInstance) => { + this.openInstanceDialog(refreshedJson); }); - - this.openInstanceDialog(refreshedInstance); } private openInstanceDialog(policy: PolicyInstance) { @@ -179,7 +189,11 @@ export class PolicyInstanceComponent implements OnInit { }); } - noInstances(): number { + hasInstances(): boolean { + return this.instanceCount() > 0; + } + + instanceCount(): number { return this.policyInstances.length; } @@ -192,6 +206,7 @@ export class PolicyInstanceComponent implements OnInit { deleteInstance(instance: PolicyInstance): void { this.confirmDialogService .openConfirmDialog( + "Delete Policy", "Are you sure you want to delete this policy instance?" ) .afterClosed() @@ -210,6 +225,7 @@ export class PolicyInstanceComponent implements OnInit { } refreshTable() { + this.truncated = false; this.getPolicyInstances(); } }