drawLabels method

  1. @override
void drawLabels()
override

Implementation

@override
void drawLabels() {
  var labelCountX = getLabelCountX();
  var labelCountY = getLabelCountY();
  var labelMinPxX = gridMinPxX + max(getBarWidth(), maxLabelWidthX)/2;
  var labelMaxPxX = gridMaxPxX - max(getBarWidth(), maxLabelWidthX)/2;
  var rangeX  = labelMaxPxX - labelMinPxX;
  var rangeY = gridMaxPxY - gridMinPxY;

  var minY = getLabelMinY();
  var maxY = getLabelMaxY();

  var spaceX = rangeX/(labelCountX-1);
  var spaceY = rangeY/(labelCountY-1);
  var intervalY = (maxY - minY)/(labelCountY-1);

  ctx.font = labelFontStyle;
  ctx.shadowColor = '';
  ctx.shadowBlur = 0;
  ctx.shadowOffsetX = 0;
  ctx.shadowOffsetY = 0;
  ctx.textBaseline = 'middle';
  ctx.textAlign = 'right';
  ctx.fillStyle = labelFillStyle.toJS;
  for (var i = 0; i < labelCountY; i++) {
    ctx.fillText(labelFormatY(maxY - intervalY*i), gridMinPxX - textMargin, gridMinPxY + spaceY*i, maxLabelWidthY);
  }

  ctx.textAlign = 'center';
  ctx.textBaseline = 'top';
  if (labelCountX >= 2) {
    var i = 0;
    for (var x in keys) {
      ctx.fillText(x, labelMinPxX + spaceX*i, gridMaxPxY + textMargin, maxLabelWidthX);
      i++;
    }
  } else {
    for (var x in keys) {
      ctx.fillText(x, (labelMaxPxX - labelMinPxX)/2, gridMaxPxY + textMargin, maxLabelWidthX);
    }
  }
}