Uplift to Angular 9
[portal/nonrtric-controlpanel.git] / webapp-frontend / src / app / policy-control / policy-control.component.ts
index 9cf2438..4227d78 100644 (file)
  * limitations under the License.
  * ========================LICENSE_END===================================
  */
-import { Component, OnInit, ViewChild } from '@angular/core';
-import { MatDialog } from '@angular/material/dialog';
-import { MatSort } from '@angular/material/sort';
 import { animate, state, style, transition, trigger } from '@angular/animations';
+import { Component, OnInit } from '@angular/core';
+import { MatDialog } from '@angular/material/dialog';
+
+import { BehaviorSubject, Observable } from 'rxjs';
 
-import { PolicyService } from '../services/policy/policy.service';
-import { PolicyType } from '../interfaces/policy.types';
+import { NoTypePolicyInstanceDialogComponent } from './no-type-policy-instance-dialog.component';
+import { PolicyTypeSchema } from '../interfaces/policy.types';
 import { PolicyTypeDataSource } from './policy-type.datasource';
 import { getPolicyDialogProperties } from './policy-instance-dialog.component';
 import { PolicyInstanceDialogComponent } from './policy-instance-dialog.component';
-import { NotificationService } from '../services/ui/notification.service';
-import { BehaviorSubject, Observable } from 'rxjs';
 import { UiService } from '../services/ui/ui.service';
-import { NoTypePolicyInstanceDialogComponent } from './no-type-policy-instance-dialog.component';
 
 class PolicyTypeInfo {
-    constructor(public type: PolicyType) { }
+    constructor(public type: PolicyTypeSchema) { }
 
     isExpanded: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);
 }
 
 @Component({
-    selector: 'rd-policy-control',
+    selector: 'nrcp-policy-control',
     templateUrl: './policy-control.component.html',
     styleUrls: ['./policy-control.component.scss'],
     animations: [
@@ -53,37 +51,31 @@ class PolicyTypeInfo {
 })
 export class PolicyControlComponent implements OnInit {
 
-
-    policyTypesDataSource: PolicyTypeDataSource;
-    @ViewChild(MatSort, { static: true }) sort: MatSort;
-
     policyTypeInfo = new Map<string, PolicyTypeInfo>();
     darkMode: boolean;
 
     constructor(
-        private policySvc: PolicyService,
+        public policyTypesDataSource: PolicyTypeDataSource,
         private dialog: MatDialog,
-        private notificationService: NotificationService,
         private ui: UiService) { }
 
     ngOnInit() {
-        this.policyTypesDataSource = new PolicyTypeDataSource(this.policySvc, this.sort, this.notificationService);
-        this.policyTypesDataSource.loadTable();
+        this.policyTypesDataSource.getPolicyTypes();
         this.ui.darkModeState.subscribe((isDark) => {
             this.darkMode = isDark;
         });
     }
 
-    createPolicyInstance(policyType: PolicyType): void {
+    createPolicyInstance(policyTypeSchema: PolicyTypeSchema): void {
         let dialogRef;
-        if (this.isSchemaEmpty(policyType)) {
+        if (this.isSchemaEmpty(policyTypeSchema)) {
             dialogRef = this.dialog.open(NoTypePolicyInstanceDialogComponent,
-                getPolicyDialogProperties(policyType, null, this.darkMode));
+                getPolicyDialogProperties(policyTypeSchema, null, this.darkMode));
         } else {
             dialogRef = this.dialog.open(PolicyInstanceDialogComponent,
-                getPolicyDialogProperties(policyType, null, this.darkMode));
+                getPolicyDialogProperties(policyTypeSchema, null, this.darkMode));
         }
-        const info: PolicyTypeInfo = this.getPolicyTypeInfo(policyType);
+        const info: PolicyTypeInfo = this.getPolicyTypeInfo(policyTypeSchema);
         dialogRef.afterClosed().subscribe(
             (_) => {
                 info.isExpanded.next(info.isExpanded.getValue());
@@ -91,36 +83,40 @@ export class PolicyControlComponent implements OnInit {
         );
     }
 
-    toggleListInstances(policyType: PolicyType): void {
-        const info = this.getPolicyTypeInfo(policyType);
+    toggleListInstances(policyTypeSchema: PolicyTypeSchema): void {
+        const info = this.getPolicyTypeInfo(policyTypeSchema);
         info.isExpanded.next(!info.isExpanded.getValue());
     }
 
-    private isSchemaEmpty(policyType: PolicyType): boolean {
-        return Object.keys(policyType.schemaObject).length === 0;
+    private isSchemaEmpty(policyTypeSchema: PolicyTypeSchema): boolean {
+        return policyTypeSchema.schemaObject === '{}';
     }
 
-    getPolicyTypeInfo(policyType: PolicyType): PolicyTypeInfo {
-        let info: PolicyTypeInfo = this.policyTypeInfo.get(policyType.name);
+    getPolicyTypeInfo(policyTypeSchema: PolicyTypeSchema): PolicyTypeInfo {
+        let info: PolicyTypeInfo = this.policyTypeInfo.get(policyTypeSchema.name);
         if (!info) {
-            info = new PolicyTypeInfo(policyType);
-            this.policyTypeInfo.set(policyType.name, info);
+            info = new PolicyTypeInfo(policyTypeSchema);
+            this.policyTypeInfo.set(policyTypeSchema.name, info);
         }
         return info;
     }
 
-    getDisplayName(policyType: PolicyType): string {
-        if (policyType.schemaObject.title) {
-            return policyType.schemaObject.title;
+    getDisplayName(policyTypeSchema: PolicyTypeSchema): string {
+        if (policyTypeSchema.schemaObject.title) {
+            return policyTypeSchema.schemaObject.title;
         }
         return '< No type >';
     }
 
-    isInstancesShown(policyType: PolicyType): boolean {
-        return this.getPolicyTypeInfo(policyType).isExpanded.getValue();
+    isInstancesShown(policyTypeSchema: PolicyTypeSchema): boolean {
+        return this.getPolicyTypeInfo(policyTypeSchema).isExpanded.getValue();
+    }
+
+    getExpandedObserver(policyTypeSchema: PolicyTypeSchema): Observable<boolean> {
+        return this.getPolicyTypeInfo(policyTypeSchema).isExpanded.asObservable();
     }
 
-    getExpandedObserver(policyType: PolicyType): Observable<boolean> {
-        return this.getPolicyTypeInfo(policyType).isExpanded.asObservable();
+    refreshTables() {
+        this.policyTypesDataSource.getPolicyTypes();
     }
 }