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=43afc94199ac28ed15726b3b1f49fa9cc95f1a85;hb=HEAD;hp=f007d17767b122c339f553d34617e26bb4d38356;hpb=90295c9a25c27628164eed0c66d0a89df587525b;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 f007d17..43afc94 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,11 @@ export class PolicyInstanceComponent implements OnInit { ]); }) ) - ) + ), + finalize(() => { + this.loadingSubject$.next(false); + this.policyInstanceSubject.next(this.policyInstances); + }) ) .subscribe((res) => { this.policyInstances = res.map((policy) => { @@ -117,7 +133,6 @@ export class PolicyInstanceComponent implements OnInit { policyInstance.lastModified = policy[1].last_modified; return policyInstance; }); - this.policyInstanceSubject.next(this.policyInstances); }); } @@ -154,14 +169,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) { @@ -181,10 +193,10 @@ export class PolicyInstanceComponent implements OnInit { hasInstances(): boolean { return this.instanceCount() > 0; -} + } instanceCount(): number { - return this.policyInstances.length; + return this.instanceDataSource.data.length; } toLocalTime(utcTime: string): string { @@ -196,6 +208,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() @@ -214,6 +227,7 @@ export class PolicyInstanceComponent implements OnInit { } refreshTable() { + this.truncated = false; this.getPolicyInstances(); } }