summaryrefslogtreecommitdiffstats
path: root/catalog-ui/src/app/ng2/components/ui/menu/menu-item.component.ts
blob: 8b2006634ee03f4e86ee40168c1c2fd04ee03288 (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
/*-
 * ============LICENSE_START=======================================================
 * SDC
 * ================================================================================
 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
 * ================================================================================
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * ============LICENSE_END=========================================================
 */

import { Component, Input, Output, EventEmitter } from '@angular/core';

@Component({
    selector: 'menu-item',
    templateUrl: './menu-item.component.html',
    styleUrls:['./menu-item.component.less']
})
export class MenuItemComponent {
    @Input() action:Function;
    @Input() styleClass:any;

    public parentMenu:any;

    constructor() {
    }

    performAction() {
        this.action();

        if (this.parentMenu && typeof(this.parentMenu.close) === 'function') {
            this.parentMenu.close();
        }
    }
}
span class="s2">"../componentsInstances/componentInstance"; export class RelationMenuDirectiveObj { fromNode:CompositionCiNodeBase; toNode:CompositionCiNodeBase; menuPosition:Cy.Position; rightSideLink:GraphLinkMenuSide; leftSideLink:GraphLinkMenuSide; selectionText:string; vlType:string; constructor(fromNode:CompositionCiNodeBase, toNode:CompositionCiNodeBase, menuPosition:Cy.Position, possibleRelations:Array<MatchBase>) { this.fromNode = fromNode; this.toNode = toNode; // this.modelLinks = modelLinks; this.menuPosition = menuPosition; this.leftSideLink = new GraphLinkMenuSide(this.fromNode.componentInstance); this.rightSideLink = new GraphLinkMenuSide(this.toNode.componentInstance); this.selectionText = ''; this.vlType = null; possibleRelations.forEach((match:any) => { let reqObjKey:string = match.requirement.ownerName + match.requirement.uniqueId; let capObjKey:string = match.secondRequirement ? match.secondRequirement.ownerName + match.secondRequirement.uniqueId : match.capability.ownerName + match.capability.uniqueId; if (match.fromNode === this.leftSideLink.componentInstance.uniqueId) { //init the left side requirements Array if (!this.leftSideLink.requirements[reqObjKey]) { this.leftSideLink.requirements[reqObjKey] = []; } //push the match to fromNode object (from node is always the requirement) this.leftSideLink.requirements[reqObjKey].push(match); if (match instanceof MatchReqToReq) { //init the right side requirements Array if (!this.rightSideLink.requirements[capObjKey]) { this.rightSideLink.requirements[capObjKey] = []; } this.rightSideLink.requirements[capObjKey].push(match); } else { //init the right side capabilities Array if (!this.rightSideLink.capabilities[capObjKey]) { this.rightSideLink.capabilities[capObjKey] = []; } //add to array this.rightSideLink.capabilities[capObjKey].push(match); } } else { if (!this.rightSideLink.requirements[reqObjKey]) { this.rightSideLink.requirements[reqObjKey] = []; } this.rightSideLink.requirements[reqObjKey].push(match); if (!this.leftSideLink.capabilities[capObjKey]) { this.leftSideLink.capabilities[capObjKey] = []; } this.leftSideLink.capabilities[capObjKey].push(match); } }); } } export class GraphLinkMenuSide { public componentInstance:ComponentInstance; public selectedMatch:Array<any>; //match array returned by function in utils public requirements:any; //array of matches returned by function in utils public capabilities:any; //array of matches returned by function in utils constructor(componentInstance:ComponentInstance) { this.componentInstance = componentInstance; this.capabilities = {}; this.requirements = {}; } public selectMatchArr(matchArr:Array<MatchBase>):void { if (this.selectedMatch === matchArr) { this.selectedMatch = undefined; } else { this.selectedMatch = matchArr; } } //TODO move to match object public getPreviewText(showReq:boolean):string { if (!this.selectedMatch) { return ''; } let match:any = this.selectedMatch[0]; if (showReq) { return match.requirement.ownerName + ': ' + match.requirement.name + ': [' + match.requirement.minOccurrences + ', ' + match.requirement.maxOccurrences + ']'; } else if (match.secondRequirement) { return match.secondRequirement.ownerName + ': ' + match.secondRequirement.name + ': [' + match.secondRequirement.minOccurrences + ', ' + match.secondRequirement.maxOccurrences + ']'; } else { return match.capability.ownerName + ': ' + match.capability.name + ': [' + match.capability.minOccurrences + ', ' + match.capability.maxOccurrences + ']'; } } }