All files / extensions/cornerstone/src/customizations colorbarCustomization.ts

58.82% Statements 10/17
11.11% Branches 1/9
100% Functions 1/1
58.82% Lines 10/17

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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94                        43x 43x   43x             43x                                                         43x 43x 43x                         43x         43x               43x                            
import { colormaps } from '../utils/colormaps';
import {
  ColorbarPositionType,
  TickPositionType,
  PositionStylesMapType,
  PositionTickStylesMapType,
  ContainerStyleType,
  TickStyleType,
  ColorbarProperties,
} from '../types/Colorbar';
import { ColorMapPreset } from '../types/Colormap';
 
const defaultPosition: ColorbarPositionType = 'bottom';
const DefaultColormap = 'Grayscale';
 
const positionStyles: PositionStylesMapType = {
  left: { width: '15px' },
  right: { width: '15px' },
  bottom: { height: '15px' },
};
 
// Typed position-specific tick styles
const positionTickStyles: PositionTickStylesMapType = {
  bottom: {
    position: 'top',
    style: {
      labelOffset: 5,
      labelMargin: 13,
    },
  },
  right: {
    position: 'left',
    style: {
      labelMargin: 5,
    },
  },
  left: {
    position: 'right',
    style: {
      labelMargin: 5,
    },
  },
  top: {
    position: 'bottom',
    style: {
      labelMargin: 5,
    },
  },
};
 
// Get recommended tick position for a given colorbar position
const getTickPositionForPosition = (position: ColorbarPositionType): TickPositionType => {
  if (position === 'bottom') {
    return 'top';
  } else Eif (position === 'top') {
    return 'bottom';
  } else if (position === 'left') {
    return 'right';
  } else Iif (position === 'right') {
    return 'left';
  }
 
  return positionTickStyles[position]?.position || 'top';
};
 
// Container styles for colorbar
const containerStyles: ContainerStyleType = {
  cursor: 'initial',
};
 
// Tick styling
const tickStyles: TickStyleType = {
  font: '12px Arial',
  color: '#fff',
  maxNumTicks: 6,
  tickSize: 5,
  tickWidth: 1,
};
 
const colorbarConfig: Partial<ColorbarProperties> = {
  colorbarTickPosition: getTickPositionForPosition(defaultPosition),
  colormaps: colormaps as unknown as Record<string, ColorMapPreset>,
  colorbarContainerPosition: defaultPosition,
  colorbarInitialColormap: DefaultColormap,
  positionStyles,
  positionTickStyles,
  containerStyles,
  tickStyles,
};
 
export default {
  'cornerstone.colorbar': colorbarConfig,
};