From 5f11888f2840066e582ef85285e816fa851b420d Mon Sep 17 00:00:00 2001 From: Sean McBeth Date: Fri, 19 Jan 2024 17:48:39 -0500 Subject: [PATCH] fix node picking --- .../ForceDirectedGraph.d.ts | 1 - .../ForceDirectedGraph.d.ts.map | 2 +- .../ForceDirectedGraph/ForceDirectedGraph.js | 64 ++++++++----------- .../ForceDirectedGraph.js.map | 2 +- .../ForceDirectedGraph/ForceDirectedNode.d.ts | 7 +- .../ForceDirectedNode.d.ts.map | 2 +- .../ForceDirectedGraph/ForceDirectedNode.js | 56 ++++++++++++---- .../ForceDirectedNode.js.map | 2 +- .../ForceDirectedGraph/ForceDirectedGraph.ts | 53 ++++++++------- .../ForceDirectedGraph/ForceDirectedNode.ts | 14 ++-- 10 files changed, 114 insertions(+), 89 deletions(-) diff --git a/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedGraph.d.ts b/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedGraph.d.ts index b9aea289c..e7c9e294e 100644 --- a/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedGraph.d.ts +++ b/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedGraph.d.ts @@ -21,7 +21,6 @@ export declare class ForceDirectedGraph { private displayCount; private selectedNode; private data; - private grabbed; private timer; performLayout: boolean; displayDepth: number; diff --git a/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedGraph.d.ts.map b/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedGraph.d.ts.map index f8bf3e1f1..d89a1f9a3 100644 --- a/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedGraph.d.ts.map +++ b/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedGraph.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"ForceDirectedGraph.d.ts","sourceRoot":"","sources":["../../src/ForceDirectedGraph/ForceDirectedGraph.ts"],"names":[],"mappings":"AAYA,KAAK,SAAS,GAAG,UAAU,GAAG,kBAAkB,GAAG,YAAY,CAAC;AA8EhE,qBAAa,kBAAkB,CAAC,CAAC;IA4DzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW;IA9DhC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsC;IAC5D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgD;IAE9E,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAc;IAE5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;IACrD,OAAO,CAAC,QAAQ,CAAC,CAAC,CAA2B;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;IAEnC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,WAAW,CAAQ;IAE3B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,KAAK,CAAgB;IAEtB,aAAa,UAAQ;IACrB,YAAY,SAAM;IAClB,KAAK,SAAM;IACX,OAAO,UAAS;IAChB,OAAO,SAAK;IACZ,KAAK,SAAK;IACV,gBAAgB,SAAM;IAE7B,IAAI,OAAO,YAA4B;IAEvC,IAAI,KAAK,WAER;IAED,IAAI,KAAK,CAAC,CAAC,QAAA,EAGV;IAED,IAAI,UAAU,YAEb;IAED,IAAI,UAAU,CAAC,CAAC,SAAA,EAOf;IAED,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAc;gBAGlB,SAAS,EAAE,WAAW,EACtB,YAAY,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,EACtE,gBAAgB,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,EACtC,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,GAAG,WAAW;IA0HpE,KAAK;IAKL,IAAI;IAQJ,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;IA8DzC,IAAI,MAAM,QAET;IAED,IAAI,MAAM,CAAC,CAAC,KAAA,EA8BX;IAED,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,GAAE,SAAsB;IAkB3D,KAAK;IAcL,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,IAAI;IA2DZ,UAAU,CAAC,KAAK,EAAE,CAAC,GAAG,WAAW;IAKjC,OAAO,CAAC,eAAe;IAmBvB,MAAM,CAAC,KAAK,EAAE,CAAC;IAUf,QAAQ;IAQR,OAAO,CAAC,YAAY;IA6CpB,OAAO,CAAC,WAAW;IAuCnB,IAAI;CAaP"} \ No newline at end of file +{"version":3,"file":"ForceDirectedGraph.d.ts","sourceRoot":"","sources":["../../src/ForceDirectedGraph/ForceDirectedGraph.ts"],"names":[],"mappings":"AAYA,KAAK,SAAS,GAAG,UAAU,GAAG,kBAAkB,GAAG,YAAY,CAAC;AA8EhE,qBAAa,kBAAkB,CAAC,CAAC;IA2DzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW;IA7DhC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsC;IAC5D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgD;IAE9E,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAc;IAE5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;IACrD,OAAO,CAAC,QAAQ,CAAC,CAAC,CAA2B;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;IAEnC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,WAAW,CAAQ;IAE3B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,KAAK,CAAgB;IAEtB,aAAa,UAAQ;IACrB,YAAY,SAAM;IAClB,KAAK,SAAM;IACX,OAAO,UAAS;IAChB,OAAO,SAAK;IACZ,KAAK,SAAK;IACV,gBAAgB,SAAM;IAE7B,IAAI,OAAO,YAA4B;IAEvC,IAAI,KAAK,WAER;IAED,IAAI,KAAK,CAAC,CAAC,QAAA,EAGV;IAED,IAAI,UAAU,YAEb;IAED,IAAI,UAAU,CAAC,CAAC,SAAA,EAOf;IAED,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAc;gBAGlB,SAAS,EAAE,WAAW,EACtB,YAAY,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,EACtE,gBAAgB,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,EACtC,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,GAAG,WAAW;IAiIpE,KAAK;IAKL,IAAI;IAQJ,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;IA8DzC,IAAI,MAAM,QAET;IAED,IAAI,MAAM,CAAC,CAAC,KAAA,EA6BX;IAED,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,GAAE,SAAsB;IAkB3D,KAAK;IAcL,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,IAAI;IA2DZ,UAAU,CAAC,KAAK,EAAE,CAAC,GAAG,WAAW;IAKjC,OAAO,CAAC,eAAe;IAmBvB,MAAM,CAAC,KAAK,EAAE,CAAC;IAUf,QAAQ;IAQR,OAAO,CAAC,YAAY;IA6CpB,OAAO,CAAC,WAAW;IAuBnB,IAAI;CAaP"} \ No newline at end of file diff --git a/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedGraph.js b/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedGraph.js index 9f79f6488..458c9572c 100644 --- a/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedGraph.js +++ b/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedGraph.js @@ -107,7 +107,6 @@ export class ForceDirectedGraph { this.displayCount = 0; this.selectedNode = null; this.data = null; - this.grabbed = null; this.timer = null; this.performLayout = true; this.displayDepth = -1; @@ -139,34 +138,40 @@ export class ForceDirectedGraph { this.setMouse(evt); this.mouseDown = true; if (evt.target instanceof HTMLElement) { - const lastGrabbedElement = container.querySelector(".top-most"); - const lastGrabbed = lastGrabbedElement && this.elementToNode.get(lastGrabbedElement); let nextGrabbed; let here = evt.target; while (!nextGrabbed && here) { nextGrabbed = this.elementToNode.get(here); here = here.parentElement; } - if (nextGrabbed !== lastGrabbed) { - if (lastGrabbed) { - lastGrabbed.element.classList.remove("top-most"); + if (nextGrabbed && nextGrabbed.pinner.contains(evt.target)) { + nextGrabbed.pinned = !nextGrabbed.pinned; + } + else { + const lastGrabbedElement = container.querySelector(".top-most"); + const lastGrabbed = lastGrabbedElement && this.elementToNode.get(lastGrabbedElement); + if (nextGrabbed !== lastGrabbed) { + if (lastGrabbed) { + lastGrabbed.grabbed = false; + } + if (nextGrabbed) { + nextGrabbed.grabbed = true; + nextGrabbed.pinned = true; + } } if (nextGrabbed) { - nextGrabbed.element.classList.add("top-most"); - nextGrabbed.pinned = true; + nextGrabbed.setMouseOffset(this.mousePoint); } } - this.grabbed = nextGrabbed; - if (this.grabbed) { - this.grabbed.setMouseOffset(this.mousePoint); - } } }); this.container.addEventListener("mousemove", evt => { - if (this.grabbed) { + const lastGrabbedElement = container.querySelector(".top-most"); + const lastGrabbed = lastGrabbedElement && this.elementToNode.get(lastGrabbedElement); + if (lastGrabbed) { this.setMouse(evt); evt.preventDefault(); - this.grabbed.moving = true; + lastGrabbed.moving = true; } else if (this.mouseDown) { delta.copy(this.mousePoint); @@ -177,10 +182,12 @@ export class ForceDirectedGraph { }); this.container.addEventListener("mouseup", (evt) => { this.mouseDown = false; - if (this.grabbed) { + const lastGrabbedElement = container.querySelector(".top-most"); + const lastGrabbed = lastGrabbedElement && this.elementToNode.get(lastGrabbedElement); + if (lastGrabbed) { evt.preventDefault(); - this.grabbed.moving = false; - this.grabbed = null; + lastGrabbed.moving = false; + lastGrabbed.grabbed = false; } }); this.content = document.createElement("div"); @@ -205,7 +212,7 @@ export class ForceDirectedGraph { }); const resizer = new ResizeObserver((evts) => { for (const evt of evts) { - if (evt.target == this.connectorsCanvas) { + if (evt.target === this.connectorsCanvas) { this.resize(); } } @@ -292,7 +299,6 @@ export class ForceDirectedGraph { this.graph.clear(); this.elementToNode.clear(); this.selectedNode = null; - this.grabbed = null; this.data = v; if (this.data) { this.content.append(this.connectorsCanvas); @@ -473,27 +479,9 @@ export class ForceDirectedGraph { } } applyForces(attractFunc, repelFunc) { - for (const node of this.graph.values()) { - node.resetForce(); - } // calculate forces for (const n1 of this.graph.values()) { - if (this.displayDepth < 0 || n1.depth <= this.displayDepth) { - if (n1 === this.grabbed) { - n1.moveTo(this.mousePoint); - } - else if (!n1.pinned - && this.running - && this.performLayout) { - n1.gravitate(this.centeringGravity); - for (const n2 of this.graph.values()) { - if (n1 !== n2 - && (this.displayDepth < 0 || n2.depth <= this.displayDepth)) { - n1.attractRepel(n2, this.attract, attractFunc, this.repel, repelFunc, this.getWeightMod); - } - } - } - } + n1.applyForces(this.graph.values(), this.running, this.performLayout, this.displayDepth, this.centeringGravity, this.mousePoint, this.attract, this.repel, attractFunc, repelFunc, this.getWeightMod); } for (const n1 of this.graph.values()) { n1.apply(this.limit); diff --git a/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedGraph.js.map b/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedGraph.js.map index 83df9c5da..6cebce1b7 100644 --- a/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedGraph.js.map +++ b/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedGraph.js.map @@ -1 +1 @@ -{"version":3,"file":"ForceDirectedGraph.js","sourceRoot":"","sources":["../../src/ForceDirectedGraph/ForceDirectedGraph.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"ForceDirectedGraph.js","sourceRoot":"","sources":["../../src/ForceDirectedGraph/ForceDirectedGraph.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedNode.d.ts b/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedNode.d.ts index 7b930364f..47ef317c0 100644 --- a/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedNode.d.ts +++ b/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedNode.d.ts @@ -1,6 +1,7 @@ import { GraphNode } from "@juniper-lib/collections/dist/GraphNode"; import { Vec2 } from "gl-matrix/dist/esm"; export declare class ForceDirectedNode extends GraphNode { + #private; private readonly content; readonly pinner: HTMLButtonElement; readonly element: HTMLElement; @@ -9,23 +10,23 @@ export declare class ForceDirectedNode extends GraphNode { readonly size: Vec2; readonly halfSize: Vec2; readonly dynamicForce: Vec2; - private _pinned; depth: number; hidden: boolean; get pinned(): boolean; set pinned(v: boolean); + get grabbed(): boolean; + set grabbed(v: boolean); get moving(): boolean; set moving(v: boolean); constructor(value: T, elementClass: string, content: string | HTMLElement); setContent(content: string | HTMLElement): void; setMouseOffset(mousePoint: Vec2): void; computeBounds(sz: number): void; + applyForces(nodes: Iterable>, running: boolean, performLayout: boolean, displayDepth: number, centeringGravity: number, mousePoint: Vec2, attract: number, repel: number, attractFunc: (connected: boolean, len: number) => number, repelFunc: (connected: boolean, len: number) => number, getWeightMod: (connected: boolean, dist: number, a: T, b: T) => number): void; updatePosition(center: Vec2, maxDepth: number): void; moveTo(mousePoint: Vec2): void; - resetForce(): void; private isVisible; canDrawArrow(maxDepth: number): boolean; - gravitate(gravity: number): void; attractRepel(n2: ForceDirectedNode, attract: number, attractFunc: (connected: boolean, len: number) => number, repel: number, repelFunc: (connected: boolean, len: number) => number, getWeightMod: (connected: boolean, dist: number, a: T, b: T) => number): void; apply(t: number): void; } diff --git a/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedNode.d.ts.map b/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedNode.d.ts.map index b12e05e57..3a53008ec 100644 --- a/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedNode.d.ts.map +++ b/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedNode.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"ForceDirectedNode.d.ts","sourceRoot":"","sources":["../../src/ForceDirectedGraph/ForceDirectedNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAqC1C,qBAAa,iBAAiB,CAAC,CAAC,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,SAAgB,MAAM,EAAE,iBAAiB,CAAC;IAC1C,SAAgB,OAAO,EAAE,WAAW,CAAC;IAErC,SAAgB,WAAW,OAAc;IACzC,SAAgB,QAAQ,OAAc;IACtC,SAAgB,IAAI,OAAc;IAClC,SAAgB,QAAQ,OAAc;IACtC,SAAgB,YAAY,OAAc;IAE1C,OAAO,CAAC,OAAO,CAAS;IAEjB,KAAK,SAAM;IACX,MAAM,UAAS;IAEtB,IAAI,MAAM,YAET;IAED,IAAI,MAAM,CAAC,CAAC,SAAA,EAGX;IAED,IAAI,MAAM,YAET;IAED,IAAI,MAAM,CAAC,CAAC,SAAA,EAEX;gBAEW,KAAK,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW;IAuBzE,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;IAKxC,cAAc,CAAC,UAAU,EAAE,IAAI;IAM/B,aAAa,CAAC,EAAE,EAAE,MAAM;IAQxB,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM;IAa7C,MAAM,CAAC,UAAU,EAAE,IAAI;IAKvB,UAAU;IAKV,OAAO,CAAC,SAAS;IAMjB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAKvC,SAAS,CAAC,OAAO,EAAE,MAAM;IAIzB,YAAY,CACR,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC,EACxB,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,EACzE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,EACrE,YAAY,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM;IAqB1E,KAAK,CAAC,CAAC,EAAE,MAAM;CAQlB"} \ No newline at end of file +{"version":3,"file":"ForceDirectedNode.d.ts","sourceRoot":"","sources":["../../src/ForceDirectedGraph/ForceDirectedNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAqC1C,qBAAa,iBAAiB,CAAC,CAAC,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,SAAgB,MAAM,EAAE,iBAAiB,CAAC;IAC1C,SAAgB,OAAO,EAAE,WAAW,CAAC;IAErC,SAAgB,WAAW,OAAc;IACzC,SAAgB,QAAQ,OAAc;IACtC,SAAgB,IAAI,OAAc;IAClC,SAAgB,QAAQ,OAAc;IACtC,SAAgB,YAAY,OAAc;IAEnC,KAAK,SAAM;IACX,MAAM,UAAS;IAGtB,IAAI,MAAM,YAET;IAED,IAAI,MAAM,CAAC,CAAC,SAAA,EAIX;IAGD,IAAI,OAAO,YAEV;IAED,IAAI,OAAO,CAAC,CAAC,SAAA,EAGZ;IAGD,IAAI,MAAM,YAET;IAED,IAAI,MAAM,CAAC,CAAC,SAAA,EAGX;gBAEW,KAAK,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW;IAwBzE,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;IAKxC,cAAc,CAAC,UAAU,EAAE,IAAI;IAM/B,aAAa,CAAC,EAAE,EAAE,MAAM;IAQxB,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAC7C,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,OAAO,EACtB,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,IAAI,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,EACxD,SAAS,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,EACtD,YAAY,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM;IAwB1E,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM;IAa7C,MAAM,CAAC,UAAU,EAAE,IAAI;IAKvB,OAAO,CAAC,SAAS;IAMjB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAKvC,YAAY,CACR,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC,EACxB,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,EACzE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,EACrE,YAAY,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM;IAqB1E,KAAK,CAAC,CAAC,EAAE,MAAM;CAQlB"} \ No newline at end of file diff --git a/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedNode.js b/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedNode.js index bfadd4e8d..b5ac4283e 100644 --- a/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedNode.js +++ b/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedNode.js @@ -27,17 +27,29 @@ function elementComputeSize(scale, element, size) { const unpinned = "\u{d83d}\u{dccc}"; const pinned = "\u{d83d}\u{dccd}"; export class ForceDirectedNode extends GraphNode { + #pinned; get pinned() { - return this._pinned; + return this.#pinned; } set pinned(v) { - this._pinned = v; - this.pinner.innerHTML = this.pinned ? pinned : unpinned; + this.#pinned = v; + this.element.classList.toggle("pinned", v); + this.pinner.innerHTML = v ? pinned : unpinned; } + #grabbed; + get grabbed() { + return this.#grabbed; + } + set grabbed(v) { + this.#grabbed = v; + this.element.classList.toggle("top-most", v); + } + #moving; get moving() { - return this.element.classList.contains("moving"); + return this.#moving; } set moving(v) { + this.#moving = v; this.element.classList.toggle("moving", v); } constructor(value, elementClass, content) { @@ -47,15 +59,15 @@ export class ForceDirectedNode extends GraphNode { this.size = new Vec2(); this.halfSize = new Vec2(); this.dynamicForce = new Vec2(); - this._pinned = false; this.depth = -1; this.hidden = false; + this.#pinned = false; + this.#grabbed = false; + this.#moving = false; this.pinner = document.createElement("button"); this.pinner.type = "button"; - this.pinner.innerHTML = unpinned; this.pinner.style.float = "right"; this.pinner.style.backgroundColor = "transparent"; - this.pinner.addEventListener("click", () => this.pinned = !this.pinned); this.content = document.createElement("div"); this.element = document.createElement("div"); this.element.classList.add("graph-node"); @@ -64,6 +76,9 @@ export class ForceDirectedNode extends GraphNode { } this.element.append(this.pinner, this.content); this.setContent(content); + this.pinned = false; + this.grabbed = false; + this.moving = false; } setContent(content) { this.content.innerHTML = ""; @@ -81,6 +96,26 @@ export class ForceDirectedNode extends GraphNode { .scale(0.5); } } + applyForces(nodes, running, performLayout, displayDepth, centeringGravity, mousePoint, attract, repel, attractFunc, repelFunc, getWeightMod) { + this.dynamicForce.x = 0; + this.dynamicForce.y = 0; + if (displayDepth < 0 || this.depth <= displayDepth) { + if (this.grabbed) { + this.moveTo(mousePoint); + } + else if (!this.pinned + && running + && performLayout) { + this.dynamicForce.scaleAndAdd(this.position, -centeringGravity); + for (const n2 of nodes) { + if (this !== n2 + && (displayDepth < 0 || n2.depth <= displayDepth)) { + this.attractRepel(n2, attract, attractFunc, repel, repelFunc, getWeightMod); + } + } + } + } + } updatePosition(center, maxDepth) { const { position, element } = this; element.style.display = this.isVisible(maxDepth) ? "" : "none"; @@ -97,10 +132,6 @@ export class ForceDirectedNode extends GraphNode { this.position.copy(mousePoint) .sub(this.mouseOffset); } - resetForce() { - this.dynamicForce.x = 0; - this.dynamicForce.y = 0; - } isVisible(maxDepth) { return !this.hidden && (maxDepth < 0 @@ -110,9 +141,6 @@ export class ForceDirectedNode extends GraphNode { return this.isVisible(maxDepth) && !this.element.classList.contains("not-cycled"); } - gravitate(gravity) { - this.dynamicForce.scaleAndAdd(this.position, -gravity); - } attractRepel(n2, attract, attractFunc, repel, repelFunc, getWeightMod) { // Displacement between this node and the other node delta.copy(n2.position) diff --git a/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedNode.js.map b/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedNode.js.map index ee0ca6d7a..6702d7949 100644 --- a/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedNode.js.map +++ b/src/Juniper.TypeScript/@juniper-lib/widgets/dist/ForceDirectedGraph/ForceDirectedNode.js.map @@ -1 +1 @@ -{"version":3,"file":"ForceDirectedNode.js","sourceRoot":"","sources":["../../src/ForceDirectedGraph/ForceDirectedNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"ForceDirectedNode.js","sourceRoot":"","sources":["../../src/ForceDirectedGraph/ForceDirectedNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/Juniper.TypeScript/@juniper-lib/widgets/src/ForceDirectedGraph/ForceDirectedGraph.ts b/src/Juniper.TypeScript/@juniper-lib/widgets/src/ForceDirectedGraph/ForceDirectedGraph.ts index 460480d2d..c28abb236 100644 --- a/src/Juniper.TypeScript/@juniper-lib/widgets/src/ForceDirectedGraph/ForceDirectedGraph.ts +++ b/src/Juniper.TypeScript/@juniper-lib/widgets/src/ForceDirectedGraph/ForceDirectedGraph.ts @@ -110,7 +110,6 @@ export class ForceDirectedGraph { private displayCount = 0; private selectedNode: ForceDirectedNode = null; private data: T[] = null; - private grabbed: ForceDirectedNode = null; private timer: number = null; public performLayout = true; @@ -181,9 +180,6 @@ export class ForceDirectedGraph { this.setMouse(evt); this.mouseDown = true; if (evt.target instanceof HTMLElement) { - const lastGrabbedElement = container.querySelector(".top-most"); - const lastGrabbed = lastGrabbedElement && this.elementToNode.get(lastGrabbedElement); - let nextGrabbed: ForceDirectedNode; let here = evt.target; while (!nextGrabbed && here) { @@ -191,30 +187,38 @@ export class ForceDirectedGraph { here = here.parentElement; } - if (nextGrabbed !== lastGrabbed) { - if (lastGrabbed) { - lastGrabbed.grabbed = false; + if (nextGrabbed && nextGrabbed.pinner.contains(evt.target)) { + nextGrabbed.pinned = !nextGrabbed.pinned; + } + else { + const lastGrabbedElement = container.querySelector(".top-most"); + const lastGrabbed = lastGrabbedElement && this.elementToNode.get(lastGrabbedElement); + + if (nextGrabbed !== lastGrabbed) { + if (lastGrabbed) { + lastGrabbed.grabbed = false; + } + + if (nextGrabbed) { + nextGrabbed.grabbed = true; + nextGrabbed.pinned = true; + } } if (nextGrabbed) { - nextGrabbed.grabbed = true; - nextGrabbed.pinned = true; + nextGrabbed.setMouseOffset(this.mousePoint); } } - - this.grabbed = nextGrabbed; - - if (this.grabbed) { - this.grabbed.setMouseOffset(this.mousePoint); - } } }); this.container.addEventListener("mousemove", evt => { - if (this.grabbed) { + const lastGrabbedElement = container.querySelector(".top-most"); + const lastGrabbed = lastGrabbedElement && this.elementToNode.get(lastGrabbedElement); + if (lastGrabbed) { this.setMouse(evt); evt.preventDefault(); - this.grabbed.moving = true; + lastGrabbed.moving = true; } else if (this.mouseDown) { delta.copy(this.mousePoint); @@ -226,10 +230,12 @@ export class ForceDirectedGraph { this.container.addEventListener("mouseup", (evt) => { this.mouseDown = false; - if (this.grabbed) { + const lastGrabbedElement = container.querySelector(".top-most"); + const lastGrabbed = lastGrabbedElement && this.elementToNode.get(lastGrabbedElement); + if (lastGrabbed) { evt.preventDefault(); - this.grabbed.moving = false; - this.grabbed = null; + lastGrabbed.moving = false; + lastGrabbed.grabbed = false; } }); @@ -358,7 +364,6 @@ export class ForceDirectedGraph { this.graph.clear(); this.elementToNode.clear(); this.selectedNode = null; - this.grabbed = null; this.data = v; @@ -582,9 +587,9 @@ export class ForceDirectedGraph { // calculate forces for (const n1 of this.graph.values()) { n1.applyForces( - this.graph.values(), - this.running, this.performLayout, this.displayDepth, this.centeringGravity, - this.mousePoint, + this.graph.values(), + this.running, this.performLayout, this.displayDepth, this.centeringGravity, + this.mousePoint, this.attract, this.repel, attractFunc, repelFunc, this.getWeightMod); } diff --git a/src/Juniper.TypeScript/@juniper-lib/widgets/src/ForceDirectedGraph/ForceDirectedNode.ts b/src/Juniper.TypeScript/@juniper-lib/widgets/src/ForceDirectedGraph/ForceDirectedNode.ts index 04dec75dd..d1337d47d 100644 --- a/src/Juniper.TypeScript/@juniper-lib/widgets/src/ForceDirectedGraph/ForceDirectedNode.ts +++ b/src/Juniper.TypeScript/@juniper-lib/widgets/src/ForceDirectedGraph/ForceDirectedNode.ts @@ -50,28 +50,34 @@ export class ForceDirectedNode extends GraphNode { public depth = -1; public hidden = false; + #pinned = false; get pinned() { - return this.element.classList.contains("pinned"); + return this.#pinned; } set pinned(v) { + this.#pinned = v; this.element.classList.toggle("pinned", v); this.pinner.innerHTML = v ? pinned : unpinned; } + #grabbed = false; get grabbed() { - return this.element.classList.contains("top-most"); + return this.#grabbed; } set grabbed(v) { + this.#grabbed = v; this.element.classList.toggle("top-most", v); } + #moving = false; get moving() { - return this.element.classList.contains("moving"); + return this.#moving; } set moving(v) { + this.#moving = v; this.element.classList.toggle("moving", v); } @@ -82,8 +88,6 @@ export class ForceDirectedNode extends GraphNode { this.pinner.type = "button"; this.pinner.style.float = "right"; this.pinner.style.backgroundColor = "transparent"; - this.pinner.addEventListener("click", () => - this.pinned = !this.pinned); this.content = document.createElement("div");