Hi, Edit: I am using Diagram Library for JavaScript and TypeScript 3.2.1 I am trying to add some validation in my diagram which consists of TableNodes. I want to allow links to start at the right most column of the TableNode but they should always end at the first table node column (0). See example attachment. I got the first part running - not allowing to start links at column 0 of the TableNode. I simply cancel the user action if the starting point is column 0 of the TableNode. onLinkCreating(sender: any, args: MindFusion.Diagramming.LinkEventArgs) {
// origin must be a out connector (x > 0)
if (args.link.originConnection.anchorPointDetails.location.x === 0) {
// remove link / cancel action
args.setCancel(true);
args.cancelDrag();
}
}
The same doesnt work with the destinationConnection. So I tried to delete the link after it was created like so: onLinkCreated(sender: any, args: MindFusion.Diagramming.LinkEventArgs) {
this.sDiagram.removeItem(args.getLink());
}
This however is messing up the entire diagram visuals. And I get numerous exceptions. removeItem() is the function to be called when trying to remove something from the diagram afaik. Any suggestions? core.js:1448 ERROR TypeError: Cannot read property 'getShadowOffsetX' of null at mdiag.DiagramLink.getShadowOffsetX (eval at <anonymous> (MindFusion.Diagramming.js:1), <anonymous>:1:124301) at mdiag.DiagramLink.createShadow (eval at <anonymous> (MindFusion.Diagramming.js:1), <anonymous>:1:124809) at Object.createElements (eval at <anonymous> (MindFusion.Diagramming.js:1), <anonymous>:1:439989) at Object.createElements (eval at <anonymous> (MindFusion.Diagramming.js:1), <anonymous>:1:440748) at mdiag.DiagramLink.updateCanvasElements (eval at <anonymous> (MindFusion.Diagramming.js:1), <anonymous>:1:416215) at mdraw.Container.draw (eval at <anonymous> (scripts.bundle.js:4), <anonymous>:1:61685) at mdiag.CreateLinkController.drawInteraction (eval at <anonymous> (MindFusion.Diagramming.js:1), <anonymous>:1:185588) at mdiag.Diagram.repaint (eval at <anonymous> (scripts.bundle.js:4), <anonymous>:1:43335) at mdiag.Diagram.updateCanvasSize (eval at <anonymous> (scripts.bundle.js:4), <anonymous>:1:50611) at mdiag.Diagram.setBounds (eval at <anonymous> (scripts.bundle.js:4), <anonymous>:1:40820) defaultErrorLogger @ core.js:1448 ErrorHandler.handleError @ core.js:1509 next @ core.js:5497 schedulerFn @ core.js:4331 SafeSubscriber.__tryOrUnsub @ Subscriber.js:243 SafeSubscriber.next @ Subscriber.js:190 Subscriber._next @ Subscriber.js:131 Subscriber.next @ Subscriber.js:95 Subject.next @ Subject.js:56 EventEmitter.emit @ core.js:4311 (anonymous) @ core.js:4771 ZoneDelegate.invoke @ zone.js:388 Zone.run @ zone.js:138 NgZone.runOutsideAngular @ core.js:4697 onHandleError @ core.js:4771 ZoneDelegate.handleError @ zone.js:392 Zone.runTask @ zone.js:191 ZoneTask.invokeTask @ zone.js:496 invokeTask @ zone.js:1540 globalZoneAwareCallback @ zone.js:1566 core.js:1448 ERROR TypeError: Cannot read property 'getNodeAt' of null at mdiag.DiagramLink.updateTargetConnection (eval at <anonymous> (MindFusion.Diagramming.js:1), <anonymous>:1:396546) at mdiag.DiagramLink.updateDrag (eval at <anonymous> (MindFusion.Diagramming.js:1), <anonymous>:1:394132) at mdiag.CreateLinkController.move (eval at <anonymous> (MindFusion.Diagramming.js:1), <anonymous>:1:185105) at mdiag.MouseInputDispatcher.onMouseMove (eval at <anonymous> (MindFusion.Diagramming.js:1), <anonymous>:1:216019) at mdiag.MouseEventHandler.onMouseMove (eval at <anonymous> (MindFusion.Diagramming.js:1), <anonymous>:1:213567) at HTMLCanvasElement.i (scripts.bundle.js:2) at HTMLCanvasElement.dispatch (scripts.bundle.js:2) at HTMLCanvasElement.y.handle (scripts.bundle.js:2) at ZoneDelegate.invokeTask (zone.js:421) at Object.onInvokeTask (core.js:4740) defaultErrorLogger @ core.js:1448 ErrorHandler.handleError @ core.js:1509 next @ core.js:5497 schedulerFn @ core.js:4331 SafeSubscriber.__tryOrUnsub @ Subscriber.js:243 SafeSubscriber.next @ Subscriber.js:190 Subscriber._next @ Subscriber.js:131 Subscriber.next @ Subscriber.js:95 Subject.next @ Subject.js:56 EventEmitter.emit @ core.js:4311 (anonymous) @ core.js:4771 ZoneDelegate.invoke @ zone.js:388 Zone.run @ zone.js:138 NgZone.runOutsideAngular @ core.js:4697 onHandleError @ core.js:4771 ZoneDelegate.handleError @ zone.js:392 Zone.runTask @ zone.js:191 ZoneTask.invokeTask @ zone.js:496 invokeTask @ zone.js:1540 globalZoneAwareCallback @ zone.js:1566 core.js:1448 ERROR TypeError: Cannot read property 'getShadowOffsetX' of null at mdiag.DiagramLink.getShadowOffsetX (eval at <anonymous> (MindFusion.Diagramming.js:1), <anonymous>:1:124301) at mdiag.DiagramLink.createShadow (eval at <anonymous> (MindFusion.Diagramming.js:1), <anonymous>:1:124809) at Object.createElements (eval at <anonymous> (MindFusion.Diagramming.js:1), <anonymous>:1:439989) at Object.createElements (eval at <anonymous> (MindFusion.Diagramming.js:1), <anonymous>:1:440748) at mdiag.DiagramLink.updateCanvasElements (eval at <anonymous> (MindFusion.Diagramming.js:1), <anonymous>:1:416215) at mdraw.Container.draw (eval at <anonymous> (scripts.bundle.js:4), <anonymous>:1:61685) at mdiag.CreateLinkController.drawInteraction (eval at <anonymous> (MindFusion.Diagramming.js:1), <anonymous>:1:185588) at mdiag.Diagram.repaint (eval at <anonymous> (scripts.bundle.js:4), <anonymous>:1:43335) at i (scripts.bundle.js:2) at ZoneDelegate.invokeTask (zone.js:421) defaultErrorLogger @ core.js:1448 ErrorHandler.handleError @ core.js:1509 next @ core.js:5497 schedulerFn @ core.js:4331 SafeSubscriber.__tryOrUnsub @ Subscriber.js:243 SafeSubscriber.next @ Subscriber.js:190 Subscriber._next @ Subscriber.js:131 Subscriber.next @ Subscriber.js:95 Subject.next @ Subject.js:56 EventEmitter.emit @ core.js:4311 (anonymous) @ core.js:4771 ZoneDelegate.invoke @ zone.js:388 Zone.run @ zone.js:138 NgZone.runOutsideAngular @ core.js:4697 onHandleError @ core.js:4771 ZoneDelegate.handleError @ zone.js:392 Zone.runTask @ zone.js:191 ZoneTask.invokeTask @ zone.js:496 ZoneTask.invoke @ zone.js:485 timer @ zone.js:2054 setTimeout (async) scheduleTask @ zone.js:2075 ZoneDelegate.scheduleTask @ zone.js:407 onScheduleTask @ zone.js:297 ZoneDelegate.scheduleTask @ zone.js:401 Zone.scheduleTask @ zone.js:232 Zone.scheduleMacroTask @ zone.js:255 scheduleMacroTaskWithCurrentZone @ zone.js:1114 (anonymous) @ zone.js:2090 proto.(anonymous function) @ zone.js:1394 invalidate @ VM86259:1 invalidate @ VM86390:1 callBaseMethod @ VM86259:1 invalidate @ VM86390:1 updateFromPoints @ VM86390:1 arrangePoints @ VM86390:1 endDrag @ VM86390:1 commit @ VM86390:1 onMouseUp @ VM86390:1 onMouseUp @ VM86390:1 i @ scripts.bundle.js:2 dispatch @ scripts.bundle.js:2 y.handle @ scripts.bundle.js:2 ZoneDelegate.invokeTask @ zone.js:421 onInvokeTask @ core.js:4740 ZoneDelegate.invokeTask @ zone.js:420 Zone.runTask @ zone.js:188 ZoneTask.invokeTask @ zone.js:496 invokeTask @ zone.js:1540 globalZoneAwareCallback @ zone.js:1566 49core.js:1448 ERROR TypeError: Cannot read property 'getNodeAt' of null at mdiag.DiagramLink.updateTargetConnection (eval at <anonymous> (MindFusion.Diagramming.js:1), <anonymous>:1:396546) at mdiag.DiagramLink.updateDrag (eval at <anonymous> (MindFusion.Diagramming.js:1), <anonymous>:1:394132) at mdiag.CreateLinkController.move (eval at <anonymous> (MindFusion.Diagramming.js:1), <anonymous>:1:185105) at mdiag.MouseInputDispatcher.onMouseMove (eval at <anonymous> (MindFusion.Diagramming.js:1), <anonymous>:1:216019) at mdiag.MouseEventHandler.onMouseMove (eval at <anonymous> (MindFusion.Diagramming.js:1), <anonymous>:1:213567) at HTMLCanvasElement.i (scripts.bundle.js:2) at HTMLCanvasElement.dispatch (scripts.bundle.js:2) at HTMLCanvasElement.y.handle (scripts.bundle.js:2) at ZoneDelegate.invokeTask (zone.js:421) at Object.onInvokeTask (core.js:4740) defaultErrorLogger @ core.js:1448 ErrorHandler.handleError @ core.js:1509 next @ core.js:5497 schedulerFn @ core.js:4331 SafeSubscriber.__tryOrUnsub @ Subscriber.js:243 SafeSubscriber.next @ Subscriber.js:190 Subscriber._next @ Subscriber.js:131 Subscriber.next @ Subscriber.js:95 Subject.next @ Subject.js:56 EventEmitter.emit @ core.js:4311 (anonymous) @ core.js:4771 ZoneDelegate.invoke @ zone.js:388 Zone.run @ zone.js:138 NgZone.runOutsideAngular @ core.js:4697 onHandleError @ core.js:4771 ZoneDelegate.handleError @ zone.js:392 Zone.runTask @ zone.js:191 ZoneTask.invokeTask @ zone.js:496 invokeTask @ zone.js:1540 globalZoneAwareCallback @ zone.js:1566 7core.js:1448 ERROR TypeError: Cannot read property 'getNodeAt' of null at mdiag.DiagramLink.updateTargetConnection (eval at <anonymous> (MindFusion.Diagramming.js:1), <anonymous>:1:396546) at mdiag.DiagramLink.updateDrag (eval at <anonymous> (MindFusion.Diagramming.js:1), <anonymous>:1:394132) at mdiag.CreateLinkController.move (eval at <anonymous> (MindFusion.Diagramming.js:1), <anonymous>:1:185105) at mdiag.Diagram.onAutoScroll (eval at <anonymous> (MindFusion.Diagramming.js:1), <anonymous>:1:297365) at mdiag.Diagram.checkAutoScroll (eval at <anonymous> (MindFusion.Diagramming.js:1), <anonymous>:1:296558) at mdiag.MouseInputDispatcher.onMouseMove (eval at <anonymous> (MindFusion.Diagramming.js:1), <anonymous>:1:215971) at mdiag.MouseEventHandler.onMouseMove (eval at <anonymous> (MindFusion.Diagramming.js:1), <anonymous>:1:213567) at HTMLCanvasElement.i (scripts.bundle.js:2) at HTMLCanvasElement.dispatch (scripts.bundle.js:2) at HTMLCanvasElement.y.handle (scripts.bundle.js:2)
|