From d6b4fe26292fb6f02232117718e9a056333bf523 Mon Sep 17 00:00:00 2001 From: Jukka Kurkela Date: Sat, 28 Nov 2020 22:07:46 +0200 Subject: [PATCH] LineElement: no fill by default (#8111) * LineElement: no fill by default * Update negative-times fixture --- docs/docs/charts/area.md | 2 +- docs/docs/charts/bar.mdx | 1 - docs/docs/charts/line.mdx | 2 +- docs/docs/charts/radar.mdx | 8 +++----- docs/docs/configuration/elements.md | 2 +- docs/docs/getting-started/v3-migration.md | 1 + src/elements/element.line.js | 2 +- .../backgroundColor/scriptable.js | 1 + .../controller.line/backgroundColor/value.js | 1 + .../controller.line/showLine/false.js | 3 ++- test/fixtures/scale.time/negative-times.js | 2 ++ test/fixtures/scale.time/negative-times.png | Bin 14136 -> 13403 bytes 12 files changed, 14 insertions(+), 11 deletions(-) diff --git a/docs/docs/charts/area.md b/docs/docs/charts/area.md index c535b1b10..9015db507 100644 --- a/docs/docs/charts/area.md +++ b/docs/docs/charts/area.md @@ -17,7 +17,7 @@ Both [line](./line.mdx) and [radar](./radar.mdx) charts support a `fill` option | Stacked value below 4 | `string` | `'stack'` | | Axis value | `object` | `{ value: number; }` | -> 1 for backward compatibility, `fill: true` (default) is equivalent to `fill: 'origin'`
+> 1 for backward compatibility, `fill: true` is equivalent to `fill: 'origin'`
**Example** diff --git a/docs/docs/charts/bar.mdx b/docs/docs/charts/bar.mdx index 77b6d87d9..b52b5d091 100644 --- a/docs/docs/charts/bar.mdx +++ b/docs/docs/charts/bar.mdx @@ -23,7 +23,6 @@ export const ExampleChart0 = () => { datasets: [{ label: 'My First Dataset', data: [65, 59, 80, 81, 56, 55, 40], - fill: false, backgroundColor: [ 'rgba(255, 99, 132, 0.2)', 'rgba(255, 159, 64, 0.2)', diff --git a/docs/docs/charts/line.mdx b/docs/docs/charts/line.mdx index bd97cffdd..7587abfee 100644 --- a/docs/docs/charts/line.mdx +++ b/docs/docs/charts/line.mdx @@ -64,7 +64,7 @@ The line chart allows a number of properties to be specified for each dataset. T | [`borderWidth`](#line-styling) | `number` | Yes | - | `3` | [`clip`](#general) | `number`\|`object` | - | - | `undefined` | [`cubicInterpolationMode`](#cubicinterpolationmode) | `string` | Yes | - | `'default'` -| [`fill`](#line-styling) | `boolean`\|`string` | Yes | - | `true` +| [`fill`](#line-styling) | `boolean`\|`string` | Yes | - | `false` | [`hoverBackgroundColor`](#line-styling) | [`Color`](../general/colors.md) | Yes | - | `undefined` | [`hoverBorderCapStyle`](#line-styling) | `string` | Yes | - | `undefined` | [`hoverBorderColor`](#line-styling) | [`Color`](../general/colors.md) | Yes | - | `undefined` diff --git a/docs/docs/charts/radar.mdx b/docs/docs/charts/radar.mdx index 6fec0ff04..2e8d94cd9 100644 --- a/docs/docs/charts/radar.mdx +++ b/docs/docs/charts/radar.mdx @@ -31,8 +31,7 @@ export const ExampleChart = () => { pointBackgroundColor: 'rgb(255, 99, 132)', pointBorderColor: '#fff', pointHoverBackgroundColor: '#fff', - pointHoverBorderColor: 'rgb(255, 99, 132)', - fill: true + pointHoverBorderColor: 'rgb(255, 99, 132)' }, { label: 'My Second Dataset', data: [28, 48, 40, 19, 96, 27, 100], @@ -42,8 +41,7 @@ export const ExampleChart = () => { pointBackgroundColor: 'rgb(54, 162, 235)', pointBorderColor: '#fff', pointHoverBackgroundColor: '#fff', - pointHoverBorderColor: 'rgb(54, 162, 235)', - fill: true + pointHoverBorderColor: 'rgb(54, 162, 235)' }] }, options: { @@ -94,7 +92,7 @@ The radar chart allows a number of properties to be specified for each dataset. | [`hoverBorderJoinStyle`](#line-styling) | `string` | Yes | - | `undefined` | [`hoverBorderWidth`](#line-styling) | `number` | Yes | - | `undefined` | [`clip`](#general) | number|object | - | - | `undefined` -| [`fill`](#line-styling) | boolean|string | Yes | - | `true` +| [`fill`](#line-styling) | boolean|string | Yes | - | `false` | [`label`](#general) | `string` | - | - | `''` | [`order`](#general) | `number` | - | - | `0` | [`tension`](#line-styling) | `number` | - | - | `0` diff --git a/docs/docs/configuration/elements.md b/docs/docs/configuration/elements.md index 4cc3e6b07..1e6554930 100644 --- a/docs/docs/configuration/elements.md +++ b/docs/docs/configuration/elements.md @@ -65,7 +65,7 @@ Global line options: `Chart.defaults.elements.line`. | `borderJoinStyle` | `string` | `'miter'` | Line join style. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineJoin). | `capBezierPoints` | `boolean` | `true` | `true` to keep Bézier control inside the chart, `false` for no restriction. | `cubicInterpolationMode` | `string` | `'default'` | Interpolation mode to apply. [See more...](./charts/line.mdx/#cubicinterpolationmode) -| `fill` | `boolean`\|`string` | `true` | How to fill the area under the line. See [area charts](../charts/area.md#filling-modes). +| `fill` | `boolean`\|`string` | `false` | How to fill the area under the line. See [area charts](../charts/area.md#filling-modes). | `stepped` | `boolean` | `false` | `true` to show the line as a stepped line (`tension` will be ignored). ## Bar Configuration diff --git a/docs/docs/getting-started/v3-migration.md b/docs/docs/getting-started/v3-migration.md index aaace7c45..ac35edfb6 100644 --- a/docs/docs/getting-started/v3-migration.md +++ b/docs/docs/getting-started/v3-migration.md @@ -110,6 +110,7 @@ A number of changes were made to the configuration options passed to the `Chart` * `defaultLineHeight` was renamed to `font.lineHeight` * Horizontal Bar default tooltip mode was changed from `'index'` to `'nearest'` to match vertical bar charts * `legend`, `title` and `tooltip` namespaces were moved from `Chart.defaults` to `Chart.defaults.plugins`. +* `elements.line.fill` default changed from `true` to `false`. #### Scales diff --git a/src/elements/element.line.js b/src/elements/element.line.js index fc9fc3fb5..5ffca4393 100644 --- a/src/elements/element.line.js +++ b/src/elements/element.line.js @@ -382,7 +382,7 @@ LineElement.defaults = { borderJoinStyle: 'miter', borderWidth: 3, capBezierPoints: true, - fill: true, + fill: false, tension: 0 }; diff --git a/test/fixtures/controller.line/backgroundColor/scriptable.js b/test/fixtures/controller.line/backgroundColor/scriptable.js index ab1ab1580..b02960ab7 100644 --- a/test/fixtures/controller.line/backgroundColor/scriptable.js +++ b/test/fixtures/controller.line/backgroundColor/scriptable.js @@ -23,6 +23,7 @@ module.exports = { options: { elements: { line: { + fill: true, backgroundColor: function(ctx) { var index = ctx.index; return index === 0 ? '#ff0000' diff --git a/test/fixtures/controller.line/backgroundColor/value.js b/test/fixtures/controller.line/backgroundColor/value.js index b92a0111f..adc20f9ef 100644 --- a/test/fixtures/controller.line/backgroundColor/value.js +++ b/test/fixtures/controller.line/backgroundColor/value.js @@ -18,6 +18,7 @@ module.exports = { options: { elements: { line: { + fill: true, backgroundColor: '#00ff00' }, point: { diff --git a/test/fixtures/controller.line/showLine/false.js b/test/fixtures/controller.line/showLine/false.js index a90097b0c..648ee8d06 100644 --- a/test/fixtures/controller.line/showLine/false.js +++ b/test/fixtures/controller.line/showLine/false.js @@ -7,7 +7,8 @@ module.exports = { data: [10, 15, 0, -4], label: 'dataset1', borderColor: 'red', - backgroundColor: 'green' + backgroundColor: 'green', + fill: true }], labels: ['label1', 'label2', 'label3', 'label4'] }, diff --git a/test/fixtures/scale.time/negative-times.js b/test/fixtures/scale.time/negative-times.js index 5db06c412..f48ecf1d6 100644 --- a/test/fixtures/scale.time/negative-times.js +++ b/test/fixtures/scale.time/negative-times.js @@ -3,6 +3,8 @@ module.exports = { type: 'line', data: { datasets: [{ + fill: true, + backgroundColor: 'red', data: [ {x: -1000000, y: 1}, {x: 1000000000, y: 2} diff --git a/test/fixtures/scale.time/negative-times.png b/test/fixtures/scale.time/negative-times.png index b7453937b51e728c7e7086070b546516aaa22a83..e655a234d5e3a6450c0640e2def0c7ef769df51a 100644 GIT binary patch literal 13403 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 G8SsA?$Ua>F literal 14136 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