Merge "Fix bug in PolicyInstanceDialogComponent"
[portal/nonrtric-controlpanel.git] / webapp-frontend / src / app / policy / policy-control.component.ts
index 01c38b6..de3f578 100644 (file)
@@ -23,12 +23,13 @@ import { MatDialog } from '@angular/material/dialog';
 
 import { BehaviorSubject, Observable } from 'rxjs';
 
-import { NoTypePolicyInstanceDialogComponent } from './no-type-policy-instance-dialog/no-type-policy-instance-dialog.component';
-import { PolicyTypeSchema } from '../interfaces/policy.types';
+import { PolicyTypes, PolicyTypeSchema } from '@interfaces/policy.types';
 import { PolicyTypeDataSource } from './policy-type/policy-type.datasource';
 import { getPolicyDialogProperties } from './policy-instance-dialog/policy-instance-dialog.component';
 import { PolicyInstanceDialogComponent } from './policy-instance-dialog/policy-instance-dialog.component';
-import { UiService } from '../services/ui/ui.service';
+import { UiService } from '@services/ui/ui.service';
+import { PolicyService } from '@services/policy/policy.service';
+import { PolicyTypeComponent } from './policy-type/policy-type.component';
 
 class PolicyTypeInfo {
     constructor(public type: PolicyTypeSchema) { }
@@ -52,11 +53,14 @@ class PolicyTypeInfo {
 export class PolicyControlComponent implements OnInit {
 
     policyTypeInfo = new Map<string, PolicyTypeInfo>();
+    policyTypeIds: Array<string>;
+    policyTypeComponent = new PolicyTypeComponent(this.policyTypesDataSource);
     darkMode: boolean;
 
     constructor(
         public policyTypesDataSource: PolicyTypeDataSource,
         private dialog: MatDialog,
+        private policyService: PolicyService,
         private ui: UiService) { }
 
     ngOnInit() {
@@ -64,21 +68,8 @@ export class PolicyControlComponent implements OnInit {
         this.ui.darkModeState.subscribe((isDark) => {
             this.darkMode = isDark;
         });
-    }
-
-    createPolicyInstance(policyTypeSchema: PolicyTypeSchema): void {
-        let dialogRef;
-        if (this.isSchemaEmpty(policyTypeSchema)) {
-            dialogRef = this.dialog.open(NoTypePolicyInstanceDialogComponent,
-                getPolicyDialogProperties(policyTypeSchema, null, this.darkMode));
-        } else {
-            dialogRef = this.dialog.open(PolicyInstanceDialogComponent,
-                getPolicyDialogProperties(policyTypeSchema, null, this.darkMode));
-        }
-        const info: PolicyTypeInfo = this.getPolicyTypeInfo(policyTypeSchema);
-        dialogRef.afterClosed().subscribe(
-            (_) => {
-                info.isExpanded.next(info.isExpanded.getValue());
+        this.policyService.getPolicyTypes().subscribe((policyType: PolicyTypes) => {
+            this.policyTypeIds = policyType.policytype_ids;
             }
         );
     }
@@ -88,10 +79,6 @@ export class PolicyControlComponent implements OnInit {
         info.isExpanded.next(!info.isExpanded.getValue());
     }
 
-    private isSchemaEmpty(policyTypeSchema: PolicyTypeSchema): boolean {
-        return policyTypeSchema.schemaObject === '{}';
-    }
-
     getPolicyTypeInfo(policyTypeSchema: PolicyTypeSchema): PolicyTypeInfo {
         let info: PolicyTypeInfo = this.policyTypeInfo.get(policyTypeSchema.name);
         if (!info) {
@@ -108,15 +95,12 @@ export class PolicyControlComponent implements OnInit {
         return '< No type >';
     }
 
-    isInstancesShown(policyTypeSchema: PolicyTypeSchema): boolean {
-        return this.getPolicyTypeInfo(policyTypeSchema).isExpanded.getValue();
-    }
-
     getExpandedObserver(policyTypeSchema: PolicyTypeSchema): Observable<boolean> {
         return this.getPolicyTypeInfo(policyTypeSchema).isExpanded.asObservable();
     }
 
     refreshTables() {
         this.policyTypesDataSource.getPolicyTypes();
+        this.policyTypeComponent.setIsVisible(false);
     }
 }