Merge "Reroute Enrichment to gateway"
[portal/nonrtric-controlpanel.git] / webapp-frontend / src / app / policy-control / policy-instance-dialog.component.ts
index 3dcd79a..72a2041 100644 (file)
@@ -23,13 +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({
@@ -84,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);
                 },
@@ -103,6 +105,7 @@ export class PolicyInstanceDialogComponent implements OnInit, AfterViewInit {
     }
 
     constructor(
+        private cdr: ChangeDetectorRef,
         private dataService: PolicyService,
         private errorService: ErrorDialogService,
         private notificationService: NotificationService,
@@ -113,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;
     }
 
@@ -134,6 +137,7 @@ export class PolicyInstanceDialogComponent implements OnInit, AfterViewInit {
     }
 
     ngAfterViewInit() {
+        this.cdr.detectChanges();
     }
 
     get ricSelector() { return this.instanceForm.get('ricSelector'); }
@@ -144,11 +148,12 @@ export class PolicyInstanceDialogComponent implements OnInit, AfterViewInit {
         }
         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);
@@ -157,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();
     }
@@ -223,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',