Improvements in the GUI
[portal/nonrtric-controlpanel.git] / webapp-frontend / src / app / policy-control / policy-instance.component.ts
index ecf6f36..ab9bfd9 100644 (file)
@@ -28,6 +28,7 @@ import { NotificationService } from '../services/ui/notification.service';
 import { PolicyService } from '../services/policy/policy.service';
 import { ConfirmDialogService } from './../services/ui/confirm-dialog.service';
 import { PolicyInstance } from '../interfaces/policy.types';
+import { NoTypePolicyInstanceDialogComponent } from './no-type-policy-instance-dialog.component';
 import { PolicyInstanceDialogComponent } from './policy-instance-dialog.component';
 import { getPolicyDialogProperties } from './policy-instance-dialog.component';
 import { HttpErrorResponse, HttpResponse } from '@angular/common/http';
@@ -75,15 +76,35 @@ export class PolicyInstanceComponent implements OnInit, AfterViewInit {
         }
     }
 
+    private isSchemaEmpty(): boolean {
+        return Object.keys(this.policyType.schemaObject).length === 0;
+    }
+
     modifyInstance(instance: PolicyInstance): void {
         this.policySvc.getPolicy(this.policyType.name, instance.id).subscribe(
             (refreshedJson: any) => {
                 instance.json = JSON.stringify(refreshedJson);
-                this.dialog.open(PolicyInstanceDialogComponent, getPolicyDialogProperties(this.policyType, instance, this.darkMode));
+                if (this.isSchemaEmpty()) {
+                    this.dialog.open(
+                        NoTypePolicyInstanceDialogComponent,
+                        getPolicyDialogProperties(this.policyType, instance, this.darkMode)).afterClosed().subscribe(
+                           (_: any) => {
+                                this.instanceDataSource.loadTable();
+                           }
+                        );
+                } else {
+                    this.dialog.open(
+                        PolicyInstanceDialogComponent,
+                        getPolicyDialogProperties(this.policyType, instance, this.darkMode)).afterClosed().subscribe(
+                           (_: any) => {
+                                this.instanceDataSource.loadTable();
+                           }
+                        );
+
+                }
             },
             (httpError: HttpErrorResponse) => {
-                this.notificationService.error('Could not refresh instance ' + httpError.message);
-                this.dialog.open(PolicyInstanceDialogComponent, getPolicyDialogProperties(this.policyType, instance, this.darkMode));
+                this.notificationService.error('Could not refresh instance. Please try again.' + httpError.message);
             }
         );
     }
@@ -95,7 +116,7 @@ export class PolicyInstanceComponent implements OnInit, AfterViewInit {
     toLocalTime(utcTime: string): string {
         const date = new Date(utcTime);
         const toutc = date.toUTCString();
-        return new Date(toutc + " UTC").toLocaleString();
+        return new Date(toutc + ' UTC').toLocaleString();
 
     }
 
@@ -114,11 +135,11 @@ export class PolicyInstanceComponent implements OnInit, AfterViewInit {
                                             this.instanceDataSource.loadTable();
                                             break;
                                         default:
-                                            this.notificationService.warn('Delete failed.');
+                                            this.notificationService.warn('Delete failed ' + response.status + ' ' + response.body);
                                     }
                                 },
                                 (error: HttpErrorResponse) => {
-                                    this.errorDialogService.displayError(error.message);
+                                    this.errorDialogService.displayError(error.statusText + ', ' + error.error);
                                 });
                     }
                 });