/** * @author Martin Karkowski * @email m.karkowski@zema.de * @create date 2020-03-31 18:06:27 * @modify date 2020-04-09 08:50:52 * @desc [description] */ import { ICallbackData } from '../interfaces/IGraphTool'; import { IBaseNodeOptions } from '../interfaces/IBaseNodeOptions'; import { IBaseEdgeOptions } from '../interfaces/IBaseEdgeOptions'; import { IHotKeyAction } from '../../gui-components-basic-layout/types/interfaces'; export function defaultHotkeys() { function selectElements(data: ICallbackData) { let selected: string[] = data.network.network.getSelectedNodes(); if (selected.length === 0) { const node = data.network.network.getNodeAt(data.component.layout.currentMousePosition); selected = node ? [node] : []; } if (selected.length === 0) { const node = data.network.network.getEdgeAt(data.component.layout.currentMousePosition); selected = node ? [node] : []; } return selected; } const hotkeys: IHotKeyAction>[] = [ { key: 'ShiftLeft', onPress(data) { if (data.selectedTemplate.type === 'elements' && data.selectedTemplate.nodes.length === 0 && data.selectedTemplate.edges.length === 1) { const addEdgeMode = () => { // _self.network.network.disableEditMode(); data.network.network.addEdgeMode(); data.network.once('addEdge', () => { if (data.component.layout.pressedKey === data.event.code) { setTimeout(addEdgeMode, 0); } }); }; addEdgeMode(); } }, onRelease(data){ // Disable Edit Mode data.network.network.disableEditMode(); } }, { key: 'Delete', onPress(data) { let selected: string[] = selectElements(data); data.network.network.deleteSelected(selected); } }, { key: 'space', onPress(data) { let selected: string[] = selectElements(data); for (const id of selected) { if (typeof data.network.network.clusters[id] === 'function') { data.network.network.clusters[id](); } else { // clusterNode(id); data.network.network.unselectAll(); } } } }, { key: 'Esc', onPress(data){ data.network.network.disableEditMode(); } }, { key: 'KeyR', onPress(data){ data.network.network.redraw(); } }, { key: 'KeyE', onPress(data){ data.network.network.enableEditMode(); } }, { key: 'KeyF', onPress(data){ data.network.fit(); } }, { key: '', onPress(data){ // if (this.copyTemplate) { // const clipboardData: { // nodes: N[], // edges: E[] // } = parse(this.copyTemplate, this.parseFunctions); // this.paste(clipboardData, _self.network.network.DOMtoCanvas(_self.mousePos), false); // } else { // this.zemaService.showToast('warning', 'Copy & Paste', 'Failed Pasting'); // } // break; } } ] return hotkeys; }