2 * ========================LICENSE_START=================================
5 * Copyright (C) 2021 Nordix Foundation
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ========================LICENSE_END===================================
21 import { Component, Input, OnInit, OnChanges, SimpleChanges } from "@angular/core";
22 import { BehaviorSubject } from "rxjs";
23 import { PolicyType, PolicyTypeSchema } from "@interfaces/policy.types";
24 import { PolicyService } from "@services/policy/policy.service";
25 import "@policy/policy-control.component";
27 class PolicyTypeInfo {
28 constructor(public type: PolicyTypeSchema) {}
30 isExpanded: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);
34 selector: "nrcp-policy-type",
35 templateUrl: "./policy-type.component.html",
36 styleUrls: ["./policy-type.component.scss"],
38 export class PolicyTypeComponent implements OnInit, OnChanges {
39 @Input() policyTypeId: string;
40 @Input() minimiseTrigger: boolean;
42 isVisible: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);
44 policyTypeInfo: PolicyTypeInfo;
46 policyDescription: string;
48 constructor(private policyService: PolicyService) {}
52 this.isVisible.next(false);
55 ngOnChanges(changes: SimpleChanges): void {
56 if(changes['minimiseTrigger']){
57 this.isVisible.next(false);
61 public loadTypeInfo() {
62 if (this.policyTypeId && this.policyTypeId !== "") {
64 .getPolicyType(this.policyTypeId)
65 .subscribe((policyType: PolicyType) => {
66 const policyTypeSchema = this.getSchemaObject(policyType);
67 this.policyTypeInfo = new PolicyTypeInfo(policyTypeSchema);
68 this.policyType = this.policyTypeId;
69 this.policyDescription = policyTypeSchema.schemaObject.description;
73 policy_schema: JSON.parse('{}'),
75 const noTypeSchema = this.getSchemaObject(noType);
76 this.policyTypeInfo = new PolicyTypeInfo(noTypeSchema);
77 this.policyType = "< No Type >";
78 this.policyDescription = "Type with no schema";
82 private getSchemaObject(policyType: PolicyType) {
83 const policyTypeSchema = {} as PolicyTypeSchema;
84 policyTypeSchema.id = this.policyTypeId;
85 policyTypeSchema.schemaObject = policyType.policy_schema;
86 policyTypeSchema.name = policyType.policy_schema.title;
87 return policyTypeSchema;
90 public toggleVisible() {
91 this.isVisible.next(!this.isVisible.value);