From: PatrikBuhr Date: Thu, 21 Nov 2019 15:04:59 +0000 (+0100) Subject: Policy types schemas should only be parsed once X-Git-Tag: 1.7.3^2 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=268acb16ac1b127220fbfd1ecb8b34e940e19a4b;hp=592589c3bcaba8f8d309bccf9068c0fce4434da8;p=nonrtric.git Policy types schemas should only be parsed once The json schema foreach type was parsed several times each time the main window was rendered. Change-Id: I209af068d07444a76264764ba4d9a683acae9bc3 Issue-ID: NONRTRIC-61 Signed-off-by: PatrikBuhr --- diff --git a/dashboard/webapp-frontend/src/app/interfaces/policy.types.ts b/dashboard/webapp-frontend/src/app/interfaces/policy.types.ts index ee0c4474..e694bb6e 100644 --- a/dashboard/webapp-frontend/src/app/interfaces/policy.types.ts +++ b/dashboard/webapp-frontend/src/app/interfaces/policy.types.ts @@ -24,6 +24,7 @@ export interface PolicyType { policy_type_id: number; name: string; schema: string; + schemaObject: any; } export interface PolicyInstance { diff --git a/dashboard/webapp-frontend/src/app/policy-control/policy-control.component.html b/dashboard/webapp-frontend/src/app/policy-control/policy-control.component.html index e71fd8ab..f1852070 100644 --- a/dashboard/webapp-frontend/src/app/policy-control/policy-control.component.html +++ b/dashboard/webapp-frontend/src/app/policy-control/policy-control.component.html @@ -24,7 +24,7 @@ class="policy-type-table mat-elevation-z8"> - Policy Type + Policy Type {{isInstancesShown(policyType) ? 'expand_less' : 'expand_more'}} @@ -34,7 +34,7 @@ Description - {{this.getDescription(policyType)}} + {{policyType.schemaObject.description}} diff --git a/dashboard/webapp-frontend/src/app/policy-control/policy-control.component.ts b/dashboard/webapp-frontend/src/app/policy-control/policy-control.component.ts index d57019f2..a81fb2e6 100644 --- a/dashboard/webapp-frontend/src/app/policy-control/policy-control.component.ts +++ b/dashboard/webapp-frontend/src/app/policy-control/policy-control.component.ts @@ -91,11 +91,8 @@ export class PolicyControlComponent implements OnInit { } toggleListInstances(policyType: PolicyType): void { - console.log('1toggleListInstances ' + + policyType.name + ' ' + this.getPolicyTypeInfo(policyType).isExpanded.getValue()); const info = this.getPolicyTypeInfo(policyType); info.isExpanded.next(!info.isExpanded.getValue()); - console.log('2toggleListInstances ' + + policyType.name + ' ' + this.getPolicyTypeInfo(policyType).isExpanded.getValue()); - } getPolicyTypeInfo(policyType: PolicyType): PolicyTypeInfo { @@ -107,13 +104,8 @@ export class PolicyControlComponent implements OnInit { return info; } - getDescription(policyType: PolicyType): string { - return JSON.parse(policyType.schema).description; - } - getName(policyType: PolicyType): string { - const title = JSON.parse(policyType.schema).title; - if (title) { return title; } + if (policyType.schemaObject.title) { return policyType.schemaObject.title; } return policyType.name; } diff --git a/dashboard/webapp-frontend/src/app/policy-control/policy-instance-dialog.component.ts b/dashboard/webapp-frontend/src/app/policy-control/policy-instance-dialog.component.ts index f9293420..d69400d0 100644 --- a/dashboard/webapp-frontend/src/app/policy-control/policy-instance-dialog.component.ts +++ b/dashboard/webapp-frontend/src/app/policy-control/policy-instance-dialog.component.ts @@ -94,7 +94,8 @@ export class PolicyInstanceDialogComponent implements OnInit, AfterViewInit { this.policyInstanceId = data.instanceId; this.policyTypeName = data.name; this.policyTypeId = data.policyTypeId; - this.parseJson(data.createSchema, data.instanceJson); + this.jsonSchemaObject = data.createSchema; + this.jsonObject = this.parseJson(data.instanceJson); } ngOnInit() { @@ -174,18 +175,17 @@ export class PolicyInstanceDialogComponent implements OnInit, AfterViewInit { return errorArray.join('
'); } - private parseJson(createSchema: string, instanceJson: string): void { + private parseJson(str: string): string { try { - this.jsonSchemaObject = JSON.parse(createSchema); - if (instanceJson != null) { - this.jsonObject = JSON.parse(instanceJson); + if (str != null) { + return JSON.parse(str); } } catch (jsonError) { this.jsonFormStatusMessage = 'Invalid JSON\n' + 'parser returned:\n\n' + jsonError; - return; } + return null; } public toggleVisible(item: string) { @@ -195,7 +195,7 @@ export class PolicyInstanceDialogComponent implements OnInit, AfterViewInit { export function getPolicyDialogProperties(policyType: PolicyType, instance: PolicyInstance, darkMode: boolean): MatDialogConfig { const policyTypeId = policyType.policy_type_id; - const createSchema = policyType.schema; + const createSchema = policyType.schemaObject; const instanceId = instance ? instance.instanceId : null; const instanceJson = instance ? instance.instance : null; const name = policyType.name; diff --git a/dashboard/webapp-frontend/src/app/policy-control/policy-type.datasource.ts b/dashboard/webapp-frontend/src/app/policy-control/policy-type.datasource.ts index 1b2b93e1..8d9dec75 100644 --- a/dashboard/webapp-frontend/src/app/policy-control/policy-type.datasource.ts +++ b/dashboard/webapp-frontend/src/app/policy-control/policy-type.datasource.ts @@ -58,6 +58,10 @@ export class PolicyTypeDataSource extends DataSource { ) .subscribe((types: PolicyType[]) => { this.rowCount = types.length; + for (let i = 0; i < types.length; i++) { + const policyType = types[i]; + policyType.schemaObject = JSON.parse(policyType.schema); + } this.policyTypeSubject.next(types); }); }