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 } 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";
26 class PolicyTypeInfo {
27 constructor(public type: PolicyTypeSchema) {}
29 isExpanded: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);
33 selector: "nrcp-policy-type",
34 templateUrl: "./policy-type.component.html",
35 styleUrls: ["./policy-type.component.scss"],
37 export class PolicyTypeComponent implements OnInit {
38 @Input() policyTypeId: string;
40 isVisible: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);
42 policyTypeInfo: PolicyTypeInfo;
44 policyDescription: string;
46 constructor(private policyService: PolicyService) {}
50 this.isVisible.next(false);
53 public loadTypeInfo() {
54 if (this.policyTypeId && this.policyTypeId !== "") {
56 .getPolicyType(this.policyTypeId)
57 .subscribe((policyType: PolicyType) => {
58 const policyTypeSchema = this.getSchemaObject(policyType);
59 this.policyTypeInfo = new PolicyTypeInfo(policyTypeSchema);
60 this.policyType = this.policyTypeId;
61 this.policyDescription = policyTypeSchema.schemaObject.description;
65 policy_schema: JSON.parse('{}'),
67 const noTypeSchema = this.getSchemaObject(noType);
68 this.policyTypeInfo = new PolicyTypeInfo(noTypeSchema);
69 this.policyType = "< No Type >";
70 this.policyDescription = "Type with no schema";
74 private getSchemaObject(policyType: PolicyType) {
75 const policyTypeSchema = {} as PolicyTypeSchema;
76 policyTypeSchema.id = this.policyTypeId;
77 policyTypeSchema.schemaObject = policyType.policy_schema;
78 policyTypeSchema.name = policyType.policy_schema.title;
79 return policyTypeSchema;
82 public toggleVisible() {
83 this.isVisible.next(!this.isVisible.value);