Treat 0 as a valid point label for radial scale (#6279)

This commit is contained in:
Akihiko Kusanagi 2019-05-16 19:17:46 +01:00 committed by Simon Brunel
parent e5c68e2c82
commit e35b8891ce
2 changed files with 20 additions and 3 deletions

View File

@ -156,7 +156,7 @@ function fitWithPointLabels(scale) {
var valueCount = getValueCount(scale);
for (i = 0; i < valueCount; i++) {
pointPosition = scale.getPointPosition(i, scale.drawingArea + 5);
textSize = measureLabelSize(scale.ctx, plFont.lineHeight, scale.pointLabels[i] || '');
textSize = measureLabelSize(scale.ctx, plFont.lineHeight, scale.pointLabels[i]);
scale._pointLabelSizes[i] = textSize;
// Add quarter circle to make degree 0 mean top of circle
@ -247,7 +247,7 @@ function drawPointLabels(scale) {
var angle = helpers.toDegrees(angleRadians);
ctx.textAlign = getTextAlignForAngle(angle);
adjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition);
fillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.lineHeight);
fillText(ctx, scale.pointLabels[i], pointLabelPosition, plFont.lineHeight);
}
ctx.restore();
}
@ -348,7 +348,10 @@ module.exports = LinearScaleBase.extend({
LinearScaleBase.prototype.convertTicksToLabels.call(me);
// Point labels
me.pointLabels = me.chart.data.labels.map(me.options.pointLabels.callback, me);
me.pointLabels = me.chart.data.labels.map(function() {
var label = helpers.callback(me.options.pointLabels.callback, arguments, me);
return label || label === 0 ? label : '';
});
},
getLabelForIndex: function(index, datasetIndex) {

View File

@ -366,6 +366,20 @@ describe('Test the radial linear scale', function() {
expect(chart.scale.pointLabels).toEqual(['0', '1', '2', '3', '4']);
});
it('Should build point labels from falsy values', function() {
var chart = window.acquireChart({
type: 'radar',
data: {
datasets: [{
data: [10, 5, 0, 25, 78, 20]
}],
labels: [0, '', undefined, null, NaN, false]
}
});
expect(chart.scale.pointLabels).toEqual([0, '', '', '', '', '']);
});
it('should correctly set the center point', function() {
var chart = window.acquireChart({
type: 'radar',