From 7f9bca68442236d334fcdd9ac61e0372be25f97e Mon Sep 17 00:00:00 2001 From: stockiNail Date: Sun, 12 Feb 2023 23:46:05 +0100 Subject: [PATCH] Add borderDash options to arc element (#11127) --- docs/charts/doughnut.md | 8 ++++ docs/charts/polar.md | 8 ++++ docs/configuration/elements.md | 2 + src/controllers/controller.doughnut.js | 2 +- src/elements/element.arc.ts | 12 +++++- src/types/index.d.ts | 13 +++++- .../borderDash/scriptable.js | 34 ++++++++++++++++ .../borderDash/scriptable.png | Bin 0 -> 12159 bytes .../controller.doughnut/borderDash/value.js | 36 +++++++++++++++++ .../controller.doughnut/borderDash/value.png | Bin 0 -> 9896 bytes .../borderDash/scriptable.js | 38 ++++++++++++++++++ .../borderDash/scriptable.png | Bin 0 -> 9749 bytes .../controller.polarArea/borderDash/value.js | 36 +++++++++++++++++ .../controller.polarArea/borderDash/value.png | Bin 0 -> 9898 bytes 14 files changed, 186 insertions(+), 3 deletions(-) create mode 100644 test/fixtures/controller.doughnut/borderDash/scriptable.js create mode 100644 test/fixtures/controller.doughnut/borderDash/scriptable.png create mode 100644 test/fixtures/controller.doughnut/borderDash/value.js create mode 100644 test/fixtures/controller.doughnut/borderDash/value.png create mode 100644 test/fixtures/controller.polarArea/borderDash/scriptable.js create mode 100644 test/fixtures/controller.polarArea/borderDash/scriptable.png create mode 100644 test/fixtures/controller.polarArea/borderDash/value.js create mode 100644 test/fixtures/controller.polarArea/borderDash/value.png diff --git a/docs/charts/doughnut.md b/docs/charts/doughnut.md index f9f29d5214b..3d0e3b08bed 100644 --- a/docs/charts/doughnut.md +++ b/docs/charts/doughnut.md @@ -105,6 +105,8 @@ The doughnut/pie chart allows a number of properties to be specified for each da | [`backgroundColor`](#styling) | [`Color`](../general/colors.md) | Yes | Yes | `'rgba(0, 0, 0, 0.1)'` | [`borderAlign`](#border-alignment) | `'center'`\|`'inner'` | Yes | Yes | `'center'` | [`borderColor`](#styling) | [`Color`](../general/colors.md) | Yes | Yes | `'#fff'` +| [`borderDash`](#styling) | `number[]` | Yes | - | `[]` +| [`borderDashOffset`](#styling) | `number` | Yes | - | `0.0` | [`borderJoinStyle`](#styling) | `'round'`\|`'bevel'`\|`'miter'` | Yes | Yes | `undefined` | [`borderRadius`](#border-radius) | `number`\|`object` | Yes | Yes | `0` | [`borderWidth`](#styling) | `number` | Yes | Yes | `2` @@ -113,6 +115,8 @@ The doughnut/pie chart allows a number of properties to be specified for each da | [`data`](#data-structure) | `number[]` | - | - | **required** | [`hoverBackgroundColor`](#interactions) | [`Color`](../general/colors.md) | Yes | Yes | `undefined` | [`hoverBorderColor`](#interactions) | [`Color`](../general/colors.md) | Yes | Yes | `undefined` +| [`hoverBorderDash`](#interactions) | `number[]` | Yes | - | `undefined` +| [`hoverBorderDashOffset`](#interactions) | `number` | Yes | - | `undefined` | [`hoverBorderJoinStyle`](#interactions) | `'round'`\|`'bevel'`\|`'miter'` | Yes | Yes | `undefined` | [`hoverBorderWidth`](#interactions) | `number` | Yes | Yes | `undefined` | [`hoverOffset`](#interactions) | `number` | Yes | Yes | `0` @@ -139,6 +143,8 @@ The style of each arc can be controlled with the following properties: | ---- | ---- | `backgroundColor` | arc background color. | `borderColor` | arc border color. +| `borderDash` | arc border length and spacing of dashes. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash). +| `borderDashOffset` | arc border offset for line dashes. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineDashOffset). | `borderJoinStyle` | arc border join style. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineJoin). | `borderWidth` | arc border width (in pixels). | `offset` | arc offset (in pixels). @@ -168,6 +174,8 @@ The interaction with each arc can be controlled with the following properties: | ---- | ----------- | `hoverBackgroundColor` | arc background color when hovered. | `hoverBorderColor` | arc border color when hovered. +| `hoverBorderDash` | arc border length and spacing of dashes when hovered. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash). +| `hoverBorderDashOffset` | arc border offset for line dashes when hovered. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineDashOffset). | `hoverBorderJoinStyle` | arc border join style when hovered. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineJoin). | `hoverBorderWidth` | arc border width when hovered (in pixels). | `hoverOffset` | arc offset when hovered (in pixels). diff --git a/docs/charts/polar.md b/docs/charts/polar.md index 0f9c8fcee1b..068cebcce8b 100644 --- a/docs/charts/polar.md +++ b/docs/charts/polar.md @@ -58,12 +58,16 @@ The following options can be included in a polar area chart dataset to configure | [`backgroundColor`](#styling) | [`Color`](../general/colors.md) | Yes | Yes | `'rgba(0, 0, 0, 0.1)'` | [`borderAlign`](#border-alignment) | `'center'`\|`'inner'` | Yes | Yes | `'center'` | [`borderColor`](#styling) | [`Color`](../general/colors.md) | Yes | Yes | `'#fff'` +| [`borderDash`](#styling) | `number[]` | Yes | - | `[]` +| [`borderDashOffset`](#styling) | `number` | Yes | - | `0.0` | [`borderJoinStyle`](#styling) | `'round'`\|`'bevel'`\|`'miter'` | Yes | Yes | `undefined` | [`borderWidth`](#styling) | `number` | Yes | Yes | `2` | [`clip`](#general) | `number`\|`object`\|`false` | - | - | `undefined` | [`data`](#data-structure) | `number[]` | - | - | **required** | [`hoverBackgroundColor`](#interactions) | [`Color`](../general/colors.md) | Yes | Yes | `undefined` | [`hoverBorderColor`](#interactions) | [`Color`](../general/colors.md) | Yes | Yes | `undefined` +| [`hoverBorderDash`](#interactions) | `number[]` | Yes | - | `undefined` +| [`hoverBorderDashOffset`](#interactions) | `number` | Yes | - | `undefined` | [`hoverBorderJoinStyle`](#interactions) | `'round'`\|`'bevel'`\|`'miter'` | Yes | Yes | `undefined` | [`hoverBorderWidth`](#interactions) | `number` | Yes | Yes | `undefined` | [`circular`](#styling) | `boolean` | Yes | Yes | `true` @@ -84,6 +88,8 @@ The style of each arc can be controlled with the following properties: | ---- | ---- | `backgroundColor` | arc background color. | `borderColor` | arc border color. +| `borderDash` | arc border length and spacing of dashes. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash). +| `borderDashOffset` | arc border offset for line dashes. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineDashOffset). | `borderJoinStyle` | arc border join style. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineJoin). | `borderWidth` | arc border width (in pixels). | `circular` | By default the Arc is curved. If `circular: false` the Arc will be flat. @@ -107,6 +113,8 @@ The interaction with each arc can be controlled with the following properties: | ---- | ----------- | `hoverBackgroundColor` | arc background color when hovered. | `hoverBorderColor` | arc border color when hovered. +| `hoverBorderDash` | arc border length and spacing of dashes when hovered. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash). +| `hoverBorderDashOffset` | arc border offset for line dashes when hovered. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineDashOffset). | `hoverBorderJoinStyle` | arc border join style when hovered. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineJoin). | `hoverBorderWidth` | arc border width when hovered (in pixels). diff --git a/docs/configuration/elements.md b/docs/configuration/elements.md index 4b2a08f940c..828df39439e 100644 --- a/docs/configuration/elements.md +++ b/docs/configuration/elements.md @@ -100,6 +100,8 @@ Namespace: `options.elements.arc`, global arc options: `Chart.defaults.elements. | `backgroundColor` | [`Color`](/general/colors.md) | `Chart.defaults.backgroundColor` | Arc fill color. | `borderAlign` | `'center'`\|`'inner'` | `'center'` | Arc stroke alignment. | `borderColor` | [`Color`](/general/colors.md) | `'#fff'` | Arc stroke color. +| `borderDash` | `number[]` | `[]` | Arc line dash. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash). +| `borderDashOffset` | `number` | `0.0` | Arc line dash offset. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineDashOffset). | `borderJoinStyle` | `'round'`\|`'bevel'`\|`'miter'` | `'bevel'`\|`'round'` | Line join style. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineJoin). The default is `'round'` when `borderAlign` is `'inner'` | `borderWidth`| `number` | `2` | Arc stroke width. | `circular` | `boolean` | `true` | By default the Arc is curved. If `circular: false` the Arc will be flat diff --git a/src/controllers/controller.doughnut.js b/src/controllers/controller.doughnut.js index 3080b98831a..59285010b53 100644 --- a/src/controllers/controller.doughnut.js +++ b/src/controllers/controller.doughnut.js @@ -76,7 +76,7 @@ export default class DoughnutController extends DatasetController { static descriptors = { _scriptable: (name) => name !== 'spacing', - _indexable: (name) => name !== 'spacing', + _indexable: (name) => name !== 'spacing' && !name.startsWith('borderDash') && !name.startsWith('hoverBorderDash'), }; /** diff --git a/src/elements/element.arc.ts b/src/elements/element.arc.ts index 88391d31dd4..dff28b62a47 100644 --- a/src/elements/element.arc.ts +++ b/src/elements/element.arc.ts @@ -213,13 +213,16 @@ function drawBorder( circular: boolean, ) { const {fullCircles, startAngle, circumference, options} = element; - const {borderWidth, borderJoinStyle} = options; + const {borderWidth, borderJoinStyle, borderDash, borderDashOffset} = options; const inner = options.borderAlign === 'inner'; if (!borderWidth) { return; } + ctx.setLineDash(borderDash || []); + ctx.lineDashOffset = borderDashOffset; + if (inner) { ctx.lineWidth = borderWidth * 2; ctx.lineJoin = borderJoinStyle || 'round'; @@ -264,6 +267,8 @@ export default class ArcElement extends Element { static defaults = { borderAlign: 'center', borderColor: '#fff', + borderDash: [], + borderDashOffset: 0, borderJoinStyle: undefined, borderRadius: 0, borderWidth: 2, @@ -277,6 +282,11 @@ export default class ArcElement extends Element { backgroundColor: 'backgroundColor' }; + static descriptors = { + _scriptable: true, + _indexable: (name) => name !== 'borderDash' + }; + circumference: number; endAngle: number; fullCircles: number; diff --git a/src/types/index.d.ts b/src/types/index.d.ts index b6f90af8bc7..6caf2174d45 100644 --- a/src/types/index.d.ts +++ b/src/types/index.d.ts @@ -1700,7 +1700,16 @@ export interface ArcOptions extends CommonElementOptions { * Arc stroke alignment. */ borderAlign: 'center' | 'inner'; - + /** + * Line dash. See MDN. + * @default [] + */ + borderDash: number[]; + /** + * Line dash offset. See MDN. + * @default 0.0 + */ + borderDashOffset: number; /** * Line join style. See MDN. Default is 'round' when `borderAlign` is 'inner', else 'bevel'. */ @@ -1730,6 +1739,8 @@ export interface ArcOptions extends CommonElementOptions { } export interface ArcHoverOptions extends CommonHoverOptions { + hoverBorderDash: number[]; + hoverBorderDashOffset: number; hoverOffset: number; } diff --git a/test/fixtures/controller.doughnut/borderDash/scriptable.js b/test/fixtures/controller.doughnut/borderDash/scriptable.js new file mode 100644 index 00000000000..d8d2b6900fc --- /dev/null +++ b/test/fixtures/controller.doughnut/borderDash/scriptable.js @@ -0,0 +1,34 @@ +module.exports = { + config: { + type: 'doughnut', + data: { + labels: [0, 1, 2, 3, 4, 5], + datasets: [ + { + // option in element (fallback) + data: [5, 2, 4, 7, 6, 8] + } + ] + }, + options: { + elements: { + arc: { + backgroundColor: 'transparent', + borderColor: 'black', + borderWidth: 1, + borderDash: function(ctx) { + var value = (ctx.dataIndex || 0) % 2; + return value === 0 ? [3, 3] : []; + } + + } + }, + } + }, + options: { + canvas: { + height: 256, + width: 512 + } + } +}; diff --git a/test/fixtures/controller.doughnut/borderDash/scriptable.png b/test/fixtures/controller.doughnut/borderDash/scriptable.png new file mode 100644 index 0000000000000000000000000000000000000000..eed3a23fe04e7d940e53083a3ff31e771ed1544f GIT binary patch literal 12159 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/controller.polarArea/borderDash/value.js b/test/fixtures/controller.polarArea/borderDash/value.js new file mode 100644 index 00000000000..7e726e16cd4 --- /dev/null +++ b/test/fixtures/controller.polarArea/borderDash/value.js @@ -0,0 +1,36 @@ +module.exports = { + config: { + type: 'polarArea', + data: { + labels: [0, 1, 2, 3, 4, 5], + datasets: [ + { + // option in dataset + data: [5, 2, 4, 7, 6, 8], + borderAlign: 'inner', + borderColor: 'black' + }, + ] + }, + options: { + elements: { + arc: { + backgroundColor: 'transparent', + borderWidth: 1, + borderDash: [3, 3] + } + }, + scales: { + r: { + display: false + } + } + } + }, + options: { + canvas: { + height: 256, + width: 512 + } + } +}; diff --git a/test/fixtures/controller.polarArea/borderDash/value.png b/test/fixtures/controller.polarArea/borderDash/value.png new file mode 100644 index 0000000000000000000000000000000000000000..2e44c316eac3203304f0eb23fec8899927c8ae5e GIT binary patch literal 9898 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