mirror of
https://github.com/chartjs/Chart.js.git
synced 2024-10-06 12:19:08 +02:00
Fix using above/below filling option with discontinuous lines (#10024)
Added a test in the boundary folder
This commit is contained in:
parent
a5b46a859c
commit
c527f47a89
@ -383,9 +383,30 @@ function resolveTarget(sources, index, propagate) {
|
||||
}
|
||||
|
||||
function _clip(ctx, target, clipY) {
|
||||
const {segments, points} = target;
|
||||
let first = true;
|
||||
let lineLoop = false;
|
||||
|
||||
ctx.beginPath();
|
||||
target.path(ctx);
|
||||
ctx.lineTo(target.last().x, clipY);
|
||||
for (const segment of segments) {
|
||||
const {start, end} = segment;
|
||||
const firstPoint = points[start];
|
||||
const lastPoint = points[findSegmentEnd(start, end, points)];
|
||||
if (first) {
|
||||
ctx.moveTo(firstPoint.x, firstPoint.y);
|
||||
first = false;
|
||||
} else {
|
||||
ctx.lineTo(firstPoint.x, clipY);
|
||||
ctx.lineTo(firstPoint.x, firstPoint.y);
|
||||
}
|
||||
lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});
|
||||
if (lineLoop) {
|
||||
ctx.closePath();
|
||||
} else {
|
||||
ctx.lineTo(lastPoint.x, clipY);
|
||||
}
|
||||
}
|
||||
|
||||
ctx.lineTo(target.first().x, clipY);
|
||||
ctx.closePath();
|
||||
ctx.clip();
|
||||
|
53
test/fixtures/plugin.filler/line/boundary/above-below-line-null-start.json
vendored
Normal file
53
test/fixtures/plugin.filler/line/boundary/above-below-line-null-start.json
vendored
Normal file
@ -0,0 +1,53 @@
|
||||
{
|
||||
"config": {
|
||||
"type": "line",
|
||||
"data": {
|
||||
"labels": ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"],
|
||||
"datasets": [{
|
||||
"borderColor": "rgb(42, 90, 145)",
|
||||
"data": [null, 12, 30, 36, 45, 53, 68, 79, null, 95, 18, 18, 180],
|
||||
"fill": {
|
||||
"target": "+1",
|
||||
"above": "rgba(4, 142, 43, 0.5)",
|
||||
"below": "rgba(241, 49, 34, 0.5)"
|
||||
}
|
||||
}, {
|
||||
"borderColor": "#00ADEE",
|
||||
"data": [null, 0, 0, 0, 0, 0, 20, 108, null, 72, 72, 72, 72],
|
||||
"fill": false
|
||||
}]
|
||||
},
|
||||
"options": {
|
||||
"responsive": false,
|
||||
"spanGaps": false,
|
||||
"scales": {
|
||||
"x": {
|
||||
"display": false
|
||||
},
|
||||
"y": {
|
||||
"display": false
|
||||
}
|
||||
},
|
||||
"elements": {
|
||||
"point": {
|
||||
"radius": 0
|
||||
},
|
||||
"line": {
|
||||
"cubicInterpolationMode": "monotone",
|
||||
"borderColor": "transparent"
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"legend": false,
|
||||
"title": false,
|
||||
"tooltip": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"canvas": {
|
||||
"height": 256,
|
||||
"width": 512
|
||||
}
|
||||
}
|
||||
}
|
BIN
test/fixtures/plugin.filler/line/boundary/above-below-line-null-start.png
vendored
Normal file
BIN
test/fixtures/plugin.filler/line/boundary/above-below-line-null-start.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
53
test/fixtures/plugin.filler/line/boundary/above-below-line-null.json
vendored
Normal file
53
test/fixtures/plugin.filler/line/boundary/above-below-line-null.json
vendored
Normal file
@ -0,0 +1,53 @@
|
||||
{
|
||||
"config": {
|
||||
"type": "line",
|
||||
"data": {
|
||||
"labels": ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"],
|
||||
"datasets": [{
|
||||
"borderColor": "rgb(42, 90, 145)",
|
||||
"data": [4, 12, 30, 36, 45, 53, 68, 79, null, 95, 18, null, 18, 180],
|
||||
"fill": {
|
||||
"target": "+1",
|
||||
"above": "rgba(4, 142, 43, 0.5)",
|
||||
"below": "rgba(241, 49, 34, 0.5)"
|
||||
}
|
||||
}, {
|
||||
"borderColor": "#00ADEE",
|
||||
"data": [0, 0, 0, 0, 0, 0, 20, 108, null, 72, 72, null, 72, 72],
|
||||
"fill": false
|
||||
}]
|
||||
},
|
||||
"options": {
|
||||
"responsive": false,
|
||||
"spanGaps": false,
|
||||
"scales": {
|
||||
"x": {
|
||||
"display": false
|
||||
},
|
||||
"y": {
|
||||
"display": false
|
||||
}
|
||||
},
|
||||
"elements": {
|
||||
"point": {
|
||||
"radius": 0
|
||||
},
|
||||
"line": {
|
||||
"cubicInterpolationMode": "monotone",
|
||||
"borderColor": "transparent"
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"legend": false,
|
||||
"title": false,
|
||||
"tooltip": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"canvas": {
|
||||
"height": 256,
|
||||
"width": 512
|
||||
}
|
||||
}
|
||||
}
|
BIN
test/fixtures/plugin.filler/line/boundary/above-below-line-null.png
vendored
Normal file
BIN
test/fixtures/plugin.filler/line/boundary/above-below-line-null.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
Loading…
Reference in New Issue
Block a user