From 79f1a0a9e878b166c1e6c01a1bf5d718fe1e1bc7 Mon Sep 17 00:00:00 2001 From: stockiNail Date: Mon, 7 Aug 2023 20:16:20 +0200 Subject: [PATCH] Add clip option to scale configuration to allow unclipped scales (#11404) * Add clip option to scale configuration to allow unclipped scales * add images * fix cc * change name of function --- docs/axes/cartesian/_common.md | 1 + src/core/core.controller.js | 17 ++- src/core/core.scale.defaults.js | 2 + src/types/index.d.ts | 5 + .../stacked-boxes-max-index-without-clip.js | 115 ++++++++++++++++++ .../stacked-boxes-max-index-without-clip.png | Bin 0 -> 18361 bytes .../stacked-boxes-max-without-clip.js | 115 ++++++++++++++++++ .../stacked-boxes-max-without-clip.png | Bin 0 -> 26998 bytes 8 files changed, 249 insertions(+), 6 deletions(-) create mode 100644 test/fixtures/core.layouts/stacked-boxes-max-index-without-clip.js create mode 100644 test/fixtures/core.layouts/stacked-boxes-max-index-without-clip.png create mode 100644 test/fixtures/core.layouts/stacked-boxes-max-without-clip.js create mode 100644 test/fixtures/core.layouts/stacked-boxes-max-without-clip.png diff --git a/docs/axes/cartesian/_common.md b/docs/axes/cartesian/_common.md index 1050a85a2..b6b5a8e12 100644 --- a/docs/axes/cartesian/_common.md +++ b/docs/axes/cartesian/_common.md @@ -5,6 +5,7 @@ Namespace: `options.scales[scaleId]` | Name | Type | Default | Description | ---- | ---- | ------- | ----------- | `bounds` | `string` | `'ticks'` | Determines the scale bounds. [more...](./index.md#scale-bounds) +| `clip` | `boolean` | `true` | If true, clip the dataset drawing against the size of the scale instead of chart area | `position` | `string` \| `object` | | Position of the axis. [more...](./index.md#axis-position) | `stack` | `string` | | Stack group. Axes at the same `position` with same `stack` are stacked. | `stackWeight` | `number` | 1 | Weight of the scale in stack group. Used to determine the amount of allocated space for the scale within the group. diff --git a/src/core/core.controller.js b/src/core/core.controller.js index 2ba26c9f3..a54c5a032 100644 --- a/src/core/core.controller.js +++ b/src/core/core.controller.js @@ -101,16 +101,21 @@ function determineLastEvent(e, lastEvent, inChartArea, isClick) { return e; } -function getDatasetArea(meta) { +function getSizeForArea(scale, chartArea, field) { + return scale.options.clip ? scale[field] : chartArea[field]; +} + +function getDatasetArea(meta, chartArea) { const {xScale, yScale} = meta; if (xScale && yScale) { return { - left: xScale.left, - right: xScale.right, - top: yScale.top, - bottom: yScale.bottom + left: getSizeForArea(xScale, chartArea, 'left'), + right: getSizeForArea(xScale, chartArea, 'right'), + top: getSizeForArea(yScale, chartArea, 'top'), + bottom: getSizeForArea(yScale, chartArea, 'bottom') }; } + return chartArea; } class Chart { @@ -796,7 +801,7 @@ class Chart { const ctx = this.ctx; const clip = meta._clip; const useClip = !clip.disabled; - const area = getDatasetArea(meta) || this.chartArea; + const area = getDatasetArea(meta, this.chartArea); const args = { meta, index: meta.index, diff --git a/src/core/core.scale.defaults.js b/src/core/core.scale.defaults.js index 85f9764ec..b6798e094 100644 --- a/src/core/core.scale.defaults.js +++ b/src/core/core.scale.defaults.js @@ -16,6 +16,8 @@ export function applyScaleDefaults(defaults) { */ bounds: 'ticks', + clip: true, + /** * Addition grace added to max and reduced from min data value. * @since 3.0.0 diff --git a/src/types/index.d.ts b/src/types/index.d.ts index 5cf2d0cc9..eeee5fa08 100644 --- a/src/types/index.d.ts +++ b/src/types/index.d.ts @@ -1171,6 +1171,11 @@ export interface CoreScaleOptions { * @default false */ reverse: boolean; + /** + * Clip the dataset drawing against the size of the scale instead of chart area. + * @default true + */ + clip: boolean; /** * The weight used to sort the axis. Higher weights are further away from the chart area. * @default true diff --git a/test/fixtures/core.layouts/stacked-boxes-max-index-without-clip.js b/test/fixtures/core.layouts/stacked-boxes-max-index-without-clip.js new file mode 100644 index 000000000..8e2df9cd2 --- /dev/null +++ b/test/fixtures/core.layouts/stacked-boxes-max-index-without-clip.js @@ -0,0 +1,115 @@ +module.exports = { + config: { + type: 'line', + data: { + datasets: [ + {data: [{x: 5, y: 1}, {x: 10, y: 2}, {x: 5, y: 3}], borderColor: 'red'}, + {data: [{x: 5, y: 1}, {x: 10, y: 2}, {x: 5, y: 3}], yAxisID: 'y1', xAxisID: 'x1', borderColor: 'green'}, + {data: [{x: 5, y: 1}, {x: 10, y: 2}, {x: 5, y: 3}], yAxisID: 'y2', xAxisID: 'x2', borderColor: 'blue'}, + ], + labels: ['tick1', 'tick2', 'tick3'] + }, + options: { + plugins: false, + scales: { + x: { + type: 'linear', + position: 'bottom', + stack: '1', + offset: true, + clip: false, + bounds: 'data', + border: { + color: 'red' + }, + ticks: { + autoSkip: false, + maxRotation: 0, + count: 3 + }, + max: 7 + }, + x1: { + type: 'linear', + position: 'bottom', + stack: '1', + offset: true, + clip: false, + bounds: 'data', + border: { + color: 'green' + }, + ticks: { + autoSkip: false, + maxRotation: 0, + count: 3 + }, + max: 7 + }, + x2: { + type: 'linear', + position: 'bottom', + stack: '1', + offset: true, + clip: false, + bounds: 'data', + border: { + color: 'blue' + }, + ticks: { + autoSkip: false, + maxRotation: 0, + count: 3 + }, + max: 7 + }, + y: { + type: 'linear', + position: 'left', + stack: '1', + offset: true, + clip: false, + border: { + color: 'red' + }, + ticks: { + precision: 0 + } + }, + y1: { + type: 'linear', + position: 'left', + stack: '1', + offset: true, + clip: false, + border: { + color: 'green' + }, + ticks: { + precision: 0 + } + }, + y2: { + type: 'linear', + position: 'left', + stack: '1', + offset: true, + clip: false, + border: { + color: 'blue', + }, + ticks: { + precision: 0 + } + } + } + } + }, + options: { + spriteText: true, + canvas: { + height: 384, + width: 384 + } + } +}; diff --git a/test/fixtures/core.layouts/stacked-boxes-max-index-without-clip.png b/test/fixtures/core.layouts/stacked-boxes-max-index-without-clip.png new file mode 100644 index 0000000000000000000000000000000000000000..0f7d3290f5201929bb8e0993e79686671ab184c2 GIT binary patch literal 18361 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 Wt8%!qGu;6APw9@De8Fv_!2bmmfVI5< literal 0 Hc-jL100001 diff --git a/test/fixtures/core.layouts/stacked-boxes-max-without-clip.js b/test/fixtures/core.layouts/stacked-boxes-max-without-clip.js new file mode 100644 index 000000000..cdfc3850f --- /dev/null +++ b/test/fixtures/core.layouts/stacked-boxes-max-without-clip.js @@ -0,0 +1,115 @@ +module.exports = { + config: { + type: 'line', + data: { + datasets: [ + {data: [{x: 1, y: 5}, {x: 2, y: 10}, {x: 3, y: 5}], borderColor: 'red'}, + {data: [{x: 1, y: 5}, {x: 2, y: 10}, {x: 3, y: 5}], yAxisID: 'y1', xAxisID: 'x1', borderColor: 'green'}, + {data: [{x: 1, y: 5}, {x: 2, y: 10}, {x: 3, y: 5}], yAxisID: 'y2', xAxisID: 'x2', borderColor: 'blue'}, + ], + labels: ['tick1', 'tick2', 'tick3'] + }, + options: { + plugins: false, + scales: { + x: { + type: 'linear', + position: 'bottom', + stack: '1', + offset: true, + clip: false, + bounds: 'data', + border: { + color: 'red' + }, + ticks: { + autoSkip: false, + maxRotation: 0, + count: 3 + } + }, + x1: { + type: 'linear', + position: 'bottom', + stack: '1', + offset: true, + clip: false, + bounds: 'data', + border: { + color: 'green' + }, + ticks: { + autoSkip: false, + maxRotation: 0, + count: 3 + } + }, + x2: { + type: 'linear', + position: 'bottom', + stack: '1', + offset: true, + clip: false, + bounds: 'data', + border: { + color: 'blue' + }, + ticks: { + autoSkip: false, + maxRotation: 0, + count: 3 + } + }, + y: { + type: 'linear', + position: 'left', + stack: '1', + offset: true, + clip: false, + border: { + color: 'red' + }, + ticks: { + precision: 0 + }, + max: 7 + }, + y1: { + type: 'linear', + position: 'left', + stack: '1', + offset: true, + clip: false, + border: { + color: 'green' + }, + ticks: { + precision: 0 + }, + max: 7 + }, + y2: { + type: 'linear', + position: 'left', + stack: '1', + offset: true, + clip: false, + border: { + color: 'blue', + }, + ticks: { + precision: 0 + }, + max: 7 + } + } + } + }, + options: { + spriteText: true, + canvas: { + height: 384, + width: 384 + } + } +}; diff --git a/test/fixtures/core.layouts/stacked-boxes-max-without-clip.png b/test/fixtures/core.layouts/stacked-boxes-max-without-clip.png new file mode 100644 index 0000000000000000000000000000000000000000..dc2ab23c8150fde49b2f9a4fc1d6ef2aac16d3b4 GIT binary patch literal 26998 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 Y*h=QI<70-%0q{>lMOV2((I)JF09wx~DF6Tf literal 0 Hc-jL100001 -- 2.47.3