From 8d68b119bcb95af182cc69d42acad8490af53d3e Mon Sep 17 00:00:00 2001 From: Jukka Kurkela Date: Thu, 2 Sep 2021 03:39:48 +0300 Subject: [PATCH] Fix control points on animated line w/o border (#9592) Co-authored-by: Jukka Kurkela --- src/elements/element.line.js | 12 +++-- .../controller.line/fill/no-border.js | 41 ++++++++++++++++++ .../controller.line/fill/no-border.png | Bin 0 -> 7478 bytes 3 files changed, 46 insertions(+), 7 deletions(-) create mode 100644 test/fixtures/controller.line/fill/no-border.js create mode 100644 test/fixtures/controller.line/fill/no-border.png diff --git a/src/elements/element.line.js b/src/elements/element.line.js index c09548c41..55752c6c1 100644 --- a/src/elements/element.line.js +++ b/src/elements/element.line.js @@ -395,15 +395,13 @@ export default class LineElement extends Element { const options = me.options || {}; const points = me.points || []; - if (!points.length || !options.borderWidth) { - return; - } + if (points.length && options.borderWidth) { + ctx.save(); - ctx.save(); + draw(ctx, me, start, count); - draw(ctx, me, start, count); - - ctx.restore(); + ctx.restore(); + } if (me.animated) { // When line is animated, the control points and path are not cached. diff --git a/test/fixtures/controller.line/fill/no-border.js b/test/fixtures/controller.line/fill/no-border.js new file mode 100644 index 000000000..5846762e3 --- /dev/null +++ b/test/fixtures/controller.line/fill/no-border.js @@ -0,0 +1,41 @@ +module.exports = { + config: { + type: 'line', + data: { + labels: [0, 1, 2, 3, 4, 5], + datasets: [ + { + data: [12, 19, 3, 5, 2, 3], + backgroundColor: '#ff0000', + borderWidth: 0, + tension: 0.4, + fill: true + }, + ] + }, + options: { + animation: { + duration: 1 + }, + scales: { + x: {display: false}, + y: {display: false} + }, + plugins: { + legend: false, + title: false, + tooltip: false, + filler: true + } + } + }, + options: { + canvas: { + height: 256, + width: 512 + }, + run() { + return new Promise(resolve => setTimeout(resolve, 50)); + } + } +}; diff --git a/test/fixtures/controller.line/fill/no-border.png b/test/fixtures/controller.line/fill/no-border.png new file mode 100644 index 0000000000000000000000000000000000000000..b140ceafaef5ed314332f1ec40496d770fb2a97e GIT binary patch literal 7478 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