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) { }
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() {
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;
}
);
}
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) {
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);
}
}