]> git.ipfire.org Git - thirdparty/Chart.js.git/commitdiff
Ignore truncated pixels in bar width calculation (#8995)
authorJukka Kurkela <jukka.kurkela@gmail.com>
Wed, 28 Apr 2021 20:42:08 +0000 (23:42 +0300)
committerGitHub <noreply@github.com>
Wed, 28 Apr 2021 20:42:08 +0000 (16:42 -0400)
src/controllers/controller.bar.js

index fa107586718be9827be6ed0af46f7c2976f6f1d2..bec996ac1de8951de547295ad37d970ea24366e8 100644 (file)
@@ -1,7 +1,7 @@
 import DatasetController from '../core/core.datasetController';
 import {
   clipArea, unclipArea, _arrayUnique, isArray, isNullOrUndef,
-  valueOrDefault, resolveObjectKey, sign
+  valueOrDefault, resolveObjectKey, sign, defined
 } from '../helpers';
 
 function getAllScaleValues(scale) {
@@ -26,7 +26,14 @@ function computeMinSampleSize(scale) {
   let min = scale._length;
   let i, ilen, curr, prev;
   const updateMinAndPrev = () => {
-    min = Math.min(min, i && Math.abs(curr - prev) || min);
+    if (curr === 32767 || curr === -32768) {
+      // Ingnore truncated pixels
+      return;
+    }
+    if (defined(prev)) {
+      // curr - prev === 0 is ignored
+      min = Math.min(min, Math.abs(curr - prev) || min);
+    }
     prev = curr;
   };
 
@@ -35,6 +42,7 @@ function computeMinSampleSize(scale) {
     updateMinAndPrev();
   }
 
+  prev = undefined;
   for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {
     curr = scale.getPixelForTick(i);
     updateMinAndPrev();