All files / extensions/cornerstone/src/utils segmentUtils.ts

5.55% Statements 1/18
0% Branches 0/4
0% Functions 0/2
5.55% Lines 1/18

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    34x                                                                                          
import SegmentationServiceType from '../services/SegmentationService';
 
export const handleSegmentChange = ({
  direction,
  segDisplaySet,
  viewportId,
  selectedSegmentObjectIndex,
  segmentationService,
}: {
  direction: number;
  segDisplaySet: AppTypes.DisplaySet;
  viewportId: string;
  selectedSegmentObjectIndex: number;
  segmentationService: SegmentationServiceType;
}) => {
  const segmentationId = segDisplaySet.displaySetInstanceUID;
  const segmentation = segmentationService.getSegmentation(segmentationId);
 
  const { segments } = segmentation;
 
  const numberOfSegments = Object.keys(segments).length;
 
  // Get activeSegment each time because the user can select any segment from the list and thus the index should be updated
  const activeSegment = segmentationService.getActiveSegment(viewportId);
  Iif (activeSegment) {
    // from the activeSegment get the actual object array index to be used
    selectedSegmentObjectIndex = Object.values(segments).findIndex(
      segment => segment.segmentIndex === activeSegment.segmentIndex
    );
  }
  let newSelectedSegmentIndex = selectedSegmentObjectIndex + direction;
 
  // Handle looping through list of segments
  if (newSelectedSegmentIndex > numberOfSegments - 1) {
    newSelectedSegmentIndex = 0;
  } else Iif (newSelectedSegmentIndex < 0) {
    newSelectedSegmentIndex = numberOfSegments - 1;
  }
 
  // Convert segmentationId from object array index to property value of type Segment
  // Functions below use the segmentIndex object attribute so we have to do the conversion
  const segmentIndex = Object.values(segments)[newSelectedSegmentIndex]?.segmentIndex;
 
  segmentationService.setActiveSegment(segmentationId, segmentIndex);
  segmentationService.jumpToSegmentCenter(segmentationId, segmentIndex, viewportId);
  selectedSegmentObjectIndex = newSelectedSegmentIndex;
};