From: Jukka Kurkela Date: Tue, 16 Mar 2021 20:32:29 +0000 (+0200) Subject: Use maxOverflow as minimum layout padding (#8650) X-Git-Tag: v3.0.0-beta.14~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=79cc6d32060c8c89ed57ff70fc073ee01b3b6a95;p=thirdparty%2FChart.js.git Use maxOverflow as minimum layout padding (#8650) * Use maxOverflow as minimum layout padding * fixes --- diff --git a/src/controllers/controller.line.js b/src/controllers/controller.line.js index 82b8894dd..04670d151 100644 --- a/src/controllers/controller.line.js +++ b/src/controllers/controller.line.js @@ -86,13 +86,14 @@ export default class LineController extends DatasetController { getMaxOverflow() { const me = this; const meta = me._cachedMeta; - const border = meta.dataset.options.borderWidth || 0; + const dataset = meta.dataset; + const border = dataset.options && dataset.options.borderWidth || 0; const data = meta.data || []; if (!data.length) { return border; } - const firstPoint = data[0].size(); - const lastPoint = data[data.length - 1].size(); + const firstPoint = data[0].size(me.resolveDataElementOptions(0)); + const lastPoint = data[data.length - 1].size(me.resolveDataElementOptions(data.length - 1)); return Math.max(border, firstPoint, lastPoint) / 2; } diff --git a/src/core/core.controller.js b/src/core/core.controller.js index cf2c195b7..ded583f07 100644 --- a/src/core/core.controller.js +++ b/src/core/core.controller.js @@ -474,15 +474,17 @@ class Chart { me.notifyPlugins('beforeElementsUpdate'); // Make sure all dataset controllers have correct meta data counts + let minPadding = 0; for (let i = 0, ilen = me.data.datasets.length; i < ilen; i++) { const {controller} = me.getDatasetMeta(i); const reset = !animsDisabled && newControllers.indexOf(controller) === -1; // New controllers will be reset after the layout pass, so we only want to modify // elements added to new datasets controller.buildOrUpdateElements(reset); + minPadding = Math.max(+controller.getMaxOverflow(), minPadding); } - - me._updateLayout(); + me._minPadding = minPadding; + me._updateLayout(minPadding); // Only reset the controllers if we have animations if (!animsDisabled) { @@ -513,14 +515,14 @@ class Chart { * hook, in which case, plugins will not be called on `afterLayout`. * @private */ - _updateLayout() { + _updateLayout(minPadding) { const me = this; if (me.notifyPlugins('beforeLayout', {cancelable: true}) === false) { return; } - layouts.update(me, me.width, me.height); + layouts.update(me, me.width, me.height, minPadding); const area = me.chartArea; const noArea = area.width <= 0 || area.height <= 0; @@ -1087,7 +1089,7 @@ class Chart { callCallback(options.onHover || hoverOptions.onHover, [e, active, me], me); if (e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu') { - if (_isPointInArea(e, me.chartArea)) { + if (_isPointInArea(e, me.chartArea, me._minPadding)) { callCallback(options.onClick, [e, active, me], me); } } diff --git a/src/core/core.interaction.js b/src/core/core.interaction.js index 10db9f487..b96764923 100644 --- a/src/core/core.interaction.js +++ b/src/core/core.interaction.js @@ -128,7 +128,7 @@ function getDistanceMetricForAxis(axis) { function getIntersectItems(chart, position, axis, useFinalPosition) { const items = []; - if (!_isPointInArea(position, chart.chartArea)) { + if (!_isPointInArea(position, chart.chartArea, chart._minPadding)) { return items; } @@ -156,7 +156,7 @@ function getNearestItems(chart, position, axis, intersect, useFinalPosition) { let minDistance = Number.POSITIVE_INFINITY; let items = []; - if (!_isPointInArea(position, chart.chartArea)) { + if (!_isPointInArea(position, chart.chartArea, chart._minPadding)) { return items; } diff --git a/src/core/core.layouts.js b/src/core/core.layouts.js index eba4250d7..006521251 100644 --- a/src/core/core.layouts.js +++ b/src/core/core.layouts.js @@ -306,8 +306,9 @@ export default { * @param {Chart} chart - the chart * @param {number} width - the width to fit into * @param {number} height - the height to fit into + * @param {number} minPadding - minimum padding required for each side of chart area */ - update(chart, width, height) { + update(chart, width, height, minPadding) { if (!chart) { return; } @@ -366,8 +367,10 @@ export default { vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount, hBoxMaxHeight: availableHeight / 2 }); + const maxPadding = Object.assign({}, padding); + updateMaxPadding(maxPadding, toPadding(minPadding)); const chartArea = Object.assign({ - maxPadding: Object.assign({}, padding), + maxPadding, w: availableWidth, h: availableHeight, x: padding.left, diff --git a/src/elements/element.point.js b/src/elements/element.point.js index 30932624e..2d34d1b74 100644 --- a/src/elements/element.point.js +++ b/src/elements/element.point.js @@ -41,9 +41,10 @@ export default class PointElement extends Element { return {x, y}; } - size() { - const options = this.options || {}; - const radius = Math.max(options.radius, options.hoverRadius) || 0; + size(options) { + options = options || this.options || {}; + let radius = options.radius || 0; + radius = Math.max(radius, radius && options.hoverRadius || 0); const borderWidth = radius && options.borderWidth || 0; return (radius + borderWidth) * 2; } diff --git a/src/helpers/helpers.canvas.js b/src/helpers/helpers.canvas.js index 158f8af2d..e3344e6dd 100644 --- a/src/helpers/helpers.canvas.js +++ b/src/helpers/helpers.canvas.js @@ -244,14 +244,15 @@ export function drawPoint(ctx, options, x, y) { * Returns true if the point is inside the rectangle * @param {object} point - The point to test * @param {object} area - The rectangle + * @param {number} [margin] - allowed margin * @returns {boolean} * @private */ -export function _isPointInArea(point, area) { - const epsilon = 0.5; // margin - to match rounded decimals +export function _isPointInArea(point, area, margin) { + margin = margin || 0.5; // margin - default is to match rounded decimals - return point.x > area.left - epsilon && point.x < area.right + epsilon && - point.y > area.top - epsilon && point.y < area.bottom + epsilon; + return point.x > area.left - margin && point.x < area.right + margin && + point.y > area.top - margin && point.y < area.bottom + margin; } export function clipArea(ctx, area) { diff --git a/test/fixtures/controller.line/clip/default-y-max.png b/test/fixtures/controller.line/clip/default-y-max.png index be188dec9..cb41b2e71 100644 Binary files a/test/fixtures/controller.line/clip/default-y-max.png and b/test/fixtures/controller.line/clip/default-y-max.png differ diff --git a/test/fixtures/controller.line/clip/default-y.png b/test/fixtures/controller.line/clip/default-y.png index 2def4c523..745b99870 100644 Binary files a/test/fixtures/controller.line/clip/default-y.png and b/test/fixtures/controller.line/clip/default-y.png differ diff --git a/test/fixtures/controller.line/non-numeric-y.png b/test/fixtures/controller.line/non-numeric-y.png index 856197ab7..33b21168b 100644 Binary files a/test/fixtures/controller.line/non-numeric-y.png and b/test/fixtures/controller.line/non-numeric-y.png differ diff --git a/test/fixtures/controller.line/point-style-offscreen-canvas.png b/test/fixtures/controller.line/point-style-offscreen-canvas.png index 8faa96e4a..47b1d29fe 100644 Binary files a/test/fixtures/controller.line/point-style-offscreen-canvas.png and b/test/fixtures/controller.line/point-style-offscreen-canvas.png differ diff --git a/test/fixtures/controller.line/point-style.png b/test/fixtures/controller.line/point-style.png index 8faa96e4a..47b1d29fe 100644 Binary files a/test/fixtures/controller.line/point-style.png and b/test/fixtures/controller.line/point-style.png differ diff --git a/test/fixtures/controller.line/pointBackgroundColor/indexable.png b/test/fixtures/controller.line/pointBackgroundColor/indexable.png index d41579644..7757776ea 100644 Binary files a/test/fixtures/controller.line/pointBackgroundColor/indexable.png and b/test/fixtures/controller.line/pointBackgroundColor/indexable.png differ diff --git a/test/fixtures/controller.line/pointBackgroundColor/scriptable.png b/test/fixtures/controller.line/pointBackgroundColor/scriptable.png index c366b6cfa..990540d6c 100644 Binary files a/test/fixtures/controller.line/pointBackgroundColor/scriptable.png and b/test/fixtures/controller.line/pointBackgroundColor/scriptable.png differ diff --git a/test/fixtures/controller.line/pointBackgroundColor/value.png b/test/fixtures/controller.line/pointBackgroundColor/value.png index 88c75c897..d16d591cb 100644 Binary files a/test/fixtures/controller.line/pointBackgroundColor/value.png and b/test/fixtures/controller.line/pointBackgroundColor/value.png differ diff --git a/test/fixtures/controller.line/pointBorderColor/indexable.png b/test/fixtures/controller.line/pointBorderColor/indexable.png index c50bdf045..707fe6062 100644 Binary files a/test/fixtures/controller.line/pointBorderColor/indexable.png and b/test/fixtures/controller.line/pointBorderColor/indexable.png differ diff --git a/test/fixtures/controller.line/pointBorderColor/scriptable.png b/test/fixtures/controller.line/pointBorderColor/scriptable.png index 6366828ec..ce409a3b4 100644 Binary files a/test/fixtures/controller.line/pointBorderColor/scriptable.png and b/test/fixtures/controller.line/pointBorderColor/scriptable.png differ diff --git a/test/fixtures/controller.line/pointBorderColor/value.png b/test/fixtures/controller.line/pointBorderColor/value.png index 6bfde92f5..760d4ca36 100644 Binary files a/test/fixtures/controller.line/pointBorderColor/value.png and b/test/fixtures/controller.line/pointBorderColor/value.png differ diff --git a/test/fixtures/controller.line/pointBorderWidth/indexable.png b/test/fixtures/controller.line/pointBorderWidth/indexable.png index b38c1b6b9..12a342cd3 100644 Binary files a/test/fixtures/controller.line/pointBorderWidth/indexable.png and b/test/fixtures/controller.line/pointBorderWidth/indexable.png differ diff --git a/test/fixtures/controller.line/pointBorderWidth/scriptable.png b/test/fixtures/controller.line/pointBorderWidth/scriptable.png index 7bb6b1b3c..19c9a5035 100644 Binary files a/test/fixtures/controller.line/pointBorderWidth/scriptable.png and b/test/fixtures/controller.line/pointBorderWidth/scriptable.png differ diff --git a/test/fixtures/controller.line/pointBorderWidth/value.png b/test/fixtures/controller.line/pointBorderWidth/value.png index 0b8f38c1d..8c051e611 100644 Binary files a/test/fixtures/controller.line/pointBorderWidth/value.png and b/test/fixtures/controller.line/pointBorderWidth/value.png differ diff --git a/test/fixtures/controller.line/pointStyle/indexable.png b/test/fixtures/controller.line/pointStyle/indexable.png index 9534602ab..184aaf56c 100644 Binary files a/test/fixtures/controller.line/pointStyle/indexable.png and b/test/fixtures/controller.line/pointStyle/indexable.png differ diff --git a/test/fixtures/controller.line/pointStyle/scriptable.png b/test/fixtures/controller.line/pointStyle/scriptable.png index 970439ee7..9caac5b96 100644 Binary files a/test/fixtures/controller.line/pointStyle/scriptable.png and b/test/fixtures/controller.line/pointStyle/scriptable.png differ diff --git a/test/fixtures/controller.line/pointStyle/value.png b/test/fixtures/controller.line/pointStyle/value.png index c8c488166..ccdc6437e 100644 Binary files a/test/fixtures/controller.line/pointStyle/value.png and b/test/fixtures/controller.line/pointStyle/value.png differ diff --git a/test/fixtures/controller.line/radius/indexable.png b/test/fixtures/controller.line/radius/indexable.png index 6de406261..f1b035faf 100644 Binary files a/test/fixtures/controller.line/radius/indexable.png and b/test/fixtures/controller.line/radius/indexable.png differ diff --git a/test/fixtures/controller.line/radius/scriptable.png b/test/fixtures/controller.line/radius/scriptable.png index 4ee9c9f1f..c162a9bfa 100644 Binary files a/test/fixtures/controller.line/radius/scriptable.png and b/test/fixtures/controller.line/radius/scriptable.png differ diff --git a/test/fixtures/controller.line/radius/value.png b/test/fixtures/controller.line/radius/value.png index 3ad5310d8..4b235bcd9 100644 Binary files a/test/fixtures/controller.line/radius/value.png and b/test/fixtures/controller.line/radius/value.png differ diff --git a/test/fixtures/controller.line/rotation/indexable.png b/test/fixtures/controller.line/rotation/indexable.png index e6c71897a..66e080d90 100644 Binary files a/test/fixtures/controller.line/rotation/indexable.png and b/test/fixtures/controller.line/rotation/indexable.png differ diff --git a/test/fixtures/controller.line/rotation/scriptable.png b/test/fixtures/controller.line/rotation/scriptable.png index 29571fad7..4bc6c674a 100644 Binary files a/test/fixtures/controller.line/rotation/scriptable.png and b/test/fixtures/controller.line/rotation/scriptable.png differ diff --git a/test/fixtures/controller.line/rotation/value.png b/test/fixtures/controller.line/rotation/value.png index 3c1f82d6f..8423874d8 100644 Binary files a/test/fixtures/controller.line/rotation/value.png and b/test/fixtures/controller.line/rotation/value.png differ diff --git a/test/fixtures/controller.line/showLine/false.png b/test/fixtures/controller.line/showLine/false.png index 2d2ac9a3a..3d920d71e 100644 Binary files a/test/fixtures/controller.line/showLine/false.png and b/test/fixtures/controller.line/showLine/false.png differ diff --git a/test/fixtures/controller.line/stacking/stacked-scatter.png b/test/fixtures/controller.line/stacking/stacked-scatter.png index c7f8dd7f0..3cb6ce32d 100644 Binary files a/test/fixtures/controller.line/stacking/stacked-scatter.png and b/test/fixtures/controller.line/stacking/stacked-scatter.png differ diff --git a/test/fixtures/controller.scatter/showLine/true.png b/test/fixtures/controller.scatter/showLine/true.png index 78bd3ac4f..21ff96d8c 100644 Binary files a/test/fixtures/controller.scatter/showLine/true.png and b/test/fixtures/controller.scatter/showLine/true.png differ diff --git a/test/fixtures/controller.scatter/showLine/undefined.png b/test/fixtures/controller.scatter/showLine/undefined.png index 4e01c86f4..4297f50e3 100644 Binary files a/test/fixtures/controller.scatter/showLine/undefined.png and b/test/fixtures/controller.scatter/showLine/undefined.png differ diff --git a/test/fixtures/core.layouts/hidden-vertical-boxes.png b/test/fixtures/core.layouts/hidden-vertical-boxes.png index 5746067d3..3142b96f3 100644 Binary files a/test/fixtures/core.layouts/hidden-vertical-boxes.png and b/test/fixtures/core.layouts/hidden-vertical-boxes.png differ diff --git a/test/fixtures/core.layouts/no-boxes-all-padding.js b/test/fixtures/core.layouts/no-boxes-all-padding.js index ae8500851..b50d67210 100644 --- a/test/fixtures/core.layouts/no-boxes-all-padding.js +++ b/test/fixtures/core.layouts/no-boxes-all-padding.js @@ -6,6 +6,7 @@ module.exports = { datasets: [{ data: [0], radius: 16, + borderWidth: 0, backgroundColor: 'red' }], }, diff --git a/test/fixtures/core.layouts/no-boxes-all-padding.png b/test/fixtures/core.layouts/no-boxes-all-padding.png index 6bade811f..0e0eefef1 100644 Binary files a/test/fixtures/core.layouts/no-boxes-all-padding.png and b/test/fixtures/core.layouts/no-boxes-all-padding.png differ diff --git a/test/fixtures/core.layouts/refit-vertical-boxes.png b/test/fixtures/core.layouts/refit-vertical-boxes.png index 045f73b4c..e18af5ca6 100644 Binary files a/test/fixtures/core.layouts/refit-vertical-boxes.png and b/test/fixtures/core.layouts/refit-vertical-boxes.png differ diff --git a/test/fixtures/core.scale/autoSkip/fit-after.png b/test/fixtures/core.scale/autoSkip/fit-after.png index 78bf463b7..cfc1b7a42 100644 Binary files a/test/fixtures/core.scale/autoSkip/fit-after.png and b/test/fixtures/core.scale/autoSkip/fit-after.png differ diff --git a/test/fixtures/core.scale/cartesian-axis-border-settings.png b/test/fixtures/core.scale/cartesian-axis-border-settings.png index 390096f5c..a36dd2535 100644 Binary files a/test/fixtures/core.scale/cartesian-axis-border-settings.png and b/test/fixtures/core.scale/cartesian-axis-border-settings.png differ diff --git a/test/fixtures/core.scale/label-align-end.png b/test/fixtures/core.scale/label-align-end.png index 13d72d25d..8581fc922 100644 Binary files a/test/fixtures/core.scale/label-align-end.png and b/test/fixtures/core.scale/label-align-end.png differ diff --git a/test/fixtures/core.scale/label-align-start.png b/test/fixtures/core.scale/label-align-start.png index ad7c280f4..13098ae90 100644 Binary files a/test/fixtures/core.scale/label-align-start.png and b/test/fixtures/core.scale/label-align-start.png differ diff --git a/test/fixtures/core.scale/x-axis-position-dynamic.png b/test/fixtures/core.scale/x-axis-position-dynamic.png index 856730964..cfee585b6 100644 Binary files a/test/fixtures/core.scale/x-axis-position-dynamic.png and b/test/fixtures/core.scale/x-axis-position-dynamic.png differ diff --git a/test/fixtures/element.line/default.png b/test/fixtures/element.line/default.png index adf64009b..714ee8683 100644 Binary files a/test/fixtures/element.line/default.png and b/test/fixtures/element.line/default.png differ diff --git a/test/fixtures/element.line/skip/first-span.png b/test/fixtures/element.line/skip/first-span.png index 1c2d454ca..8d8b5c43c 100644 Binary files a/test/fixtures/element.line/skip/first-span.png and b/test/fixtures/element.line/skip/first-span.png differ diff --git a/test/fixtures/element.line/skip/first.png b/test/fixtures/element.line/skip/first.png index 1c2d454ca..8d8b5c43c 100644 Binary files a/test/fixtures/element.line/skip/first.png and b/test/fixtures/element.line/skip/first.png differ diff --git a/test/fixtures/element.line/skip/last-span.png b/test/fixtures/element.line/skip/last-span.png index 23990d1ef..172fe4eee 100644 Binary files a/test/fixtures/element.line/skip/last-span.png and b/test/fixtures/element.line/skip/last-span.png differ diff --git a/test/fixtures/element.line/skip/last.png b/test/fixtures/element.line/skip/last.png index 23990d1ef..172fe4eee 100644 Binary files a/test/fixtures/element.line/skip/last.png and b/test/fixtures/element.line/skip/last.png differ diff --git a/test/fixtures/element.line/stepped/after.png b/test/fixtures/element.line/stepped/after.png index 1fda475d1..9c546bf2f 100644 Binary files a/test/fixtures/element.line/stepped/after.png and b/test/fixtures/element.line/stepped/after.png differ diff --git a/test/fixtures/element.line/stepped/before.png b/test/fixtures/element.line/stepped/before.png index d7e464072..ca8497754 100644 Binary files a/test/fixtures/element.line/stepped/before.png and b/test/fixtures/element.line/stepped/before.png differ diff --git a/test/fixtures/element.line/stepped/default.png b/test/fixtures/element.line/stepped/default.png index d7e464072..ca8497754 100644 Binary files a/test/fixtures/element.line/stepped/default.png and b/test/fixtures/element.line/stepped/default.png differ diff --git a/test/fixtures/element.line/stepped/middle.png b/test/fixtures/element.line/stepped/middle.png index d60561702..e1f8adfeb 100644 Binary files a/test/fixtures/element.line/stepped/middle.png and b/test/fixtures/element.line/stepped/middle.png differ diff --git a/test/fixtures/element.line/tension/default.png b/test/fixtures/element.line/tension/default.png index 1b1515894..3131b7694 100644 Binary files a/test/fixtures/element.line/tension/default.png and b/test/fixtures/element.line/tension/default.png differ diff --git a/test/fixtures/element.line/tension/one.png b/test/fixtures/element.line/tension/one.png index d1773c5f4..c01085a7a 100644 Binary files a/test/fixtures/element.line/tension/one.png and b/test/fixtures/element.line/tension/one.png differ diff --git a/test/fixtures/element.line/tension/zero.png b/test/fixtures/element.line/tension/zero.png index 1b1515894..3131b7694 100644 Binary files a/test/fixtures/element.line/tension/zero.png and b/test/fixtures/element.line/tension/zero.png differ diff --git a/test/fixtures/plugin.filler/fill-line-dataset-interpolated.png b/test/fixtures/plugin.filler/fill-line-dataset-interpolated.png index fab42a407..f99a3f2ce 100644 Binary files a/test/fixtures/plugin.filler/fill-line-dataset-interpolated.png and b/test/fixtures/plugin.filler/fill-line-dataset-interpolated.png differ diff --git a/test/fixtures/plugin.tooltip/positioning.js b/test/fixtures/plugin.tooltip/positioning.js index c30ff3e82..494bada5f 100644 --- a/test/fixtures/plugin.tooltip/positioning.js +++ b/test/fixtures/plugin.tooltip/positioning.js @@ -12,7 +12,8 @@ module.exports = { datasets: [{ data, backgroundColor: 'red', - radius: 8 + radius: 1, + hoverRadius: 0 }], }, options: { diff --git a/test/fixtures/plugin.tooltip/positioning.png b/test/fixtures/plugin.tooltip/positioning.png index da095f7e7..40d27568b 100644 Binary files a/test/fixtures/plugin.tooltip/positioning.png and b/test/fixtures/plugin.tooltip/positioning.png differ diff --git a/test/fixtures/scale.time/autoskip-major.png b/test/fixtures/scale.time/autoskip-major.png index 3014277a8..6888ad636 100644 Binary files a/test/fixtures/scale.time/autoskip-major.png and b/test/fixtures/scale.time/autoskip-major.png differ diff --git a/test/fixtures/scale.time/custom-parser.png b/test/fixtures/scale.time/custom-parser.png index 710178b18..4c41f5ad0 100644 Binary files a/test/fixtures/scale.time/custom-parser.png and b/test/fixtures/scale.time/custom-parser.png differ diff --git a/test/fixtures/scale.time/data-ty.png b/test/fixtures/scale.time/data-ty.png index acb6dd5a4..db373eb14 100644 Binary files a/test/fixtures/scale.time/data-ty.png and b/test/fixtures/scale.time/data-ty.png differ diff --git a/test/fixtures/scale.time/data-xy.png b/test/fixtures/scale.time/data-xy.png index acb6dd5a4..db373eb14 100644 Binary files a/test/fixtures/scale.time/data-xy.png and b/test/fixtures/scale.time/data-xy.png differ diff --git a/test/fixtures/scale.time/negative-times.png b/test/fixtures/scale.time/negative-times.png index e655a234d..7f0a88149 100644 Binary files a/test/fixtures/scale.time/negative-times.png and b/test/fixtures/scale.time/negative-times.png differ diff --git a/test/fixtures/scale.time/source-auto-linear.png b/test/fixtures/scale.time/source-auto-linear.png index bedfde067..004842c46 100644 Binary files a/test/fixtures/scale.time/source-auto-linear.png and b/test/fixtures/scale.time/source-auto-linear.png differ diff --git a/test/fixtures/scale.time/source-data-linear.png b/test/fixtures/scale.time/source-data-linear.png index a86d1954f..bfff4d846 100644 Binary files a/test/fixtures/scale.time/source-data-linear.png and b/test/fixtures/scale.time/source-data-linear.png differ diff --git a/test/fixtures/scale.time/source-labels-linear-offset-min-max.png b/test/fixtures/scale.time/source-labels-linear-offset-min-max.png index 29fae000f..3d7ed5d5d 100644 Binary files a/test/fixtures/scale.time/source-labels-linear-offset-min-max.png and b/test/fixtures/scale.time/source-labels-linear-offset-min-max.png differ diff --git a/test/fixtures/scale.time/source-labels-linear.png b/test/fixtures/scale.time/source-labels-linear.png index a86d1954f..bfff4d846 100644 Binary files a/test/fixtures/scale.time/source-labels-linear.png and b/test/fixtures/scale.time/source-labels-linear.png differ diff --git a/test/fixtures/scale.time/ticks-reverse-linear-min-max.png b/test/fixtures/scale.time/ticks-reverse-linear-min-max.png index dbdfa5ed0..5638c06df 100644 Binary files a/test/fixtures/scale.time/ticks-reverse-linear-min-max.png and b/test/fixtures/scale.time/ticks-reverse-linear-min-max.png differ diff --git a/test/fixtures/scale.time/ticks-reverse-linear.png b/test/fixtures/scale.time/ticks-reverse-linear.png index b229b7785..10c62a2f9 100644 Binary files a/test/fixtures/scale.time/ticks-reverse-linear.png and b/test/fixtures/scale.time/ticks-reverse-linear.png differ diff --git a/test/fixtures/scale.time/ticks-reverse-offset.png b/test/fixtures/scale.time/ticks-reverse-offset.png index 7889c1bcc..4744479f4 100644 Binary files a/test/fixtures/scale.time/ticks-reverse-offset.png and b/test/fixtures/scale.time/ticks-reverse-offset.png differ diff --git a/test/fixtures/scale.time/ticks-reverse.png b/test/fixtures/scale.time/ticks-reverse.png index ee07e8e74..383e5eec1 100644 Binary files a/test/fixtures/scale.time/ticks-reverse.png and b/test/fixtures/scale.time/ticks-reverse.png differ diff --git a/test/fixtures/scale.timeseries/normalize.png b/test/fixtures/scale.timeseries/normalize.png index 22077797b..37d90a43f 100644 Binary files a/test/fixtures/scale.timeseries/normalize.png and b/test/fixtures/scale.timeseries/normalize.png differ diff --git a/test/fixtures/scale.timeseries/source-auto.png b/test/fixtures/scale.timeseries/source-auto.png index f9ee22d3b..c1a9facf6 100644 Binary files a/test/fixtures/scale.timeseries/source-auto.png and b/test/fixtures/scale.timeseries/source-auto.png differ diff --git a/test/fixtures/scale.timeseries/source-data-offset-min-max.png b/test/fixtures/scale.timeseries/source-data-offset-min-max.png index 50c26b7b0..35c950904 100644 Binary files a/test/fixtures/scale.timeseries/source-data-offset-min-max.png and b/test/fixtures/scale.timeseries/source-data-offset-min-max.png differ diff --git a/test/fixtures/scale.timeseries/source-data.png b/test/fixtures/scale.timeseries/source-data.png index b03f6c67c..f1f8665fd 100644 Binary files a/test/fixtures/scale.timeseries/source-data.png and b/test/fixtures/scale.timeseries/source-data.png differ diff --git a/test/fixtures/scale.timeseries/source-labels-offset-min-max.png b/test/fixtures/scale.timeseries/source-labels-offset-min-max.png index 50c26b7b0..35c950904 100644 Binary files a/test/fixtures/scale.timeseries/source-labels-offset-min-max.png and b/test/fixtures/scale.timeseries/source-labels-offset-min-max.png differ diff --git a/test/fixtures/scale.timeseries/source-labels.png b/test/fixtures/scale.timeseries/source-labels.png index b03f6c67c..f1f8665fd 100644 Binary files a/test/fixtures/scale.timeseries/source-labels.png and b/test/fixtures/scale.timeseries/source-labels.png differ diff --git a/test/fixtures/scale.timeseries/ticks-reverse-max.png b/test/fixtures/scale.timeseries/ticks-reverse-max.png index 342559558..6ba3fabb4 100644 Binary files a/test/fixtures/scale.timeseries/ticks-reverse-max.png and b/test/fixtures/scale.timeseries/ticks-reverse-max.png differ diff --git a/test/fixtures/scale.timeseries/ticks-reverse-min-max.png b/test/fixtures/scale.timeseries/ticks-reverse-min-max.png index ff993eca6..490c68dda 100644 Binary files a/test/fixtures/scale.timeseries/ticks-reverse-min-max.png and b/test/fixtures/scale.timeseries/ticks-reverse-min-max.png differ diff --git a/test/fixtures/scale.timeseries/ticks-reverse-min.png b/test/fixtures/scale.timeseries/ticks-reverse-min.png index f044b6fc1..340557d4b 100644 Binary files a/test/fixtures/scale.timeseries/ticks-reverse-min.png and b/test/fixtures/scale.timeseries/ticks-reverse-min.png differ diff --git a/test/fixtures/scale.timeseries/ticks-reverse.png b/test/fixtures/scale.timeseries/ticks-reverse.png index 8b673965b..5de56dcd1 100644 Binary files a/test/fixtures/scale.timeseries/ticks-reverse.png and b/test/fixtures/scale.timeseries/ticks-reverse.png differ diff --git a/test/specs/controller.bar.tests.js b/test/specs/controller.bar.tests.js index 6be8eb1ed..f9decfe4f 100644 --- a/test/specs/controller.bar.tests.js +++ b/test/specs/controller.bar.tests.js @@ -691,9 +691,9 @@ describe('Chart.controllers.bar', function() { var bar2 = meta.data[1]; expect(bar1.x).toBeCloseToPixel(179); - expect(bar1.y).toBeCloseToPixel(114); - expect(bar2.x).toBeCloseToPixel(435); - expect(bar2.y).toBeCloseToPixel(0); + expect(bar1.y).toBeCloseToPixel(117); + expect(bar2.x).toBeCloseToPixel(431); + expect(bar2.y).toBeCloseToPixel(4); }); it('should get the bar points for hidden dataset', function() { diff --git a/test/specs/controller.line.tests.js b/test/specs/controller.line.tests.js index 9878eca18..df0d7a14f 100644 --- a/test/specs/controller.line.tests.js +++ b/test/specs/controller.line.tests.js @@ -142,8 +142,8 @@ describe('Chart.controllers.line', function() { expect(meta._parsed.length).toBe(2); [ - {x: 0, y: 512}, - {x: 171, y: 0} + {x: 5, y: 507}, + {x: 171, y: 5} ].forEach(function(expected, i) { expect(meta.data[i].x).toBeCloseToPixel(expected.x); expect(meta.data[i].y).toBeCloseToPixel(expected.y); @@ -192,7 +192,7 @@ describe('Chart.controllers.line', function() { var meta = chart.getDatasetMeta(0); // 1 point var point = meta.data[0]; - expect(point.x).toBeCloseToPixel(0); + expect(point.x).toBeCloseToPixel(5); // 2 points chart.data.labels = ['One', 'Two']; @@ -201,8 +201,8 @@ describe('Chart.controllers.line', function() { var points = meta.data; - expect(points[0].x).toBeCloseToPixel(0); - expect(points[1].x).toBeCloseToPixel(512); + expect(points[0].x).toBeCloseToPixel(5); + expect(points[1].x).toBeCloseToPixel(507); // 3 points chart.data.labels = ['One', 'Two', 'Three']; @@ -211,9 +211,9 @@ describe('Chart.controllers.line', function() { points = meta.data; - expect(points[0].x).toBeCloseToPixel(0); + expect(points[0].x).toBeCloseToPixel(5); expect(points[1].x).toBeCloseToPixel(256); - expect(points[2].x).toBeCloseToPixel(512); + expect(points[2].x).toBeCloseToPixel(507); // 4 points chart.data.labels = ['One', 'Two', 'Three', 'Four']; @@ -222,10 +222,10 @@ describe('Chart.controllers.line', function() { points = meta.data; - expect(points[0].x).toBeCloseToPixel(0); + expect(points[0].x).toBeCloseToPixel(5); expect(points[1].x).toBeCloseToPixel(171); expect(points[2].x).toBeCloseToPixel(340); - expect(points[3].x).toBeCloseToPixel(512); + expect(points[3].x).toBeCloseToPixel(507); }); it('should update elements when the y scale is stacked', function() { @@ -261,10 +261,10 @@ describe('Chart.controllers.line', function() { var meta0 = chart.getDatasetMeta(0); [ - {x: 0, y: 146}, - {x: 171, y: 439}, - {x: 341, y: 146}, - {x: 512, y: 439} + {x: 5, y: 148}, + {x: 171, y: 435}, + {x: 341, y: 148}, + {x: 507, y: 435} ].forEach(function(values, i) { expect(meta0.data[i].x).toBeCloseToPixel(values.x); expect(meta0.data[i].y).toBeCloseToPixel(values.y); @@ -273,10 +273,10 @@ describe('Chart.controllers.line', function() { var meta1 = chart.getDatasetMeta(1); [ - {x: 0, y: 0}, - {x: 171, y: 73}, - {x: 341, y: 146}, - {x: 512, y: 497} + {x: 5, y: 5}, + {x: 171, y: 76}, + {x: 341, y: 148}, + {x: 507, y: 492} ].forEach(function(values, i) { expect(meta1.data[i].x).toBeCloseToPixel(values.x); expect(meta1.data[i].y).toBeCloseToPixel(values.y); @@ -326,10 +326,10 @@ describe('Chart.controllers.line', function() { var meta0 = chart.getDatasetMeta(0); [ - {x: 0, y: 146}, - {x: 171, y: 439}, - {x: 341, y: 146}, - {x: 512, y: 439} + {x: 5, y: 148}, + {x: 171, y: 435}, + {x: 341, y: 148}, + {x: 507, y: 435} ].forEach(function(values, i) { expect(meta0.data[i].x).toBeCloseToPixel(values.x); expect(meta0.data[i].y).toBeCloseToPixel(values.y); @@ -338,10 +338,10 @@ describe('Chart.controllers.line', function() { var meta1 = chart.getDatasetMeta(1); [ - {x: 0, y: 0}, - {x: 171, y: 73}, - {x: 341, y: 146}, - {x: 512, y: 497} + {x: 5, y: 5}, + {x: 171, y: 76}, + {x: 341, y: 148}, + {x: 507, y: 492} ].forEach(function(values, i) { expect(meta1.data[i].x).toBeCloseToPixel(values.x); expect(meta1.data[i].y).toBeCloseToPixel(values.y); @@ -406,10 +406,10 @@ describe('Chart.controllers.line', function() { var meta0 = chart.getDatasetMeta(0); [ - {x: 0, y: 146}, - {x: 171, y: 439}, - {x: 341, y: 146}, - {x: 512, y: 439} + {x: 5, y: 148}, + {x: 171, y: 435}, + {x: 341, y: 148}, + {x: 507, y: 435} ].forEach(function(values, i) { expect(meta0.data[i].x).toBeCloseToPixel(values.x); expect(meta0.data[i].y).toBeCloseToPixel(values.y); @@ -418,10 +418,10 @@ describe('Chart.controllers.line', function() { var meta1 = chart.getDatasetMeta(1); [ - {x: 0, y: 0}, - {x: 171, y: 73}, - {x: 341, y: 146}, - {x: 512, y: 497} + {x: 5, y: 5}, + {x: 171, y: 76}, + {x: 341, y: 148}, + {x: 507, y: 492} ].forEach(function(values, i) { expect(meta1.data[i].x).toBeCloseToPixel(values.x); expect(meta1.data[i].y).toBeCloseToPixel(values.y); @@ -462,10 +462,10 @@ describe('Chart.controllers.line', function() { var meta0 = chart.getDatasetMeta(0); [ - {x: 0, y: 146}, - {x: 171, y: 439}, - {x: 341, y: 146}, - {x: 512, y: 439} + {x: 5, y: 148}, + {x: 171, y: 435}, + {x: 341, y: 148}, + {x: 507, y: 435} ].forEach(function(values, i) { expect(meta0.data[i].x).toBeCloseToPixel(values.x); expect(meta0.data[i].y).toBeCloseToPixel(values.y); @@ -474,10 +474,10 @@ describe('Chart.controllers.line', function() { var meta1 = chart.getDatasetMeta(1); [ - {x: 0, y: 0}, - {x: 171, y: 73}, - {x: 341, y: 146}, - {x: 512, y: 497} + {x: 5, y: 5}, + {x: 171, y: 76}, + {x: 341, y: 148}, + {x: 507, y: 492} ].forEach(function(values, i) { expect(meta1.data[i].x).toBeCloseToPixel(values.x); expect(meta1.data[i].y).toBeCloseToPixel(values.y); diff --git a/test/specs/core.controller.tests.js b/test/specs/core.controller.tests.js index 9be597bf3..08436e93b 100644 --- a/test/specs/core.controller.tests.js +++ b/test/specs/core.controller.tests.js @@ -275,6 +275,30 @@ describe('Chart', function() { expect(chart.getActiveElements()).toEqual([{datasetIndex: 0, index: 1, element: point}]); }); + it('should activate element on hover when minPadding pixels outside chart area', async function() { + var chart = acquireChart({ + type: 'line', + data: { + labels: ['A', 'B', 'C', 'D'], + datasets: [{ + data: [10, 20, 30, 100], + hoverRadius: 0 + }], + }, + options: { + scales: { + x: {display: false}, + y: {display: false} + } + } + }); + + var point = chart.getDatasetMeta(0).data[0]; + + await jasmine.triggerMouseEvent(chart, 'mousemove', {x: 1, y: point.y}); + expect(chart.getActiveElements()).toEqual([{datasetIndex: 0, index: 0, element: point}]); + }); + it('should not activate elements when hover is disabled', async function() { var chart = acquireChart({ type: 'line',