1 import * as _ from "lodash";
2 import {ConnectRelationModel} from "app/models/graph/connectRelationModel";
3 import {Injectable} from "@angular/core";
4 import { Requirement, Capability} from "app/models";
5 import {Dictionary} from "lodash";
6 import {Match, Component, PropertyFEModel} from "app/models";
7 import {Store} from "@ngxs/store";
8 import {WorkspaceService} from "../../../workspace/workspace.service";
11 export class ConnectionWizardService {
13 connectRelationModel:ConnectRelationModel;
15 changedCapabilityProperties:PropertyFEModel[];
18 constructor(private workspaceService: WorkspaceService) {
19 this.changedCapabilityProperties = [];
23 public setRelationMenuDirectiveObj = (connectRelationModel:ConnectRelationModel) => {
24 this.connectRelationModel = connectRelationModel;
25 // this.selectedCapability = rel
28 getOptionalRequirementsByInstanceUniqueId = (isFromTo: boolean, matchWith?:Capability): Dictionary<Requirement[]> => {
29 let requirements: Array<Requirement> = [];
30 _.forEach(this.connectRelationModel.possibleRelations, (match: Match) => {
31 if(!matchWith || match.capability.uniqueId == matchWith.uniqueId){
32 if(match.isFromTo == isFromTo){
33 requirements.push(match.requirement);
37 requirements = _.uniqBy(requirements, (req:Requirement)=>{
38 return req.ownerId + req.uniqueId + req.name;
40 return _.groupBy(requirements, 'capability');
43 getOptionalCapabilitiesByInstanceUniqueId = (isFromTo: boolean, matchWith?:Requirement): Dictionary<Capability[]> => {
44 let capabilities: Array<Capability> = [];
45 _.forEach(this.connectRelationModel.possibleRelations, (match: Match) => {
46 if(!matchWith || match.requirement.uniqueId == matchWith.uniqueId){
47 if(match.isFromTo == isFromTo){
48 capabilities.push(match.capability);
52 capabilities = _.uniqBy(capabilities, (cap:Capability)=>{
53 return cap.ownerId + cap.uniqueId + cap.name;
55 return _.groupBy(capabilities, 'type');