X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=webapp-frontend%2Fsrc%2Fapp%2Fpolicy-control%2Fpolicy-instance-dialog.component.ts;h=72a2041af9356724f4b932836fec72156c1d4aa4;hb=a3e0f85eff3e8203612c547045e11f8d83639df1;hp=8ab798e72e2962929ddc50b251cd72cb1578c51f;hpb=6e3a6f5c61a6af69255862c485fd597c39f69268;p=portal%2Fnonrtric-controlpanel.git diff --git a/webapp-frontend/src/app/policy-control/policy-instance-dialog.component.ts b/webapp-frontend/src/app/policy-control/policy-instance-dialog.component.ts index 8ab798e..72a2041 100644 --- a/webapp-frontend/src/app/policy-control/policy-instance-dialog.component.ts +++ b/webapp-frontend/src/app/policy-control/policy-instance-dialog.component.ts @@ -23,12 +23,15 @@ import { MatDialogConfig, MatDialogRef, MAT_DIALOG_DATA } from '@angular/materia import { MatMenuTrigger } from '@angular/material/menu'; import { JsonPointer } from 'angular6-json-schema-form'; import * as uuid from 'uuid'; -import { PolicyInstance, PolicyType } from '../interfaces/policy.types'; +import { CreatePolicyInstance, PolicyInstance, PolicyTypeSchema } from '../interfaces/policy.types'; import { PolicyService } from '../services/policy/policy.service'; import { ErrorDialogService } from '../services/ui/error-dialog.service'; import { NotificationService } from './../services/ui/notification.service'; import { UiService } from '../services/ui/ui.service'; import { HttpErrorResponse } from '@angular/common/http'; +import { FormGroup, FormControl, Validators } from '@angular/forms'; +import { ChangeDetectorRef } from '@angular/core'; +import { Ric } from '../interfaces/ric'; @Component({ @@ -49,6 +52,8 @@ import { HttpErrorResponse } from '@angular/common/http'; ], }) export class PolicyInstanceDialogComponent implements OnInit, AfterViewInit { + instanceForm: FormGroup; + formActive = false; isVisible = { @@ -81,14 +86,14 @@ export class PolicyInstanceDialogComponent implements OnInit, AfterViewInit { policyTypeName: string; darkMode: boolean; ric: string; - allRics: string[]; + allRics: Ric[]; private fetchRics() { console.log('fetchRics ' + this.policyTypeName); const self: PolicyInstanceDialogComponent = this; this.dataService.getRics(this.policyTypeName).subscribe( { - next(value) { + next(value: Ric[]) { self.allRics = value; console.log(value); }, @@ -100,6 +105,7 @@ export class PolicyInstanceDialogComponent implements OnInit, AfterViewInit { } constructor( + private cdr: ChangeDetectorRef, private dataService: PolicyService, private errorService: ErrorDialogService, private notificationService: NotificationService, @@ -110,7 +116,7 @@ export class PolicyInstanceDialogComponent implements OnInit, AfterViewInit { this.policyInstanceId = data.instanceId; this.policyTypeName = data.name; this.jsonSchemaObject = data.createSchema; - this.jsonObject = this.parseJson(data.instanceJson); + this.jsonObject = data.instanceJson; this.ric = data.ric; } @@ -120,25 +126,34 @@ export class PolicyInstanceDialogComponent implements OnInit, AfterViewInit { this.ui.darkModeState.subscribe((isDark) => { this.darkMode = isDark; }); + this.instanceForm = new FormGroup({ + 'ricSelector': new FormControl(this.ric, [ + Validators.required + ]) + }); if (!this.policyInstanceId) { this.fetchRics(); } } ngAfterViewInit() { + this.cdr.detectChanges(); } + get ricSelector() { return this.instanceForm.get('ricSelector'); } + onSubmit() { if (this.policyInstanceId == null) { this.policyInstanceId = uuid.v4(); } const policyJson: string = this.prettyLiveFormData; const self: PolicyInstanceDialogComponent = this; - this.dataService.putPolicy(this.policyTypeName, this.policyInstanceId, policyJson, this.ric).subscribe( + let createPolicyInstance = this.createPolicyInstance(policyJson); + this.dataService.putPolicy(createPolicyInstance).subscribe( { next(_) { self.notificationService.success('Policy ' + self.policyTypeName + ':' + self.policyInstanceId + - ' submitted'); + ' submitted'); }, error(error: HttpErrorResponse) { self.errorService.displayError('Submit failed: ' + error.error); @@ -147,6 +162,16 @@ export class PolicyInstanceDialogComponent implements OnInit, AfterViewInit { }); } + private createPolicyInstance(policyJson: string) { + let createPolicyInstance = {} as CreatePolicyInstance; + createPolicyInstance.policy_data = JSON.parse(policyJson); + createPolicyInstance.policy_id = this.policyInstanceId; + createPolicyInstance.policytype_id = this.policyTypeName; + createPolicyInstance.ric_id = (!this.ricSelector.value.ric_id) ? this.ric : this.ricSelector.value.ric_id; + createPolicyInstance.service_id = 'controlpanel'; + return createPolicyInstance; + } + onClose() { this.dialogRef.close(); } @@ -155,15 +180,15 @@ export class PolicyInstanceDialogComponent implements OnInit, AfterViewInit { this.liveFormData = formData; } - get prettyLiveFormData() { + get prettyLiveFormData(): string { return JSON.stringify(this.liveFormData, null, 2); } - get schemaAsString() { + get schemaAsString(): string { return JSON.stringify(this.jsonSchemaObject, null, 2); } - get jsonAsString() { + get jsonAsString(): string { return JSON.stringify(this.jsonObject, null, 2); } @@ -213,12 +238,12 @@ export class PolicyInstanceDialogComponent implements OnInit, AfterViewInit { } } -export function getPolicyDialogProperties(policyType: PolicyType, instance: PolicyInstance, darkMode: boolean): MatDialogConfig { - const createSchema = policyType.schemaObject; - const instanceId = instance ? instance.id : null; - const instanceJson = instance ? instance.json : null; - const name = policyType.name; - const ric = instance ? instance.ric : null; +export function getPolicyDialogProperties(policyTypeSchema: PolicyTypeSchema, instance: PolicyInstance, darkMode: boolean): MatDialogConfig { + const createSchema = policyTypeSchema.schemaObject; + const instanceId = instance ? instance.policy_id : null; + const instanceJson = instance ? instance.policy_data : null; + const name = policyTypeSchema.name; + const ric = instance ? instance.ric_id : null; return { maxWidth: '1200px', maxHeight: '900px',