Catalog alignment
[sdc.git] / catalog-ui / src / app / ng2 / pages / composition / panel / panel-tabs / req-capabilities-tab / requirement-list / requirement-list.component.ts
1 import { Component, Input } from '@angular/core';
2 import { Component as TopologyTemplate, RelationshipModel, Relationship, Requirement } from "app/models";
3 import { CompositionService } from "app/ng2/pages/composition/composition.service";
4 import { ResourceNamePipe } from "app/ng2/pipes/resource-name.pipe";
5
6 @Component({
7     selector: 'requirement-list',
8     templateUrl: './requirement-list.component.html'
9 })
10 export class RequirementListComponent  {
11     @Input() component: TopologyTemplate;
12     @Input() requirements: Array<Requirement>;
13     @Input() isInstanceSelected:boolean;
14     
15     
16     constructor(private compositionService: CompositionService) { }
17
18
19     public getRelation = (requirement:any):any => {
20         if (this.isInstanceSelected && this.component.componentInstancesRelations) {
21             let relationItem:Array<RelationshipModel> = _.filter(this.component.componentInstancesRelations, (relation:RelationshipModel) => {
22                 return relation.fromNode === this.component.uniqueId &&
23                     _.filter(relation.relationships, (relationship:Relationship) => {
24                         return relationship.relation.requirement == requirement.name && relationship.relation.requirementOwnerId == requirement.ownerId;
25                     }).length;
26             });
27
28             if (relationItem && relationItem.length) {
29                 return {
30                     type: requirement.relationship.split('.').pop(),
31                     requirementName: ResourceNamePipe.getDisplayName(this.compositionService.componentInstances[_.map
32                     (this.compositionService.componentInstances, "uniqueId").indexOf(relationItem[0].toNode)].name)
33                 };
34             }
35         }
36         return null;
37     };
38
39 };
40