Catalog alignment
[sdc.git] / catalog-ui / src / app / ng2 / pages / composition / graph / connection-wizard / connection-wizard.service.ts
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";
9
10 @Injectable()
11 export class ConnectionWizardService {
12     
13     connectRelationModel:ConnectRelationModel;
14     selectedMatch:Match;
15     changedCapabilityProperties:PropertyFEModel[];
16
17
18     constructor(private workspaceService: WorkspaceService) {
19         this.changedCapabilityProperties = [];
20
21     }
22
23     public setRelationMenuDirectiveObj = (connectRelationModel:ConnectRelationModel) => {
24         this.connectRelationModel = connectRelationModel;
25         // this.selectedCapability = rel
26     }
27
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);
34                 }
35             }
36         });
37         requirements = _.uniqBy(requirements, (req:Requirement)=>{
38             return req.ownerId + req.uniqueId + req.name;
39         });
40         return _.groupBy(requirements, 'capability');
41     }
42
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);
49                 }
50             }
51         });
52         capabilities = _.uniqBy(capabilities, (cap:Capability)=>{
53             return cap.ownerId + cap.uniqueId + cap.name;
54         });
55         return _.groupBy(capabilities, 'type');
56     }
57 }
58