From 210916cdb91b0dba661b0a4bc2f6bee03ebd180c Mon Sep 17 00:00:00 2001 From: mgfcf <m.giller.dev@gmail.com> Date: Thu, 23 Dec 2021 18:29:45 +0100 Subject: [PATCH] Implemented drag to click handling into tool and state --- editor/js/editor.js | 13 ++----------- editor/js/state.js | 13 +++++++++++++ editor/js/tools/tool.js | 6 ++++++ 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/editor/js/editor.js b/editor/js/editor.js index eebae44..ae1f5c4 100644 --- a/editor/js/editor.js +++ b/editor/js/editor.js @@ -3,7 +3,7 @@ import * as Graph from "./graph"; import { loadGraphJson } from "../../datasets/datasets"; import ForceGraph from "force-graph"; import * as Interactions from "./interactions"; -import { DRAG_THRESHOLD_2D, setSpace, SPACE } from "../../config"; +import { setSpace, SPACE } from "../../config"; export var state = undefined; export var graph = undefined; @@ -57,7 +57,7 @@ function load() { .linkColor((link) => state.linkColor(link)) .nodeColor((node) => state.nodeColor(node)) .onNodeClick((node) => state.onNodeClick(node)) - .onNodeDragEnd((node, translate) => onNodeDragEnd(node, translate)) + .onNodeDragEnd((node, translate) => state.onNodeDragEnd(node, translate)) .autoPauseRedraw(false) // keep redrawing after engine has stopped .linkWidth((link) => state.linkWidth(link)) .linkDirectionalParticles(state.linkDirectionalParticles()) @@ -81,12 +81,3 @@ function load() { graphObj.graphData(data); }); } - -function onNodeDragEnd(node, translate) { - if ( - Math.sqrt(Math.pow(translate.x, 2) + Math.pow(translate.y, 2)) < - DRAG_THRESHOLD_2D - ) { - state.onNodeClick(node); - } -} diff --git a/editor/js/state.js b/editor/js/state.js index 1672b39..b2f158c 100644 --- a/editor/js/state.js +++ b/editor/js/state.js @@ -10,6 +10,7 @@ import SaveTool from "./tools/savetool"; import { graph } from "./editor"; import Toolbar from "./toolbar"; import * as Graph from "./graph"; +import { DRAG_THRESHOLD_2D } from "../../config"; export const TOOLS = { undo: new UndoTool("undo"), @@ -86,6 +87,18 @@ export class State extends Tool { this.tool.onNodeClick(node); } + onNodeDragEnd(node, translate) { + // Handle as click event, if drag distance under a certain threshold + var distanceDragged = Math.sqrt(Math.pow(translate.x, 2) + Math.pow(translate.y, 2)); + if (distanceDragged < DRAG_THRESHOLD_2D) { + this.onNodeClick(node); + return; + + } else { + this.tool.onNodeDragEnd(node, translate); + } + } + onLinkClick(link) { this.tool.onLinkClick(link); } diff --git a/editor/js/tools/tool.js b/editor/js/tools/tool.js index 31ee19a..c19314b 100644 --- a/editor/js/tools/tool.js +++ b/editor/js/tools/tool.js @@ -64,6 +64,12 @@ export default class Tool { } } + onNodeDragEnd(node, translate) { + if (this.warnings) { + console.warn('Method "onNodeDragEnd" not implemented.'); + } + } + onLinkClick(link) { if (this.warnings) { console.warn('Method "onLinkClick" not implemented.'); -- GitLab