summaryrefslogtreecommitdiffstats
path: root/catalog-ui/src/app/ng2/pages/connection-wizard/connection-wizard.service.ts
blob: a097fb04ea3975c70a8a363d95852d203a10a6e2 (plain)
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
64
65
66
67
import {ConnectRelationModel} from "../../../models/graph/connectRelationModel";
import {Injectable} from "@angular/core";
import { Requirement, Capability} from "app/models";
import {Dictionary} from "lodash";
import {Match, Component, PropertyFEModel} from "app/models";

@Injectable()
export class ConnectionWizardService {
    
    connectRelationModel:ConnectRelationModel;
    currentComponent:Component;
    selectedMatch:Match;
    changedCapabilityProperties:PropertyFEModel[];

    constructor() {
        this.changedCapabilityProperties = [];
    }

    public setRelationMenuDirectiveObj = (connectRelationModel:ConnectRelationModel) => {
        this.connectRelationModel = connectRelationModel;
        // this.selectedCapability = rel
    }


    // getComponentInstanceIdOfSelectedCapability = (): string => {
    //     if(this.selectedMatch.capability){
    //         if(this.selectedMatch.isFromTo) {
    //             return this.selectedMatch.toNode;
    //         } else {
    //             return this.selectedMatch.fromNode;
    //         }
    //     }
    //     return '';
    //
    // }

    getOptionalRequirementsByInstanceUniqueId = (isFromTo: boolean, matchWith?:Capability): Dictionary<Requirement[]> => {
       let requirements: Array<Requirement> = [];
        _.forEach(this.connectRelationModel.possibleRelations, (match: Match) => {
            if(!matchWith || match.capability.uniqueId == matchWith.uniqueId){
                if(match.isFromTo == isFromTo){
                    requirements.push(match.requirement);
                }
            }
        });
        requirements = _.uniqBy(requirements, (req:Requirement)=>{
            return req.ownerId + req.uniqueId + req.name;
        });
        return _.groupBy(requirements, 'capability');
    }

    getOptionalCapabilitiesByInstanceUniqueId = (isFromTo: boolean, matchWith?:Requirement): Dictionary<Capability[]> => {
        let capabilities: Array<Capability> = [];
        _.forEach(this.connectRelationModel.possibleRelations, (match: Match) => {
            if(!matchWith || match.requirement.uniqueId == matchWith.uniqueId){
                if(match.isFromTo == isFromTo){
                    capabilities.push(match.capability);
                }
            }
        });
        capabilities = _.uniqBy(capabilities, (cap:Capability)=>{
            return cap.ownerId + cap.uniqueId + cap.name;
        });
        return _.groupBy(capabilities, 'type');
    }
}