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";
9 selector: 'requirement-list',
10 templateUrl: './requirement-list.component.html'
12 export class RequirementListComponent {
13 @Input() component: TopologyTemplate;
14 @Input() requirements: Array<Requirement>;
15 @Input() isInstanceSelected:boolean;
16 @Input() isViewOnly: boolean;
19 constructor(private compositionService: CompositionService,
20 private workspaceService: WorkspaceService,
21 private componentInstanceServiceNg2: ComponentInstanceServiceNg2) {}
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;
32 if (relationItem && relationItem.length) {
34 type: requirement.relationship.split('.').pop(),
35 requirementName: ResourceNamePipe.getDisplayName(this.compositionService.componentInstances[_.map
36 (this.compositionService.componentInstances, "uniqueId").indexOf(relationItem[0].toNode)].name)
43 onMarkAsExternal(requirement:Requirement) {
44 if (requirement.external){
45 requirement.external = false;
47 requirement.external = true;
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); });;