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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
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";
import { ComponentInstanceServiceNg2 } from "app/ng2/services/component-instance-services/component-instance.service";
import { WorkspaceService } from "app/ng2/pages/workspace/workspace.service";
import { Store } from "@ngxs/store";
import {TogglePanelLoadingAction} from "../../../../common/store/graph.actions";
import { EventListenerService } from "app/services";
import { GRAPH_EVENTS } from "app/utils";
@Component({
selector: 'requirement-list',
templateUrl: './requirement-list.component.html'
})
export class RequirementListComponent {
@Input() component: TopologyTemplate;
@Input() requirements: Array<Requirement>;
@Input() isInstanceSelected:boolean;
@Input() isViewOnly: boolean;
readonly:boolean;
constructor(private compositionService: CompositionService,
private workspaceService: WorkspaceService,
private componentInstanceServiceNg2: ComponentInstanceServiceNg2,
private store:Store,
private eventListenerService:EventListenerService) {}
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;
};
onMarkAsExternal(requirement:Requirement) {
this.store.dispatch(new TogglePanelLoadingAction({isLoading: true}));
requirement.external = !requirement.external;
this.componentInstanceServiceNg2.updateInstanceRequirement(this.workspaceService.metadata.getTypeUrl(), this.workspaceService.metadata.uniqueId, this.component.uniqueId, requirement)
.subscribe(() => {
this.eventListenerService.notifyObservers(GRAPH_EVENTS.ON_COMPONENT_INSTANCE_REQUIREMENT_EXTERNAL_CHANGED, this.component.uniqueId, requirement);
this.store.dispatch(new TogglePanelLoadingAction({isLoading: false}));
} , (error) => { console.log("An error has occured setting external: ", error);
requirement.external = !requirement.external;
this.store.dispatch(new TogglePanelLoadingAction({isLoading: false}));
});
}
};
|