diff --git a/src/scales/scale.radialLinear.js b/src/scales/scale.radialLinear.js index 9f59f17887a..a3e070ea641 100644 --- a/src/scales/scale.radialLinear.js +++ b/src/scales/scale.radialLinear.js @@ -267,15 +267,47 @@ module.exports = function(Chart) { var pointLabelPosition = scale.getPointPosition(i, outerDistance + 5); // Keep this in loop since we may support array properties here - var pointLabelFontColor = valueOrDefault(pointLabelOpts.fontColor, globalDefaults.defaultFontColor); ctx.font = plFont.font; - ctx.fillStyle = pointLabelFontColor; - var angleRadians = scale.getIndexAngle(i); var angle = helpers.toDegrees(angleRadians); ctx.textAlign = getTextAlignForAngle(angle); - adjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition); - fillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.size); + + // Point Label Color + var pointLabelFontColor = null; + if (pointLabelOpts.fontColor) { + // handle scale.pointLabels[i] as string or array combined with pointLabelFontColor as string or array or none given. + if (helpers.isArray(scale.pointLabels[i])) { + var yOffset = 0; + for (var x = 0; x < scale.pointLabels[i].length; x++) { + if (helpers.isArray(pointLabelOpts.fontColor)) { + pointLabelFontColor = valueOrDefault(pointLabelOpts.fontColor[x], globalDefaults.defaultFontColor); + } else { + pointLabelFontColor = valueOrDefault(pointLabelOpts.fontColor, globalDefaults.defaultFontColor); + } + var pointLabelPositionNew = helpers.clone(pointLabelPosition); + pointLabelPositionNew.y += yOffset; + adjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPositionNew); + ctx.fillStyle = pointLabelFontColor; + fillText(ctx, scale.pointLabels[i][x] || '', pointLabelPositionNew, plFont.size); + // Extra 3px for some label spacing + yOffset += plFont.size + 3; + } + } else { + if (helpers.isArray(pointLabelOpts.fontColor)) { + pointLabelFontColor = valueOrDefault(pointLabelOpts.fontColor[0], globalDefaults.defaultFontColor); + } else { + pointLabelFontColor = valueOrDefault(pointLabelOpts.fontColor, globalDefaults.defaultFontColor); + } + adjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition); + ctx.fillStyle = pointLabelFontColor; + fillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.size); + } + } else { + pointLabelFontColor = valueOrDefault(pointLabelOpts.fontColor, globalDefaults.defaultFontColor); + adjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition); + ctx.fillStyle = pointLabelFontColor; + fillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.size); + } } } }