Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Respect fill: false with custom draw times #10414

Merged
merged 9 commits into from Jun 22, 2022
4 changes: 4 additions & 0 deletions src/plugins/plugin.filler/filler.helper.js
Expand Up @@ -32,3 +32,7 @@ export function _createBoundaryLine(boundary, line) {
_fullLoop: _loop
}) : null;
}

export function _shouldApplyFill(source) {
return source && source.fill !== false;
}
9 changes: 6 additions & 3 deletions src/plugins/plugin.filler/index.js
Expand Up @@ -6,6 +6,7 @@

import LineElement from '../../elements/element.line';
import {_drawfill} from './filler.drawing';
import {_shouldApplyFill} from './filler.helper';
import {_decodeFill, _resolveTarget} from './filler.options';

export default {
Expand Down Expand Up @@ -58,7 +59,7 @@ export default {
}

source.line.updateControlPoints(area, source.axis);
if (draw) {
if (draw && source.fill) {
_drawfill(chart.ctx, source, area);
}
}
Expand All @@ -68,10 +69,12 @@ export default {
if (options.drawTime !== 'beforeDatasetsDraw') {
return;
}

const metasets = chart.getSortedVisibleDatasetMetas();
for (let i = metasets.length - 1; i >= 0; --i) {
const source = metasets[i].$filler;
if (source) {

if (_shouldApplyFill(source)) {
_drawfill(chart.ctx, source, chart.chartArea);
}
}
Expand All @@ -80,7 +83,7 @@ export default {
beforeDatasetDraw(chart, args, options) {
const source = args.meta.$filler;

if (!source || source.fill === false || options.drawTime !== 'beforeDatasetDraw') {
if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {
return;
}

Expand Down
@@ -0,0 +1,22 @@
module.exports = {
config: {
type: 'line',
data: {
labels: ['0', '1', '2', '3', '4', '5'],
datasets: [{
backgroundColor: 'red',
data: [3, -3, 0, 5, -5, 0],
fill: false
}]
},
options: {
plugins: {
legend: false,
title: false,
filler: {
drawTime: 'beforeDatasetDraw'
}
},
}
},
};
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@@ -0,0 +1,22 @@
module.exports = {
config: {
type: 'line',
data: {
labels: ['0', '1', '2', '3', '4', '5'],
datasets: [{
backgroundColor: 'red',
data: [3, -3, 0, 5, -5, 0],
fill: false
}]
},
options: {
plugins: {
legend: false,
title: false,
filler: {
drawTime: 'beforeDatasetsDraw'
}
},
}
},
};
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
22 changes: 22 additions & 0 deletions test/fixtures/plugin.filler/line/drawTimeFillFalse/beforeDraw.js
@@ -0,0 +1,22 @@
module.exports = {
config: {
type: 'line',
data: {
labels: ['0', '1', '2', '3', '4', '5'],
datasets: [{
backgroundColor: 'red',
data: [3, -3, 0, 5, -5, 0],
fill: false
}]
},
options: {
plugins: {
legend: false,
title: false,
filler: {
drawTime: 'beforeDraw'
}
},
}
},
};
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.