Uplift to Angular 9
[portal/nonrtric-controlpanel.git] / webapp-frontend / src / app / policy-control / policy-control.component.ts
index cd8d948..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';
 
 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: [
@@ -52,61 +51,72 @@ 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 {
-        const dialogRef = this.dialog.open(PolicyInstanceDialogComponent, getPolicyDialogProperties(policyType, null, this.darkMode));
-        const info: PolicyTypeInfo = this.getPolicyTypeInfo(policyType);
+    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(
-            (result: any) => {
+            (_) => {
                 info.isExpanded.next(info.isExpanded.getValue());
             }
         );
     }
 
-    toggleListInstances(policyType: PolicyType): void {
-        const info = this.getPolicyTypeInfo(policyType);
+    toggleListInstances(policyTypeSchema: PolicyTypeSchema): void {
+        const info = this.getPolicyTypeInfo(policyTypeSchema);
         info.isExpanded.next(!info.isExpanded.getValue());
     }
 
-    getPolicyTypeInfo(policyType: PolicyType): PolicyTypeInfo {
-        let info: PolicyTypeInfo = this.policyTypeInfo.get(policyType.name);
+    private isSchemaEmpty(policyTypeSchema: PolicyTypeSchema): boolean {
+        return policyTypeSchema.schemaObject === '{}';
+    }
+
+    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;
     }
 
-    getName(policyType: PolicyType): string {
-        if (policyType.schemaObject.title) { return policyType.schemaObject.title; }
-        return policyType.name;
+    getDisplayName(policyTypeSchema: PolicyTypeSchema): string {
+        if (policyTypeSchema.schemaObject.title) {
+            return policyTypeSchema.schemaObject.title;
+        }
+        return '< No type >';
+    }
+
+    isInstancesShown(policyTypeSchema: PolicyTypeSchema): boolean {
+        return this.getPolicyTypeInfo(policyTypeSchema).isExpanded.getValue();
     }
 
-    isInstancesShown(policyType: PolicyType): boolean {
-        return this.getPolicyTypeInfo(policyType).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();
     }
 }