Skip to content

Commit

Permalink
Bugfix/issue 11804 tooltip show for all invisible (#11858)
Browse files Browse the repository at this point in the history
* exclude 0 angle from inRange to not showing tooltip when all data are hidden

Signed-off-by: Hu, Vince <[email protected]>

* test 0 angle point not in arc range

---------

Signed-off-by: Hu, Vince <[email protected]>
  • Loading branch information
huqingkun authored Aug 12, 2024
1 parent f3f84fd commit b9c0141
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 1 deletion.
3 changes: 2 additions & 1 deletion src/elements/element.arc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,8 @@ export default class ArcElement extends Element<ArcProps, ArcOptions> {
], useFinalPosition);
const rAdjust = (this.options.spacing + this.options.borderWidth) / 2;
const _circumference = valueOrDefault(circumference, endAngle - startAngle);
const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);
const nonZeroBetween = _angleBetween(angle, startAngle, endAngle) && startAngle !== endAngle;
const betweenAngles = _circumference >= TAU || nonZeroBetween;
const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);

return (betweenAngles && withinRadius);
Expand Down
22 changes: 22 additions & 0 deletions test/specs/element.arc.tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -281,4 +281,26 @@ describe('Arc element tests', function() {

expect(ctx.getCalls().length).toBeGreaterThan(0);
});

it ('should determine not in range when angle 0', function() {
// Mock out the arc as if the controller put it there
var arc = new Chart.elements.ArcElement({
startAngle: 0,
endAngle: 0,
x: 0,
y: 0,
innerRadius: 0,
outerRadius: 10,
circumference: 0,
options: {
spacing: 0,
offset: 0,
borderWidth: 0
}
});

var center = arc.getCenterPoint();

expect(arc.inRange(center.x, 1)).toBe(false);
});
});

0 comments on commit b9c0141

Please sign in to comment.