]> git.ipfire.org Git - thirdparty/Chart.js.git/commitdiff
Border is counted as part of ArcElement (#11180)
authorstockiNail <stocki.nail@gmail.com>
Wed, 19 Apr 2023 22:22:40 +0000 (00:22 +0200)
committerGitHub <noreply@github.com>
Wed, 19 Apr 2023 22:22:40 +0000 (18:22 -0400)
* Border is counted as part of ArcElement

* improve calculation

src/elements/element.arc.ts
test/specs/element.arc.tests.js

index dff28b62a477c812551a0e6a3101a223ef486f68..1595016c9b04674a672b1ec1531c91af39c841d7 100644 (file)
@@ -322,7 +322,7 @@ export default class ArcElement extends Element<ArcProps, ArcOptions> {
       'outerRadius',
       'circumference'
     ], useFinalPosition);
-    const rAdjust = this.options.spacing / 2;
+    const rAdjust = (this.options.spacing + this.options.borderWidth) / 2;
     const _circumference = valueOrDefault(circumference, endAngle - startAngle);
     const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);
     const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);
index fdfddab9315230765f0ba107d85099805f9d9a0a..e8ba72f3a0a7ba775cf1474930420e0b52630e6e 100644 (file)
@@ -13,6 +13,7 @@ describe('Arc element tests', function() {
       options: {
         spacing: 0,
         offset: 0,
+        borderWidth: 0
       }
     });
 
@@ -35,6 +36,7 @@ describe('Arc element tests', function() {
       options: {
         spacing: 0,
         offset: 0,
+        borderWidth: 0
       }
     });
 
@@ -68,6 +70,27 @@ describe('Arc element tests', function() {
       options: {
         spacing: 10,
         offset: 0,
+        borderWidth: 0
+      }
+    });
+
+    expect(arc.inRange(7, 0)).toBe(false);
+    expect(arc.inRange(15, 0)).toBe(true);
+  });
+
+  it ('should include borderWidth for in range check', function() {
+    // Mock out the arc as if the controller put it there
+    var arc = new Chart.elements.ArcElement({
+      startAngle: 0,
+      endAngle: Math.PI / 2,
+      x: 0,
+      y: 0,
+      innerRadius: 5,
+      outerRadius: 10,
+      options: {
+        spacing: 0,
+        offset: 0,
+        borderWidth: 10
       }
     });
 
@@ -88,6 +111,7 @@ describe('Arc element tests', function() {
       options: {
         spacing: 0,
         offset: 0,
+        borderWidth: 0
       }
     });
 
@@ -106,6 +130,7 @@ describe('Arc element tests', function() {
       options: {
         spacing: 0,
         offset: 0,
+        borderWidth: 0
       }
     });
 
@@ -126,6 +151,7 @@ describe('Arc element tests', function() {
       options: {
         spacing: 0,
         offset: 0,
+        borderWidth: 0
       }
     });
 
@@ -146,6 +172,7 @@ describe('Arc element tests', function() {
       options: {
         spacing: 10,
         offset: 10,
+        borderWidth: 0
       }
     });
 
@@ -166,6 +193,7 @@ describe('Arc element tests', function() {
       options: {
         spacing: 0,
         offset: 0,
+        borderWidth: 0
       }
     });
 
@@ -194,6 +222,7 @@ describe('Arc element tests', function() {
       options: {
         spacing: 0,
         offset: 0,
+        borderWidth: 0
       }
     });
 
@@ -211,6 +240,7 @@ describe('Arc element tests', function() {
       options: {
         spacing: 0,
         offset: 0,
+        borderWidth: 0
       }
     });
 
@@ -230,6 +260,7 @@ describe('Arc element tests', function() {
       options: {
         spacing: 0,
         offset: 0,
+        borderWidth: 0,
         scales: {
           r: {
             grid: {