Merge with different approach

This commit is contained in:
ziajka
2018-11-20 13:43:59 +01:00
parent 27946c6a8e
commit 311ef8c348
90 changed files with 2133 additions and 84 deletions

View File

@ -0,0 +1,9 @@
<div class="context-menu" [style.left]="leftPosition" [style.top]="topPosition" *ngIf="node">
<span [matMenuTriggerFor]="selectInterfaceMenu"></span>
<mat-menu #selectInterfaceMenu="matMenu">
<button mat-menu-item *ngFor="let port of node.ports" (click)="chooseInterface(port)">
<mat-icon>add_circle_outline</mat-icon>
<span>{{ port.name }}</span>
</button>
</mat-menu>
</div>

View File

@ -0,0 +1,3 @@
.context-menu {
position: absolute;
}

View File

@ -0,0 +1,25 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { NodeSelectInterfaceComponent } from './node-select-interface.component';
describe('NodeSelectInterfaceComponent', () => {
let component: NodeSelectInterfaceComponent;
let fixture: ComponentFixture<NodeSelectInterfaceComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ NodeSelectInterfaceComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(NodeSelectInterfaceComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
// it('should create', () => {
// expect(component).toBeTruthy();
// });
});

View File

@ -0,0 +1,48 @@
import {ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';
import {MatMenuTrigger} from "@angular/material";
import {DomSanitizer} from "@angular/platform-browser";
import {Node} from "../../../cartography/models/node";
import {Port} from "../../../models/port";
@Component({
selector: 'app-node-select-interface',
templateUrl: './node-select-interface.component.html',
styleUrls: ['./node-select-interface.component.scss']
})
export class NodeSelectInterfaceComponent implements OnInit {
@Output() onChooseInterface = new EventEmitter<any>();
@ViewChild(MatMenuTrigger) contextMenu: MatMenuTrigger;
private topPosition;
private leftPosition;
public node: Node;
constructor(
private sanitizer: DomSanitizer,
private changeDetector: ChangeDetectorRef) {}
ngOnInit() {
this.setPosition(0, 0);
}
public setPosition(top: number, left: number) {
this.topPosition = this.sanitizer.bypassSecurityTrustStyle(top + "px");
this.leftPosition = this.sanitizer.bypassSecurityTrustStyle(left + "px");
this.changeDetector.detectChanges();
}
public open(node: Node, top: number, left: number) {
this.node = node;
this.setPosition(top, left);
this.contextMenu.openMenu();
}
public chooseInterface(port: Port) {
this.onChooseInterface.emit({
'node': this.node,
'port': port
});
}
}