diff --git a/package.json b/package.json index 765cbbb2bcd5214d68cc4720629f58c92c61a0b8..a521c8de05a794369102e2be7a2f1cd8bdb914fd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "medsurf-draw", - "version": "1.0.235", + "version": "1.0.237", "description": "Draw annotations on jpg/zoomify images, based on PIXI.js", "keywords": [ "draw", diff --git a/src/app/index.ts b/src/app/index.ts index 16a43c9a9116cb2149308a5a775478629ac3707d..f39749df4a7e16f34568b8a9fa00574c67241fe0 100644 --- a/src/app/index.ts +++ b/src/app/index.ts @@ -572,7 +572,7 @@ async function setupImageObjects() { y: 100 / image.dimensions.width, }, isSelftest: true, - selftestItems: ['rectanglePoint', 'textPoint'], + selftestItems: ['rectanglePoint', 'line1', 'textPoint'], primitives: [] }); image.addChild(arrowPoint); diff --git a/src/lib/elements/positionings/PositionPoint.ts b/src/lib/elements/positionings/PositionPoint.ts index ba4e81f296ff2250e26e76161ba9814d057f977d..a9125b33b352024be85654784eb18ff7618ac1df 100644 --- a/src/lib/elements/positionings/PositionPoint.ts +++ b/src/lib/elements/positionings/PositionPoint.ts @@ -1543,65 +1543,55 @@ export class PositionPoint extends BaseElementContainer<Models.PositionPoint, Ba public onSelftest(): void { // Set default mode for image children this.getImage().getImageObjects() - .filter((imageObject) => imageObject !== this) .forEach((imageObject) => { - if (this.model.selftestItems) { - if (this.model.selftestItems.indexOf(imageObject.name as string) > -1) { - imageObject.showItem(); - if (imageObject instanceof MedsurfDraw.PositionPoint) { - imageObject.children.forEach((child) => { - if (child instanceof MedsurfDraw.ArrowPrimitive) { - child.showItem(); - // @ts-ignore - child._arrowElement.alpha = 1; - // @ts-ignore - child._arrowElement.showItem(); - // @ts-ignore - child._selftestElement.alpha = 0; - } else if (child instanceof MedsurfDraw.BackgroundRectanglePrimitive) { - child.showItem(); - // @ts-ignore - child._rectangleElement.alpha = 1; - // @ts-ignore - child._rectangleElement.showItem(); - } else if (child instanceof MedsurfDraw.EllipsePrimitive) { - child.showItem(); - // @ts-ignore - child._ellipseElement.alpha = 1; - // @ts-ignore - child._ellipseElement.showItem(); - // @ts-ignore - child._selftestElement.alpha = 0; - } else if (child instanceof MedsurfDraw.RectanglePrimitive) { - child.showItem(); - // @ts-ignore - child._rectangleElement.alpha = 1; - // @ts-ignore - child._rectangleElement.showItem(); - // @ts-ignore - child._selftestElement.alpha = 0; - } else if (child instanceof MedsurfDraw.TextPrimitive) { - child.showItem(); - // @ts-ignore - child._textElement.alpha = 1; - // @ts-ignore - child._textElement.showItem(); - // @ts-ignore - child._selftestElement.alpha = 0; - } - }); - } - } else if (imageObject instanceof MedsurfDraw.LegendCollection) { - const legendRows = imageObject.legendColumns.map(lc => lc.legendRows) - .reduce((cur, acc: any) => [...cur, ...acc], []) - .map((lr) => { return {name: lr.model.id, element: lr}; }); - for (let legendRow of legendRows) { - if (this.model.selftestItems.indexOf(legendRow.name) > -1) { - legendRow.element.showItem(); + if (imageObject === this + || (this.model.selftestItems + && this.model.selftestItems.indexOf(imageObject.name as string) > -1)) { + if (imageObject instanceof MedsurfDraw.PositionPoint) { + imageObject.children.forEach((child) => { + if (child instanceof MedsurfDraw.BackgroundRectanglePrimitive) { + child.showItem(); + // @ts-ignore + child._rectangleElement.showItem(); } + else if (child instanceof MedsurfDraw.ArrowPrimitive) { + child.showItem(); + // @ts-ignore + child._arrowElement.showItem(); + // @ts-ignore + child._selftestElement.hideItem(); + } else if (child instanceof MedsurfDraw.EllipsePrimitive) { + child.showItem(); + // @ts-ignore + child._ellipseElement.showItem(); + // @ts-ignore + child._selftestElement.hideItem(); + } else if (child instanceof MedsurfDraw.RectanglePrimitive) { + child.showItem(); + // @ts-ignore + child._rectangleElement.showItem(); + // @ts-ignore + child._selftestElement.hideItem(); + } else if (child instanceof MedsurfDraw.TextPrimitive) { + child.showItem(); + // @ts-ignore + child._textElement.showItem(); + // @ts-ignore + child._selftestElement.hideItem(); + } + }); + } + imageObject.showItem(); + } else if (imageObject instanceof MedsurfDraw.LegendCollection && this.model.selftestItems) { + const legendRows = imageObject.legendColumns.map(lc => lc.legendRows) + .reduce((cur, acc: any) => [...cur, ...acc], []) + .map((lr) => { + return {name: lr.model.id, element: lr}; + }); + for (let legendRow of legendRows) { + if (this.model.selftestItems.indexOf(legendRow.name) > -1) { + legendRow.element.showItem(); } - } else { - imageObject.hideItem(); } } else { imageObject.hideItem(); diff --git a/src/lib/elements/primitives/ArrowPrimitive.ts b/src/lib/elements/primitives/ArrowPrimitive.ts index bef58eb95ce72cd5429fb5225e71431b9f482b6d..f0575b13b9e93363456d1b41820324462b2841d5 100644 --- a/src/lib/elements/primitives/ArrowPrimitive.ts +++ b/src/lib/elements/primitives/ArrowPrimitive.ts @@ -542,6 +542,9 @@ export class ArrowPrimitive extends BaseElementContainer<Models.ArrowPrimitive, * @private */ protected _modeDefault(): void { + // Setup + this._selftestSelected = false; + if (this.model.isStatic) { // Show item this.showItem(); @@ -563,6 +566,9 @@ export class ArrowPrimitive extends BaseElementContainer<Models.ArrowPrimitive, * @private */ protected _modeMarker(): void { + // Setup + this._selftestSelected = false; + // Show item this.showItem(); } @@ -596,16 +602,17 @@ export class ArrowPrimitive extends BaseElementContainer<Models.ArrowPrimitive, // Show item this.showItem(); + + // Draw + this.emit("debounceDraw"); } else if (positionPoint.model.isSelftest) { // Setup this.interactive = true; this.cursor = "select"; // -- Arrow element - this._arrowElement.alpha = 0; this._arrowElement.hideItem(); // -- Selftest element - this._selftestElement.alpha = 1; this._selftestElement.showItem() // Events @@ -614,6 +621,12 @@ export class ArrowPrimitive extends BaseElementContainer<Models.ArrowPrimitive, this.on("pointerout", this.selectInteraction.onOut, this.selectInteraction); this.on("mousedown", this.selectInteraction.onPointerDown, this.selectInteraction); this.on("mouseup", this.selectInteraction.onSelftest, this.selectInteraction); + + // Show item + this.showItem(); + + // Draw + this.emit("debounceDraw"); } else { // Hide Item this.hideItem(); @@ -630,7 +643,6 @@ export class ArrowPrimitive extends BaseElementContainer<Models.ArrowPrimitive, // Elements // -- Arrow element - this._arrowElement.alpha = 1; this._arrowElement.showItem(); // -- Selftest element this._selftestElement.hideItem(); @@ -649,6 +661,7 @@ export class ArrowPrimitive extends BaseElementContainer<Models.ArrowPrimitive, protected _modeAuthor(): void { // Setup this.interactive = true; + this._selftestSelected = false; // Events this.on("pointerover", this.selectInteraction.onHover, this.selectInteraction); diff --git a/src/lib/elements/primitives/BackgroundRectanglePrimitive.ts b/src/lib/elements/primitives/BackgroundRectanglePrimitive.ts index e6ee67ecb3140fd585981b0349e01dffb5d6d01a..6089642ec44c41df5a5796398c3715fa4e843172 100644 --- a/src/lib/elements/primitives/BackgroundRectanglePrimitive.ts +++ b/src/lib/elements/primitives/BackgroundRectanglePrimitive.ts @@ -19,7 +19,6 @@ export class BackgroundRectanglePrimitive extends BaseElementContainer<Models.Ba * Members */ protected _primitive: MedsurfDraw.PrimitiveObject | null; - protected _selftestSelected = false; /** * Interactions @@ -602,7 +601,6 @@ export class BackgroundRectanglePrimitive extends BaseElementContainer<Models.Ba // Elements // -- Rectangle element - this._rectangleElement.alpha = 1; this._rectangleElement.showItem(); // Events diff --git a/src/lib/elements/primitives/EllipsePrimitive.ts b/src/lib/elements/primitives/EllipsePrimitive.ts index ee3410501b20b42bf6f352ef1c8090d42ed5e54c..106e7983817f2012aefd27e9b6a89fffc0e9ef2e 100644 --- a/src/lib/elements/primitives/EllipsePrimitive.ts +++ b/src/lib/elements/primitives/EllipsePrimitive.ts @@ -510,6 +510,9 @@ export class EllipsePrimitive extends BaseElementContainer<Models.EllipsePrimiti * @private */ protected _modeDefault(): void { + // Setup + this._selftestSelected = false; + if (this.model.isStatic) { // Show item this.showItem(); @@ -531,6 +534,9 @@ export class EllipsePrimitive extends BaseElementContainer<Models.EllipsePrimiti * @private */ protected _modeMarker(): void { + // Setup + this._selftestSelected = false; + // Show item this.showItem(); } @@ -564,16 +570,17 @@ export class EllipsePrimitive extends BaseElementContainer<Models.EllipsePrimiti // Show item this.showItem(); + + // Draw + this.emit("debounceDraw"); } else if (positionPoint.model.isSelftest) { // Setup this.interactive = true; this.cursor = "select"; // -- Ellipse element - this._ellipseElement.alpha = 0; this._ellipseElement.hideItem(); // -- Selftest element - this._selftestElement.alpha = 1; this._selftestElement.showItem() // Events @@ -582,6 +589,12 @@ export class EllipsePrimitive extends BaseElementContainer<Models.EllipsePrimiti this.on("pointerout", this.selectInteraction.onOut, this.selectInteraction); this.on("mousedown", this.selectInteraction.onPointerDown, this.selectInteraction); this.on("mouseup", this.selectInteraction.onSelftest, this.selectInteraction); + + // Show item + this.showItem(); + + // Draw + this.emit("debounceDraw"); } else { // Hide Item this.hideItem(); @@ -598,7 +611,6 @@ export class EllipsePrimitive extends BaseElementContainer<Models.EllipsePrimiti // Elements // -- Ellipse element - this._ellipseElement.alpha = 1; this._ellipseElement.showItem(); // -- Selftest element this._selftestElement.hideItem(); @@ -617,6 +629,7 @@ export class EllipsePrimitive extends BaseElementContainer<Models.EllipsePrimiti protected _modeAuthor(): void { // Setup this.interactive = true; + this._selftestSelected = false; // Events this.on("pointerover", this.selectInteraction.onHover, this.selectInteraction); diff --git a/src/lib/elements/primitives/RectanglePrimitive.ts b/src/lib/elements/primitives/RectanglePrimitive.ts index 4cb59e10eff343b47568317c351bb2ac7be4164b..52a89723008c3cc56e795bc08803cef6d56fb397 100644 --- a/src/lib/elements/primitives/RectanglePrimitive.ts +++ b/src/lib/elements/primitives/RectanglePrimitive.ts @@ -511,6 +511,9 @@ export class RectanglePrimitive extends BaseElementContainer<Models.RectanglePri * @private */ protected _modeDefault(): void { + // Setup + this._selftestSelected = false; + if (this.model.isStatic) { // Show item this.showItem(); @@ -532,6 +535,9 @@ export class RectanglePrimitive extends BaseElementContainer<Models.RectanglePri * @private */ protected _modeMarker(): void { + // Setup + this._selftestSelected = false; + // Show item this.showItem(); } @@ -565,16 +571,17 @@ export class RectanglePrimitive extends BaseElementContainer<Models.RectanglePri // Show item this.showItem(); + + // Draw + this.emit("debounceDraw"); } else if (positionPoint.model.isSelftest) { // Setup this.interactive = true; this.cursor = "select"; // -- Rectangle element - this._rectangleElement.alpha = 0; this._rectangleElement.hideItem(); // -- Selftest element - this._selftestElement.alpha = 1; this._selftestElement.showItem(); // Events @@ -583,6 +590,12 @@ export class RectanglePrimitive extends BaseElementContainer<Models.RectanglePri this.on("pointerout", this.selectInteraction.onOut, this.selectInteraction); this.on("mousedown", this.selectInteraction.onPointerDown, this.selectInteraction); this.on("mouseup", this.selectInteraction.onSelftest, this.selectInteraction); + + // Show item + this.showItem(); + + // Draw + this.emit("debounceDraw"); } else { // Hide Item this.hideItem(); @@ -599,7 +612,6 @@ export class RectanglePrimitive extends BaseElementContainer<Models.RectanglePri // Elements // -- Rectangle element - this._rectangleElement.alpha = 1; this._rectangleElement.showItem(); // -- Selftest element this._selftestElement.hideItem(); @@ -618,6 +630,7 @@ export class RectanglePrimitive extends BaseElementContainer<Models.RectanglePri protected _modeAuthor(): void { // Setup this.interactive = true; + this._selftestSelected = false; // Events this.on("pointerover", this.selectInteraction.onHover, this.selectInteraction); diff --git a/src/lib/elements/primitives/TextPrimitive.ts b/src/lib/elements/primitives/TextPrimitive.ts index ea2694a44600281f4862cd68a64e6c8dafd98ad4..61fcac92083f3baf24a04ed019af52e1d2427311 100644 --- a/src/lib/elements/primitives/TextPrimitive.ts +++ b/src/lib/elements/primitives/TextPrimitive.ts @@ -559,6 +559,9 @@ export class TextPrimitive extends BaseElementContainer<Models.TextPrimitive, Ba * @private */ protected _modeDefault(): void { + // Setup + this._selftestSelected = false; + // Elements // -- Text element this._textElement.onImageZoom(); @@ -586,6 +589,9 @@ export class TextPrimitive extends BaseElementContainer<Models.TextPrimitive, Ba * @private */ protected _modeMarker(): void { + // Setup + this._selftestSelected = false; + // Show item this.showItem(); } @@ -619,16 +625,17 @@ export class TextPrimitive extends BaseElementContainer<Models.TextPrimitive, Ba // Show item this.showItem(); + + // Draw + this.emit("debounceDraw"); } else if (positionPoint.model.isSelftest) { // Setup this.interactive = true; this.cursor = "select"; // -- Text element - this._textElement.alpha = 0; this._textElement.hideItem(); // -- Selftest element - this._selftestElement.alpha = 1; this._selftestElement.showItem(); // Events @@ -637,6 +644,12 @@ export class TextPrimitive extends BaseElementContainer<Models.TextPrimitive, Ba this.on("pointerout", this.selectInteraction.onOut, this.selectInteraction); this.on("mousedown", this.selectInteraction.onPointerDown, this.selectInteraction); this.on("mouseup", this.selectInteraction.onSelftest, this.selectInteraction); + + // Show item + this.showItem(); + + // Draw + this.emit("debounceDraw"); } else { // Hide Item this.hideItem(); @@ -653,7 +666,6 @@ export class TextPrimitive extends BaseElementContainer<Models.TextPrimitive, Ba // Elements // -- Text element - this._textElement.alpha = 1; this._textElement.showItem(); // -- Selftest element this._selftestElement.hideItem(); @@ -672,6 +684,7 @@ export class TextPrimitive extends BaseElementContainer<Models.TextPrimitive, Ba protected _modeAuthor(): void { // Setup this.interactive = true; + this._selftestSelected = false; // Events this.on("pointerover", this.selectInteraction.onHover, this.selectInteraction);