From dc7f748d8f03aba605631965e21fb3ebfa675efa Mon Sep 17 00:00:00 2001 From: Johannes Bunk Date: Mon, 15 Apr 2024 18:28:03 +0200 Subject: [PATCH 1/2] fix scroll bug --- packages/core/src/RenderingEngine/StackViewport.ts | 11 ++++++++--- packages/core/src/types/IStackViewport.ts | 5 ++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/packages/core/src/RenderingEngine/StackViewport.ts b/packages/core/src/RenderingEngine/StackViewport.ts index 2b0312d83c..71f13c559b 100644 --- a/packages/core/src/RenderingEngine/StackViewport.ts +++ b/packages/core/src/RenderingEngine/StackViewport.ts @@ -2445,8 +2445,9 @@ class StackViewport extends Viewport implements IStackViewport, IImagesLoader { /** * Loads the image based on the provided imageIdIndex * @param imageIdIndex - number represents imageId index + * @param overwriteScrollIndex - can be used to also set the start position of scroll() to this index */ - private async _setImageIdIndex(imageIdIndex: number): Promise { + private async _setImageIdIndex(imageIdIndex: number, overwriteScrollIndex: boolean = false): Promise { if (imageIdIndex >= this.imageIds.length) { throw new Error( `ImageIdIndex provided ${imageIdIndex} is invalid, the stack only has ${this.imageIds.length} elements` @@ -2455,6 +2456,9 @@ class StackViewport extends Viewport implements IStackViewport, IImagesLoader { // Update the state of the viewport to the new imageIdIndex; this.currentImageIdIndex = imageIdIndex; + if (overwriteScrollIndex) { + this.targetImageIdIndex = this.currentImageIdIndex; + } this.hasPixelSpacing = true; this.viewportStatus = ViewportStatus.PRE_RENDER; @@ -2583,8 +2587,9 @@ class StackViewport extends Viewport implements IStackViewport, IImagesLoader { * * @param imageIdIndex - number represents imageId index in the list of * provided imageIds in setStack + * @param overwriteScrollIndex - can be used to also set the start position of scroll() to this index */ - public setImageIdIndex(imageIdIndex: number): Promise { + public setImageIdIndex(imageIdIndex: number, overwriteScrollIndex: boolean = false): Promise { this._throwIfDestroyed(); // If we are already on this imageId index, stop here @@ -2593,7 +2598,7 @@ class StackViewport extends Viewport implements IStackViewport, IImagesLoader { } // Otherwise, get the imageId and attempt to display it - const imageIdPromise = this._setImageIdIndex(imageIdIndex); + const imageIdPromise = this._setImageIdIndex(imageIdIndex, overwriteScrollIndex); return imageIdPromise; } diff --git a/packages/core/src/types/IStackViewport.ts b/packages/core/src/types/IStackViewport.ts index 5d7dfce45a..754eaa4c9f 100644 --- a/packages/core/src/types/IStackViewport.ts +++ b/packages/core/src/types/IStackViewport.ts @@ -158,7 +158,10 @@ export default interface IStackViewport extends IViewport { * Loads the image based on the provided imageIdIndex. It is an Async function which * returns a promise that resolves to the imageId. */ - setImageIdIndex(imageIdIndex: number): Promise; + setImageIdIndex( + imageIdIndex: number, + overwriteScrollIndex: boolean + ): Promise; /** * Calibrates the image with new metadata that has been added for imageId. To calibrate * a viewport, you should add your calibration data manually to From d6139f2c9d77dd58520484061ebfa5433398fe43 Mon Sep 17 00:00:00 2001 From: Johannes Bunk Date: Mon, 15 Apr 2024 19:27:18 +0200 Subject: [PATCH 2/2] api fix --- common/reviews/api/core.api.md | 4 ++-- .../core/src/RenderingEngine/StackViewport.ts | 15 ++++++++++++--- packages/core/src/types/IStackViewport.ts | 2 +- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/common/reviews/api/core.api.md b/common/reviews/api/core.api.md index cbc9502eb8..da10ed9768 100644 --- a/common/reviews/api/core.api.md +++ b/common/reviews/api/core.api.md @@ -2094,7 +2094,7 @@ interface IStackViewport extends IViewport { // (undocumented) setDefaultProperties(ViewportProperties: StackViewportProperties, imageId?: string): void; // (undocumented) - setImageIdIndex(imageIdIndex: number): Promise; + setImageIdIndex(imageIdIndex: number, overwriteScrollIndex?: boolean): Promise; // (undocumented) setProperties({ voiRange, invert, interpolationType, rotation, colormap, }: StackViewportProperties, suppressEvents?: boolean): void; // (undocumented) @@ -3138,7 +3138,7 @@ export class StackViewport extends Viewport implements IStackViewport, IImagesLo // (undocumented) setDefaultProperties(ViewportProperties: StackViewportProperties, imageId?: string): void; // (undocumented) - setImageIdIndex(imageIdIndex: number): Promise; + setImageIdIndex(imageIdIndex: number, overwriteScrollIndex?: any): Promise; // (undocumented) protected setInterpolationType: (interpolationType: InterpolationType) => void; // (undocumented) diff --git a/packages/core/src/RenderingEngine/StackViewport.ts b/packages/core/src/RenderingEngine/StackViewport.ts index 71f13c559b..8628ba8b02 100644 --- a/packages/core/src/RenderingEngine/StackViewport.ts +++ b/packages/core/src/RenderingEngine/StackViewport.ts @@ -2447,7 +2447,10 @@ class StackViewport extends Viewport implements IStackViewport, IImagesLoader { * @param imageIdIndex - number represents imageId index * @param overwriteScrollIndex - can be used to also set the start position of scroll() to this index */ - private async _setImageIdIndex(imageIdIndex: number, overwriteScrollIndex: boolean = false): Promise { + private async _setImageIdIndex( + imageIdIndex: number, + overwriteScrollIndex?: boolean + ): Promise { if (imageIdIndex >= this.imageIds.length) { throw new Error( `ImageIdIndex provided ${imageIdIndex} is invalid, the stack only has ${this.imageIds.length} elements` @@ -2589,7 +2592,10 @@ class StackViewport extends Viewport implements IStackViewport, IImagesLoader { * provided imageIds in setStack * @param overwriteScrollIndex - can be used to also set the start position of scroll() to this index */ - public setImageIdIndex(imageIdIndex: number, overwriteScrollIndex: boolean = false): Promise { + public setImageIdIndex( + imageIdIndex: number, + overwriteScrollIndex? + ): Promise { this._throwIfDestroyed(); // If we are already on this imageId index, stop here @@ -2598,7 +2604,10 @@ class StackViewport extends Viewport implements IStackViewport, IImagesLoader { } // Otherwise, get the imageId and attempt to display it - const imageIdPromise = this._setImageIdIndex(imageIdIndex, overwriteScrollIndex); + const imageIdPromise = this._setImageIdIndex( + imageIdIndex, + overwriteScrollIndex + ); return imageIdPromise; } diff --git a/packages/core/src/types/IStackViewport.ts b/packages/core/src/types/IStackViewport.ts index 754eaa4c9f..b414e89aa2 100644 --- a/packages/core/src/types/IStackViewport.ts +++ b/packages/core/src/types/IStackViewport.ts @@ -160,7 +160,7 @@ export default interface IStackViewport extends IViewport { */ setImageIdIndex( imageIdIndex: number, - overwriteScrollIndex: boolean + overwriteScrollIndex?: boolean ): Promise; /** * Calibrates the image with new metadata that has been added for imageId. To calibrate