From b788b64df58e568589bb7df0123f4a99e173c5ad Mon Sep 17 00:00:00 2001 From: Michael Mainguy Date: Wed, 1 May 2024 08:34:25 -0500 Subject: [PATCH] Fixed Circular Dependency. --- src/diagram/diagramManager.ts | 6 +----- src/diagram/diagramMenuManager.ts | 2 +- src/diagram/types/diagramEventObserverMask.ts | 5 +++++ src/menus/clickMenu.ts | 19 ++++++++++++------- 4 files changed, 19 insertions(+), 13 deletions(-) create mode 100644 src/diagram/types/diagramEventObserverMask.ts diff --git a/src/diagram/diagramManager.ts b/src/diagram/diagramManager.ts index 3f9fd32..7506a2d 100644 --- a/src/diagram/diagramManager.ts +++ b/src/diagram/diagramManager.ts @@ -14,13 +14,9 @@ import {isDiagramEntity} from "./functions/isDiagramEntity"; import {DefaultScene} from "../defaultScene"; import {DiagramMenuManager} from "./diagramMenuManager"; import {ClickMenu} from "../menus/clickMenu"; +import {DiagramEventObserverMask} from "./types/diagramEventObserverMask"; -export enum DiagramEventObserverMask { - ALL = -1, - FROM_DB = 1, - TO_DB = 2, -} export class DiagramManager { private logger = log.getLogger('DiagramManager'); public readonly _config: AppConfig; diff --git a/src/diagram/diagramMenuManager.ts b/src/diagram/diagramMenuManager.ts index 80cb22f..e063674 100644 --- a/src/diagram/diagramMenuManager.ts +++ b/src/diagram/diagramMenuManager.ts @@ -1,6 +1,5 @@ import {DiagramEvent, DiagramEventType} from "./types/diagramEntity"; import {AbstractMesh, ActionEvent, Observable, Scene, TransformNode, Vector3} from "@babylonjs/core"; -import {DiagramEventObserverMask} from "./diagramManager"; import {InputTextView} from "../information/inputTextView"; import {toDiagramEntity} from "./functions/toDiagramEntity"; import {DefaultScene} from "../defaultScene"; @@ -11,6 +10,7 @@ import {ScaleMenu} from "../menus/scaleMenu"; import {ClickMenu} from "../menus/clickMenu"; import {ConfigMenu} from "../menus/configMenu"; import {AppConfig} from "../util/appConfig"; +import {DiagramEventObserverMask} from "./types/diagramEventObserverMask"; export class DiagramMenuManager { diff --git a/src/diagram/types/diagramEventObserverMask.ts b/src/diagram/types/diagramEventObserverMask.ts new file mode 100644 index 0000000..fc31d12 --- /dev/null +++ b/src/diagram/types/diagramEventObserverMask.ts @@ -0,0 +1,5 @@ +export enum DiagramEventObserverMask { + ALL = -1, + FROM_DB = 1, + TO_DB = 2, +} \ No newline at end of file diff --git a/src/menus/clickMenu.ts b/src/menus/clickMenu.ts index 6e705a4..b3b4fb6 100644 --- a/src/menus/clickMenu.ts +++ b/src/menus/clickMenu.ts @@ -1,15 +1,17 @@ import {AbstractMesh, ActionEvent, Observable, Scene, TransformNode, Vector3} from "@babylonjs/core"; import {DiagramEvent, DiagramEventType} from "../diagram/types/diagramEntity"; import {toDiagramEntity} from "../diagram/functions/toDiagramEntity"; -import {DiagramEventObserverMask} from "../diagram/diagramManager"; import {DiagramConnection} from "../diagram/diagramConnection"; import {isDiagramEntity} from "../diagram/functions/isDiagramEntity"; import {HtmlButton} from "babylon-html"; +import {DiagramEventObserverMask} from "../diagram/types/diagramEventObserverMask"; +const POINTER_UP = "pointerup"; export class ClickMenu { private readonly _mesh: AbstractMesh; private readonly transform: TransformNode; private connection: DiagramConnection = null; + public onClickMenuObservable: Observable = new Observable(); private _diagramEventObservable: Observable; @@ -23,7 +25,7 @@ export class ClickMenu { const removeButton: HtmlButton = this.makeNewButton("Remove", "remove", scene, x += .11); removeButton.onPointerObservable.add((eventData) => { - if (eventData.sourceEvent.type == "pointerup") { + if (isUp(eventData)) { this.onClickMenuObservable.notifyObservers(eventData); this.dispose(); } @@ -32,7 +34,7 @@ export class ClickMenu { const labelButton: HtmlButton = this.makeNewButton("Label", "label", scene, x += .11); labelButton.onPointerObservable.add((eventData) => { - if (eventData.sourceEvent.type == "pointerup") { + if (isUp(eventData)) { this.onClickMenuObservable.notifyObservers(eventData); this.dispose(); } @@ -40,15 +42,14 @@ export class ClickMenu { const connectButton: HtmlButton = this.makeNewButton("Connect", "connect", scene, x += .11); connectButton.onPointerObservable.add((eventData) => { - if (eventData.sourceEvent.type == "pointerup") { + if (isUp(eventData)) { this.createMeshConnection(this._mesh, grip, eventData.additionalData.pickedPoint.clone()); - } }, -1, false, this, false); const closeButton: HtmlButton = this.makeNewButton("Close", "close", scene, x += .11); closeButton.onPointerObservable.add((eventData) => { - if (eventData.sourceEvent.type == "pointerup") { + if (isUp(eventData)) { this.onClickMenuObservable.notifyObservers(eventData); this.dispose(); } @@ -56,7 +57,7 @@ export class ClickMenu { const sizeButton: HtmlButton = this.makeNewButton("Size", "size", scene, x += .11); sizeButton.onPointerObservable.add((eventData) => { - if (eventData.sourceEvent.type == "pointerup") { + if (isUp(eventData)) { this.onClickMenuObservable.notifyObservers(eventData); } }, -1, false, this, false); @@ -107,4 +108,8 @@ export class ClickMenu { private dispose() { this.transform.dispose(false, true); } +} + +function isUp(event: ActionEvent): boolean { + return event?.sourceEvent?.type == POINTER_UP; } \ No newline at end of file