From: stockiNail Date: Mon, 24 Jul 2023 17:58:23 +0000 (+0200) Subject: Fix curve path if scale limits are set for line chart (#11377) X-Git-Tag: v4.3.1~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cc7ee8ade169e4297d287d7f8654ad1f27a202a9;p=thirdparty%2FChart.js.git Fix curve path if scale limits are set for line chart (#11377) * Fix curve path if scale limits are set for line chart * add scale limits test case --- diff --git a/src/controllers/controller.line.js b/src/controllers/controller.line.js index fddd5ce98..8c5977e19 100644 --- a/src/controllers/controller.line.js +++ b/src/controllers/controller.line.js @@ -57,7 +57,7 @@ export default class LineController extends DatasetController { line._chart = this.chart; line._datasetIndex = this.index; line._decimated = !!_dataset._decimated; - line.points = points; + line.points = points.slice(Math.max(this._drawStart - 1, 0), this._drawStart + this._drawCount); const options = this.resolveDatasetElementOptions(mode); if (!this.options.showLine) { diff --git a/src/helpers/helpers.extras.ts b/src/helpers/helpers.extras.ts index 142841911..dc34ecf07 100644 --- a/src/helpers/helpers.extras.ts +++ b/src/helpers/helpers.extras.ts @@ -98,7 +98,7 @@ export function _getStartAndCountOfVisiblePoints(meta: ChartMeta<'line' | 'scatt if (minDefined) { start = _limitValue(Math.min( // @ts-expect-error Need to type _parsed - _lookupByKey(_parsed, iScale.axis, min).lo, + _lookupByKey(_parsed, axis, min).lo, // @ts-expect-error Need to fix types on _lookupByKey animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo), 0, pointCount - 1); diff --git a/test/fixtures/controller.line/cubicInterpolationMode/scaleMInMaxLimits.js b/test/fixtures/controller.line/cubicInterpolationMode/scaleMInMaxLimits.js new file mode 100644 index 000000000..605ac1864 --- /dev/null +++ b/test/fixtures/controller.line/cubicInterpolationMode/scaleMInMaxLimits.js @@ -0,0 +1,35 @@ +module.exports = { + config: { + type: 'line', + data: { + datasets: [ + { + data: [ + {x: -10, y: 150}, + {x: 0, y: 81}, + {x: 10, y: 49}, + {x: 20, y: 32}, + {x: 30, y: 21}, + {x: 35, y: 1}, + {x: 40, y: 16}, + {x: 45, y: 13}, + ], + borderColor: '#ff0000', + cubicInterpolationMode: 'monotone' + } + ] + }, + options: { + scales: { + x: {display: false, type: 'linear', min: 5, max: 37}, + y: {display: false} + } + } + }, + options: { + canvas: { + height: 256, + width: 512 + } + } +}; diff --git a/test/fixtures/controller.line/cubicInterpolationMode/scaleMInMaxLimits.png b/test/fixtures/controller.line/cubicInterpolationMode/scaleMInMaxLimits.png new file mode 100644 index 000000000..056d45101 Binary files /dev/null and b/test/fixtures/controller.line/cubicInterpolationMode/scaleMInMaxLimits.png differ diff --git a/test/fixtures/controller.line/cubicInterpolationMode/scaleMaxLimit.js b/test/fixtures/controller.line/cubicInterpolationMode/scaleMaxLimit.js new file mode 100644 index 000000000..6bae22dfe --- /dev/null +++ b/test/fixtures/controller.line/cubicInterpolationMode/scaleMaxLimit.js @@ -0,0 +1,35 @@ +module.exports = { + config: { + type: 'line', + data: { + datasets: [ + { + data: [ + {x: -10, y: 150}, + {x: 0, y: 81}, + {x: 10, y: 49}, + {x: 20, y: 32}, + {x: 30, y: 21}, + {x: 35, y: 1}, + {x: 40, y: 16}, + {x: 45, y: 13}, + ], + borderColor: '#ff0000', + cubicInterpolationMode: 'monotone' + } + ] + }, + options: { + scales: { + x: {display: false, type: 'linear', max: 30}, + y: {display: false} + } + } + }, + options: { + canvas: { + height: 256, + width: 512 + } + } +}; diff --git a/test/fixtures/controller.line/cubicInterpolationMode/scaleMaxLimit.png b/test/fixtures/controller.line/cubicInterpolationMode/scaleMaxLimit.png new file mode 100644 index 000000000..048c8c390 Binary files /dev/null and b/test/fixtures/controller.line/cubicInterpolationMode/scaleMaxLimit.png differ