From 6f99157eb8857c90c7733c5c5ca896938c0ba48b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Martin=20Z=C3=BCrn?= Date: Tue, 28 Mar 2017 00:02:56 +0200 Subject: [PATCH] Fixed misplaced data points on category scale * Fixed issue, that category scale shows data points misplaced. See #4060 * Cleaned code * Fixed Irregular whitespace * Fixed error in case value is undefined * Verified that no error is thrown in case value === null --- src/scales/scale.category.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/scales/scale.category.js b/src/scales/scale.category.js index 3cee4ebf7..0388baa00 100644 --- a/src/scales/scale.category.js +++ b/src/scales/scale.category.js @@ -66,8 +66,15 @@ module.exports = function(Chart) { // 1 is added because we need the length but we have the indexes var offsetAmt = Math.max((me.maxIndex + 1 - me.minIndex - ((me.options.gridLines.offsetGridLines) ? 0 : 1)), 1); - if (value !== undefined && isNaN(index)) { + // If value is a data object, then index is the index in the data array, + // not the index of the scale. We need to change that. + var valueCategory; + if (value !== undefined && value !== null) { + valueCategory = me.isHorizontal() ? value.x : value.y; + } + if (valueCategory !== undefined || (value !== undefined && isNaN(index))) { var labels = me.getLabels(); + value = valueCategory || value; var idx = labels.indexOf(value); index = idx !== -1 ? idx : index; } -- 2.47.3