From 5e2f0ccd4737e2eb0d71007ec6ef9dd2cf09ab39 Mon Sep 17 00:00:00 2001 From: Andrea Gottsponer <ago@attr.ch> Date: Mon, 5 Sep 2022 17:37:19 +0200 Subject: [PATCH] - fix update position point event in creation (selection reset fixed) - fix marker create error --- src/app/index.ts | 17 ++--- src/lib/elements/connections/Line.ts | 2 +- src/lib/elements/fills/FillCollection.ts | 2 +- src/lib/elements/legends/LegendCollection.ts | 2 +- .../elements/positionings/PositionPoint.ts | 2 +- src/lib/elements/primitives/ArrowPrimitive.ts | 4 +- .../BackgroundRectanglePrimitive.ts | 4 +- .../elements/primitives/EllipsePrimitive.ts | 4 +- .../elements/primitives/RectanglePrimitive.ts | 4 +- src/lib/elements/primitives/TextPrimitive.ts | 4 +- .../generators/combinations/ArrowGenerator.ts | 6 +- .../combinations/EllipseGenerator.ts | 6 +- .../combinations/InteractiveAreaGenerator.ts | 3 +- .../combinations/MarkerGenerator.ts | 3 +- .../combinations/PrimitiveMarkerGenerator.ts | 12 ++-- .../combinations/RectangleGenerator.ts | 6 +- .../primitives/ArrowPrimitiveGenerator.ts | 64 +++++++++++++----- .../primitives/EllipsePrimitiveGenerator.ts | 64 +++++++++++++----- .../primitives/RectanglePrimitiveGenerator.ts | 64 +++++++++++++----- .../primitives/TextPrimitiveGenerator.ts | 65 ++++++++++++++----- 20 files changed, 245 insertions(+), 93 deletions(-) diff --git a/src/app/index.ts b/src/app/index.ts index b0e6305a..b8f949fd 100644 --- a/src/app/index.ts +++ b/src/app/index.ts @@ -275,6 +275,7 @@ async function setupImage() { layerGroup: layerGroupsArray['sketch'], image: {}, rotateWithLine: false, + triggerImmediateEndDraw: true }); generator.once('startGenerator', _startGenerator, this); generator.once('endGenerator', generator.endGenerator, generator); @@ -1414,7 +1415,7 @@ buttonTest.addEventListener("click", () => { console.log("sketch", layerGroupsArray['sketch']); image.externControlSelectLayerGroup(layerGroupsArray['sketch']); */ - elementsArray['text'].modeInteraction.setMode('delete'); + // elementsArray['text'].modeInteraction.setMode('delete'); // Position point /** / @@ -1443,7 +1444,7 @@ buttonTest.addEventListener("click", () => { // bezierCourve: false, stickMode: MedsurfDraw.StickMode.POSITIONPOINTS, // startElement: test17Point, - layerGroup: layerGroupModel1, + layerGroup: layerGroupsArray['layerGroupModel1'], image: {} }); /**/ @@ -1500,7 +1501,7 @@ buttonTest.addEventListener("click", () => { }); /**/ // Fill collection - /**/ + /** / const generator = new MedsurfDraw.FillGenerator({ target: image, bezierCourve: false, @@ -1511,12 +1512,12 @@ buttonTest.addEventListener("click", () => { }); /**/ // Marker - /** / + /**/ const generator = new MedsurfDraw.MarkerGenerator({ - target: image, - layerGroup: sketch, - image: {} - }); + target: image, + layerGroup: layerGroupsArray['sketch'], + image: {} + }); /**/ // Primitive Marker /** / diff --git a/src/lib/elements/connections/Line.ts b/src/lib/elements/connections/Line.ts index d2fb7eea..893ddb8c 100644 --- a/src/lib/elements/connections/Line.ts +++ b/src/lib/elements/connections/Line.ts @@ -1527,7 +1527,7 @@ export class Line extends BaseElementContainer<Models.Line, BaseElementContainer if (image) { // Select layer group - if (this.modeInteraction.lastMode !== 'delete_multiple') { + if (['delete_multiple', 'delete_draw', 'delete_clone'].indexOf(this.modeInteraction.lastMode) === -1) { this.controlUnselectItem(image); } diff --git a/src/lib/elements/fills/FillCollection.ts b/src/lib/elements/fills/FillCollection.ts index a2fb9889..9cc65883 100644 --- a/src/lib/elements/fills/FillCollection.ts +++ b/src/lib/elements/fills/FillCollection.ts @@ -1296,7 +1296,7 @@ export class FillCollection extends BaseElementContainer<Models.FillCollection, if (image) { // Select layer group - if (this.modeInteraction.lastMode !== 'delete_multiple') { + if (['delete_multiple', 'delete_draw', 'delete_clone'].indexOf(this.modeInteraction.lastMode) === -1) { this.controlUnselectItem(image); } diff --git a/src/lib/elements/legends/LegendCollection.ts b/src/lib/elements/legends/LegendCollection.ts index 089c5c6c..6f08ed3b 100644 --- a/src/lib/elements/legends/LegendCollection.ts +++ b/src/lib/elements/legends/LegendCollection.ts @@ -931,7 +931,7 @@ export class LegendCollection extends BaseElementContainer<Models.LegendCollecti if (image) { // Select layer group - if (this.modeInteraction.lastMode !== 'delete_multiple') { + if (['delete_multiple', 'delete_draw', 'delete_clone'].indexOf(this.modeInteraction.lastMode) === -1) { this.controlUnselectItem(image); } diff --git a/src/lib/elements/positionings/PositionPoint.ts b/src/lib/elements/positionings/PositionPoint.ts index bcc1fa98..0b7d2771 100644 --- a/src/lib/elements/positionings/PositionPoint.ts +++ b/src/lib/elements/positionings/PositionPoint.ts @@ -1070,7 +1070,7 @@ export class PositionPoint extends BaseElementContainer<Models.PositionPoint, Ba if (image) { // Select layer group - if (this.modeInteraction.lastMode !== 'delete_multiple') { + if (['delete_multiple', 'delete_draw', 'delete_clone'].indexOf(this.modeInteraction.lastMode) === -1) { this.controlUnselectItem(image); } diff --git a/src/lib/elements/primitives/ArrowPrimitive.ts b/src/lib/elements/primitives/ArrowPrimitive.ts index 8f51d1c9..639267f3 100644 --- a/src/lib/elements/primitives/ArrowPrimitive.ts +++ b/src/lib/elements/primitives/ArrowPrimitive.ts @@ -992,7 +992,9 @@ export class ArrowPrimitive extends BaseElementContainer<Models.ArrowPrimitive, let index = parent.model.primitives.findIndex((primitive: any) => primitive === this.model); if (index > -1) { // Select layer group - this.emit("debounceControlUnselectItem", parent); + if (['delete_draw'].indexOf(this.modeInteraction.lastMode) === -1) { + this.emit("debounceControlUnselectItem", parent); + } // Delete from parent parent.model.primitives.slice(index, 1); diff --git a/src/lib/elements/primitives/BackgroundRectanglePrimitive.ts b/src/lib/elements/primitives/BackgroundRectanglePrimitive.ts index 93b2d7c2..cd3e76fd 100644 --- a/src/lib/elements/primitives/BackgroundRectanglePrimitive.ts +++ b/src/lib/elements/primitives/BackgroundRectanglePrimitive.ts @@ -965,7 +965,9 @@ export class BackgroundRectanglePrimitive extends BaseElementContainer<Models.Ba let index = parent.model.primitives.findIndex((primitive: any) => primitive === this.model); if (index > -1) { // Select layer group - this.emit("debounceControlUnselectItem", parent); + if (['delete_draw'].indexOf(this.modeInteraction.lastMode) === -1) { + this.emit("debounceControlUnselectItem", parent); + } // Delete from parent parent.model.primitives.slice(index, 1); diff --git a/src/lib/elements/primitives/EllipsePrimitive.ts b/src/lib/elements/primitives/EllipsePrimitive.ts index 6a8d3f64..44da24cc 100644 --- a/src/lib/elements/primitives/EllipsePrimitive.ts +++ b/src/lib/elements/primitives/EllipsePrimitive.ts @@ -964,7 +964,9 @@ export class EllipsePrimitive extends BaseElementContainer<Models.EllipsePrimiti let index = parent.model.primitives.findIndex((primitive: any) => primitive === this.model); if (index > -1) { // Select layer group - this.emit("debounceControlUnselectItem", parent); + if (['delete_draw'].indexOf(this.modeInteraction.lastMode) === -1) { + this.emit("debounceControlUnselectItem", parent); + } // Delete from parent parent.model.primitives.slice(index, 1); diff --git a/src/lib/elements/primitives/RectanglePrimitive.ts b/src/lib/elements/primitives/RectanglePrimitive.ts index 8e5e575a..5ee402e9 100644 --- a/src/lib/elements/primitives/RectanglePrimitive.ts +++ b/src/lib/elements/primitives/RectanglePrimitive.ts @@ -965,7 +965,9 @@ export class RectanglePrimitive extends BaseElementContainer<Models.RectanglePri let index = parent.model.primitives.findIndex((primitive: any) => primitive === this.model); if (index > -1) { // Select layer group - this.emit("debounceControlUnselectItem", parent); + if (['delete_draw'].indexOf(this.modeInteraction.lastMode) === -1) { + this.emit("debounceControlUnselectItem", parent); + } // Delete from parent parent.model.primitives.slice(index, 1); diff --git a/src/lib/elements/primitives/TextPrimitive.ts b/src/lib/elements/primitives/TextPrimitive.ts index b2aed46a..717e66d6 100644 --- a/src/lib/elements/primitives/TextPrimitive.ts +++ b/src/lib/elements/primitives/TextPrimitive.ts @@ -1013,7 +1013,9 @@ export class TextPrimitive extends BaseElementContainer<Models.TextPrimitive, Ba let index = parent.model.primitives.findIndex((primitive: any) => primitive === this.model); if (index > -1) { // Select layer group - this.emit("debounceControlUnselectItem", parent); + if (['delete_draw'].indexOf(this.modeInteraction.lastMode) === -1) { + this.emit("debounceControlUnselectItem", parent); + } // Delete from parent parent.model.primitives.slice(index, 1); diff --git a/src/lib/generators/combinations/ArrowGenerator.ts b/src/lib/generators/combinations/ArrowGenerator.ts index c8b927c8..b7a8d952 100644 --- a/src/lib/generators/combinations/ArrowGenerator.ts +++ b/src/lib/generators/combinations/ArrowGenerator.ts @@ -163,7 +163,8 @@ export class ArrowGenerator extends BaseGenerator<MedsurfDraw.Image, ArrowGenera image: this.data.image, stickMode: MedsurfDraw.StickMode.NOELEMENTS, startElement: positionPoint, - rotateWithLine: true + rotateWithLine: true, + triggerImmediateEndDraw: true }); this._arrowPrimitiveGenerator.once("startGenerator", this.start, this); this._arrowPrimitiveGenerator.once("endGenerator", this.endArrowPrimitiveGenerator, this); @@ -177,7 +178,8 @@ export class ArrowGenerator extends BaseGenerator<MedsurfDraw.Image, ArrowGenera image: this.data.image, stickMode: MedsurfDraw.StickMode.NOELEMENTS, startElement: positionPoint, - rotateWithLine: false + rotateWithLine: false, + triggerImmediateEndDraw: false }); this._textPrimitiveGenerator.once("startGenerator", this.startTextPrimitiveGenerator, this); this._textPrimitiveGenerator.once("endGenerator", this.endTextPrimitiveGenerator, this); diff --git a/src/lib/generators/combinations/EllipseGenerator.ts b/src/lib/generators/combinations/EllipseGenerator.ts index d0ba74a2..d96e2150 100644 --- a/src/lib/generators/combinations/EllipseGenerator.ts +++ b/src/lib/generators/combinations/EllipseGenerator.ts @@ -163,7 +163,8 @@ export class EllipseGenerator extends BaseGenerator<MedsurfDraw.Image, EllipseGe image: this.data.image, stickMode: MedsurfDraw.StickMode.NOELEMENTS, startElement: positionPoint, - rotateWithLine: false + rotateWithLine: false, + triggerImmediateEndDraw: true }); this._ellipsePrimitiveGenerator.once("startGenerator", this.start, this); this._ellipsePrimitiveGenerator.once("endGenerator", this.endEllipsePrimitiveGenerator, this); @@ -177,7 +178,8 @@ export class EllipseGenerator extends BaseGenerator<MedsurfDraw.Image, EllipseGe image: this.data.image, stickMode: MedsurfDraw.StickMode.NOELEMENTS, startElement: positionPoint, - rotateWithLine: false + rotateWithLine: false, + triggerImmediateEndDraw: false }); this._textPrimitiveGenerator.once("startGenerator", this.startTextPrimitiveGenerator, this); this._textPrimitiveGenerator.once("endGenerator", this.endTextPrimitiveGenerator, this); diff --git a/src/lib/generators/combinations/InteractiveAreaGenerator.ts b/src/lib/generators/combinations/InteractiveAreaGenerator.ts index 1af0550d..2180c24a 100644 --- a/src/lib/generators/combinations/InteractiveAreaGenerator.ts +++ b/src/lib/generators/combinations/InteractiveAreaGenerator.ts @@ -175,7 +175,8 @@ export class InteractiveAreaGenerator extends BaseGenerator<MedsurfDraw.Image, I image: this.data.image, stickMode: MedsurfDraw.StickMode.NOELEMENTS, startElement: positionPoint, - rotateWithLine: false + rotateWithLine: false, + triggerImmediateEndDraw: false }); this._textPrimitiveGenerator.once("startGenerator", this.startTextPrimitiveGenerator, this); this._textPrimitiveGenerator.once("endGenerator", this.endTextPrimitiveGenerator, this); diff --git a/src/lib/generators/combinations/MarkerGenerator.ts b/src/lib/generators/combinations/MarkerGenerator.ts index f142bc0d..7081d2a7 100644 --- a/src/lib/generators/combinations/MarkerGenerator.ts +++ b/src/lib/generators/combinations/MarkerGenerator.ts @@ -202,7 +202,8 @@ export class MarkerGenerator extends BaseGenerator<MedsurfDraw.Image, MarkerGene image: this.data.image, stickMode: MedsurfDraw.StickMode.NOELEMENTS, startElement: positionPoint, - rotateWithLine: false + rotateWithLine: false, + triggerImmediateEndDraw: false }); this._textPrimitiveGenerator.once("endGenerator", this.endTextPrimitiveGenerator, this); this._textPrimitiveGenerator.once("abortGenerator", this.abortTextPrimitiveGenerator, this); diff --git a/src/lib/generators/combinations/PrimitiveMarkerGenerator.ts b/src/lib/generators/combinations/PrimitiveMarkerGenerator.ts index aeb1cc0f..e9e627b4 100644 --- a/src/lib/generators/combinations/PrimitiveMarkerGenerator.ts +++ b/src/lib/generators/combinations/PrimitiveMarkerGenerator.ts @@ -180,7 +180,8 @@ export class PrimitiveMarkerGenerator extends BaseGenerator<MedsurfDraw.Image, P image: this.data.image, stickMode: MedsurfDraw.StickMode.NOELEMENTS, startElement: positionPoint, - rotateWithLine: this.data.rotateWithLine + rotateWithLine: this.data.rotateWithLine, + triggerImmediateEndDraw: true }); break; case Models.ImageObjectType.ELLIPSE: @@ -190,7 +191,8 @@ export class PrimitiveMarkerGenerator extends BaseGenerator<MedsurfDraw.Image, P image: this.data.image, stickMode: MedsurfDraw.StickMode.NOELEMENTS, startElement: positionPoint, - rotateWithLine: this.data.rotateWithLine + rotateWithLine: this.data.rotateWithLine, + triggerImmediateEndDraw: true }); break; case Models.ImageObjectType.RECTANGLE: @@ -200,7 +202,8 @@ export class PrimitiveMarkerGenerator extends BaseGenerator<MedsurfDraw.Image, P image: this.data.image, stickMode: MedsurfDraw.StickMode.NOELEMENTS, startElement: positionPoint, - rotateWithLine: this.data.rotateWithLine + rotateWithLine: this.data.rotateWithLine, + triggerImmediateEndDraw: true }); break; case Models.ImageObjectType.TEXT: @@ -210,7 +213,8 @@ export class PrimitiveMarkerGenerator extends BaseGenerator<MedsurfDraw.Image, P image: this.data.image, stickMode: MedsurfDraw.StickMode.NOELEMENTS, startElement: positionPoint, - rotateWithLine: this.data.rotateWithLine + rotateWithLine: this.data.rotateWithLine, + triggerImmediateEndDraw: true }); break; default: diff --git a/src/lib/generators/combinations/RectangleGenerator.ts b/src/lib/generators/combinations/RectangleGenerator.ts index 5e65f08e..99be52da 100644 --- a/src/lib/generators/combinations/RectangleGenerator.ts +++ b/src/lib/generators/combinations/RectangleGenerator.ts @@ -163,7 +163,8 @@ export class RectangleGenerator extends BaseGenerator<MedsurfDraw.Image, Rectang image: this.data.image, stickMode: MedsurfDraw.StickMode.NOELEMENTS, startElement: positionPoint, - rotateWithLine: false + rotateWithLine: false, + triggerImmediateEndDraw: true }); this._rectanglePrimitiveGenerator.once("startGenerator", this.start, this); this._rectanglePrimitiveGenerator.once("endGenerator", this.endRectanglePrimitiveGenerator, this); @@ -177,7 +178,8 @@ export class RectangleGenerator extends BaseGenerator<MedsurfDraw.Image, Rectang image: this.data.image, stickMode: MedsurfDraw.StickMode.NOELEMENTS, startElement: positionPoint, - rotateWithLine: false + rotateWithLine: false, + triggerImmediateEndDraw: false }); this._textPrimitiveGenerator.once("startGenerator", this.startTextPrimitiveGenerator, this); this._textPrimitiveGenerator.once("endGenerator", this.endTextPrimitiveGenerator, this); diff --git a/src/lib/generators/primitives/ArrowPrimitiveGenerator.ts b/src/lib/generators/primitives/ArrowPrimitiveGenerator.ts index 6578ed89..f07b7532 100644 --- a/src/lib/generators/primitives/ArrowPrimitiveGenerator.ts +++ b/src/lib/generators/primitives/ArrowPrimitiveGenerator.ts @@ -9,6 +9,7 @@ import {PositionPointGeneratorModel} from "../positionings/PositionPointGenerato export class ArrowPrimitiveGeneratorModel extends PositionPointGeneratorModel { startElement?: MedsurfDraw.PositionPoint; rotateWithLine: boolean; + triggerImmediateEndDraw: boolean; } /** @@ -226,20 +227,24 @@ export class ArrowPrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image, Ar } this.positionPointElement.model.primitives.push(this.arrowPrimitiveElement.model as any); - //<editor-fold desc="Events"> - // -- Image - this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction); - this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction); - this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction); - this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction); - // -- Scale - this.drawInteraction.on("startScale", this.arrowPrimitiveElement.scaleInteraction.startScale, this.arrowPrimitiveElement.scaleInteraction); - this.drawInteraction.on("onScale", this.arrowPrimitiveElement.scaleInteraction.onScale, this.arrowPrimitiveElement.scaleInteraction); - this.drawInteraction.on("endScale", this.arrowPrimitiveElement.scaleInteraction.endScale, this.arrowPrimitiveElement.scaleInteraction); - // -- Draw - this.drawInteraction.on("endDraw", this.endArrowPrimitiveDraw, this); - this.drawInteraction.on("abortDraw", this.abortArrowPrimitiveDraw, this); - //</editor-fold> + if (this.triggerImmediateEndDraw) { + this.endArrowPrimitiveDraw() + } else { + //<editor-fold desc="Events"> + // -- Image + this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction); + this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction); + this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction); + this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction); + // -- Scale + this.drawInteraction.on("startScale", this.arrowPrimitiveElement.scaleInteraction.startScale, this.arrowPrimitiveElement.scaleInteraction); + this.drawInteraction.on("onScale", this.arrowPrimitiveElement.scaleInteraction.onScale, this.arrowPrimitiveElement.scaleInteraction); + this.drawInteraction.on("endScale", this.arrowPrimitiveElement.scaleInteraction.endScale, this.arrowPrimitiveElement.scaleInteraction); + // -- Draw + this.drawInteraction.on("endDraw", this.endArrowPrimitiveDraw, this); + this.drawInteraction.on("abortDraw", this.abortArrowPrimitiveDraw, this); + //</editor-fold> + } } /** @@ -252,8 +257,20 @@ export class ArrowPrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image, Ar } this.positionPointElement.model.primitives.push(this.arrowPrimitiveElement.model as any); - // End arrow primitive draw - this.endArrowPrimitiveDraw(); + if (this.triggerImmediateEndDraw) { + this.endArrowPrimitiveDraw(); + } else { + //<editor-fold desc="Events"> + // -- Image + this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction); + this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction); + this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction); + this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction); + // -- Draw + this.drawInteraction.on("endDraw", this.endArrowPrimitiveDraw, this); + this.drawInteraction.on("abortDraw", this.abortArrowPrimitiveDraw, this); + //</editor-fold> + } } /** @@ -369,5 +386,20 @@ export class ArrowPrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image, Ar public set rotateWithLine(value: boolean) { this.data.rotateWithLine = value; } + + /** + * Get trigger immediate end draw + */ + public get triggerImmediateEndDraw(): boolean { + return this.data.triggerImmediateEndDraw; + } + + /** + * Set trigger immediate end draw + * @param value + */ + public set triggerImmediateEndDraw(value: boolean) { + this.data.triggerImmediateEndDraw = value; + } //</editor-fold> } \ No newline at end of file diff --git a/src/lib/generators/primitives/EllipsePrimitiveGenerator.ts b/src/lib/generators/primitives/EllipsePrimitiveGenerator.ts index 55768da2..9800721a 100644 --- a/src/lib/generators/primitives/EllipsePrimitiveGenerator.ts +++ b/src/lib/generators/primitives/EllipsePrimitiveGenerator.ts @@ -9,6 +9,7 @@ import {PositionPointGeneratorModel} from "../positionings/PositionPointGenerato export class EllipsePrimitiveGeneratorModel extends PositionPointGeneratorModel { startElement?: MedsurfDraw.PositionPoint; rotateWithLine: boolean; + triggerImmediateEndDraw: boolean; } /** @@ -226,20 +227,24 @@ export class EllipsePrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image, } this.positionPointElement.model.primitives.push(this.ellipsePrimitiveElement.model as any); - //<editor-fold desc="Events"> - // -- Image - this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction); - this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction); - this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction); - this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction); - // ---- Scale - this.drawInteraction.on("startScale", this.ellipsePrimitiveElement.scaleInteraction.startScale, this.ellipsePrimitiveElement.scaleInteraction); - this.drawInteraction.on("onScale", this.ellipsePrimitiveElement.scaleInteraction.onScale, this.ellipsePrimitiveElement.scaleInteraction); - this.drawInteraction.on("endScale", this.ellipsePrimitiveElement.scaleInteraction.endScale, this.ellipsePrimitiveElement.scaleInteraction); - // -- Draw - this.drawInteraction.on("endDraw", this.endEllipsePrimitiveDraw, this); - this.drawInteraction.on("abortDraw", this.abortEllipsePrimitiveDraw, this); - //</editor-fold> + if (this.triggerImmediateEndDraw) { + this.endEllipsePrimitiveDraw(); + } else { + //<editor-fold desc="Events"> + // -- Image + this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction); + this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction); + this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction); + this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction); + // ---- Scale + this.drawInteraction.on("startScale", this.ellipsePrimitiveElement.scaleInteraction.startScale, this.ellipsePrimitiveElement.scaleInteraction); + this.drawInteraction.on("onScale", this.ellipsePrimitiveElement.scaleInteraction.onScale, this.ellipsePrimitiveElement.scaleInteraction); + this.drawInteraction.on("endScale", this.ellipsePrimitiveElement.scaleInteraction.endScale, this.ellipsePrimitiveElement.scaleInteraction); + // -- Draw + this.drawInteraction.on("endDraw", this.endEllipsePrimitiveDraw, this); + this.drawInteraction.on("abortDraw", this.abortEllipsePrimitiveDraw, this); + //</editor-fold> + } } /** @@ -252,8 +257,20 @@ export class EllipsePrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image, } this.positionPointElement.model.primitives.push(this.ellipsePrimitiveElement.model as any); - // End ellipse primitive draw - this.endEllipsePrimitiveDraw(); + if (this.triggerImmediateEndDraw) { + this.endEllipsePrimitiveDraw(); + } else { + //<editor-fold desc="Events"> + // -- Image + this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction); + this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction); + this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction); + this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction); + // -- Draw + this.drawInteraction.on("endDraw", this.endEllipsePrimitiveDraw, this); + this.drawInteraction.on("abortDraw", this.abortEllipsePrimitiveDraw, this); + //</editor-fold> + } } /** @@ -369,5 +386,20 @@ export class EllipsePrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image, public set rotateWithLine(value: boolean) { this.data.rotateWithLine = value; } + + /** + * Get trigger immediate end draw + */ + public get triggerImmediateEndDraw(): boolean { + return this.data.triggerImmediateEndDraw; + } + + /** + * Set trigger immediate end draw + * @param value + */ + public set triggerImmediateEndDraw(value: boolean) { + this.data.triggerImmediateEndDraw = value; + } //</editor-fold> } \ No newline at end of file diff --git a/src/lib/generators/primitives/RectanglePrimitiveGenerator.ts b/src/lib/generators/primitives/RectanglePrimitiveGenerator.ts index df5e2294..4312e654 100644 --- a/src/lib/generators/primitives/RectanglePrimitiveGenerator.ts +++ b/src/lib/generators/primitives/RectanglePrimitiveGenerator.ts @@ -9,6 +9,7 @@ import {PositionPointGeneratorModel} from "../positionings/PositionPointGenerato export class RectanglePrimitiveGeneratorModel extends PositionPointGeneratorModel { startElement?: MedsurfDraw.PositionPoint; rotateWithLine: boolean; + triggerImmediateEndDraw: boolean; } /** @@ -225,20 +226,24 @@ export class RectanglePrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image } this.positionPointElement.model.primitives.push(this.rectanglePrimitiveElement.model as any); - //<editor-fold desc="Events"> - // -- Image - this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction); - this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction); - this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction); - this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction); - // ---- Scale - this.drawInteraction.on("startScale", this.rectanglePrimitiveElement.scaleInteraction.startScale, this.rectanglePrimitiveElement.scaleInteraction); - this.drawInteraction.on("onScale", this.rectanglePrimitiveElement.scaleInteraction.onScale, this.rectanglePrimitiveElement.scaleInteraction); - this.drawInteraction.on("endScale", this.rectanglePrimitiveElement.scaleInteraction.endScale, this.rectanglePrimitiveElement.scaleInteraction); - // -- Draw - this.drawInteraction.on("endDraw", this.endRectanglePrimitiveDraw, this); - this.drawInteraction.on("abortDraw", this.abortRectanglePrimitiveDraw, this); - //</editor-fold> + if (this.triggerImmediateEndDraw) { + this.endRectanglePrimitiveDraw(); + } else { + //<editor-fold desc="Events"> + // -- Image + this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction); + this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction); + this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction); + this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction); + // ---- Scale + this.drawInteraction.on("startScale", this.rectanglePrimitiveElement.scaleInteraction.startScale, this.rectanglePrimitiveElement.scaleInteraction); + this.drawInteraction.on("onScale", this.rectanglePrimitiveElement.scaleInteraction.onScale, this.rectanglePrimitiveElement.scaleInteraction); + this.drawInteraction.on("endScale", this.rectanglePrimitiveElement.scaleInteraction.endScale, this.rectanglePrimitiveElement.scaleInteraction); + // -- Draw + this.drawInteraction.on("endDraw", this.endRectanglePrimitiveDraw, this); + this.drawInteraction.on("abortDraw", this.abortRectanglePrimitiveDraw, this); + //</editor-fold> + } } /** @@ -251,8 +256,20 @@ export class RectanglePrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image } this.positionPointElement.model.primitives.push(this.rectanglePrimitiveElement.model as any); - // End rectangle primitive draw - this.endRectanglePrimitiveDraw(); + if (this.triggerImmediateEndDraw) { + this.endRectanglePrimitiveDraw(); + } else { + //<editor-fold desc="Events"> + // -- Image + this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction); + this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction); + this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction); + this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction); + // -- Draw + this.drawInteraction.on("endDraw", this.endRectanglePrimitiveDraw, this); + this.drawInteraction.on("abortDraw", this.abortRectanglePrimitiveDraw, this); + //</editor-fold> + } } /** @@ -368,5 +385,20 @@ export class RectanglePrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image public set rotateWithLine(value: boolean) { this.data.rotateWithLine = value; } + + /** + * Get trigger immediate end draw + */ + public get triggerImmediateEndDraw(): boolean { + return this.data.triggerImmediateEndDraw; + } + + /** + * Set trigger immediate end draw + * @param value + */ + public set triggerImmediateEndDraw(value: boolean) { + this.data.triggerImmediateEndDraw = value; + } //</editor-fold> } \ No newline at end of file diff --git a/src/lib/generators/primitives/TextPrimitiveGenerator.ts b/src/lib/generators/primitives/TextPrimitiveGenerator.ts index 721b24d3..d1fcfb94 100644 --- a/src/lib/generators/primitives/TextPrimitiveGenerator.ts +++ b/src/lib/generators/primitives/TextPrimitiveGenerator.ts @@ -9,6 +9,7 @@ import {PositionPointGeneratorModel} from "../positionings/PositionPointGenerato export class TextPrimitiveGeneratorModel extends PositionPointGeneratorModel { startElement?: MedsurfDraw.PositionPoint; rotateWithLine: boolean; + triggerImmediateEndDraw: boolean; } /** @@ -225,20 +226,24 @@ export class TextPrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image, Tex } this.positionPointElement.model.primitives.push(this.textPrimitiveElement.model as any); - //<editor-fold desc="Events"> - // -- Image - this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction); - this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction); - this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction); - this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction); - // ---- Scale - this.drawInteraction.on("startScale", this.textPrimitiveElement.scaleInteraction.startScale, this.textPrimitiveElement.scaleInteraction); - this.drawInteraction.on("onScale", this.textPrimitiveElement.scaleInteraction.onScale, this.textPrimitiveElement.scaleInteraction); - this.drawInteraction.on("endScale", this.textPrimitiveElement.scaleInteraction.endScale, this.textPrimitiveElement.scaleInteraction); - // -- Draw - this.drawInteraction.on("endDraw", this.endTextPrimitiveDraw, this); - this.drawInteraction.on("abortDraw", this.abortTextPrimitiveDraw, this); - //</editor-fold> + if (this.triggerImmediateEndDraw) { + this.endTextPrimitiveDraw() + } else { + //<editor-fold desc="Events"> + // -- Image + this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction); + this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction); + this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction); + this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction); + // ---- Scale + this.drawInteraction.on("startScale", this.textPrimitiveElement.scaleInteraction.startScale, this.textPrimitiveElement.scaleInteraction); + this.drawInteraction.on("onScale", this.textPrimitiveElement.scaleInteraction.onScale, this.textPrimitiveElement.scaleInteraction); + this.drawInteraction.on("endScale", this.textPrimitiveElement.scaleInteraction.endScale, this.textPrimitiveElement.scaleInteraction); + // -- Draw + this.drawInteraction.on("endDraw", this.endTextPrimitiveDraw, this); + this.drawInteraction.on("abortDraw", this.abortTextPrimitiveDraw, this); + //</editor-fold> + } } /** @@ -251,8 +256,21 @@ export class TextPrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image, Tex } this.positionPointElement.model.primitives.push(this.textPrimitiveElement.model as any); - // End text primitive draw - this.endTextPrimitiveDraw(); + // Check for trigger var + if (this.triggerImmediateEndDraw) { + this.endTextPrimitiveDraw() + } else { + //<editor-fold desc="Events"> + // -- Image + this.target.on("mousedown", this.drawInteraction.startDrawScale, this.drawInteraction); + this.target.on("rightup", this.drawInteraction.abortDraw, this.drawInteraction); + this.target.on("pointermove", this.drawInteraction.onDraw, this.drawInteraction); + this.target.on("mouseup", this.drawInteraction.endDraw, this.drawInteraction); + // -- Draw + this.drawInteraction.on("endDraw", this.endTextPrimitiveDraw, this); + this.drawInteraction.on("abortDraw", this.abortTextPrimitiveDraw, this); + //</editor-fold> + } } /** @@ -368,5 +386,20 @@ export class TextPrimitiveGenerator extends BaseGenerator<MedsurfDraw.Image, Tex public set rotateWithLine(value: boolean) { this.data.rotateWithLine = value; } + + /** + * Get trigger immediate end draw + */ + public get triggerImmediateEndDraw(): boolean { + return this.data.triggerImmediateEndDraw; + } + + /** + * Set trigger immediate end draw + * @param value + */ + public set triggerImmediateEndDraw(value: boolean) { + this.data.triggerImmediateEndDraw = value; + } //</editor-fold> } \ No newline at end of file -- GitLab