3716ef0af0daa25eaba1a3afb7927567cbbfb844
[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 import { ComponentInstanceServiceNg2 } from "app/ng2/services/component-instance-services/component-instance.service";
6 import { WorkspaceService } from "app/ng2/pages/workspace/workspace.service";
7
8 @Component({
9     selector: 'requirement-list',
10     templateUrl: './requirement-list.component.html'
11 })
12 export class RequirementListComponent  {
13     @Input() component: TopologyTemplate;
14     @Input() requirements: Array<Requirement>;
15     @Input() isInstanceSelected:boolean;
16     @Input() isViewOnly: boolean;
17     readonly:boolean;
18     
19     constructor(private compositionService: CompositionService,
20                 private workspaceService: WorkspaceService,
21                 private componentInstanceServiceNg2: ComponentInstanceServiceNg2) {}
22
23     public getRelation = (requirement:any):any => {
24         if (this.isInstanceSelected && this.component.componentInstancesRelations) {
25             let relationItem:Array<RelationshipModel> = _.filter(this.component.componentInstancesRelations, (relation:RelationshipModel) => {
26                 return relation.fromNode === this.component.uniqueId &&
27                     _.filter(relation.relationships, (relationship:Relationship) => {
28                         return relationship.relation.requirement == requirement.name && relationship.relation.requirementOwnerId == requirement.ownerId;
29                     }).length;
30             });
31
32             if (relationItem && relationItem.length) {
33                 return {
34                     type: requirement.relationship.split('.').pop(),
35                     requirementName: ResourceNamePipe.getDisplayName(this.compositionService.componentInstances[_.map
36                     (this.compositionService.componentInstances, "uniqueId").indexOf(relationItem[0].toNode)].name)
37                 };
38             }
39         }
40         return null;
41     };
42
43     onMarkAsExternal(requirement:Requirement) {
44        if (requirement.external){
45                 requirement.external = false;
46        } else {
47                 requirement.external = true;
48        }
49        this.componentInstanceServiceNg2.updateInstanceRequirement(this.workspaceService.metadata.getTypeUrl(), this.workspaceService.metadata.uniqueId, this.component.uniqueId, requirement).subscribe((response:any) => {
50         }, (error) => { console.log("An error has occured setting external: ", error);  });;
51
52     }
53
54 };
55