From 11ef1e5e8957afefb00da6013ce02bfd178ac7c2 Mon Sep 17 00:00:00 2001 From: Jukka Kurkela Date: Mon, 11 Nov 2019 00:41:01 +0200 Subject: [PATCH] Versatile clipping (#6642) Versatile clipping algorithm for different chart types --- docs/charts/bar.md | 3 + docs/charts/bubble.md | 2 + docs/charts/doughnut.md | 8 ++ docs/charts/line.md | 2 + docs/charts/polar.md | 7 ++ docs/charts/radar.md | 2 + src/controllers/controller.bubble.js | 15 ++++ src/controllers/controller.line.js | 27 +++--- src/core/core.controller.js | 13 +++ src/core/core.datasetController.js | 67 +++++++++++++++ src/elements/element.point.js | 7 ++ test/fixtures/controller.bubble/clip.js | 35 ++++++++ test/fixtures/controller.bubble/clip.png | Bin 0 -> 4685 bytes .../controller.bubble/point-style.json | 2 +- .../controller.line/clip/default-x-max.json | 38 +++++++++ .../controller.line/clip/default-x-max.png | Bin 0 -> 13051 bytes .../controller.line/clip/default-x-min.json | 38 +++++++++ .../controller.line/clip/default-x-min.png | Bin 0 -> 13216 bytes .../controller.line/clip/default-x.json | 39 +++++++++ .../controller.line/clip/default-x.png | Bin 0 -> 12199 bytes .../controller.line/clip/default-y-max.json | 38 +++++++++ .../controller.line/clip/default-y-max.png | Bin 0 -> 14541 bytes .../controller.line/clip/default-y-min.json | 38 +++++++++ .../controller.line/clip/default-y-min.png | Bin 0 -> 15057 bytes .../controller.line/clip/default-y.json | 39 +++++++++ .../controller.line/clip/default-y.png | Bin 0 -> 14312 bytes .../controller.line/clip/specified.json | 77 ++++++++++++++++++ .../controller.line/clip/specified.png | Bin 0 -> 26837 bytes 28 files changed, 485 insertions(+), 12 deletions(-) create mode 100644 test/fixtures/controller.bubble/clip.js create mode 100644 test/fixtures/controller.bubble/clip.png create mode 100644 test/fixtures/controller.line/clip/default-x-max.json create mode 100644 test/fixtures/controller.line/clip/default-x-max.png create mode 100644 test/fixtures/controller.line/clip/default-x-min.json create mode 100644 test/fixtures/controller.line/clip/default-x-min.png create mode 100644 test/fixtures/controller.line/clip/default-x.json create mode 100644 test/fixtures/controller.line/clip/default-x.png create mode 100644 test/fixtures/controller.line/clip/default-y-max.json create mode 100644 test/fixtures/controller.line/clip/default-y-max.png create mode 100644 test/fixtures/controller.line/clip/default-y-min.json create mode 100644 test/fixtures/controller.line/clip/default-y-min.png create mode 100644 test/fixtures/controller.line/clip/default-y.json create mode 100644 test/fixtures/controller.line/clip/default-y.png create mode 100644 test/fixtures/controller.line/clip/specified.json create mode 100644 test/fixtures/controller.line/clip/specified.png diff --git a/docs/charts/bar.md b/docs/charts/bar.md index 9bb8e4c8b..f2b0193bd 100644 --- a/docs/charts/bar.md +++ b/docs/charts/bar.md @@ -72,6 +72,7 @@ the color of the bars is generally set this way. | [`borderColor`](#styling) | [`Color`](../general/colors.md) | Yes | Yes | `'rgba(0, 0, 0, 0.1)'` | [`borderSkipped`](#borderskipped) | `string` | Yes | Yes | `'bottom'` | [`borderWidth`](#borderwidth) | number|object | Yes | Yes | `0` +| [`clip`](#general) | number|object | - | - | `undefined` | [`data`](#data-structure) | `object[]` | - | - | **required** | [`hoverBackgroundColor`](#interactions) | [`Color`](../general/colors.md) | - | Yes | `undefined` | [`hoverBorderColor`](#interactions) | [`Color`](../general/colors.md) | - | Yes | `undefined` @@ -85,6 +86,7 @@ the color of the bars is generally set this way. | Name | Description | ---- | ---- +| `clip` | How to clip relative to chartArea. Positive value allows overflow, negative value clips that many pixels inside chartArea. `0` = clip at chartArea. Clipping can also be configured per side: `clip: {left: 5, top: false, right: -2, bottom: 0}` | `label` | The label for the dataset which appears in the legend and tooltips. | `order` | The drawing order of dataset. Also affects order for stacking, tooltip, and legend. | `xAxisID` | The ID of the x axis to plot this dataset on. @@ -100,6 +102,7 @@ The style of each bar can be controlled with the following properties: | `borderColor` | The bar border color. | [`borderSkipped`](#borderskipped) | The edge to skip when drawing bar. | [`borderWidth`](#borderwidth) | The bar border width (in pixels). +| `clip` | How to clip relative to chartArea. Positive value allows overflow, negative value clips that many pixels inside chartArea. `0` = clip at chartArea. Clipping can also be configured per side: `clip: {left: 5, top: false, right: -2, bottom: 0}` All these values, if `undefined`, fallback to the associated [`elements.rectangle.*`](../configuration/elements.md#rectangle-configuration) options. diff --git a/docs/charts/bubble.md b/docs/charts/bubble.md index 6536395c2..d9dd73892 100644 --- a/docs/charts/bubble.md +++ b/docs/charts/bubble.md @@ -43,6 +43,7 @@ The bubble chart allows a number of properties to be specified for each dataset. | [`backgroundColor`](#styling) | [`Color`](../general/colors.md) | Yes | Yes | `'rgba(0, 0, 0, 0.1)'` | [`borderColor`](#styling) | [`Color`](../general/colors.md) | Yes | Yes | `'rgba(0, 0, 0, 0.1)'` | [`borderWidth`](#styling) | `number` | Yes | Yes | `3` +| [`clip`](#general) | number|object | - | - | `undefined` | [`data`](#data-structure) | `object[]` | - | - | **required** | [`hoverBackgroundColor`](#interactions) | [`Color`](../general/colors.md) | Yes | Yes | `undefined` | [`hoverBorderColor`](#interactions) | [`Color`](../general/colors.md) | Yes | Yes | `undefined` @@ -59,6 +60,7 @@ The bubble chart allows a number of properties to be specified for each dataset. | Name | Description | ---- | ---- +| `clip` | How to clip relative to chartArea. Positive value allows overflow, negative value clips that many pixels inside chartArea. `0` = clip at chartArea. Clipping can also be configured per side: `clip: {left: 5, top: false, right: -2, bottom: 0}` | `label` | The label for the dataset which appears in the legend and tooltips. | `order` | The drawing order of dataset. diff --git a/docs/charts/doughnut.md b/docs/charts/doughnut.md index 5140051b3..b13a422d1 100644 --- a/docs/charts/doughnut.md +++ b/docs/charts/doughnut.md @@ -59,12 +59,20 @@ The doughnut/pie chart allows a number of properties to be specified for each da | [`borderAlign`](#border-alignment) | `string` | Yes | Yes | `'center'` | [`borderColor`](#styling) | [`Color`](../general/colors.md) | Yes | Yes | `'#fff'` | [`borderWidth`](#styling) | `number` | Yes | Yes | `2` +| [`clip`](#general) | number|object | - | - | `undefined` | [`data`](#data-structure) | `number[]` | - | - | **required** | [`hoverBackgroundColor`](#interations) | [`Color`](../general/colors.md) | Yes | Yes | `undefined` | [`hoverBorderColor`](#interactions) | [`Color`](../general/colors.md) | Yes | Yes | `undefined` | [`hoverBorderWidth`](#interactions) | `number` | Yes | Yes | `undefined` | [`weight`](#styling) | `number` | - | - | `1` +### General + +| Name | Description +| ---- | ---- +| `clip` | How to clip relative to chartArea. Positive value allows overflow, negative value clips that many pixels inside chartArea. `0` = clip at chartArea. Clipping can also be configured per side: `clip: {left: 5, top: false, right: -2, bottom: 0}` + + ### Styling The style of each arc can be controlled with the following properties: diff --git a/docs/charts/line.md b/docs/charts/line.md index beec61ed5..665513dae 100644 --- a/docs/charts/line.md +++ b/docs/charts/line.md @@ -50,6 +50,7 @@ The line chart allows a number of properties to be specified for each dataset. T | [`borderDashOffset`](#line-styling) | `number` | Yes | - | `0.0` | [`borderJoinStyle`](#line-styling) | `string` | Yes | - | `'miter'` | [`borderWidth`](#line-styling) | `number` | Yes | - | `3` +| [`clip`](#general) | number|object | - | - | `undefined` | [`cubicInterpolationMode`](#cubicinterpolationmode) | `string` | Yes | - | `'default'` | [`fill`](#line-styling) | boolean|string | Yes | - | `true` | [`hoverBackgroundColor`](#line-styling) | [`Color`](../general/colors.md) | Yes | - | `undefined` @@ -83,6 +84,7 @@ The line chart allows a number of properties to be specified for each dataset. T | Name | Description | ---- | ---- +| `clip` | How to clip relative to chartArea. Positive value allows overflow, negative value clips that many pixels inside chartArea. `0` = clip at chartArea. Clipping can also be configured per side: `clip: {left: 5, top: false, right: -2, bottom: 0}` | `label` | The label for the dataset which appears in the legend and tooltips. | `order` | The drawing order of dataset. Also affects order for stacking, tooltip, and legend. | `xAxisID` | The ID of the x axis to plot this dataset on. diff --git a/docs/charts/polar.md b/docs/charts/polar.md index 84275dd93..bbc9f046c 100644 --- a/docs/charts/polar.md +++ b/docs/charts/polar.md @@ -50,11 +50,18 @@ The following options can be included in a polar area chart dataset to configure | [`borderAlign`](#border-alignment) | `string` | Yes | Yes | `'center'` | [`borderColor`](#styling) | [`Color`](../general/colors.md) | Yes | Yes | `'#fff'` | [`borderWidth`](#styling) | `number` | Yes | Yes | `2` +| [`clip`](#general) | number|object | - | - | `undefined` | [`data`](#data-structure) | `number[]` | - | - | **required** | [`hoverBackgroundColor`](#interations) | [`Color`](../general/colors.md) | Yes | Yes | `undefined` | [`hoverBorderColor`](#interactions) | [`Color`](../general/colors.md) | Yes | Yes | `undefined` | [`hoverBorderWidth`](#interactions) | `number` | Yes | Yes | `undefined` +### General + +| Name | Description +| ---- | ---- +| `clip` | How to clip relative to chartArea. Positive value allows overflow, negative value clips that many pixels inside chartArea. `0` = clip at chartArea. Clipping can also be configured per side: `clip: {left: 5, top: false, right: -2, bottom: 0}` + ### Styling The style of each arc can be controlled with the following properties: diff --git a/docs/charts/radar.md b/docs/charts/radar.md index 7ec740266..0e993f597 100644 --- a/docs/charts/radar.md +++ b/docs/charts/radar.md @@ -81,6 +81,7 @@ The radar chart allows a number of properties to be specified for each dataset. | [`hoverBorderDashOffset`](#line-styling) | `number` | Yes | - | `undefined` | [`hoverBorderJoinStyle`](#line-styling) | `string` | Yes | - | `undefined` | [`hoverBorderWidth`](#line-styling) | `number` | Yes | - | `undefined` +| [`clip`](#general) | number|object | - | - | `undefined` | [`fill`](#line-styling) | boolean|string | Yes | - | `true` | [`label`](#general) | `string` | - | - | `''` | [`order`](#general) | `number` | - | - | `0` @@ -102,6 +103,7 @@ The radar chart allows a number of properties to be specified for each dataset. | Name | Description | ---- | ---- +| `clip` | How to clip relative to chartArea. Positive value allows overflow, negative value clips that many pixels inside chartArea. `0` = clip at chartArea. Clipping can also be configured per side: `clip: {left: 5, top: false, right: -2, bottom: 0}` | `label` | The label for the dataset which appears in the legend and tooltips. | `order` | The drawing order of dataset. diff --git a/src/controllers/controller.bubble.js b/src/controllers/controller.bubble.js index 39cf25668..d344f488e 100644 --- a/src/controllers/controller.bubble.js +++ b/src/controllers/controller.bubble.js @@ -79,6 +79,21 @@ module.exports = DatasetController.extend({ return parsed; }, + /** + * @private + */ + _getMaxOverflow: function() { + var me = this; + var meta = me._cachedMeta; + var data = meta.data || []; + if (!data.length) { + return false; + } + var firstPoint = data[0].size(); + var lastPoint = data[data.length - 1].size(); + return Math.max(firstPoint, lastPoint) / 2; + }, + /** * @protected */ diff --git a/src/controllers/controller.line.js b/src/controllers/controller.line.js index b7fc90c29..c4e49110b 100644 --- a/src/controllers/controller.line.js +++ b/src/controllers/controller.line.js @@ -159,6 +159,22 @@ module.exports = DatasetController.extend({ return values; }, + /** + * @private + */ + _getMaxOverflow: function() { + var me = this; + var meta = me._cachedMeta; + var data = meta.data || []; + if (!data.length) { + return false; + } + var border = me._showLine ? meta.dataset._model.borderWidth : 0; + var firstPoint = data[0].size(); + var lastPoint = data[data.length - 1].size(); + return Math.max(border, firstPoint, lastPoint) / 2; + }, + updateBezierControlPoints: function() { var me = this; var chart = me.chart; @@ -222,21 +238,10 @@ module.exports = DatasetController.extend({ var area = chart.chartArea; var i = 0; var ilen = points.length; - var halfBorderWidth; if (me._showLine) { - halfBorderWidth = (meta.dataset._model.borderWidth || 0) / 2; - - helpers.canvas.clipArea(chart.ctx, { - left: area.left - halfBorderWidth, - right: area.right + halfBorderWidth, - top: area.top - halfBorderWidth, - bottom: area.bottom + halfBorderWidth - }); meta.dataset.draw(); - - helpers.canvas.unclipArea(chart.ctx); } // Draw the points diff --git a/src/core/core.controller.js b/src/core/core.controller.js index db5391dd9..fb42f1195 100644 --- a/src/core/core.controller.js +++ b/src/core/core.controller.js @@ -772,6 +772,10 @@ helpers.extend(Chart.prototype, /** @lends Chart */ { */ drawDataset: function(meta, easingValue) { var me = this; + var ctx = me.ctx; + var clip = meta._clip; + var canvas = me.canvas; + var area = me.chartArea; var args = { meta: meta, index: meta.index, @@ -782,8 +786,17 @@ helpers.extend(Chart.prototype, /** @lends Chart */ { return; } + helpers.canvas.clipArea(ctx, { + left: clip.left === false ? 0 : area.left - clip.left, + right: clip.right === false ? canvas.width : area.right + clip.right, + top: clip.top === false ? 0 : area.top - clip.top, + bottom: clip.bottom === false ? canvas.height : area.bottom + clip.bottom + }); + meta.controller.draw(easingValue); + helpers.canvas.unclipArea(ctx); + plugins.notify(me, 'afterDatasetDraw', [args]); }, diff --git a/src/core/core.datasetController.js b/src/core/core.datasetController.js index a434d0c5a..9d33d72a9 100644 --- a/src/core/core.datasetController.js +++ b/src/core/core.datasetController.js @@ -48,6 +48,53 @@ function listenArrayEvents(array, listener) { }); } + +function scaleClip(scale, allowedOverflow) { + var tickOpts = scale && scale.options.ticks || {}; + var reverse = tickOpts.reverse; + var min = tickOpts.min === undefined ? allowedOverflow : 0; + var max = tickOpts.max === undefined ? allowedOverflow : 0; + return { + start: reverse ? max : min, + end: reverse ? min : max + }; +} + +function defaultClip(xScale, yScale, allowedOverflow) { + if (allowedOverflow === false) { + return false; + } + var x = scaleClip(xScale, allowedOverflow); + var y = scaleClip(yScale, allowedOverflow); + + return { + top: y.end, + right: x.end, + bottom: y.start, + left: x.start + }; +} + +function toClip(value) { + var t, r, b, l; + + if (helpers.isObject(value)) { + t = value.top; + r = value.right; + b = value.bottom; + l = value.left; + } else { + t = r = b = l = value; + } + + return { + top: t, + right: r, + bottom: b, + left: l + }; +} + /** * Removes the given array event listener and cleanup extra attached properties (such as * the _chartjs stub and overridden methods) if array doesn't have any more listeners. @@ -556,6 +603,9 @@ helpers.extend(DatasetController.prototype, { return applyStack(stack, value, meta.index); }, + /** + * @private + */ _getMinMax: function(scale, canStack) { var chart = this.chart; var meta = this._cachedMeta; @@ -596,6 +646,9 @@ helpers.extend(DatasetController.prototype, { }; }, + /** + * @private + */ _getAllParsedValues: function(scale) { var meta = this._cachedMeta; var metaData = meta.data; @@ -611,6 +664,9 @@ helpers.extend(DatasetController.prototype, { return values; }, + /** + * @private + */ _cacheScaleStackStatus: function() { var me = this; var indexScale = me._getIndexScale(); @@ -622,6 +678,9 @@ helpers.extend(DatasetController.prototype, { } }, + /** + * @private + */ _scaleCheck: function() { var me = this; var indexScale = me._getIndexScale(); @@ -634,11 +693,19 @@ helpers.extend(DatasetController.prototype, { cache[valueScale.id] !== valueScale.options.stacked; }, + /** + * @private + */ + _getMaxOverflow: function() { + return false; + }, + _update: function(reset) { var me = this; me._configure(); me._cachedDataOpts = null; me.update(reset); + me._cachedMeta._clip = toClip(helpers.valueOrDefault(me._config.clip, defaultClip(me._xScale, me._yScale, me._getMaxOverflow()))); me._cacheScaleStackStatus(); }, diff --git a/src/elements/element.point.js b/src/elements/element.point.js index d985094dd..14849f9ae 100644 --- a/src/elements/element.point.js +++ b/src/elements/element.point.js @@ -53,6 +53,13 @@ class Point extends Element { }; } + size() { + var vm = this._view; + var radius = vm.radius || 0; + var borderWidth = vm.borderWidth || 0; + return (radius + borderWidth) * 2; + } + tooltipPosition() { var vm = this._view; return { diff --git a/test/fixtures/controller.bubble/clip.js b/test/fixtures/controller.bubble/clip.js new file mode 100644 index 000000000..9502ad1cd --- /dev/null +++ b/test/fixtures/controller.bubble/clip.js @@ -0,0 +1,35 @@ +module.exports = { + config: { + type: 'line', + data: { + labels: [0, 5, 10, 15, 20, 25, 30, 50, 55, 60], + datasets: [{ + data: [6, 11, 10, 10, 3, 22, 7, 24], + type: 'bubble', + label: 'test', + borderColor: '#3e95cd', + fill: false + }] + }, + options: { + legend: false, + scales: { + xAxes: [{ticks: {display: false}}], + yAxes: [{ + ticks: { + display: false, + min: 8, + max: 25, + beginAtZero: true + } + }] + } + } + }, + options: { + canvas: { + height: 256, + width: 256 + } + } +}; diff --git a/test/fixtures/controller.bubble/clip.png b/test/fixtures/controller.bubble/clip.png new file mode 100644 index 0000000000000000000000000000000000000000..2c2c454de75ed49604df4e94fc935f0caead96c6 GIT binary patch literal 4685 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 DxHsST literal 0 HcmV?d00001 diff --git a/test/fixtures/controller.bubble/point-style.json b/test/fixtures/controller.bubble/point-style.json index a64507516..9849eef8c 100644 --- a/test/fixtures/controller.bubble/point-style.json +++ b/test/fixtures/controller.bubble/point-style.json @@ -44,7 +44,7 @@ {"x": 9, "y": 2} ], "backgroundColor": "transparent", - "borderColor": "0000ff", + "borderColor": "#0000ff", "borderWidth": 0, "pointStyle": [ "circle", diff --git a/test/fixtures/controller.line/clip/default-x-max.json b/test/fixtures/controller.line/clip/default-x-max.json new file mode 100644 index 000000000..f69182d1f --- /dev/null +++ b/test/fixtures/controller.line/clip/default-x-max.json @@ -0,0 +1,38 @@ +{ + "config": { + "type": "scatter", + "data": { + "datasets": [{ + "borderColor": "red", + "data": [{"x":-5,"y":5},{"x":-4,"y":6},{"x":-3,"y":7},{"x":-2,"y":6},{"x":-1,"y":5},{"x":0,"y":4},{"x":1,"y":3},{"x":2,"y":2},{"x":3,"y":5},{"x":4,"y":7},{"x":5,"y":9}], + "fill": false, + "showLine": true, + "borderWidth": 20, + "pointRadius": 0 + }] + }, + "options": { + "responsive": false, + "legend": false, + "title": false, + "scales": { + "xAxes": [{ + "ticks": { + "max": 3, + "display": false + } + }], + "yAxes": [{"ticks": {"display": false}}] + }, + "layout": { + "padding": 24 + } + } + }, + "options": { + "canvas": { + "height": 256, + "width": 512 + } + } +} diff --git a/test/fixtures/controller.line/clip/default-x-max.png b/test/fixtures/controller.line/clip/default-x-max.png new file mode 100644 index 0000000000000000000000000000000000000000..18a4eb29afa3b624b6e88a08642a7371f850a9ab GIT binary patch literal 13051 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 g_*ujMJFNGkk`J>BE=6Wpf`FgvSB#Bga7~l literal 0 HcmV?d00001 diff --git a/test/fixtures/controller.line/clip/default-x-min.json b/test/fixtures/controller.line/clip/default-x-min.json new file mode 100644 index 000000000..b4a4b0c3e --- /dev/null +++ b/test/fixtures/controller.line/clip/default-x-min.json @@ -0,0 +1,38 @@ +{ + "config": { + "type": "scatter", + "data": { + "datasets": [{ + "borderColor": "red", + "data": [{"x":-5,"y":5},{"x":-4,"y":6},{"x":-3,"y":7},{"x":-2,"y":6},{"x":-1,"y":5},{"x":0,"y":4},{"x":1,"y":3},{"x":2,"y":2},{"x":3,"y":5},{"x":4,"y":7},{"x":5,"y":9}], + "fill": false, + "showLine": true, + "borderWidth": 20, + "pointRadius": 0 + }] + }, + "options": { + "responsive": false, + "legend": false, + "title": false, + "scales": { + "xAxes": [{ + "ticks": { + "min": -2, + "display": false + } + }], + "yAxes": [{"ticks": {"display": false}}] + }, + "layout": { + "padding": 24 + } + } + }, + "options": { + "canvas": { + "height": 256, + "width": 512 + } + } +} diff --git a/test/fixtures/controller.line/clip/default-x-min.png b/test/fixtures/controller.line/clip/default-x-min.png new file mode 100644 index 0000000000000000000000000000000000000000..44dce35d73780108053439b87d9ad837786dbae9 GIT binary patch literal 13216 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/controller.line/clip/default-x.json b/test/fixtures/controller.line/clip/default-x.json new file mode 100644 index 000000000..79dc08cd9 --- /dev/null +++ b/test/fixtures/controller.line/clip/default-x.json @@ -0,0 +1,39 @@ +{ + "config": { + "type": "scatter", + "data": { + "datasets": [{ + "borderColor": "red", + "data": [{"x":-5,"y":5},{"x":-4,"y":6},{"x":-3,"y":7},{"x":-2,"y":6},{"x":-1,"y":5},{"x":0,"y":4},{"x":1,"y":3},{"x":2,"y":2},{"x":3,"y":5},{"x":4,"y":7},{"x":5,"y":9}], + "fill": false, + "showLine": true, + "borderWidth": 20, + "pointRadius": 0 + }] + }, + "options": { + "responsive": false, + "legend": false, + "title": false, + "scales": { + "xAxes": [{ + "ticks": { + "min": -2, + "max": 3, + "display": false + } + }], + "yAxes": [{"ticks": {"display": false}}] + }, + "layout": { + "padding": 24 + } + } + }, + "options": { + "canvas": { + "height": 256, + "width": 512 + } + } +} diff --git a/test/fixtures/controller.line/clip/default-x.png b/test/fixtures/controller.line/clip/default-x.png new file mode 100644 index 0000000000000000000000000000000000000000..70ad431e86aa5be01eef792660b61aecf56a04e9 GIT binary patch literal 12199 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/controller.line/clip/default-y-max.json b/test/fixtures/controller.line/clip/default-y-max.json new file mode 100644 index 000000000..1ab631bb4 --- /dev/null +++ b/test/fixtures/controller.line/clip/default-y-max.json @@ -0,0 +1,38 @@ +{ + "config": { + "type": "scatter", + "data": { + "datasets": [{ + "borderColor": "red", + "data": [{"x":-5,"y":5},{"x":-4,"y":6},{"x":-3,"y":7},{"x":-2,"y":6},{"x":-1,"y":5},{"x":0,"y":4},{"x":1,"y":3},{"x":2,"y":2},{"x":3,"y":5},{"x":4,"y":7},{"x":5,"y":9}], + "fill": false, + "showLine": true, + "borderWidth": 20, + "pointRadius": 0 + }] + }, + "options": { + "responsive": false, + "legend": false, + "title": false, + "scales": { + "xAxes": [{"ticks": {"display": false}}], + "yAxes": [{ + "ticks": { + "max": 6, + "display": false + } + }] + }, + "layout": { + "padding": 24 + } + } + }, + "options": { + "canvas": { + "height": 256, + "width": 512 + } + } +} diff --git a/test/fixtures/controller.line/clip/default-y-max.png b/test/fixtures/controller.line/clip/default-y-max.png new file mode 100644 index 0000000000000000000000000000000000000000..1089e94bd6a27fe7f17762b5708a0db5799fd133 GIT binary patch literal 14541 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/controller.line/clip/default-y-min.json b/test/fixtures/controller.line/clip/default-y-min.json new file mode 100644 index 000000000..7c6114a9c --- /dev/null +++ b/test/fixtures/controller.line/clip/default-y-min.json @@ -0,0 +1,38 @@ +{ + "config": { + "type": "scatter", + "data": { + "datasets": [{ + "borderColor": "red", + "data": [{"x":-5,"y":5},{"x":-4,"y":6},{"x":-3,"y":7},{"x":-2,"y":6},{"x":-1,"y":5},{"x":0,"y":4},{"x":1,"y":3},{"x":2,"y":2},{"x":3,"y":5},{"x":4,"y":7},{"x":5,"y":9}], + "fill": false, + "showLine": true, + "borderWidth": 20, + "pointRadius": 0 + }] + }, + "options": { + "responsive": false, + "legend": false, + "title": false, + "scales": { + "xAxes": [{"ticks": {"display": false}}], + "yAxes": [{ + "ticks": { + "min": 2, + "display": false + } + }] + }, + "layout": { + "padding": 24 + } + } + }, + "options": { + "canvas": { + "height": 256, + "width": 512 + } + } +} diff --git a/test/fixtures/controller.line/clip/default-y-min.png b/test/fixtures/controller.line/clip/default-y-min.png new file mode 100644 index 0000000000000000000000000000000000000000..7ae2e6510a4b738db3d1126034bcc25e995f7225 GIT binary patch literal 15057 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/controller.line/clip/default-y.json b/test/fixtures/controller.line/clip/default-y.json new file mode 100644 index 000000000..30751446a --- /dev/null +++ b/test/fixtures/controller.line/clip/default-y.json @@ -0,0 +1,39 @@ +{ + "config": { + "type": "scatter", + "data": { + "datasets": [{ + "borderColor": "red", + "data": [{"x":-5,"y":5},{"x":-4,"y":6},{"x":-3,"y":7},{"x":-2,"y":6},{"x":-1,"y":5},{"x":0,"y":4},{"x":1,"y":3},{"x":2,"y":2},{"x":3,"y":5},{"x":4,"y":7},{"x":5,"y":9}], + "fill": false, + "showLine": true, + "borderWidth": 20, + "pointRadius": 0 + }] + }, + "options": { + "responsive": false, + "legend": false, + "title": false, + "scales": { + "xAxes": [{"ticks": {"display": false}}], + "yAxes": [{ + "ticks": { + "min": 2, + "max": 6, + "display": false + } + }] + }, + "layout": { + "padding": 24 + } + } + }, + "options": { + "canvas": { + "height": 256, + "width": 512 + } + } +} diff --git a/test/fixtures/controller.line/clip/default-y.png b/test/fixtures/controller.line/clip/default-y.png new file mode 100644 index 0000000000000000000000000000000000000000..6a1e9816fdc1a146870e3ea4a4e9efabd6f58856 GIT binary patch literal 14312 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/controller.line/clip/specified.json b/test/fixtures/controller.line/clip/specified.json new file mode 100644 index 000000000..5885240c7 --- /dev/null +++ b/test/fixtures/controller.line/clip/specified.json @@ -0,0 +1,77 @@ +{ + "config": { + "type": "scatter", + "data": { + "datasets": [ + { + "showLine": true, + "borderColor": "red", + "data": [{"x":-4,"y":-4},{"x":4,"y":4}], + "clip": false + }, + { + "showLine": true, + "borderColor": "green", + "data": [{"x":-4,"y":-5},{"x":4,"y":3}], + "clip": 5 + }, + { + "showLine": true, + "borderColor": "blue", + "data": [{"x":-4,"y":-3},{"x":4,"y":5}], + "clip": -5 + }, + { + "showLine": true, + "borderColor": "brown", + "data": [{"x":-3,"y":-3},{"x":-1,"y":3},{"x":1,"y":-2},{"x":2,"y":3}], + "clip": { + "top": 8, + "left": false, + "right": -20, + "bottom": -20 + } + } + ] + }, + "options": { + "responsive": false, + "legend": false, + "title": false, + "scales": { + "xAxes": [{ + "ticks": { + "min": -2, + "max": 2, + "display": false + } + }], + "yAxes": [{ + "ticks": { + "min": -2, + "max": 2, + "display": false + } + }] + }, + "layout": { + "padding": 24 + }, + "elements": { + "line": { + "fill": false, + "borderWidth": 20 + }, + "point": { + "radius": 0 + } + } + } + }, + "options": { + "canvas": { + "height": 256, + "width": 512 + } + } +} diff --git a/test/fixtures/controller.line/clip/specified.png b/test/fixtures/controller.line/clip/specified.png new file mode 100644 index 0000000000000000000000000000000000000000..60e60b23447bd8c1967c3b5fba4ef040a584ae43 GIT binary patch literal 26837 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