Enable Test to run in Debug mode
[portal/nonrtric-controlpanel.git] / webapp-frontend / src / app / policy-control / policy-instance-dialog.component.ts
index b4ad194..319efaa 100644 (file)
@@ -23,11 +23,13 @@ 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 { 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';
 
 
 @Component({
@@ -48,6 +50,8 @@ import { UiService } from '../services/ui/ui.service';
     ],
 })
 export class PolicyInstanceDialogComponent implements OnInit, AfterViewInit {
+    instanceForm: FormGroup;
+
 
     formActive = false;
     isVisible = {
@@ -91,7 +95,7 @@ export class PolicyInstanceDialogComponent implements OnInit, AfterViewInit {
                     self.allRics = value;
                     console.log(value);
                 },
-                error(error) {
+                error(error: HttpErrorResponse) {
                     self.errorService.displayError('Fetching of rics failed: ' + error.message);
                 },
                 complete() { }
@@ -119,6 +123,11 @@ 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();
         }
@@ -127,6 +136,8 @@ export class PolicyInstanceDialogComponent implements OnInit, AfterViewInit {
     ngAfterViewInit() {
     }
 
+    get ricSelector() { return this.instanceForm.get('ricSelector'); }
+
     onSubmit() {
         if (this.policyInstanceId == null) {
             this.policyInstanceId = uuid.v4();
@@ -135,11 +146,12 @@ export class PolicyInstanceDialogComponent implements OnInit, AfterViewInit {
         const self: PolicyInstanceDialogComponent = this;
         this.dataService.putPolicy(this.policyTypeName, this.policyInstanceId, policyJson, this.ric).subscribe(
             {
-                next(value) {
-                    self.notificationService.success('Policy ' + self.policyTypeName + ':' + self.policyInstanceId + ' submitted');
+                next(_) {
+                    self.notificationService.success('Policy ' + self.policyTypeName + ':' + self.policyInstanceId +
+                    ' submitted');
                 },
-                error(error) {
-                    self.errorService.displayError('updatePolicy failed: ' + error.message);
+                error(error: HttpErrorResponse) {
+                    self.errorService.displayError('Submit failed: ' + error.error);
                 },
                 complete() { }
             });
@@ -153,15 +165,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);
     }
 
@@ -211,12 +223,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',