mirror of
https://github.com/chartjs/Chart.js.git
synced 2024-10-06 12:19:08 +02:00
radialLinear: fix getIndexAngle when there are no labels (left) (#10020)
* Resolve animation if indexAngle is NaN * make it private * add test * use chart.js helper instead of own logic * implement feedback * remove extra line * my precious bits
This commit is contained in:
parent
f1c99316a7
commit
d24fe14e71
@ -371,8 +371,9 @@ export default class RadialLinearScale extends LinearScaleBase {
|
||||
}
|
||||
|
||||
getIndexAngle(index) {
|
||||
const angleMultiplier = TAU / this._pointLabels.length;
|
||||
const angleMultiplier = TAU / (this._pointLabels.length || 1);
|
||||
const startAngle = this.options.startAngle || 0;
|
||||
|
||||
return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));
|
||||
}
|
||||
|
||||
|
70
test/fixtures/controller.polarArea/last-slice-animate.js
vendored
Normal file
70
test/fixtures/controller.polarArea/last-slice-animate.js
vendored
Normal file
@ -0,0 +1,70 @@
|
||||
const canvas = document.createElement('canvas');
|
||||
canvas.width = 512;
|
||||
canvas.height = 512;
|
||||
const ctx = canvas.getContext('2d');
|
||||
|
||||
module.exports = {
|
||||
config: {
|
||||
type: 'polarArea',
|
||||
data: {
|
||||
labels: ['A'],
|
||||
datasets: [{
|
||||
data: [20],
|
||||
backgroundColor: 'red',
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
animation: {
|
||||
duration: 0,
|
||||
easing: 'linear'
|
||||
},
|
||||
responsive: false,
|
||||
plugins: {
|
||||
legend: false,
|
||||
title: false,
|
||||
tooltip: false,
|
||||
filler: false
|
||||
},
|
||||
scales: {
|
||||
r: {
|
||||
ticks: {
|
||||
display: false,
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
options: {
|
||||
canvas: {
|
||||
height: 512,
|
||||
width: 512
|
||||
},
|
||||
run: function(chart) {
|
||||
chart.options.animation.duration = 8000;
|
||||
chart.toggleDataVisibility(0);
|
||||
chart.update();
|
||||
const animator = Chart.animator;
|
||||
// disable animator
|
||||
const backup = animator._refresh;
|
||||
animator._refresh = function() { };
|
||||
|
||||
return new Promise((resolve) => {
|
||||
window.requestAnimationFrame(() => {
|
||||
const anims = animator._getAnims(chart);
|
||||
const start = anims.items[0]._start;
|
||||
for (let i = 0; i < 16; i++) {
|
||||
animator._update(start + i * 500);
|
||||
let x = i % 4 * 128;
|
||||
let y = Math.floor(i / 4) * 128;
|
||||
ctx.drawImage(chart.canvas, x, y, 128, 128);
|
||||
}
|
||||
Chart.helpers.clearCanvas(chart.canvas);
|
||||
chart.ctx.drawImage(canvas, 0, 0);
|
||||
|
||||
animator._refresh = backup;
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
BIN
test/fixtures/controller.polarArea/last-slice-animate.png
vendored
Normal file
BIN
test/fixtures/controller.polarArea/last-slice-animate.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 49 KiB |
Loading…
Reference in New Issue
Block a user