From 9a8c2a0e97507516abec76966b79ba59c12fe676 Mon Sep 17 00:00:00 2001 From: Paulo Gustavo Veiga Date: Mon, 2 Jan 2023 13:15:58 -0800 Subject: [PATCH] Minor fixes. --- .../mindplot/src/components/CentralTopic.ts | 3 ++- packages/mindplot/src/components/Topic.ts | 10 +++------- .../mindplot/src/components/util/Shape.ts | 10 +--------- .../src/components/peer/svg/CurvedLinePeer.js | 2 +- .../editor.cy.ts/editor-page.snap.png | Bin 27839 -> 27870 bytes 5 files changed, 7 insertions(+), 18 deletions(-) diff --git a/packages/mindplot/src/components/CentralTopic.ts b/packages/mindplot/src/components/CentralTopic.ts index 600feb63..d72b5099 100644 --- a/packages/mindplot/src/components/CentralTopic.ts +++ b/packages/mindplot/src/components/CentralTopic.ts @@ -57,12 +57,13 @@ class CentralTopic extends Topic { return null; } - /** */ workoutOutgoingConnectionPoint(targetPosition: Point) { $assert(targetPosition, 'targetPoint can not be null'); + const pos = this.getPosition(); const isAtRight = Shape.isAtRight(targetPosition, pos); const size = this.getSize(); + return Shape.calculateRectConnectionPoint(pos, size, !isAtRight); } } diff --git a/packages/mindplot/src/components/Topic.ts b/packages/mindplot/src/components/Topic.ts index bdd104d7..11499741 100644 --- a/packages/mindplot/src/components/Topic.ts +++ b/packages/mindplot/src/components/Topic.ts @@ -1020,11 +1020,11 @@ abstract class Topic extends NodeGraph { } } - this.redrawShapeType(); - this.redraw(true); - // Remove from workspace. EventBus.instance.fireEvent('topicDisconect', this.getModel()); + + this.redrawShapeType(); + this.redraw(true); } } @@ -1088,13 +1088,11 @@ abstract class Topic extends NodeGraph { children.push(child); } - /** */ removeChild(child: Topic): void { const children = this.getChildren(); this._children = children.filter((c) => c !== child); } - /** */ getChildren(): Topic[] { let result = this._children; if (!$defined(result)) { @@ -1135,12 +1133,10 @@ abstract class Topic extends NodeGraph { this.redraw(); } - /** */ isInWorkspace(): boolean { return this._isInWorkspace; } - /** */ createDragNode(layoutManager: LayoutManager) { const result = super.createDragNode(layoutManager); diff --git a/packages/mindplot/src/components/util/Shape.ts b/packages/mindplot/src/components/util/Shape.ts index 059888e6..0b07f96e 100644 --- a/packages/mindplot/src/components/util/Shape.ts +++ b/packages/mindplot/src/components/util/Shape.ts @@ -16,7 +16,7 @@ * limitations under the License. */ import { Point } from '@wisemapping/web2d'; -import { $assert, $defined } from '@wisemapping/core-js'; +import { $assert } from '@wisemapping/core-js'; import TopicConfig from '../TopicConfig'; import PositionType from '../PositionType'; import SizeType from '../SizeType'; @@ -24,8 +24,6 @@ import Topic from '../Topic'; class Shape { static isAtRight(sourcePoint: PositionType, targetPoint: PositionType): boolean { - $assert(sourcePoint, 'Source can not be null'); - $assert(targetPoint, 'Target can not be null'); return sourcePoint.x < targetPoint.x; } @@ -34,10 +32,6 @@ class Shape { rectSize: SizeType, isAtRight: boolean, ): PositionType { - $assert(rectCenterPoint, 'rectCenterPoint can not be null'); - $assert(rectSize, 'rectSize can not be null'); - $assert($defined(isAtRight), 'isRight can not be null'); - // This is used fix a minor difference ...z const correctionHardcode = 2; let result: PositionType; @@ -138,8 +132,6 @@ class Shape { result.x -= offset; } - result.x = Math.ceil(result.x); - result.y = Math.ceil(result.y); return result; } } diff --git a/packages/web2d/src/components/peer/svg/CurvedLinePeer.js b/packages/web2d/src/components/peer/svg/CurvedLinePeer.js index bd27586f..b2b29d38 100644 --- a/packages/web2d/src/components/peer/svg/CurvedLinePeer.js +++ b/packages/web2d/src/components/peer/svg/CurvedLinePeer.js @@ -163,7 +163,7 @@ class CurvedLinePeer extends ElementPeer { } static _pointToStr(x, y) { - return `${(x).toFixed()},${(y).toFixed(1)} `; + return `${x.toFixed(1)},${y.toFixed(1)} `; } _updateStyle() { diff --git a/packages/webapp/cypress/snapshots/editor.cy.ts/editor-page.snap.png b/packages/webapp/cypress/snapshots/editor.cy.ts/editor-page.snap.png index 3a98cd37c6530c893031c59d6fe6a04836335670..1d1f1f541cd23dff1bdabfe186b184e3ed997837 100644 GIT binary patch delta 11176 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 R#8uc1%wB8rQq!+a{tqukYAOH# delta 11144 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