All files / packages/streaming-image-volume-loader/src/helpers autoLoad.ts

44.44% Statements 8/18
37.5% Branches 3/8
50% Functions 2/4
50% Lines 8/16

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58                                1x   15x   15x 15x                         15x   15x   15x                             15x        
import { getRenderingEngines, utilities } from '@cornerstonejs/core';
import type { Types } from '@cornerstonejs/core';
 
//import type { Types } from '@cornerstonejs/core'
 
type RenderingEngineAndViewportIds = {
  renderingEngine: Types.IRenderingEngine | undefined; //Types.IRenderingEngine | undefined
  viewportIds: Array<string>;
};
 
/**
 * Given a volumeId, it finds the viewports and renderingEngines that
 * include that volume, and triggers a render if renderingEngine is available.
 *
 * @param volumeId - The Id of the volume
 */
const autoLoad = (volumeId: string): void => {
  const renderingEngineAndViewportIds =
    getRenderingEngineAndViewportsContainingVolume(volumeId);
 
  Eif (!renderingEngineAndViewportIds || !renderingEngineAndViewportIds.length) {
    return;
  }
 
  renderingEngineAndViewportIds.forEach(({ renderingEngine, viewportIds }) => {
    if (!renderingEngine.hasBeenDestroyed) {
      renderingEngine.renderViewports(viewportIds);
    }
  });
};
 
function getRenderingEngineAndViewportsContainingVolume(
  volumeId: string
): Array<RenderingEngineAndViewportIds> {
  const renderingEnginesArray = getRenderingEngines();
 
  const renderingEngineAndViewportIds = [];
 
  for (let i = 0; i < renderingEnginesArray.length; i++) {
    const renderingEngine = renderingEnginesArray[i];
    const viewports = utilities.getViewportsWithVolumeId(
      volumeId,
      renderingEngine.id
    );
 
    if (viewports.length) {
      renderingEngineAndViewportIds.push({
        renderingEngine,
        viewportIds: viewports.map((viewport) => viewport.id),
      });
    }
  }
 
  return renderingEngineAndViewportIds;
}
 
export default autoLoad;