cornerstone3D icon indicating copy to clipboard operation
cornerstone3D copied to clipboard

fix(StackViewport): weird interaction between scroll() and setImageIdIndex()

Open jobunk opened this issue 1 year ago • 5 comments

Context

I had encountered an issue in the StackViewport class, where the user would scroll, afterwards use the public method "setImageIdIndex()" to jump to a specific image and then continue scrolling. The expected behavior in this situation would be to that the viewport continues scrolling from the image that the user just jumped to. However the actual behavior was that the scrolling would pick up back where the user had last scrolled and completely ignore the "setImageIdIndex()" that had happened.

Changes & Results

This happens because "this.targetImageIdIndex", which is used during scrolling, was never updated. My workaround was to just use the "setStack()" method instead, since it actually updates "this.targetImageIdIndex" correctly. However I believe that that is not the intended use of the method, so here is my suggested fix. It adds an optional boolean that tells the viewport to also move the scrolling position to the given index. This boolean is optional, because the method is also called from within scroll(), in which case we don't want to adjust the targetImageIdIndex.

Testing

I only tested it locally in the context of my project. The idea is to scroll to an image, then jump to another image far away using "setImageIdIndex(, true)" and then continue scrolling. If the scrolling picks up from the position that you jumped to, the error has been fixed. I also didn't see any weird behavior with other functions, which makes sense, since it's an optional input parameter that was added.

Checklist

PR

  • [x] My Pull Request title is descriptive, accurate and follows the semantic-release format and guidelines.

Code

  • [x] My code has been well-documented (function documentation, inline comments, etc.)

  • [x] I have run the yarn build:update-api to update the API documentation, and have committed the changes to this PR. (Read more here https://www.cornerstonejs.org/docs/contribute/update-api)

Public Documentation Updates

  • [x] The documentation page has been updated as necessary for any public API additions or removals.

Sorry I'm not sure if this is needed here.

Tested Environment

  • [x] "OS: Windows
  • [x] "Node version: v20.12.2
  • [x] "Browser: Firefox

jobunk avatar Apr 15 '24 17:04 jobunk