From 21508343b88649d06c93e46957ab546db1c665f8 Mon Sep 17 00:00:00 2001 From: juls Date: Tue, 16 Jan 2018 11:19:21 +0100 Subject: [PATCH 1/4] Input Point Label Font Color as array --- src/scales/scale.radialLinear.js | 41 ++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/src/scales/scale.radialLinear.js b/src/scales/scale.radialLinear.js index 9f59f17887a..65a6cfe6162 100644 --- a/src/scales/scale.radialLinear.js +++ b/src/scales/scale.radialLinear.js @@ -267,15 +267,46 @@ 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); + var pointLabelFontColor = null; + + // Point Label Color + if (pointLabelOpts.fontColor) { + // handle scale.pointLabels[i] as string or array combined with pointLabelFontColor as string or array or none given. + if (typeof scale.pointLabels[i] === 'string') { + if (typeof pointLabelOpts.fontColor === 'string') { + pointLabelFontColor = valueOrDefault(pointLabelOpts.fontColor, globalDefaults.defaultFontColor); + } else { + pointLabelFontColor = valueOrDefault(pointLabelOpts.fontColor[0], globalDefaults.defaultFontColor); + } + adjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition); + ctx.fillStyle = pointLabelFontColor; + fillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.size); + } else { + var yOffset = 0; + for (var x = 0; x < scale.pointLabels[i].length; x++) { + if (typeof pointLabelOpts.fontColor === 'string') { + pointLabelFontColor = valueOrDefault(pointLabelOpts.fontColor, globalDefaults.defaultFontColor); + } else { + pointLabelFontColor = valueOrDefault(pointLabelOpts.fontColor[x], globalDefaults.defaultFontColor); + } + var pointLabelPosition1 = JSON.parse(JSON.stringify(pointLabelPosition)); + pointLabelPosition1.y += yOffset; + adjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition1); + ctx.fillStyle = pointLabelFontColor; + fillText(ctx, scale.pointLabels[i][x] || '', pointLabelPosition1, plFont.size); + yOffset += plFont.size + 5; + } + } + } else { + pointLabelFontColor = valueOrDefault(pointLabelOpts.fontColor, globalDefaults.defaultFontColor); + adjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition); + ctx.fillStyle = pointLabelFontColor; + fillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.size); + } } } } From 386ab4d0078d4c09c744c6e77a6fa47f577b2318 Mon Sep 17 00:00:00 2001 From: juls Date: Tue, 16 Jan 2018 13:42:24 +0100 Subject: [PATCH 2/4] code cleanup --- src/scales/scale.radialLinear.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/scales/scale.radialLinear.js b/src/scales/scale.radialLinear.js index 65a6cfe6162..ef74100e5be 100644 --- a/src/scales/scale.radialLinear.js +++ b/src/scales/scale.radialLinear.js @@ -271,9 +271,9 @@ module.exports = function(Chart) { var angleRadians = scale.getIndexAngle(i); var angle = helpers.toDegrees(angleRadians); ctx.textAlign = getTextAlignForAngle(angle); - var pointLabelFontColor = null; // 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 (typeof scale.pointLabels[i] === 'string') { @@ -293,11 +293,11 @@ module.exports = function(Chart) { } else { pointLabelFontColor = valueOrDefault(pointLabelOpts.fontColor[x], globalDefaults.defaultFontColor); } - var pointLabelPosition1 = JSON.parse(JSON.stringify(pointLabelPosition)); - pointLabelPosition1.y += yOffset; - adjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition1); + var pointLabelPositionNew = JSON.parse(JSON.stringify(pointLabelPosition)); + pointLabelPositionNew.y += yOffset; + adjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPositionNew); ctx.fillStyle = pointLabelFontColor; - fillText(ctx, scale.pointLabels[i][x] || '', pointLabelPosition1, plFont.size); + fillText(ctx, scale.pointLabels[i][x] || '', pointLabelPositionNew, plFont.size); yOffset += plFont.size + 5; } } From b4d3bb105d2c73af6ba57b280a28680fe070fa2e Mon Sep 17 00:00:00 2001 From: juls Date: Fri, 19 Jan 2018 12:43:21 +0100 Subject: [PATCH 3/4] using some helper functions --- src/scales/scale.radialLinear.js | 47 ++++++++++++++++---------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/src/scales/scale.radialLinear.js b/src/scales/scale.radialLinear.js index ef74100e5be..f5334a0ebbd 100644 --- a/src/scales/scale.radialLinear.js +++ b/src/scales/scale.radialLinear.js @@ -276,30 +276,31 @@ module.exports = function(Chart) { 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 (typeof scale.pointLabels[i] === 'string') { - if (typeof pointLabelOpts.fontColor === 'string') { - pointLabelFontColor = valueOrDefault(pointLabelOpts.fontColor, globalDefaults.defaultFontColor); - } else { - pointLabelFontColor = valueOrDefault(pointLabelOpts.fontColor[0], globalDefaults.defaultFontColor); - } - adjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition); - ctx.fillStyle = pointLabelFontColor; - fillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.size); + 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 = JSON.parse(JSON.stringify(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 { - var yOffset = 0; - for (var x = 0; x < scale.pointLabels[i].length; x++) { - if (typeof pointLabelOpts.fontColor === 'string') { - pointLabelFontColor = valueOrDefault(pointLabelOpts.fontColor, globalDefaults.defaultFontColor); - } else { - pointLabelFontColor = valueOrDefault(pointLabelOpts.fontColor[x], globalDefaults.defaultFontColor); - } - var pointLabelPositionNew = JSON.parse(JSON.stringify(pointLabelPosition)); - pointLabelPositionNew.y += yOffset; - adjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPositionNew); - ctx.fillStyle = pointLabelFontColor; - fillText(ctx, scale.pointLabels[i][x] || '', pointLabelPositionNew, plFont.size); - yOffset += plFont.size + 5; - } + 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); From ef4442fc4aad39895cf34f27e0bb86d2d125301f Mon Sep 17 00:00:00 2001 From: juls Date: Fri, 19 Jan 2018 13:02:42 +0100 Subject: [PATCH 4/4] code cleanup --- src/scales/scale.radialLinear.js | 50 ++++++++++++++++---------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/src/scales/scale.radialLinear.js b/src/scales/scale.radialLinear.js index f5334a0ebbd..a3e070ea641 100644 --- a/src/scales/scale.radialLinear.js +++ b/src/scales/scale.radialLinear.js @@ -273,34 +273,34 @@ module.exports = function(Chart) { ctx.textAlign = getTextAlignForAngle(angle); // Point Label Color - var pointLabelFontColor = null; + 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 = JSON.parse(JSON.stringify(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; - } + 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); + 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);