summaryrefslogtreecommitdiffstats
path: root/catalog-ui/src/app/ng2/pages/composition/panel/panel-tabs/req-capabilities-tab/requirement-list/requirement-list.component.ts
blob: e167c47dccf8a16b7005214e8ff48b085212d2d2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import { Component, Input } from '@angular/core';
import { Component as TopologyTemplate, RelationshipModel, Relationship, Requirement } from "app/models";
import { CompositionService } from "app/ng2/pages/composition/composition.service";
import { ResourceNamePipe } from "app/ng2/pipes/resource-name.pipe";

@Component({
    selector: 'requirement-list',
    templateUrl: './requirement-list.component.html'
})
export class RequirementListComponent  {
    @Input() component: TopologyTemplate;
    @Input() requirements: Array<Requirement>;
    @Input() isInstanceSelected:boolean;
    
    
    constructor(private compositionService: CompositionService) { }


    public getRelation = (requirement:any):any => {
        if (this.isInstanceSelected && this.component.componentInstancesRelations) {
            let relationItem:Array<RelationshipModel> = _.filter(this.component.componentInstancesRelations, (relation:RelationshipModel) => {
                return relation.fromNode === this.component.uniqueId &&
                    _.filter(relation.relationships, (relationship:Relationship) => {
                        return relationship.relation.requirement == requirement.name && relationship.relation.requirementOwnerId == requirement.ownerId;
                    }).length;
            });

            if (relationItem && relationItem.length) {
                return {
                    type: requirement.relationship.split('.').pop(),
                    requirementName: ResourceNamePipe.getDisplayName(this.compositionService.componentInstances[_.map
                    (this.compositionService.componentInstances, "uniqueId").indexOf(relationItem[0].toNode)].name)
                };
            }
        }
        return null;
    };

};