From d84db2cefc6ee028779bab5d62982151060de416 Mon Sep 17 00:00:00 2001 From: Evert Timberg Date: Sat, 13 Mar 2021 17:37:43 -0500 Subject: [PATCH] Radial scale point label backdrop color (#8633) * Radial scale point label backdrop color * Update default tests * backdropPadding is a single setting * Up the tolerance a bit * Update tick backdrop padding options --- docs/docs/axes/radial/linear.mdx | 5 +- docs/docs/getting-started/v3-migration.md | 1 + src/scales/scale.radialLinear.js | 37 ++++++++----- .../pointLabels/background.js | 50 ++++++++++++++++++ .../pointLabels/background.png | Bin 0 -> 28327 bytes test/specs/scale.radialLinear.tests.js | 5 +- types/index.esm.d.ts | 20 ++++--- 7 files changed, 94 insertions(+), 24 deletions(-) create mode 100644 test/fixtures/scale.radialLinear/pointLabels/background.js create mode 100644 test/fixtures/scale.radialLinear/pointLabels/background.png diff --git a/docs/docs/axes/radial/linear.mdx b/docs/docs/axes/radial/linear.mdx index 7925af007..caf88a5d8 100644 --- a/docs/docs/axes/radial/linear.mdx +++ b/docs/docs/axes/radial/linear.mdx @@ -34,8 +34,7 @@ Namespace: `options.scales[scaleId].ticks` | Name | Type | Scriptable | Default | Description | ---- | ---- | ------- | ------- | ----------- | `backdropColor` | [`Color`](../../general/colors.md) | Yes | `'rgba(255, 255, 255, 0.75)'` | Color of label backdrops. -| `backdropPaddingX` | `number` | | `2` | Horizontal padding of label backdrop. -| `backdropPaddingY` | `number` | | `2` | Vertical padding of label backdrop. +| `backdropPadding` | `number`\|`{top: number, bottom: number}` | | `2` | Padding of label backdrop. | `format` | `object` | | | The [`Intl.NumberFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat) options used by the default label formatter | `maxTicksLimit` | `number` | | `11` | Maximum number of ticks and gridlines to show. | `precision` | `number` | | | if defined and `stepSize` is not specified, the step size will be rounded to this many decimal places. @@ -126,6 +125,8 @@ Namespace: `options.scales[scaleId].pointLabels` | Name | Type | Scriptable | Default | Description | ---- | ---- | ------- | ------- | ----------- +| `backdropColor` | [`Color`](../../general/colors.md) | `true` | `undefined` | Background color of the point label. +| `backdropPadding` | `number`\|`{top: number, bottom: number}` | | `2` | Padding of label backdrop. | `display` | `boolean` | | `true` | if true, point labels are shown. | `callback` | `function` | | | Callback function to transform data labels to point labels. The default implementation simply returns the current string. | `color` | [`Color`](../../general/colors.md) | Yes | `Chart.defaults.color` | Color of label. diff --git a/docs/docs/getting-started/v3-migration.md b/docs/docs/getting-started/v3-migration.md index 1a21a275b..1504aa1d1 100644 --- a/docs/docs/getting-started/v3-migration.md +++ b/docs/docs/getting-started/v3-migration.md @@ -235,6 +235,7 @@ Animation system was completely rewritten in Chart.js v3. Each property can now * `options.ticks.fixedStepSize` is no longer used. Use `options.ticks.stepSize`. * `options.ticks.major` and `options.ticks.minor` were replaced with scriptable options for tick fonts. * `Chart.Ticks.formatters.linear` was renamed to `Chart.Ticks.formatters.numeric`. +* `options.ticks.backdropPaddingX` and `options.ticks.backdropPaddingY` were replaced with `options.ticks.backdropPadding` in the radial linear scale. #### Tooltip diff --git a/src/scales/scale.radialLinear.js b/src/scales/scale.radialLinear.js index 298717aaf..52777619a 100644 --- a/src/scales/scale.radialLinear.js +++ b/src/scales/scale.radialLinear.js @@ -4,13 +4,14 @@ import {HALF_PI, isNumber, TAU, toDegrees, toRadians, _normalizeAngle} from '../ import LinearScaleBase from './scale.linearbase'; import Ticks from '../core/core.ticks'; import {valueOrDefault, isArray, isFinite, callback as callCallback, isNullOrUndef} from '../helpers/helpers.core'; -import {toFont} from '../helpers/helpers.options'; +import {toFont, toPadding} from '../helpers/helpers.options'; function getTickBackdropHeight(opts) { const tickOpts = opts.ticks; if (tickOpts.display && opts.display) { - return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + tickOpts.backdropPaddingY * 2; + const padding = toPadding(tickOpts.backdropPadding); + return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height; } return 0; } @@ -202,7 +203,15 @@ function drawPointLabels(scale, labelCount) { for (let i = labelCount - 1; i >= 0; i--) { const optsAtIndex = pointLabels.setContext(scale.getContext(i)); const plFont = toFont(optsAtIndex.font); - const {x, y, textAlign} = scale._pointLabelItems[i]; + const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i]; + const {backdropColor} = optsAtIndex; + + if (!isNullOrUndef(backdropColor)) { + const padding = toPadding(optsAtIndex.backdropPadding); + ctx.fillStyle = backdropColor; + ctx.fillRect(left - padding.left, top - padding.top, right - left + padding.width, bottom - top + padding.height); + } + renderText( ctx, scale._pointLabels[i], @@ -532,12 +541,12 @@ export default class RadialLinearScale extends LinearScaleBase { width = ctx.measureText(tick.label).width; ctx.fillStyle = optsAtIndex.backdropColor; - const {backdropPaddingX, backdropPaddingY} = optsAtIndex; + const padding = toPadding(optsAtIndex.backdropPadding); ctx.fillRect( - -width / 2 - backdropPaddingX, - -offset - tickFont.size / 2 - backdropPaddingY, - width + backdropPaddingX * 2, - tickFont.size + backdropPaddingY * 2 + -width / 2 - padding.left, + -offset - tickFont.size / 2 - padding.top, + width + padding.width, + tickFont.size + padding.height ); } @@ -588,16 +597,18 @@ RadialLinearScale.defaults = { // String - The colour of the label backdrop backdropColor: 'rgba(255,255,255,0.75)', - // Number - The backdrop padding above & below the label in pixels - backdropPaddingY: 2, - - // Number - The backdrop padding to the side of the label in pixels - backdropPaddingX: 2, + // Number/Object - The backdrop padding of the label in pixels + backdropPadding: 2, callback: Ticks.formatters.numeric }, pointLabels: { + backdropColor: undefined, + + // Number - The backdrop padding above & below the label in pixels + backdropPadding: 2, + // Boolean - if true, show point labels display: true, diff --git a/test/fixtures/scale.radialLinear/pointLabels/background.js b/test/fixtures/scale.radialLinear/pointLabels/background.js new file mode 100644 index 000000000..62b90a182 --- /dev/null +++ b/test/fixtures/scale.radialLinear/pointLabels/background.js @@ -0,0 +1,50 @@ +module.exports = { + tolerance: 0.01, + config: { + type: 'radar', + data: { + labels: [ + ['VENTE ET', 'COMMERCIALISATION'], + ['GESTION', 'FINANCIÈRE'], + 'NUMÉRIQUE', + ['ADMINISTRATION', 'ET OPÉRATION'], + ['RESSOURCES', 'HUMAINES'], + 'INNOVATION' + ], + datasets: [ + { + backgroundColor: '#E43E51', + label: 'Compétences entrepreunariales', + data: [3, 2, 2, 1, 3, 1] + } + ] + }, + options: { + plugins: { + legend: false, + tooltip: false, + filler: false + }, + scales: { + r: { + min: 0, + max: 3, + pointLabels: { + backdropColor: 'blue', + backdropPadding: {left: 5, right: 5, top: 2, bottom: 2}, + }, + ticks: { + display: false, + stepSize: 1, + maxTicksLimit: 1 + } + } + }, + responsive: true, + maintainAspectRatio: false + } + }, + options: { + spriteText: true + } +}; diff --git a/test/fixtures/scale.radialLinear/pointLabels/background.png b/test/fixtures/scale.radialLinear/pointLabels/background.png new file mode 100644 index 0000000000000000000000000000000000000000..963aef94ba1ac9db9e1549ef95f6668417388534 GIT binary patch literal 28327 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 + /** + * Padding of label backdrop. + * @default 2 + */ + backdropPadding: Scriptable; + /** * if true, point labels are shown. * @default true @@ -3043,15 +3054,10 @@ export type RadialLinearScaleOptions = CoreScaleOptions & { */ backdropColor: Scriptable; /** - * Horizontal padding of label backdrop. + * Padding of label backdrop. * @default 2 */ - backdropPaddingX: number; - /** - * Vertical padding of label backdrop. - * @default 2 - */ - backdropPaddingY: number; + backdropPadding: number | ChartArea; /** * The Intl.NumberFormat options used by the default label formatter