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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 literal 0 Hc-jL100001 diff --git a/test/specs/scale.radialLinear.tests.js b/test/specs/scale.radialLinear.tests.js index d4ef2a779..75cbfd5e7 100644 --- a/test/specs/scale.radialLinear.tests.js +++ b/test/specs/scale.radialLinear.tests.js @@ -37,12 +37,13 @@ describe('Test the radial linear scale', function() { color: Chart.defaults.color, showLabelBackdrop: true, backdropColor: 'rgba(255,255,255,0.75)', - backdropPaddingY: 2, - backdropPaddingX: 2, + backdropPadding: 2, callback: defaultConfig.ticks.callback }, pointLabels: { + backdropColor: undefined, + backdropPadding: 2, color: Chart.defaults.color, display: true, font: { diff --git a/types/index.esm.d.ts b/types/index.esm.d.ts index 0f4739da6..d12b52500 100644 --- a/types/index.esm.d.ts +++ b/types/index.esm.d.ts @@ -3005,6 +3005,17 @@ export type RadialLinearScaleOptions = CoreScaleOptions & { max: number; pointLabels: { + /** + * Background color of the point label. + * @default undefined + */ + backdropColor: Scriptable; + /** + * 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. - * @default 2 - */ - backdropPaddingX: number; - /** - * Vertical padding of label backdrop. + * Padding of label backdrop. * @default 2 */ - backdropPaddingY: number; + backdropPadding: number | ChartArea; /** * The Intl.NumberFormat options used by the default label formatter -- 2.47.3