From 09d26aa2f4938f0ada9bd2b4dc4e20c929cdb88b Mon Sep 17 00:00:00 2001 From: Jukka Kurkela Date: Fri, 27 Aug 2021 14:21:01 +0300 Subject: [PATCH] Fix control points on animated line w/o border --- 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 c09548c41ce..55752c6c199 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 00000000000..5846762e359 --- /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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