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} from "@angular/core";
22 import { BehaviorSubject } from "rxjs";
23 import { PolicyType, PolicyTypeSchema } from "@interfaces/policy.types";
24 import { PolicyService } from "@app/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);
56 this.isVisible.next(false);
59 public loadTypeInfo() {
60 if (this.policyTypeId && this.policyTypeId !== "") {
62 .getPolicyType(this.policyTypeId)
63 .subscribe((policyType: PolicyType) => {
64 const policyTypeSchema = this.getSchemaObject(policyType);
65 this.policyTypeInfo = new PolicyTypeInfo(policyTypeSchema);
66 this.policyType = this.policyTypeId;
67 this.policyDescription = policyTypeSchema.schemaObject.description;
71 policy_schema: JSON.parse('{}'),
73 const noTypeSchema = this.getSchemaObject(noType);
74 this.policyTypeInfo = new PolicyTypeInfo(noTypeSchema);
75 this.policyType = "< No Type >";
76 this.policyDescription = "Type with no schema";
80 private getSchemaObject(policyType: PolicyType) {
81 const policyTypeSchema = {} as PolicyTypeSchema;
82 policyTypeSchema.id = this.policyTypeId;
83 policyTypeSchema.schemaObject = policyType.policy_schema;
84 policyTypeSchema.name = policyType.policy_schema.title;
85 return policyTypeSchema;
88 public toggleVisible() {
89 this.isVisible.next(!this.isVisible.value);