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 2b0312d83c..8628ba8b02 100644 --- a/packages/core/src/RenderingEngine/StackViewport.ts +++ b/packages/core/src/RenderingEngine/StackViewport.ts @@ -2445,8 +2445,12 @@ 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 + ): Promise { if (imageIdIndex >= this.imageIds.length) { throw new Error( `ImageIdIndex provided ${imageIdIndex} is invalid, the stack only has ${this.imageIds.length} elements` @@ -2455,6 +2459,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 +2590,12 @@ 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? + ): Promise { this._throwIfDestroyed(); // If we are already on this imageId index, stop here @@ -2593,7 +2604,10 @@ 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..b414e89aa2 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