# All files / utils drawPoints.ts

5.71% Statements 2/35
0% Branches 0/16
0% Functions 0/1
5.88% Lines 2/34

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
    1x

    1x

     import {Scale, NumericColumnData, SymbolType} from '../types'
    import {
      drawCircle,
      drawSquare,
      drawPlus,
      drawTriangle,
      drawTritip,
      drawEx,
    } from '../utils/drawShapes'

    interface DrawPointsOptions {
      context: CanvasRenderingContext2D
      xColData: NumericColumnData
      yColData: NumericColumnData
      fillColData: NumericColumnData
      symbolColData: NumericColumnData
      yScale: Scale<number, number>
      xScale: Scale<number, number>
      fillScale: Scale<number, string>
      symbolScale: Scale<number, SymbolType>
      pointSize: number
      rowIndices?: number[]
    }

    export const drawPoints = ({
      context,
      xColData,
      yColData,
      fillColData,
      symbolColData,
      yScale,
      xScale,
      fillScale,
      symbolScale,
      pointSize,
      rowIndices,
    }: DrawPointsOptions): void => {
      const n = rowIndices ? rowIndices.length : xColData.length

      for (let i = 0; i < n; i++) {
        const rowIndex = rowIndices ? rowIndices[i] : i
        const x = xScale(xColData[rowIndex])
        const y = yScale(yColData[rowIndex])
        const fillStyle = fillScale(fillColData[rowIndex])
        const symbolType = symbolScale(symbolColData[rowIndex])

        context.fillStyle = fillStyle
        context.strokeStyle = fillStyle

        if (symbolType === 'circle') {
          drawCircle(context, x, y, pointSize)
        } else if (symbolType === 'square') {
          drawSquare(context, x, y, pointSize)
        } else if (symbolType === 'triangle') {
          drawTriangle(context, x, y, pointSize)
        } else if (symbolType === 'plus') {
          drawPlus(context, x, y, pointSize)
        } else if (symbolType === 'tritip') {
          drawTritip(context, x, y, pointSize)
        } else if (symbolType === 'ex') {
          drawEx(context, x, y, pointSize)
        }
      }
    }