Sync Integ to Master
[sdc.git] / catalog-ui / src / app / ng2 / pages / connection-wizard / connection-wizard.service.ts
1 import * as _ from "lodash";
2 import {ConnectRelationModel} from "../../../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
8 @Injectable()
9 export class ConnectionWizardService {
10     
11     connectRelationModel:ConnectRelationModel;
12     currentComponent:Component;
13     selectedMatch:Match;
14     changedCapabilityProperties:PropertyFEModel[];
15
16     constructor() {
17         this.changedCapabilityProperties = [];
18     }
19
20     public setRelationMenuDirectiveObj = (connectRelationModel:ConnectRelationModel) => {
21         this.connectRelationModel = connectRelationModel;
22         // this.selectedCapability = rel
23     }
24
25
26     // getComponentInstanceIdOfSelectedCapability = (): string => {
27     //     if(this.selectedMatch.capability){
28     //         if(this.selectedMatch.isFromTo) {
29     //             return this.selectedMatch.toNode;
30     //         } else {
31     //             return this.selectedMatch.fromNode;
32     //         }
33     //     }
34     //     return '';
35     //
36     // }
37
38     getOptionalRequirementsByInstanceUniqueId = (isFromTo: boolean, matchWith?:Capability): Dictionary<Requirement[]> => {
39        let requirements: Array<Requirement> = [];
40         _.forEach(this.connectRelationModel.possibleRelations, (match: Match) => {
41             if(!matchWith || match.capability.uniqueId == matchWith.uniqueId){
42                 if(match.isFromTo == isFromTo){
43                     requirements.push(match.requirement);
44                 }
45             }
46         });
47         requirements = _.uniqBy(requirements, (req:Requirement)=>{
48             return req.ownerId + req.uniqueId + req.name;
49         });
50         return _.groupBy(requirements, 'capability');
51     }
52
53     getOptionalCapabilitiesByInstanceUniqueId = (isFromTo: boolean, matchWith?:Requirement): Dictionary<Capability[]> => {
54         let capabilities: Array<Capability> = [];
55         _.forEach(this.connectRelationModel.possibleRelations, (match: Match) => {
56             if(!matchWith || match.requirement.uniqueId == matchWith.uniqueId){
57                 if(match.isFromTo == isFromTo){
58                     capabilities.push(match.capability);
59                 }
60             }
61         });
62         capabilities = _.uniqBy(capabilities, (cap:Capability)=>{
63             return cap.ownerId + cap.uniqueId + cap.name;
64         });
65         return _.groupBy(capabilities, 'type');
66     }
67 }
68