From 3f0960ce668ae679a962ae54e2a5392675b9e457 Mon Sep 17 00:00:00 2001 From: Akihiko Kusanagi Date: Thu, 31 Jan 2019 10:49:56 +0800 Subject: [PATCH 1/5] Add radar scriptable options --- docs/charts/radar.md | 116 +++++--- src/controllers/controller.line.js | 12 +- src/controllers/controller.radar.js | 205 +++++++++----- .../backgroundColor/indexable.js | 58 ++++ .../backgroundColor/indexable.png | Bin 0 -> 13114 bytes .../backgroundColor/scriptable.js | 56 ++++ .../backgroundColor/scriptable.png | Bin 0 -> 12508 bytes .../controller.radar/backgroundColor/value.js | 44 +++ .../backgroundColor/value.png | Bin 0 -> 12403 bytes .../controller.radar/borderColor/indexable.js | 58 ++++ .../borderColor/indexable.png | Bin 0 -> 15373 bytes .../borderColor/scriptable.js | 56 ++++ .../borderColor/scriptable.png | Bin 0 -> 14650 bytes .../controller.radar/borderColor/value.js | 44 +++ .../controller.radar/borderColor/value.png | Bin 0 -> 14526 bytes .../controller.radar/borderWidth/indexable.js | 50 ++++ .../borderWidth/indexable.png | Bin 0 -> 14295 bytes .../borderWidth/scriptable.js | 56 ++++ .../borderWidth/scriptable.png | Bin 0 -> 14107 bytes .../controller.radar/borderWidth/value.js | 46 ++++ .../controller.radar/borderWidth/value.png | Bin 0 -> 13944 bytes .../controller.radar/pointStyle/indexable.js | 62 +++++ .../controller.radar/pointStyle/indexable.png | Bin 0 -> 10783 bytes .../controller.radar/pointStyle/scriptable.js | 60 ++++ .../pointStyle/scriptable.png | Bin 0 -> 10878 bytes .../controller.radar/pointStyle/value.js | 46 ++++ .../controller.radar/pointStyle/value.png | Bin 0 -> 11268 bytes .../controller.radar/radius/indexable.js | 49 ++++ .../controller.radar/radius/indexable.png | Bin 0 -> 10267 bytes .../controller.radar/radius/scriptable.js | 55 ++++ .../controller.radar/radius/scriptable.png | Bin 0 -> 11034 bytes .../fixtures/controller.radar/radius/value.js | 45 +++ .../controller.radar/radius/value.png | Bin 0 -> 10490 bytes .../controller.radar/rotation/indexable.js | 51 ++++ .../controller.radar/rotation/indexable.png | Bin 0 -> 19221 bytes .../controller.radar/rotation/scriptable.js | 57 ++++ .../controller.radar/rotation/scriptable.png | Bin 0 -> 10351 bytes .../controller.radar/rotation/value.js | 47 ++++ .../controller.radar/rotation/value.png | Bin 0 -> 9857 bytes test/specs/controller.radar.tests.js | 260 ++++++++---------- 40 files changed, 1264 insertions(+), 269 deletions(-) create mode 100644 test/fixtures/controller.radar/backgroundColor/indexable.js create mode 100644 test/fixtures/controller.radar/backgroundColor/indexable.png create mode 100644 test/fixtures/controller.radar/backgroundColor/scriptable.js create mode 100644 test/fixtures/controller.radar/backgroundColor/scriptable.png create mode 100644 test/fixtures/controller.radar/backgroundColor/value.js create mode 100644 test/fixtures/controller.radar/backgroundColor/value.png create mode 100644 test/fixtures/controller.radar/borderColor/indexable.js create mode 100644 test/fixtures/controller.radar/borderColor/indexable.png create mode 100644 test/fixtures/controller.radar/borderColor/scriptable.js create mode 100644 test/fixtures/controller.radar/borderColor/scriptable.png create mode 100644 test/fixtures/controller.radar/borderColor/value.js create mode 100644 test/fixtures/controller.radar/borderColor/value.png create mode 100644 test/fixtures/controller.radar/borderWidth/indexable.js create mode 100644 test/fixtures/controller.radar/borderWidth/indexable.png create mode 100644 test/fixtures/controller.radar/borderWidth/scriptable.js create mode 100644 test/fixtures/controller.radar/borderWidth/scriptable.png create mode 100644 test/fixtures/controller.radar/borderWidth/value.js create mode 100644 test/fixtures/controller.radar/borderWidth/value.png create mode 100644 test/fixtures/controller.radar/pointStyle/indexable.js create mode 100644 test/fixtures/controller.radar/pointStyle/indexable.png create mode 100644 test/fixtures/controller.radar/pointStyle/scriptable.js create mode 100644 test/fixtures/controller.radar/pointStyle/scriptable.png create mode 100644 test/fixtures/controller.radar/pointStyle/value.js create mode 100644 test/fixtures/controller.radar/pointStyle/value.png create mode 100644 test/fixtures/controller.radar/radius/indexable.js create mode 100644 test/fixtures/controller.radar/radius/indexable.png create mode 100644 test/fixtures/controller.radar/radius/scriptable.js create mode 100644 test/fixtures/controller.radar/radius/scriptable.png create mode 100644 test/fixtures/controller.radar/radius/value.js create mode 100644 test/fixtures/controller.radar/radius/value.png create mode 100644 test/fixtures/controller.radar/rotation/indexable.js create mode 100644 test/fixtures/controller.radar/rotation/indexable.png create mode 100644 test/fixtures/controller.radar/rotation/scriptable.js create mode 100644 test/fixtures/controller.radar/rotation/scriptable.png create mode 100644 test/fixtures/controller.radar/rotation/value.js create mode 100644 test/fixtures/controller.radar/rotation/value.png diff --git a/docs/charts/radar.md b/docs/charts/radar.md index b1e31d78b07..1b1c7ef0714 100644 --- a/docs/charts/radar.md +++ b/docs/charts/radar.md @@ -64,46 +64,80 @@ var myRadarChart = new Chart(ctx, { The radar chart allows a number of properties to be specified for each dataset. These are used to set display properties for a specific dataset. For example, the colour of a line is generally set this way. -All `point*` properties can be specified as an array. If these are set to an array value, the first value applies to the first point, the second value to the second point, and so on. - -| Name | Type | Description -| ---- | ---- | ----------- -| `label` | `string` | The label for the dataset which appears in the legend and tooltips. -| `backgroundColor` | `Color` | The fill color under the line. See [Colors](../general/colors.md#colors). -| `borderColor` | `Color` | The color of the line. See [Colors](../general/colors.md#colors). -| `borderWidth` | `number` | The width of the line in pixels. -| `borderDash` | `number[]` | Length and spacing of dashes. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash). -| `borderDashOffset` | `number` | Offset for line dashes. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineDashOffset). -| `borderCapStyle` | `string` | Cap style of the line. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineCap). -| `borderJoinStyle` | `string` | Line joint style. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineJoin). -| `fill` | boolean|string | How to fill the area under the line. See [area charts](area.md). -| `lineTension` | `number` | Bezier curve tension of the line. Set to 0 to draw straightlines. -| `pointBackgroundColor` | Color|Color[] | The fill color for points. -| `pointBorderColor` | Color|Color[] | The border color for points. -| `pointBorderWidth` | number|number[] | The width of the point border in pixels. -| `pointRadius` | number|number[] | The radius of the point shape. If set to 0, the point is not rendered. -| `pointRotation` | number|number[] | The rotation of the point in degrees. -| `pointStyle` | string|string[]|Image|Image[] | Style of the point. [more...](#pointstyle) -| `pointHitRadius` | number|number[] | The pixel size of the non-displayed point that reacts to mouse events. -| `pointHoverBackgroundColor` | Color|Color[] | Point background color when hovered. -| `pointHoverBorderColor` | Color|Color[] | Point border color when hovered. -| `pointHoverBorderWidth` | number|number[] | Border width of point when hovered. -| `pointHoverRadius` | number|number[] | The radius of the point when hovered. - -### pointStyle -The style of point. Options are: -* `'circle'` -* `'cross'` -* `'crossRot'` -* `'dash'.` -* `'line'` -* `'rect'` -* `'rectRounded'` -* `'rectRot'` -* `'star'` -* `'triangle'` - -If the option is an image, that image is drawn on the canvas using [drawImage](https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/drawImage). +| Name | Type | [Scriptable](../general/options.md#scriptable-options) | [Indexable](../general/options.md#indexable-options) | Default +| ---- | ---- | :----: | :----: | ---- +| [`backgroundColor`](#line-styling) | [`Color`](../general/colors.md) | - | - | `'rgba(0, 0, 0, 0.1)'` +| [`borderCapStyle`](#line-styling) | `string` | - | - | `'butt'` +| [`borderColor`](#line-styling) | [`Color`](../general/colors.md) | - | - | `'rgba(0, 0, 0, 0.1)'` +| [`borderDash`](#line-styling) | `number[]` | - | - | `[]` +| [`borderDashOffset`](#line-styling) | `number` | - | - | `0.0` +| [`borderJoinStyle`](#line-styling) | `string` | - | - | `'miter'` +| [`borderWidth`](#line-styling) | `number` | - | - | `3` +| [`fill`](#line-styling) | boolean|string | - | - | `true` +| [`label`](#general) | `string` | - | - | `''` +| [`lineTension`](#line-styling) | `number` | - | - | `0.4` +| [`pointBackgroundColor`](#point-styling) | `Color` | Yes | Yes | `'rgba(0, 0, 0, 0.1)'` +| [`pointBorderColor`](#point-styling) | `Color` | Yes | Yes | `'rgba(0, 0, 0, 0.1)'` +| [`pointBorderWidth`](#point-styling) | `number` | Yes | Yes | `1` +| [`pointHitRadius`](#point-styling) | `number` | Yes | Yes | `1` +| [`pointHoverBackgroundColor`](#interactions) | `Color` | Yes | Yes | `undefined` +| [`pointHoverBorderColor`](#interactions) | `Color` | Yes | Yes | `undefined` +| [`pointHoverBorderWidth`](#interactions) | `number` | Yes | Yes | `1` +| [`pointHoverRadius`](#interactions) | `number` | Yes | Yes | `4` +| [`pointRadius`](#point-styling) | `number` | Yes | Yes | `3` +| [`pointRotation`](#point-styling) | `number` | Yes | Yes | `0` +| [`pointStyle`](#point-styling) | string|Image | Yes | Yes | `'circle'` + +### General + +| Name | Description +| ---- | ---- +| `label` | The label for the dataset which appears in the legend and tooltips. + +### Point Styling + +The style of each point can be controlled with the following properties: + +| Name | Description +| ---- | ---- +| `pointBackgroundColor` | The fill color for points. +| `pointBorderColor` | The border color for points. +| `pointBorderWidth` | The width of the point border in pixels. +| `pointHitRadius` | The pixel size of the non-displayed point that reacts to mouse events. +| `pointRadius` | The radius of the point shape. If set to 0, the point is not rendered. +| `pointRotation` | The rotation of the point in degrees. +| `pointStyle` | Style of the point. [more...](../configuration/elements#point-styles) + +All these values, if `undefined`, fallback first to the dataset options then to the associated [`elements.point.*`](../configuration/elements.md#point-configuration) options. + +### Line Styling + +The style of the line can be controlled with the following properties: + +| Name | Description +| ---- | ---- +| `backgroundColor` | The line fill color. +| `borderCapStyle` | Cap style of the line. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineCap). +| `borderColor` | The line color. +| `borderDash` | Length and spacing of dashes. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash). +| `borderDashOffset` | Offset for line dashes. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineDashOffset). +| `borderJoinStyle` | Line joint style. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineJoin). +| `borderWidth` | The line width (in pixels). +| `fill` | How to fill the area under the line. See [area charts](area.md). +| `lineTension` | Bezier curve tension of the line. Set to 0 to draw straightlines. + +All these values, if `undefined`, fallback to the associated [`elements.line.*`](../configuration/elements.md#line-configuration) options. + +### Interactions + +The interaction with each point can be controlled with the following properties: + +| Name | Description +| ---- | ----------- +| `pointHoverBackgroundColor` | Point background color when hovered. +| `pointHoverBorderColor` | Point border color when hovered. +| `pointHoverBorderWidth` | Border width of point when hovered. +| `pointHoverRadius` | The radius of the point when hovered. ## Configuration Options @@ -128,7 +162,7 @@ It is common to want to apply a configuration setting to all created radar chart ## Data Structure -The `data` property of a dataset for a radar chart is specified as an array of numbers. Each point in the data array corresponds to the label at the same index on the x axis. +The `data` property of a dataset for a radar chart is specified as an array of numbers. Each point in the data array corresponds to the label at the same index. ```javascript data: [20, 10] diff --git a/src/controllers/controller.line.js b/src/controllers/controller.line.js index 5341ac1e6dd..d4d7cdc4041 100644 --- a/src/controllers/controller.line.js +++ b/src/controllers/controller.line.js @@ -91,6 +91,7 @@ module.exports = DatasetController.extend({ var value = dataset.data[index]; var yScale = me.getScaleForId(meta.yAxisID); var xScale = me.getScaleForId(meta.xAxisID); + var lineModel = meta.dataset._model; var x, y; var options = me._resolvePointOptions(point, index); @@ -117,10 +118,10 @@ module.exports = DatasetController.extend({ backgroundColor: options.backgroundColor, borderColor: options.borderColor, borderWidth: options.borderWidth, - tension: meta.dataset._model ? meta.dataset._model.tension : 0, - steppedLine: meta.dataset._model ? meta.dataset._model.steppedLine : false, + tension: lineModel ? lineModel.tension : 0, + steppedLine: lineModel ? lineModel.steppedLine : false, // Tooltip - hitRadius: options.hitRadius, + hitRadius: options.hitRadius }; }, @@ -256,7 +257,7 @@ module.exports = DatasetController.extend({ var lineModel = meta.dataset._model; var area = chart.chartArea; var points = meta.data || []; - var i, ilen, point, model, controlPoints; + var i, ilen, model, controlPoints; // Only consider points that are drawn in case the spanGaps option is used if (lineModel.spanGaps) { @@ -273,8 +274,7 @@ module.exports = DatasetController.extend({ helpers.splineCurveMonotone(points); } else { for (i = 0, ilen = points.length; i < ilen; ++i) { - point = points[i]; - model = point._model; + model = points[i]._model; controlPoints = helpers.splineCurve( helpers.previousItem(points, i)._model, model, diff --git a/src/controllers/controller.radar.js b/src/controllers/controller.radar.js index 500a40d3446..d5944b6d082 100644 --- a/src/controllers/controller.radar.js +++ b/src/controllers/controller.radar.js @@ -5,6 +5,7 @@ var defaults = require('../core/core.defaults'); var elements = require('../elements/index'); var helpers = require('../helpers/index'); +var valueOrDefault = helpers.valueOrDefault; var resolve = helpers.options.resolve; defaults._set('radar', { @@ -31,10 +32,8 @@ module.exports = DatasetController.extend({ var meta = me.getMeta(); var line = meta.dataset; var points = meta.data || []; - var custom = line.custom || {}; - var dataset = me.getDataset(); - var lineElementOptions = me.chart.options.elements.line; var scale = me.chart.scale; + var dataset = me.getDataset(); var i, ilen; // Compatibility: If the properties are defined with only the old name, use those values @@ -42,40 +41,28 @@ module.exports = DatasetController.extend({ dataset.lineTension = dataset.tension; } - helpers.extend(meta.dataset, { - // Utility - _datasetIndex: me.index, - _scale: scale, - // Data - _children: points, - _loop: true, - // Model - _model: { - // Appearance - tension: resolve([custom.tension, dataset.lineTension, lineElementOptions.tension]), - backgroundColor: resolve([custom.backgroundColor, dataset.backgroundColor, lineElementOptions.backgroundColor]), - borderWidth: resolve([custom.borderWidth, dataset.borderWidth, lineElementOptions.borderWidth]), - borderColor: resolve([custom.borderColor, dataset.borderColor, lineElementOptions.borderColor]), - fill: resolve([custom.fill, dataset.fill, lineElementOptions.fill]), - borderCapStyle: resolve([custom.borderCapStyle, dataset.borderCapStyle, lineElementOptions.borderCapStyle]), - borderDash: resolve([custom.borderDash, dataset.borderDash, lineElementOptions.borderDash]), - borderDashOffset: resolve([custom.borderDashOffset, dataset.borderDashOffset, lineElementOptions.borderDashOffset]), - borderJoinStyle: resolve([custom.borderJoinStyle, dataset.borderJoinStyle, lineElementOptions.borderJoinStyle]), - } - }); - - meta.dataset.pivot(); + // Utility + line._scale = scale; + line._datasetIndex = me.index; + // Data + line._children = points; + line._loop = true; + // Model + line._model = me._resolveLineOptions(line); + + line.pivot(); // Update Points - for (i = 0, ilen = points.length; i < ilen; i++) { + for (i = 0, ilen = points.length; i < ilen; ++i) { me.updateElement(points[i], i, reset); } - // Update bezier control points - me.updateBezierControlPoints(); + if (line._model.tension !== 0) { + me.updateBezierControlPoints(); + } // Now pivot the point for animation - for (i = 0, ilen = points.length; i < ilen; i++) { + for (i = 0, ilen = points.length; i < ilen; ++i) { points[i].pivot(); } }, @@ -85,43 +72,122 @@ module.exports = DatasetController.extend({ var custom = point.custom || {}; var dataset = me.getDataset(); var scale = me.chart.scale; - var pointElementOptions = me.chart.options.elements.point; var pointPosition = scale.getPointPositionForValue(index, dataset.data[index]); + var x, y; + + var options = me._resolvePointOptions(point, index); + + x = reset ? scale.xCenter : pointPosition.x; + y = reset ? scale.yCenter : pointPosition.y; + + // Utility + point._scale = scale; + point._options = options; + point._datasetIndex = me.index; + point._index = index; + + // Desired view properties + point._model = { + x: x, // value not used in dataset scale, but we want a consistent API between scales + y: y, + skip: custom.skip || isNaN(x) || isNaN(y), + // Appearance + radius: options.radius, + pointStyle: options.pointStyle, + rotation: options.rotation, + backgroundColor: options.backgroundColor, + borderColor: options.borderColor, + borderWidth: options.borderWidth, + tension: resolve([custom.tension, dataset.lineTension, me.chart.options.elements.line.tension]), + + // Tooltip + hitRadius: options.hitRadius + }; + }, - // Compatibility: If the properties are defined with only the old name, use those values - if ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) { - dataset.pointRadius = dataset.radius; + /** + * @private + */ + _resolvePointOptions: function(element, index) { + var me = this; + var chart = me.chart; + var dataset = chart.data.datasets[me.index]; + var custom = element.custom || {}; + var options = chart.options.elements.point; + var values = {}; + var i, ilen, key; + + // Scriptable options + var context = { + chart: chart, + dataIndex: index, + dataset: dataset, + datasetIndex: me.index + }; + + var ELEMENT_OPTIONS = { + backgroundColor: 'pointBackgroundColor', + borderColor: 'pointBorderColor', + borderWidth: 'pointBorderWidth', + hitRadius: 'pointHitRadius', + hoverBackgroundColor: 'pointHoverBackgroundColor', + hoverBorderColor: 'pointHoverBorderColor', + hoverBorderWidth: 'pointHoverBorderWidth', + hoverRadius: 'pointHoverRadius', + pointStyle: 'pointStyle', + radius: 'pointRadius', + rotation: 'pointRotation', + }; + var keys = Object.keys(ELEMENT_OPTIONS); + + for (i = 0, ilen = keys.length; i < ilen; ++i) { + key = keys[i]; + values[key] = resolve([ + custom[key], + dataset[ELEMENT_OPTIONS[key]], + dataset[key], + options[key] + ], context, index); } - if ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) { - dataset.pointHitRadius = dataset.hitRadius; + + return values; + }, + + /** + * @private + */ + _resolveLineOptions: function(element) { + var me = this; + var chart = me.chart; + var dataset = chart.data.datasets[me.index]; + var custom = element.custom || {}; + var options = chart.options.elements.line; + var values = {}; + var i, ilen, key; + + var keys = [ + 'backgroundColor', + 'borderWidth', + 'borderColor', + 'borderCapStyle', + 'borderDash', + 'borderDashOffset', + 'borderJoinStyle', + 'fill' + ]; + + for (i = 0, ilen = keys.length; i < ilen; ++i) { + key = keys[i]; + values[key] = resolve([ + custom[key], + dataset[key], + options[key] + ]); } - helpers.extend(point, { - // Utility - _datasetIndex: me.index, - _index: index, - _scale: scale, - - // Desired view properties - _model: { - x: reset ? scale.xCenter : pointPosition.x, // value not used in dataset scale, but we want a consistent API between scales - y: reset ? scale.yCenter : pointPosition.y, - - // Appearance - tension: resolve([custom.tension, dataset.lineTension, me.chart.options.elements.line.tension]), - radius: resolve([custom.radius, dataset.pointRadius, pointElementOptions.radius], undefined, index), - backgroundColor: resolve([custom.backgroundColor, dataset.pointBackgroundColor, pointElementOptions.backgroundColor], undefined, index), - borderColor: resolve([custom.borderColor, dataset.pointBorderColor, pointElementOptions.borderColor], undefined, index), - borderWidth: resolve([custom.borderWidth, dataset.pointBorderWidth, pointElementOptions.borderWidth], undefined, index), - pointStyle: resolve([custom.pointStyle, dataset.pointStyle, pointElementOptions.pointStyle], undefined, index), - rotation: resolve([custom.rotation, dataset.pointRotation, pointElementOptions.rotation], undefined, index), - - // Tooltip - hitRadius: resolve([custom.hitRadius, dataset.pointHitRadius, pointElementOptions.hitRadius], undefined, index) - } - }); - - point._model.skip = custom.skip || isNaN(point._model.x) || isNaN(point._model.y); + values.tension = resolve([custom.tension, dataset.lineTension, options.tension]); + + return values; }, updateBezierControlPoints: function() { @@ -135,7 +201,7 @@ module.exports = DatasetController.extend({ return Math.max(Math.min(pt, max), min); } - for (i = 0, ilen = points.length; i < ilen; i++) { + for (i = 0, ilen = points.length; i < ilen; ++i) { model = points[i]._model; controlPoints = helpers.splineCurve( helpers.previousItem(points, i, true)._model, @@ -153,11 +219,8 @@ module.exports = DatasetController.extend({ }, setHoverStyle: function(point) { - // Point - var dataset = this.chart.data.datasets[point._datasetIndex]; - var custom = point.custom || {}; - var index = point._index; var model = point._model; + var options = point._options; var getHoverColor = helpers.getHoverColor; point.$previousStyle = { @@ -167,9 +230,9 @@ module.exports = DatasetController.extend({ radius: model.radius }; - model.radius = resolve([custom.hoverRadius, dataset.pointHoverRadius, this.chart.options.elements.point.hoverRadius], undefined, index); - model.backgroundColor = resolve([custom.hoverBackgroundColor, dataset.pointHoverBackgroundColor, getHoverColor(model.backgroundColor)], undefined, index); - model.borderColor = resolve([custom.hoverBorderColor, dataset.pointHoverBorderColor, getHoverColor(model.borderColor)], undefined, index); - model.borderWidth = resolve([custom.hoverBorderWidth, dataset.pointHoverBorderWidth, model.borderWidth], undefined, index); + model.backgroundColor = valueOrDefault(options.hoverBackgroundColor, getHoverColor(options.backgroundColor)); + model.borderColor = valueOrDefault(options.hoverBorderColor, getHoverColor(options.borderColor)); + model.borderWidth = valueOrDefault(options.hoverBorderWidth, options.borderWidth); + model.radius = valueOrDefault(options.hoverRadius, options.radius); } }); diff --git a/test/fixtures/controller.radar/backgroundColor/indexable.js b/test/fixtures/controller.radar/backgroundColor/indexable.js new file mode 100644 index 00000000000..cd59ce44a13 --- /dev/null +++ b/test/fixtures/controller.radar/backgroundColor/indexable.js @@ -0,0 +1,58 @@ +module.exports = { + config: { + type: 'radar', + data: { + labels: [0, 1, 2, 3, 4, 5], + datasets: [ + { + // option in dataset + data: [0, 5, 10, null, -10, -5], + pointBackgroundColor: [ + '#ff0000', + '#00ff00', + '#0000ff', + '#ffff00', + '#ff00ff', + '#000000' + ] + }, + { + // option in element (fallback) + data: [4, -5, -10, null, 10, 5], + } + ] + }, + options: { + legend: false, + title: false, + elements: { + line: { + fill: false, + }, + point: { + backgroundColor: [ + '#ff88ff', + '#888888', + '#ff8800', + '#00ff88', + '#8800ff', + '#ffff88' + ], + radius: 10 + } + }, + scale: { + display: false, + ticks: { + min: -15 + } + } + } + }, + options: { + canvas: { + height: 512, + width: 512 + } + } +}; diff --git a/test/fixtures/controller.radar/backgroundColor/indexable.png b/test/fixtures/controller.radar/backgroundColor/indexable.png new file mode 100644 index 0000000000000000000000000000000000000000..6141ca8015bdd04a8aa6e4a8745481323b7bdcf9 GIT binary patch literal 13114 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 8 ? '#ff0000' + : value > 0 ? '#00ff00' + : value > -8 ? '#0000ff' + : '#ff00ff'; + } + }, + { + // option in element (fallback) + data: [4, -5, -10, null, 10, 5], + } + ] + }, + options: { + legend: false, + title: false, + elements: { + line: { + fill: false, + }, + point: { + backgroundColor: function(ctx) { + var value = ctx.dataset.data[ctx.dataIndex] || 0; + return value > 8 ? '#ff00ff' + : value > 0 ? '#0000ff' + : value > -8 ? '#ff0000' + : '#00ff00'; + }, + radius: 10, + } + }, + scale: { + display: false, + ticks: { + min: -15 + } + } + } + }, + options: { + canvas: { + height: 512, + width: 512 + } + } +}; diff --git a/test/fixtures/controller.radar/backgroundColor/scriptable.png b/test/fixtures/controller.radar/backgroundColor/scriptable.png new file mode 100644 index 0000000000000000000000000000000000000000..b1e6d6e5aee23b8b42c90284c4cf8ded91b81706 GIT binary patch literal 12508 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 I%b0%tKUF4iz5oCK literal 0 HcmV?d00001 diff --git a/test/fixtures/controller.radar/backgroundColor/value.js b/test/fixtures/controller.radar/backgroundColor/value.js new file mode 100644 index 00000000000..0a592c61595 --- /dev/null +++ b/test/fixtures/controller.radar/backgroundColor/value.js @@ -0,0 +1,44 @@ +module.exports = { + config: { + type: 'radar', + data: { + labels: [0, 1, 2, 3, 4, 5], + datasets: [ + { + // option in dataset + data: [0, 5, 10, null, -10, -5], + pointBackgroundColor: '#ff0000' + }, + { + // option in element (fallback) + data: [4, -5, -10, null, 10, 5], + } + ] + }, + options: { + legend: false, + title: false, + elements: { + line: { + fill: false, + }, + point: { + backgroundColor: '#00ff00', + radius: 10, + } + }, + scale: { + display: false, + ticks: { + min: -15 + } + } + } + }, + options: { + canvas: { + height: 512, + width: 512 + } + } +}; diff --git a/test/fixtures/controller.radar/backgroundColor/value.png b/test/fixtures/controller.radar/backgroundColor/value.png new file mode 100644 index 0000000000000000000000000000000000000000..dd7f6de6dc2f5a1b957377b667d9b5ffacc65eb7 GIT binary patch literal 12403 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 8 ? '#ff0000' + : value > 0 ? '#00ff00' + : value > -8 ? '#0000ff' + : '#ff00ff'; + } + }, + { + // option in element (fallback) + data: [4, -5, -10, null, 10, 5], + } + ] + }, + options: { + legend: false, + title: false, + elements: { + line: { + fill: false, + }, + point: { + borderColor: function(ctx) { + var value = ctx.dataset.data[ctx.dataIndex] || 0; + return value > 8 ? '#ff00ff' + : value > 0 ? '#0000ff' + : value > -8 ? '#ff0000' + : '#00ff00'; + }, + radius: 10, + } + }, + scale: { + display: false, + ticks: { + min: -15 + } + } + } + }, + options: { + canvas: { + height: 512, + width: 512 + } + } +}; diff --git a/test/fixtures/controller.radar/borderColor/scriptable.png b/test/fixtures/controller.radar/borderColor/scriptable.png new file mode 100644 index 0000000000000000000000000000000000000000..ea9bb5c303186545e1a31e22b542aa233b4427de GIT binary patch literal 14650 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 SgnknV0LiKSSNY!j>;D5Fdg3Ag literal 0 HcmV?d00001 diff --git a/test/fixtures/controller.radar/borderColor/value.js b/test/fixtures/controller.radar/borderColor/value.js new file mode 100644 index 00000000000..0ff69e08b87 --- /dev/null +++ b/test/fixtures/controller.radar/borderColor/value.js @@ -0,0 +1,44 @@ +module.exports = { + config: { + type: 'radar', + data: { + labels: [0, 1, 2, 3, 4, 5], + datasets: [ + { + // option in dataset + data: [0, 5, 10, null, -10, -5], + pointBorderColor: '#ff0000' + }, + { + // option in element (fallback) + data: [4, -5, -10, null, 10, 5], + } + ] + }, + options: { + legend: false, + title: false, + elements: { + line: { + fill: false, + }, + point: { + borderColor: '#00ff00', + radius: 10, + } + }, + scale: { + display: false, + ticks: { + min: -15 + } + } + } + }, + options: { + canvas: { + height: 512, + width: 512 + } + } +}; diff --git a/test/fixtures/controller.radar/borderColor/value.png b/test/fixtures/controller.radar/borderColor/value.png new file mode 100644 index 0000000000000000000000000000000000000000..715c582e38a253a580240eb89fdd54aacc04c93e GIT binary patch literal 14526 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/controller.radar/borderWidth/indexable.js b/test/fixtures/controller.radar/borderWidth/indexable.js new file mode 100644 index 00000000000..262d9d56d87 --- /dev/null +++ b/test/fixtures/controller.radar/borderWidth/indexable.js @@ -0,0 +1,50 @@ +module.exports = { + config: { + type: 'radar', + data: { + labels: [0, 1, 2, 3, 4, 5], + datasets: [ + { + // option in dataset + data: [0, 5, 10, null, -10, -5], + pointBorderColor: '#00ff00', + pointBorderWidth: [ + 1, 2, 3, 4, 5, 6 + ] + }, + { + // option in element (fallback) + data: [4, -5, -10, null, 10, 5], + } + ] + }, + options: { + legend: false, + title: false, + elements: { + line: { + fill: false, + }, + point: { + borderColor: '#ff0000', + borderWidth: [ + 6, 5, 4, 3, 2, 1 + ], + radius: 10 + } + }, + scale: { + display: false, + ticks: { + min: -15 + } + } + } + }, + options: { + canvas: { + height: 512, + width: 512 + } + } +}; diff --git a/test/fixtures/controller.radar/borderWidth/indexable.png b/test/fixtures/controller.radar/borderWidth/indexable.png new file mode 100644 index 0000000000000000000000000000000000000000..73d3493e24841e58ed5cbe7e7c8e5160748379c7 GIT binary patch literal 14295 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 HF5>?IPB8qw literal 0 HcmV?d00001 diff --git a/test/fixtures/controller.radar/borderWidth/scriptable.js b/test/fixtures/controller.radar/borderWidth/scriptable.js new file mode 100644 index 00000000000..8d321b5fcad --- /dev/null +++ b/test/fixtures/controller.radar/borderWidth/scriptable.js @@ -0,0 +1,56 @@ +module.exports = { + config: { + type: 'radar', + data: { + labels: [0, 1, 2, 3, 4, 5], + datasets: [ + { + // option in dataset + data: [0, 5, 10, null, -10, -5], + pointBorderColor: '#0000ff', + pointBorderWidth: function(ctx) { + var value = ctx.dataset.data[ctx.dataIndex] || 0; + return value > 4 ? 10 + : value > -4 ? 5 + : 2; + } + }, + { + // option in element (fallback) + data: [4, -5, -10, null, 10, 5], + } + ] + }, + options: { + legend: false, + title: false, + elements: { + line: { + fill: false, + }, + point: { + borderColor: '#ff0000', + borderWidth: function(ctx) { + var value = ctx.dataset.data[ctx.dataIndex] || 0; + return value > 4 ? 2 + : value > -4 ? 5 + : 10; + }, + radius: 10, + } + }, + scale: { + display: false, + ticks: { + min: -15 + } + } + } + }, + options: { + canvas: { + height: 512, + width: 512 + } + } +}; diff --git a/test/fixtures/controller.radar/borderWidth/scriptable.png b/test/fixtures/controller.radar/borderWidth/scriptable.png new file mode 100644 index 0000000000000000000000000000000000000000..2fccea7488dddb700ec6f7d5a04b91be7478ec7f GIT binary patch literal 14107 zcmeIZ^;cBi7chK>p(GUqL?o1k4=)rTXvtt9sG)5mEpkfX6eb2l>xBBVqCFBUB(i`(S@WF;Q2?yX_;i;O%c1 z?*J~U{IA8*6a)Zxo~j&KJp=#=%~v*T94TCKwYA8VKS&7dZ(Pqi1su!#E_|eYvLqs5 za{!c)O*-F39y?6(uEy;yyH4M9IffP|e<3;lFDn$zuKe`$qXQ^889n4unVSx4pt%2_ ze3&{m9rSP#xyL2PN;Q z*Pw*tIcerG^oM z=EV7bXsZz+ZY7B%)RqI}kZsjyW*h*3m%!$*K1h43jY&8iUeNLxw-laVGUxg2fxO6m z;V2i78jE|?5QGQ_6P~*9WEJN9kd}A6i@g4{956Ye2?5}Ib_@;*rK_I0-mqL#2|fl!7K2Pk^GDSOj1UKyXc`2hezhtVcNIQTmH zGS67X4Vt@Du27t-`)y3YpV;`%)1xkA_w3F`p<1@NiaI{qT)jH z&k7{`X#QkYkOA->s>C{2UtoYDQtpoS)%F$;gdTgrMFIervWyF5bfdk&=%JMy$kTIw%+_I17XPB{2LwHFTJP&rEgYOCNmXh18g>fC9+~tGx{V>I{yM_e@ zMC2vji+yHs^%vM{HVta)g3x z7vE)A$QeciMD%+WI+PMbe-xtt05+R)Bor+ivpF$@Co@ui$RG^>-z=koZ0^05mnuvs zv-f=V1=*TkgBstwWj&tjv20vsxd+3{+fyf`ng-~ZV5El zKz1V4vfq>}7Fj(wuqFmgvNiTN z%wEL}p>e!P0H|2G+l>DS@o}f@>~QxL>LPxs=63O3sv;Q+kf3b_5teF0#imh8963>Q zSzQH|lKFA&>R>$rR3zCGX|8%T(hyv*0~K%X4u2!>%~&_HEb^>i(%Ybp7XS7Ex@DD6 zTKn7Q_I;;#5I{#>{ptCq`INN^2At!8-o*Jvy4OSpMD5JZzz0UJy^2sWCET*BiU)uM z8Gp5E41-|CGlUg!sohay@7_v+B*HC}RL6?OuEmzW76V|Z4HevRrVxQ%-cec*p~}rs ziZ11FMSGWZwOY`w{=<**USoOg!no!>9l9FE`-;kE3KoBj(>* zA&gQqM?k{=8)PB?n0PY>WlweHusx$dGs;zc7nXO9wyR_nLIlv=9s0!`B)YZaWsDs* zUFcw0+;a8E$_Yeyz-SZPVuExbr}ZI+o??sLS(;8Ftg?@XMy!tr2m!iM$0%=G zwaS24qzB|bt^2w1;pMCZst;jjBJUW)Cp#BxN17v9y`qx5sVCWQW{;a80ExTZc&#L6 zEa&{pr;`pR7|yEtohK{*Eqd9}W@TZG=jRu+Wmr&ok|3*}2ZCr#V8iVgfQReluOWD9TrHJW%%Lm%S+8GipmT%hI%N9hI31LGQi1{v?5Y}gE=2jceq#c^ zb0nj@!(%lFM}=$-2)Ans9;m1tXI=kc#e#G8`2UU#+D5-*+_ajW`cOLy#c9z5xvRqd zc!;D?GB*?iT)im7JmzLSI#ECxi?jRPKiEDCTpmd_#%oWSCH#OU5qAp-sz*82LL1qp zy}e?Bes!gtc!LVD&R4QVm&~3jw}}oj zwhy3UM~@fuMvChEv8{sq^DLv7ZAkinJUF!cjz~XjSxg3B$U!ByUl1zM=Ds^R6)P(m z!s8H&-q7uHPn&%wvJv#@XQ17=<8-+R_VOdF0SIhBBJJ@w+{6R)Q3d*8?VFgnqf(UpxH_)BPk=#Z zS;R`uPlupN`2!6d-evo%P3^AAb?Phq(8mj+Rg#?B0yrL*?kLCca$ud-$7%E@C3=e zV=RYZyOVUMV_;b=)b7_F0IY?}iux0>-`p+b*kZMt%0Ru7I#*+ZW`d*insLX-LH6u% zL*S6_sxbjl;YrGi6}FQqI)z*OXToqwO>Stt?u`6nD;pC`;InS|8lpprZ-@0;dCm{1 ziA7CQ9G(G~wEYm#dsfv}4JbVTw;op)pd$05F3B`$dNa05sqtnB?|cb?3p{lwmKA+$ z!|DXO8=pq84QZ2p{!|9>;&zsb$CeOd0u-Z9mo?J;Q%#s`=b zICK8n+{_)A_5K_SJ6RiwZP2$&ja%n?;3MD=4#O{8XU8dbBJ~6)U(QU;gnQ z1TF$mP8#K1!m>E)8Nc-B*j8t((@xV$@*g1&7lhBoiVEjT=4S=D?8pdX-G3+)1U`ZX z%I}VXud*%jwp)5Vlkw0!?a_8&;3KRiKn_prHTW(Esc`J3l7@?+fubDGe)q+4qyjWI zDkt#Ks9Y&XeRI`%vghZ$BL=F+g#Jpn-VK3cYK-BaboqcN?;Xa)*~Ved#(|f4TaT}? zI|~0|5k|s8^`1XHA6GKezuo9|jG6y#*|GWmjV~T9_d9)$)9JqVd7A6#69_-ZotyB+ zi}Q)|ittcSCs`~fiZ=)&=V|&x$!XrDipN}w@tQP&XgVG5`@1{tr%|-H)fn!%>Grc> zdEV>FKTfU-{1*uE<67v1rq;dGT}I>`e_m2T+n$hv_&LgrvCcL(UJS((TFzfv2|o0tsAL5$(P#%T zLQPWB>v~}^Lfgeh9Wfk#SCVYU)hC)ao@WqFt_dHu^TQL8haq$6BEystBxp{DgAJCR6BFG{2=&5Dx4^LMpoz*4b>CE*H^r_ z5{Kz-d?=!3&WsMGHUX{-m{(Ya+rkt*7`9*6T?|bX9iGrzqjuldSArM3SJR6$I2eVkqWCP# z%!Y1p3JO;Wuf*uKjY2?SZ)6ClUWFhi=4$;7G@Q;%756s-N;h34J=qx@Vo^Kd?}_J= zqli$S1jz)`n&buXOWM$gw^oyV9Aco>ivspr9JX1!HA8Lo@?oi_=bw?f!gJ0FT zADC;cwAeRq*-5TwvEI;_rhPT`;FfiOBL{?mA4k3NsQEU-`ymWP?`D$(B|9M2^d9|O zW(iJQ@|UpaSaaRd=>rZce=u<&3oA4p+iAk#8I(S?HiRr*;~RwNpQVd2=ObO;W#WR@x@JYgi?R248gEG+b*!|eYdd(sTYs& zEWV`1if^xY!nl?v#N5P*1>d_tA0!-7CiD4AH9u`1C=xY%S9ihD@m$8rTHs2QnqfB| zceJd0q(*;#bk0gyfNM0*|sOVq4Oy#C7G!oFccAAb<6jX3h> z);l%LSSpH0D@BvIkj?~OL!{ zpnmpGiysX$aNip%98b2}-DeWw@&KvVO(0^SPFqScz!Q~CsUgh1#;o$3 z=?`96Eb&j}H7>;~8^oe^Ew=MNZr44y8^&tG{Bc^D>}9v)uzFBkqQxTY`Zl)!>C7vH zgJxaQ{*31=X|_DWxTr}%{UE@d%xPaicgA+EXv>5sf3;`a^^M6!@GtSRO~&mmu!d0e zbE!_~$KT4zG_r*^J=EssU^Gsb`cr`Hvv|n;_qIgE&|~L_d}K4oY;?AO_&%_42a5=xScKH$?~@bk-lcccw`>Cw}7GEdCp(5b;Io$dfs3(hWW0+BPo*# zKd2?mk@j>1OB6$y_F+fu??6JlGK$GRRbcp)_K4V&1rb98~7L6ct!aufP+s8#38$U9Iou`I#}hq?)(hexe64EdnhF-8HYznM0&31TO4L zJuD_qE0w7hAi$i-KY#4BKVTFfmr)PVQK%sIsqG=6`ESlvMjw%L6Q_5J!QsJiP5wx( z_D(ZZOEHxdILYHoO-TiDz!QqOa-Y4Q}zb6cB+8}7{lj@2jzZWLo%+-^{w5f zrInM;tL!h7;TX>+$icVlesSDe&a%j{tuoXH!xx3dd~6N`I$@FQB6skHyepgulLx9p zc)?E}0QJ*nED4@~l>3cw=`)+P{H7?z&`0{@gKjZo#u)YTANzjk-<}BPXbadRT)w-W z>Ce<~lU~~U_R=YD=X*UDc4q~`5JH{qfcU>P8Gs<}-UNagPG(r#F=5x@jB_3f9WN9>tc=Xy#yiDs=AB47VX!#bv6XKo3OAUW7d zHI&-mthobamNT8BHkTMjyO#HoS#%@s3&sc`M87M9EqaS`BCjNPvYq9dq4^>UOnLS& zk0RZz6UMpnV>ORUWSh13qOSET?&tOyzm7)GIk*YtYffk`_B}9=GceCT(ZzwUQ@ldSs*w=Ek+{mBpd<71%qWx{L|B;o9j;_efUUE@qFte ztJu&tpHlBXVxlKsuHQbjdoMjk`Njm6yQ-xAP>{UsZwDA|4{WxljbtuPv&86zXp+b+ z=ay~{Hf5r)9}mK;TnWHrJmzq>?2+TfD5?HIyiM->^m4#o+lR~aGQK3y#=a^yVe$JT zeN9Veo+#_5%t~Yr?=s?*Z`voHR$FwYvi^z_`26cD#t-e_k>-$@VG-1?ztA|Eq_fXw zH>Rf_Vc7gG6w3F;EY`qsI^Xu~H@lzynen4hj5Cku_20UzFwJGT77|-;FL$UTrQ&EF z#Ngx&^v(%E3_bCHfyu)KwEMPi78I`SXY8spO=;NRW)AZh`n>w6=>tXZ$d7^EdbcCm zI}cLBi1eqkUbd9Q5JA-p}z$jr&fB6j{5(m5nBXeDB|#X<>%NVmiO5Qh$1=u!`eGMAzz$5f7dq4< z_}P;ZabNB4=j>XA$ze)Ul#crc+k+mMf8zot%VBDNL2cIb5_NcRce4#$v067co(g2@ z1D8ktQEML=@$<9K9?twh2A0Ki118xGCHKN*XTF>)-_yWZVpTJ#1Se6xBGvB}aDYa3 z3u^vXoYW6!BkI-G`p-w9%UpR&YPX^-3M;qgpX!_>y&J%)XFe2K1CHt%8}zD>Q6hjtaI ziDq9YSnVuf^X4z#1qeLj8z9*v9SIzoLT#krFx=zekdNnD+g zuOnhQ=Yq;C5sYsh9vhZnd5<~@gR#GGNjWp?QVV?bss$fBm^NNB1q0tAm^r4s&cgrJ z#gr4LWW+%q&PkioDcha)z26?|t>p)mPghzRBz+~loU}Zy(=^B>N-Ww7 z>DFA9_Ay~pT=;Sx{bo8Ty95^&BcF2yUTL^U8`(29?VI&gm0Zn-1pVbG3W_hirbKmU(kGffGz)#A&cjM7&^JuVN84k-pJ z(+{h2s1%MeF`v`kNKm1M5Y%-WwycC5B2SPN^?HsC&kWe`dk zZ+X|=)_Z#L=~4Ym9-7N*4}z_n!5s^(!u-og1H=k9Jwz)i+v3U3{zUhl*L(i^<5~=zu1b%g zR>${x?vvf1Kmgr?vZmFEMO&f$OG@gGCt5@8OLk!CztQ&Meq`%+e0wE5^D*1k`D^}U zC5(l=YlB$&Tl{ws)0VX@lD3x$Xb`4m&Mg3}Xl*!-yFE0ym5#k%ue1tM(v>8MF40a+wP%nIq7yAq21t6?+oSsNbhy)PYXPKIcS!>p@_6BeL0TH5Zf4J^ z#_zeiBYv5$nRRUE5+&krR50MG_U6ngk>pOlcVy>JR-4q)ohj0M{Jke!>1viU3FDCt z*Q!+c48ORnmvwc=RU$Di$X5ker-;H)G9@O1sO-^nBDoWR<~4*CyN471rIdkG*)big z70W)q@ROizMWGG4j^0LyPL8dNZw@C+@kT(>VT$*P>q5K75@|?ZVPG>&0EM^3 ziGB9~cXhLHI|`MdaIfgM6Kn9w5rVoHvb3ll|%MUP#&Qj zyndlkf8)e7;u+z3`zI0=d;ihFa`+`Xtj>NOkXCB=Omo8E;+59$05#-aJZx-QJoMfB zJs{3^|MddgFA7c& z?V)9nVH2qoM=M8mS#f8@%S&$dP&faI5~upIv(E-I@5d6sC=4|@+|ofykss?FCtlNC z$;m&@4k%#GN+K1+~dWQ zi|5k6V`9X-@U|aMzm1H3O^KRM>&h|>*vLFG=&xy;BzI-~n@zZGl^m18Us2_5CW_vyQ#oJ81oxI({|v|sES1*8Ao%r=UHzQVy;I8u2&8CTfjcZ5bqh89N==}9uu5$KWPz-^HFqp7lQV) zr;G{65-$96s8Y{1Qy%A5C|vnhjBzjT12QGv$mk*|Wb38o8dk1{Jw!Yg_jF7hWGI6N`joj%czJn*4j8ad_^o~I zSygSX9>%sH`h9*rKC#f_+M)&vH8G!mO`Z>>o-3dn%;{ZY&?pf{2&?q z#7sWzUSvIeI3s^M%YDBm<7Kcf4xs&vUt+YyR3`aW<$11chu6P+c|0`jfmwf4Dbo0^ zVK(qKSpFHNwSjOoR|@q9P94ry4eFia{>X+VrZWBtRh{;$ptFoihRe(~l#z>gztcnR z{p)Y4N)33{)Hv()^|C1Z#%!&5H<7EX=|by=0V>5%AW8wpQ$hSj_UN#(t=xLK!YsJu=qZ(9U2l9TyQ_!VrNZ^qc0n^V4Iq!J5F@LI-Op!h{M(h@Pk`2)>l#(j(r!f; z#%hmXhzmvV6PFvf@ZphzhY!2l0_V0W2R5qvuj+Ph`D9Dfkg_LILoL?d*aiKN3iFO@ zJBGneT9V_Fb9a(ag~Dbn5yopHo)R1BwK&aazp>wozj&HN_n){_kuC2ZOV&e?@8oV^ z?%1dpwiLoAf^(QuB8>Za+m3-ZSwCCQP6`2qTc=m?c$t5@*9J(D?KGBt|65&F5F9m}{-}t->Vq^S{csAEU)rci@9zIB~NcEIDG1D?t8+ z;t=MjoH2(@377!(s!hU)n-z>Vujp|cIX}}HUwh&;+;&6J3wk_9jnN@9+%!t${*;U> z-qyE1%HDc?^<)QM>oz&I-`n*f82b!&PjqOwC?_lj`UPto-)c@{6X}C_hpqVvF{lD7 zF%vV3lMGiJ?&&_lkut6{oH=~yeE;x~`sSm3(`q)dE@^Y=ng2I=LRabNFhNJ_s%)uL zHe{y9g&k~nX|CdUCg=^;0GB@Jr3LqhmA^VkG*;)H=uk+7cJu^ud=lLFCU(EHnpdlf z11VpJ4r-Gs(apJbmTO$^-}?Qj zT2x6EHH zE%3}0T;NYktCi{`@rN_TgvwEVY+GjIwoE)(v2C&xQo7keb zSI$=qb2UGm6e?M~lxE02`Io8OdV2rcz`-K{s-LkxzH{jfz9Q#1U~)F!mxQ|_^EXM` z#Tzy{UhRuBHx&m}7LOaq!jx|I6V|Ows3f=Zh)(!2*r{-5LwcqE2Q`1q{DCq84V#m|(WpK)&S# zyN@dZsQEPc#r^5o29u1PUrZP}>-%bQTI4V`0}X}DPh;&BHHmi*0!5#_9g5NGu_Kgr zB>Bz7{`?l>Yw;IHt~5r;I!#1$m9cPRYV`d_DFd7E#*JkD#`Jd znT*qPoYM2QzW@0P5#fi8Qm<%q>0lKRt5aRWp$lg?C8?d`E1Dv(%MhOO_hgyg9FeHb zGf?4tHBf^vNRfLrvl$~_bX}D~i%@&3Mb$6UZwTG&gB~Y@DEFh9xl)QLV7nz;KP6z-5SR4utzpAx|q(m^_&WxV|66J)SK+*Br7M`K5knF>j>Mj&DlGGd3m5DhDmL? zrZ*48AtcMS=~g={e6cM_f43;Y_e zHkeJk^Ok;1|^GH5tN&1)%4B8Do)q#5&I{e#=puF1cOJV!ZC0;q>>TgjXc8w*j$&$*lu_vWMjzB> zPNN1H0Ihd=X-2l?xzWw%CE5EQ&Q<&udFN70BmNaOZ2sh={Sr_fU;3P*ko=#gX8giU z-|j}B!_beh(?x(8d2hE2RlfP5Jck$3?!Yeo|x^B%Jr)0@Rw`e zo;bv?=TRFVz67En_{&|N8NgBii~*;ab`5X7~B_lcla4@gzkO z=s0;ZCkhAafuDr+&O*h8>|Uy_+8BInN3>Isg_rMDfzw$+UZZtr-ZdVqe=SAtXDsLujz5;N|0 zB7=aaaRb9WsG>+*fk&aLj$$lJ_!`6(ArV$-NC&XG6D5IR(!OO#q%jrC!fudfD&rIz zo2x3bH2Ngn@y}<5Mqq-6E$J}a%qd03rElzMeb$yz=14wgGb4$rHD*ym-5W!OBcf;r z*I_HmXn~@8X>}skkIfE@FPcb-lK*Mr3U%c93r@11$~G^NJH~o1AN5~ioKLW^D?Y01 z)Z?%$z&CwcrD%L!p)aHgJ{dx6B21z_OC#ow87^bKio;)7V&L>Hrk~8OBa~~amUu)a zQ9#~v3Ty7Y6TWjB7ZXyBq91j9H35+K-HzGo)em+E(p^j%^|&1}qVGF^8yV49)HKJ= zSy5l0Vd-kr^cOr606Qc+yRBMgXG=}QBtd^K`sp%&9hFJf_Fd6W*}f};10+vTi|u1Z z7AH8Cv7CKNpt{U@rabXA7xcY8rz2RTwcyUNR{nG!!T=?cpwVKz4mFSeu@ak8zLWZ# zk}fS{cJ180U=6tHi8HUMw-u)~2WQmUE2=F{ENNz3SMkD-_!=sMbe_kP@ia6ALLU=) zDaAK%SVc?|LJ*azjLBqZg;MEJF{n!qp#)~J&7oUg)9+YXr0-{OfyA&5 zXPV%y?u&KL*k+NY#%EVi!k19z{~lhv(AKSZz%yQ4_rk#&LZ`CX(AD7fPtDY91YTB@ zTc&SiTQxH-$ z{6`;%4HM>wpEV?2^Efw+%2{V9HIYs@#DcGHX=(jn>l|kiKABkxBeWF{wBVu_VgNM; zLFdlSZg9akeqN${$Hpi^rm=yEU?OV*;4d`mb!Kg48ohGgdaP;pNHo9cTlZ=Fe9{JR z%W2-WQa}0v_hUbe*PeL93TPN6S{e-alj`ePWQY}?e0vOxOKQ4Ql+;8T3R@^-7fETc z0pqY4Ps17M3m!s6`O5$FS(@v&%V*m)fTG;GX7=_uB5h}OAJ!|*oLH^Y9dgZD9x`Bj zL6310=c=StZ{5sekzl|H!-U#S9V$VZP<|O6#rP|Rz?WZ5r+CdBHDs1S3zWQ^Z?MkqqXc1%iDQTP#fuoFK?bP`)<4k^4dsKUKRtm`(6F3 zg({x&o_Tv#JOBDmT+0g~3L56Fzq)<2 znk+~Lb`M9Qnn}-Hp=TSiw^q^nYcW<8`c&H zM^1hK-5ap=wo&h8^)ntpa^)4`7guxUCDRJSx=*gS-nZT)XYh@!uOMq)MUCvQ|$SEyxRyZtmBRX>4eTb6Ca!~c1FJ6`!1Vk zu$d|VqW3y){A<(2(!brtb@+oUigtT}E90bS+5`{w8|g)^?XO4E|61e?g`F}(?&Y2S zC|nx>5|0#hSN`C*{A(BPIpx0`fxYeGN0ox@O*^fwU_0T)64hb4 zjgx!_nV8nOtRw*c=1ftGbBMl<*ok!gi|kxLo}Y>mV3ep+Az)!Yi*I@5iBZRxh&=Pl z2R6pLlq@KD0H~_L-gmmM5H_Fn(~At~y|~~e<=#K^_F2obDWuyq2DiV6*@cdlxV9T6 zFH^0))7-v*0Ay=SwZs64`J7bvFT_CaE_hmFo#8Ut4csO~YcYxoHTHIR8VQq%;m6Au zgZ=V>Wl;DvFP_e%^C>sfC8c;GYMGbUA$!b{L!-k-JYocs8hxPhe>s%15>?>QSq3# z080$`CWW`-lz%*IoEvVZjkbFXsBr+@MhNFe@CZs*Z^`guunoSzdj{J}I3MHSAA=fe z#FaxDAo4XK@b(h1VDw9yLqZ!)U+jX{24KgqY-I?Xvx5O_F^2s`e(^GJEtWvp%Z z8as~|G^imAiR14)`+NBT;GqobvZ6r?<)}fjrNoyo8*IK!ITRE~2o=#>227Bb6Bk1= zbC8ZY4P}XGqAL#9^9j9M@N|O#R|_P`eekLsX;B*t$J$;{K%Q>q6_X;x{?~GMD4*5A z<~L?=oo>D)4rC|HD-L%CD7%ohSGv%p*Db*)c#W`LahV< literal 0 HcmV?d00001 diff --git a/test/fixtures/controller.radar/borderWidth/value.js b/test/fixtures/controller.radar/borderWidth/value.js new file mode 100644 index 00000000000..8c59eccfd2a --- /dev/null +++ b/test/fixtures/controller.radar/borderWidth/value.js @@ -0,0 +1,46 @@ +module.exports = { + config: { + type: 'radar', + data: { + labels: [0, 1, 2, 3, 4, 5], + datasets: [ + { + // option in dataset + data: [0, 5, 10, null, -10, -5], + pointBorderColor: '#0000ff', + pointBorderWidth: 6 + }, + { + // option in element (fallback) + data: [4, -5, -10, null, 10, 5], + } + ] + }, + options: { + legend: false, + title: false, + elements: { + line: { + fill: false, + }, + point: { + borderColor: '#00ff00', + borderWidth: 3, + radius: 10, + } + }, + scale: { + display: false, + ticks: { + min: -15 + } + } + } + }, + options: { + canvas: { + height: 512, + width: 512 + } + } +}; diff --git a/test/fixtures/controller.radar/borderWidth/value.png b/test/fixtures/controller.radar/borderWidth/value.png new file mode 100644 index 0000000000000000000000000000000000000000..ebaf659e3eba265f0621bddfaa406b97222dfb57 GIT binary patch literal 13944 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 Q{p%d|R#~Q6$~5@@0OyYyAOHXW literal 0 HcmV?d00001 diff --git a/test/fixtures/controller.radar/pointStyle/indexable.js b/test/fixtures/controller.radar/pointStyle/indexable.js new file mode 100644 index 00000000000..835cd2350cd --- /dev/null +++ b/test/fixtures/controller.radar/pointStyle/indexable.js @@ -0,0 +1,62 @@ +module.exports = { + config: { + type: 'radar', + data: { + labels: [0, 1, 2, 3, 4, 5], + datasets: [ + { + // option in dataset + data: [0, 5, 10, null, -10, -5], + pointBackgroundColor: '#ff0000', + pointBorderColor: '#ff0000', + pointStyle: [ + 'circle', + 'cross', + 'crossRot', + 'dash', + 'line', + 'rect', + ] + }, + { + // option in element (fallback) + data: [4, -5, -10, null, 10, 5], + } + ] + }, + options: { + legend: false, + title: false, + elements: { + line: { + fill: false, + }, + point: { + backgroundColor: '#00ff00', + borderColor: '#00ff00', + pointStyle: [ + 'line', + 'rect', + 'rectRounded', + 'rectRot', + 'star', + 'triangle' + ], + radius: 10 + } + }, + scale: { + display: false, + ticks: { + min: -15 + } + } + } + }, + options: { + canvas: { + height: 512, + width: 512 + } + } +}; diff --git a/test/fixtures/controller.radar/pointStyle/indexable.png b/test/fixtures/controller.radar/pointStyle/indexable.png new file mode 100644 index 0000000000000000000000000000000000000000..3182e522a9e83ec867b43cad9ae9256cc92b4779 GIT binary patch literal 10783 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� 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 G7yk!CR{vc9 literal 0 HcmV?d00001 diff --git a/test/fixtures/controller.radar/pointStyle/scriptable.js b/test/fixtures/controller.radar/pointStyle/scriptable.js new file mode 100644 index 00000000000..9301672fbb2 --- /dev/null +++ b/test/fixtures/controller.radar/pointStyle/scriptable.js @@ -0,0 +1,60 @@ +module.exports = { + config: { + type: 'radar', + data: { + labels: [0, 1, 2, 3, 4, 5], + datasets: [ + { + // option in dataset + data: [0, 5, 10, null, -10, -5], + pointBackgroundColor: '#ff0000', + pointBorderColor: '#ff0000', + pointStyle: function(ctx) { + var value = ctx.dataset.data[ctx.dataIndex] || 0; + return value > 8 ? 'rect' + : value > 0 ? 'star' + : value > -8 ? 'cross' + : 'triangle'; + } + }, + { + // option in element (fallback) + data: [4, -5, -10, null, 10, 5], + } + ] + }, + options: { + legend: false, + title: false, + elements: { + line: { + fill: false, + }, + point: { + backgroundColor: '#0000ff', + borderColor: '#0000ff', + pointStyle: function(ctx) { + var value = ctx.dataset.data[ctx.dataIndex] || 0; + return value > 8 ? 'triangle' + : value > 0 ? 'cross' + : value > -8 ? 'star' + : 'rect'; + }, + radius: 10, + } + }, + scale: { + display: false, + ticks: { + min: -15 + } + } + } + }, + options: { + canvas: { + height: 512, + width: 512 + } + } +}; diff --git a/test/fixtures/controller.radar/pointStyle/scriptable.png b/test/fixtures/controller.radar/pointStyle/scriptable.png new file mode 100644 index 0000000000000000000000000000000000000000..35179a3032db957c6218ae6e1e58324696d7160c GIT binary patch literal 10878 zcmd6NhgVZi(DtPWq7;>%AWc+y7lQOEiqbnsN9i>*=_QJSNK+v6Do9CaQiVW3Q8A%Q z?<%1M0vZS<5csa|`!~Gjd^tJEJ@?M;%sxB&%qt`M>`-ts|gD zh#e2IC;)>a77NXHJpbqN3IOx~3;^H+1MRr20b+FR1{DA>z5z|5dkFrhn%U=_9`1Ev z(z-;$_oH=4i=$`7B+|tDiee_fUwmRLgBLZNd_Aw)V=IPjd1^^vy5}23# z^6B$RVJd$!FswUs$7gGtooay7v&r=N46Tc?egf_4;pDFSfdARz6b--=qE>c4`t#@F z!qIH=9YeJP*005ioAj{MS)D-D4EEDql2q+tVdq|%vtwJ!XYX@>;f9@{)QP-|5?xM1 zS8N;OpTNJQgIb&y70gUAfApQI=dbQJxohN58W?GOmv+eLOc~I~7~*fw>b-b2$j=V3 z8Ba6zrfr7otET=vpn_S<=my>a_2?;%evYnUb>c9#v;ICo4OBMfj=oa?J1cNm#w`(z zfrj=2%6|93%$VJ6;CA;Q|3L-%_Ky1Y!tt)6#Zr#>lI%XO6x)&`6aXH5NJ-w_5|TKv zYU&K^Y8gMKx3l}vO#}Ql2~p}VZvNw_*Vy&kTOpr(xmP5F1Atji%5=;XHUC-4HkmvV zg&)yPS)M>?Ge9RM>^_*POh zDU4!t@H?~tN-{!ZqJKfXj~8mk>z`iLc?FDI3}VE4!u6_ojQ{{r@Wj{%S@XUK>0dh2 zPX!CH=>Z!nW|Mbw%1F0?y)kNfQnTsNe4SjB1TgZkR-bn~2ucoW>wFslg~?@#Qukm9 zEO-vb!-Kw!{SPmY`I`wqOf}+^?2UeVD zHbCKnBs1PKZg4z^FFs0~S|cGi+IV;#fg@NDQ_n>qld9?UyP^kybu^k0pKA;6MCmRz z!JsW!|#-K6e?$JUg`a@+^?9`Ol86Kk#OJ z?WUdW&x3O?RxWHw5v%Q8prI(@ZV7?`u=INs7h&kaK&2sr$PwNZp=)cR)_}yTRjo~D z{Ri-qaM*sm!&AUNTT@l2`3vAAMw(jkX6gCNF%GE|paU?%*Tm+8XnO8m8;5AYJD*H0 z8)ejYW_0f4;+9VBh~Lr#>!U@(Cz|Vvm#<8k#zG~<_ZX;eE6|a+wct^1lgoz0LqFn{ zA90?5OQiHI#>V={hu55t6{VK#@D}WGwI6|>!Hjstu9hu<4b`_NI9ANDOuOk5^`x`K zWHw@W(@{O!(hhz@k_T3rD_6Cqt*xoKGq*1}vQTv1h+qBaE3QvQNwPf?Q~x(iX60o; zP5Ki)(g~xoEWqtKSyH6Ax9Ql>FXGTAC8(}+lffTSR)Y5u6tc`hNoGSL(o!RMCCg72 z!@4^TSk18iWqXxy>?VqX>YqyF`-j|DR*8hOYp&qtxLP*aistHgf9BgHp54)&uSK)SqX-lrPu2aEjZ4d z0~o)%2^y`VuEs^Mxk`|N4!AfjR%J~y_^XyJJc|ta=-5l6bA2(gQ=km?>*TP7YD9{Q zL*fD*N!+o0AqK+gFelJPE$QpttlUt%^w){`IZVC+trZ|WD^Iict%e~Q6m(FeJ94XN zzF(J~fW&QDhCf!!S@=Uv4gszYtt&YFkRE|2M`%p*0P8u{tYk*Kb!y}4sipSZrf;xx z+2%2pzkU!G!?LU{#m@JL)}y6Gzj!26m47MHj#g>E6(L7;;pP*rfbc`)w)`wy( zbAQDo{VuG!MCI}Fe>u^lacYAewtyh4xWp(at| zKpBPYs}PS9Z4V+dL9>%sumK249wv0s+%8da^kvC%=WYx7Q{Pvz+es$n-ku*~Tz zC>}sZ3N}*|sUHmO=?_sP-EY#9gIt(R^)m5+U2gDSb2c_&Pf6SF`mwbl>!nKi*@8sf z0J{^D_P$#TS~E@VK4LK{>`Z0I@x2%RaERIxs^|57~o@Shw+!O zu*5}l_)3uO*CETIvt1!16v}NR79Y+bkBLt05I&-?W?*s-c0*v+Y4eu@6-=^a4e&U9X-TYrq3Yfc#u&6 z!@;0xb@%Xd)YnIPsxV9Kc7B@SE1tg7RPA+c-U%$!i7IvxhE^)izx#Gv)lehHBn_yw zoGD8)|4`lJ54vj>7%>FyxbkFX94OIkMdIiU4^@6Dq%s1Gc#c-mcxY7ezCHS4HE%UT zYu<-HRN5BAK?@=m>*+BVNu=a|ZkVaD0U8dQZh>hKMN>5+<`om3qbSggQoFu5 z{i45GzP_}p6+$jl+y}~J&I{83N$O(e(V|C2&{R!T?r9y$nub9HWYVk~H6B#TwNHP| z9&?!{`P7QY)0VLmAsB8CKS}&rY|$aqPVpd`#VV3`2abQILaT<#Pn$~Qqnof!`cRl( z9_U(p7-a|Dm{|Fv%&*1gs!uIVRi%#u)-WyyhKkA3+_+QJ9-kF0HdDq^NQ_U|T`W8RClOP_|_Y(GlGiJe9g zpQ13kq3OdhB1cP7{PIH4(SIA1`>P4Qq{SH7qn@cd(bBSBKRg^;P6?)hu8X{%tfjV! zkItSDnc6apqWQ!7{D}Dmj_i~+`SF$gvPc~mWA-ST(3VAJ9{lPil`tmCdU~oy%$mbg zrq7dIh*m;(Ey~-S zrFP1C!7^;46nW)FABwZ#=+XQ{&ZhboaYv8Bb-=%X@;&!8Mdqb7yfVifsWzndb z`S$k94Ecq|0`5rMlF?C<4Dbn#OV4hN)?)8ru zC!Skd4b=C4Pi+@70Cdh#%{!!zkz0t`@ihPDt?dTUa3}dA7v@EyXsbtg?^ciB9|*!z zp}n`&X02>z{7{(@w;w#Pz_eti^QO@nS(d1rwNR89SIQrN-1At1w9KuQ-%aVA5JMchu&UVlII41V!TZL-YwjclSvUw}g!Jo@?& zn1b#Zhx>W-H!Ka6$IJ&oo3eY;lZ^tJ{e!1ot`B~?0uQ~|`ux}%LfU;C8c(s5ax&$IT0qVqi8kHVx`VOP`10DU}VOlJYc}7 zXCnAw#sOamf-RGn@Lv3&v;LR&W3`o?24@?#3UT@jryuIt$Bji~9^4V=5sI0`V^>Hq@2{xNW9ZxEb`F_E-D{?GvK&1xaqS*opgqH0F>r}?3Kp$%%c zXS2iM(YO5Wp&znmN_4exq1lvbPFA|-|FqmL2H{zJV2IG?B<+sHxVjth@Z{QtyKT`| zM}p>E#s;~D!U>^j)N*Vk$tRQ_p-H1?aZ_st!S_%#;U#?y*Ae>un3kr`;nl2g0 z_*8W9Lxa3r{}cJWlNA^?mQwZ0O&aU+BY#xu-5_?sb_HGVC_J^i^j>JDZ3_sqhby0m zq5#2S6)LiX`-0Usb#-1art{U7Z(>~TeSVVMVrKp6{Yzyb%c7g8Bp>y%Xlr<5^?1s6 z7O%3#ge1w-f*e27g~!cONXsH=RId+jB5a_x=D4dHoa@$<@qWs^T=;Aef2cR*)%VJyl7IK*!5gy}+PsoW=rc2wVyT{l&v^wq#zSGgphL5+N@LAAaLjkdkh&YOGD#7UeP)V6niQ zf~$iR9P2s0Q83} z6c=q~yGVWp7+cORz?D06I}}aBv#Z1JX}$i}mD0No_Nd$`D;+C6FW)Wg&dkjbJ)-@s6#WfmP|8XZPV%r38CNU=^xv7ujgG#IlSm-Zm|4>FhkfEmnPyO>%dVlE=&Vm-WFS*OCB)6+1HKEBp`LE@d8Slb<2lT&AdO4K?c?>( zyjl}lU^!#b+pJU5ZF8>>L%cjYs~9zKI~9d&TqF2Wwzu-(K32X|{y? z3^%0y9TQJwZ-j7kT)4wr#1E~w!qYnN;<1LSvXNPrM}A}Cv~(X;)02?!-0w%m{rcDF z?F2oyee3Uv`IN`#Ti`A+056lWTrez$opA?TQ?GX z?ia61a!6ea&U#>my$O*ovwzB-b8t6B$7I1Q^`P@IO0H(n#=Iia%}lVpSss<;q7|)}r%)#9Zs}>7?yvX6~1BcrE(2CK5DOIe{iba{C6V&gb*H*Kw|5 z`6e5jvj(oWe$IfrLI+P&X$(Vob}}IiQ^oaWbhfp*IYQvW(dpyE#Cy*dEZp|VPHr6E z=uNAy;U$&3`2*O-*}bdf4@cJW?~ARyRPe&L%3L;PSku7J5wc|v-5eNe@u9Gp;)T!K zV$jpAYs_yVMovZgsp0M)gk9?|6lO0WGH7I`ezEJUC~oTjsJq3MAH-Smk?b5fs_QrfB3$f2r2D3?0|R z12e@7i_F8Y%u$LVh$Atx@cNE77@(NV1QSZRMf~b|VVQHi+lOyhd-?3xjfc`^!Jkz1ntje#tL>3LE#$p$iq033q5A5D>WU|ZKJ^u(^-e*X2b za9ZRR9ZS!V!U0DfQMIkMpMTl;Jr6sR){MeHq#CfoCAk}Sv`-dOj+^D+P9?5t z+@A(AZPmQg6Uw$ICCy1c4u|7wfBq6qdqH}^0W1{9BRl)Y=3hqVX)|Tt>!A|qR}%+% zAu&Un=g%MA%%m!5zpZLHdH8xSp?Y9X?x*YYp^G&VK*=C9=2?UQ( z`1n`nZQMN7y9yPy%=5EaYws>IKBdV$aW_ddgv-axb;%Uv-EMj7m*Q= z+di)QZ9b0ay{^wx4H;FrY4w?bi0;E|21ohd!f)PQ{GhgH6TT|++1c?ZX=(Rd>2+G} z{}D)IiN^=@^fAEu?uNXI{LaCWk(>r29A*8{ykyMsuLmKL;tf?b;$vp6>g*Rk_*U}8 zsNMv)#(W3TKWl6DXacuieeK?&_F{jdgU$bPeTSCWsJ#pFJzXl*eE-!o4eLi16uZU0 z`Md*5hqYAVr#ci0iKB;qMf!u9w5n;*E`IL|ziY0?8dvW>{MMWMhSyNBl((IPWnPRe zGHtbXf-iioFIH`dve|TMI5xbNiRCH!Bp37hq3gSkCvUEc=&2}CJ`I_|-M0Tj1bHC|HMEMDDi2@l6%L;SEKAX(w6vgzG^$kr4r7gtpLyr$*zt6>hWk99F zCY8>EmS{y99%DFtrTI3s?iB*VZjoYQqhTk@^5Y#n;_5itSszp={A&VnC~bRTq5D>N zl*;+A-Nhw>%yO|}HF52IlQN83m|m6fMtjmZVdbw+pNjnfnfalw$)^udKT&O*H4eb4LS~#GIvUA{8G!fFZ=dY(PL4tLXgb1h4r3yG+afik8VjQHp62n zr#kOrAZ}FV91GIy59q@|m7(voI|}xznz;HbQZMX;n>9QZZVPGytHT}6Q4Uf0aeYXg z>jS^OlEu=yyYJKv#qP`YAh7F<6tO^ss<7LHy7yA*Uyk4OeZprlm33S?gv8Nm7?#a5 zcfQ>hI7i?=%Hv+FJHyXQgw|Hx2r-}8} z?t`zv-YFU)YLhT-=~ioh3Xi5%X?2nw&;tqcr~_#7j%=qAL8M+Hzr9)7ql|)G=0kl0 z4>*Q`6bgy%RT~5x1%@jfXaAKT)AvOF0pMTY?O~do>g!S8cr&NClv!-)AxGf=a)8fM zwA5#EA(S;##MZh;^2_t55&;<@qH!^BXC6zxmEh_Zi6J79IyD{TK9fh0T+e5BIqdt( zRbE&a&Tj^82og-M^K9~rJ?>EYAiScIXdw%q8Ne}~$iFY-)t!>*Xk~z(7sIfuYwZfo zY7)a(GFP}eU;#ErA2H=xy0fdEp-iU{+EWUp?4L|y>E|*lHPthzTy3w|DL!jto93ZP zx?S`bz5ey^iD2lj$QuiImry~BchF&Yr*u+%`T8axlxHFL2BO&-hvnR^+n1@dcT3Hx zO)o}hXY3hz%|1VhZ?4?)zdlBtH{}*UWdPMy7!!59cqDno%xtMRUaA*r)I1lK-9E@) zoxW3_4pwNo3x7t|3Wd8`cDtgz#!_V+a>oeolCvr8X3i$qFH3TvT`sSQaixQ66~RW< z_JMbF5V)j?s@QFI1kN_?NVP&>ko1=^(#H0eyz6Otm&|vo{k~g-;mK+B?J_Mnvn93{ z_eELtpFuf?!*KS0*I|9d>5>2rbOx+lqa?4RKvkLt9VYC+`)d^|e zWhZ6tPN%tZMr-dGSd&rMBDMn4+*%2-9M?xifxBOE@)b4Op|9)nWh)L!lT)kX3z}QA zM!k)jubw7$=SQv1;ATW;t^y%ilsntEi<(4Jn$&D5rw-Hx}nrR!=z^=kTztK;wLnG=0x0Yu8)S= z78=EnBUz|nls<3^;z|V|TQ9e}6q=zu8|AHEiykFRcoavhzTUGVCU`=R7ugVKf$-DZ z(Sm!#nHpiVo!of4_J|1SbHOic&$w~kpZS719hFHQnbVEQRV(-mik&$T|+ZLk|zAGhEU!BfX873@{=UD_eo&B9}s-E)Q z;XUW@s@8VZDi!#jO?fYgyVK-KT~1&7IIGS9`&+%y^DgHQ^@fPP4E&7Z_3rG^$Y2rY zPqx}S)rcFbCWdFSAsz4efj~}M4oct>XQW+{SNc_?1Kb=uxH4HR^sR^qv5kSD6#wz0 zuD70^?}N;5m|FMdT6wgwU7Dt8w7(pw@Kd1JR4Q|y#Ul6l8@B6F1!Mj)2e?1Ee^b^E zCmt+%8m^%*_4MBo@^X_)IZ!E)(eb(1jn8?BmfN%vg) zJoUsD`mj|7ELEcEGcq3xL<}^)@iWlpgB0kPNBP^O57^d-kB!vl{y3^)a_>k~<&`1l z24p_0R*`Eq8^85ohB_AjE-3zc7r?cQjy37LW}Jf6esxk#$B40ub7Wjr_s?``i4vNmCpI{LBUSc)P!Pg|eM2v~9OcuPV>8`lrJBrR0)b|#vX*cgKOyOCx6yXb) z^QStp2A_MkoV>#zt18X_xFHYU6a)$;BjKTrSK9*sdiUU7>5SJdp2_qE;A z%?$Vv%T>*5ue6P?Xxtk+o`eO;F24sMEHgO%iMrmc!8jZuDAal31-QM_gwj`1xn|Yw z{@!mSF^nl**sLhz?sWWjdY~y<=FZbL>uE{MXjHpqo#rxKH=|2AjK3<%3P8aFZthk% zX66AkMz_I|F4#P@WRID@d9g({#EIoKm#u2nnpJgf0=xVc=t#`cuU2E zIM>)kB*c5Gfp2s|G)-l{B$LV(q2%se-V zKMM5ylH=fkvUW~5x885jTHZbVr-kuu?s-0}Ju@M)G_v`sLsy{i0_cyfm-qq6?3opi zJw`3V;9#j=^GTwd+1WF<05@MgUB733Gs(*+3lV4zcf0s#J9p;@cp#sJ&VfHHA3YyD z*Q{-SC5*k2J7^mclqk9S^W`M-Zm=8ticZ~&nA~y8M+`ep>|Q=o8!%BT)b_EGdYp=(15lW=) zp3Xg*TqEmue%hd*yG6_;mN6>ENB{9?8ddn1y6Y02d$uX$U;o+jE|(!tW_DakN74V6 z4R~rKIF}nW1if&rL3pg8NBNut`JC_V z!*W?(^}cxfg#_Gs%_BN`NTb`=HS9=l+A$9#9v2t7-jgZ>`^d??Evo2xK|-27)jD z)VpY@o?C-nV)Ofa;}CNmd5$4K*BhV+6mqbyZWvm-seWVOzeC0~igMOs9u%L8r)oA(jyVE^y8dBP=7M zY_H!`mQ#zjNHgXB9OVVOsg!|{53y>@<3g#WG&?5BAcJzBl6>bxsht$_lx7!1PP_W` zPC_Hfk|(p^pA^Nc@AcBbPOXRW8K}0`v1@1n3RjoOkO{i|#m>@X;AOzld17VZn5u8^ zA#H)DGUi8}{AHkKvW5h;uK|X za-~id2-j5WMWF9at*K8D56)Gn?clQ~R-mHrm&ek@9u+szYei4y8By#U3PJu*9wBn{ zi9VQTIB zv`gLUI*M%3_HpMmUOkoV457QNk`c8BbtB(W^VP54?*eK*H@AKc?PIpWv{_(`cGMjV zV^%kCaYjPCQEEps#Nlt(ck1FZY8;}?OjV;V0p=Eg$D{gcZA+NTQc6HgPfh-4q3F?F z3&-iyG*b$ z`rd4aZs!P^9oC8zC|@!xx&jQCcd0Bt4U-PXyMvw#ECd*(b5X-`5eI2(N7nVd+q;H{TEWcIv%c^sk?O^fJqQ)dnijY-VVjOut&BR^op6)~ z3X=c5AXp{Ccpiwa)J3=Go-S~w@zyc6)BNAR%lQA1hDYsZEO~v;f@|g91phNj=f2^+ Jy1P!#{~rp39$^3g literal 0 HcmV?d00001 diff --git a/test/fixtures/controller.radar/pointStyle/value.js b/test/fixtures/controller.radar/pointStyle/value.js new file mode 100644 index 00000000000..31c2ff941a4 --- /dev/null +++ b/test/fixtures/controller.radar/pointStyle/value.js @@ -0,0 +1,46 @@ +module.exports = { + config: { + type: 'radar', + data: { + labels: [0, 1, 2, 3, 4, 5], + datasets: [ + { + // option in dataset + data: [0, 5, 10, null, -10, -5], + pointBorderColor: '#ff0000', + pointStyle: 'star', + }, + { + // option in element (fallback) + data: [4, -5, -10, null, 10, 5], + } + ] + }, + options: { + legend: false, + title: false, + elements: { + line: { + fill: false, + }, + point: { + backgroundColor: '#00ff00', + pointStyle: 'rect', + radius: 10, + } + }, + scale: { + display: false, + ticks: { + min: -15 + } + } + } + }, + options: { + canvas: { + height: 512, + width: 512 + } + } +}; diff --git a/test/fixtures/controller.radar/pointStyle/value.png b/test/fixtures/controller.radar/pointStyle/value.png new file mode 100644 index 0000000000000000000000000000000000000000..654d4ed825742b622588b89dd774567afe1df677 GIT binary patch literal 11268 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/controller.radar/radius/indexable.js b/test/fixtures/controller.radar/radius/indexable.js new file mode 100644 index 00000000000..7a106b58735 --- /dev/null +++ b/test/fixtures/controller.radar/radius/indexable.js @@ -0,0 +1,49 @@ +module.exports = { + config: { + type: 'radar', + data: { + labels: [0, 1, 2, 3, 4, 5], + datasets: [ + { + // option in dataset + data: [0, 5, 10, null, -10, -5], + pointBackgroundColor: '#00ff00', + pointRadius: [ + 1, 2, 3, 4, 5, 6 + ] + }, + { + // option in element (fallback) + data: [4, -5, -10, null, 10, 5], + } + ] + }, + options: { + legend: false, + title: false, + elements: { + line: { + fill: false, + }, + point: { + backgroundColor: '#ff0000', + radius: [ + 6, 5, 4, 3, 2, 1 + ], + } + }, + scale: { + display: false, + ticks: { + min: -15 + } + } + } + }, + options: { + canvas: { + height: 512, + width: 512 + } + } +}; diff --git a/test/fixtures/controller.radar/radius/indexable.png b/test/fixtures/controller.radar/radius/indexable.png new file mode 100644 index 0000000000000000000000000000000000000000..7d735618a59269613b15b8ce3052d312f06b7b20 GIT binary patch literal 10267 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 4 ? 10 + : value > -4 ? 5 + : 2; + } + }, + { + // option in element (fallback) + data: [4, -5, -10, null, 10, 5], + } + ] + }, + options: { + legend: false, + title: false, + elements: { + line: { + fill: false, + }, + point: { + backgroundColor: '#ff0000', + radius: function(ctx) { + var value = ctx.dataset.data[ctx.dataIndex] || 0; + return value > 4 ? 2 + : value > -4 ? 5 + : 10; + }, + } + }, + scale: { + display: false, + ticks: { + min: -15 + } + } + } + }, + options: { + canvas: { + height: 512, + width: 512 + } + } +}; diff --git a/test/fixtures/controller.radar/radius/scriptable.png b/test/fixtures/controller.radar/radius/scriptable.png new file mode 100644 index 0000000000000000000000000000000000000000..8b58d8881638ff8e63b7bec729a7001edea5097c GIT binary patch literal 11034 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/controller.radar/rotation/indexable.js b/test/fixtures/controller.radar/rotation/indexable.js new file mode 100644 index 00000000000..f516ce75f57 --- /dev/null +++ b/test/fixtures/controller.radar/rotation/indexable.js @@ -0,0 +1,51 @@ +module.exports = { + config: { + type: 'radar', + data: { + labels: [0, 1, 2, 3, 4, 5], + datasets: [ + { + // option in dataset + data: [0, 5, 10, null, -10, -5], + pointBorderColor: '#00ff00', + pointRotation: [ + 0, 30, 60, 90, 120, 150 + ] + }, + { + // option in element (fallback) + data: [4, -5, -10, null, 10, 5], + } + ] + }, + options: { + legend: false, + title: false, + elements: { + line: { + fill: false, + }, + point: { + borderColor: '#ff0000', + borderWidth: 10, + pointStyle: 'line', + rotation: [ + 150, 120, 90, 60, 30, 0 + ], + } + }, + scale: { + display: false, + ticks: { + min: -15 + } + } + } + }, + options: { + canvas: { + height: 512, + width: 512 + } + } +}; diff --git a/test/fixtures/controller.radar/rotation/indexable.png b/test/fixtures/controller.radar/rotation/indexable.png new file mode 100644 index 0000000000000000000000000000000000000000..403aa7f869fd35274d0cc4fa1616e4e978ac9d15 GIT binary patch literal 19221 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

ZMJ-9SQIZs6*?np~|V9 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 HrvCpAsE$Tq literal 0 HcmV?d00001 diff --git a/test/fixtures/controller.radar/rotation/scriptable.js b/test/fixtures/controller.radar/rotation/scriptable.js new file mode 100644 index 00000000000..d85b7c97e82 --- /dev/null +++ b/test/fixtures/controller.radar/rotation/scriptable.js @@ -0,0 +1,57 @@ +module.exports = { + config: { + type: 'radar', + data: { + labels: [0, 1, 2, 3, 4, 5], + datasets: [ + { + // option in dataset + data: [0, 5, 10, null, -10, -5], + pointBorderColor: '#0000ff', + pointRotation: function(ctx) { + var value = ctx.dataset.data[ctx.dataIndex] || 0; + return value > 4 ? 120 + : value > -4 ? 60 + : 0; + } + }, + { + // option in element (fallback) + data: [4, -5, -10, null, 10, 5], + } + ] + }, + options: { + legend: false, + title: false, + elements: { + line: { + fill: false, + }, + point: { + borderColor: '#ff0000', + rotation: function(ctx) { + var value = ctx.dataset.data[ctx.dataIndex] || 0; + return value > 4 ? 0 + : value > -4 ? 60 + : 120; + }, + pointStyle: 'line', + radius: 10, + } + }, + scale: { + display: false, + ticks: { + min: -15 + } + } + } + }, + options: { + canvas: { + height: 512, + width: 512 + } + } +}; diff --git a/test/fixtures/controller.radar/rotation/scriptable.png b/test/fixtures/controller.radar/rotation/scriptable.png new file mode 100644 index 0000000000000000000000000000000000000000..69958a77f2d7c431c09cb15142a51b9f5ae7858e GIT binary patch literal 10351 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 E2gYz>>;M1& literal 0 HcmV?d00001 diff --git a/test/fixtures/controller.radar/rotation/value.js b/test/fixtures/controller.radar/rotation/value.js new file mode 100644 index 00000000000..4b9b17d081d --- /dev/null +++ b/test/fixtures/controller.radar/rotation/value.js @@ -0,0 +1,47 @@ +module.exports = { + config: { + type: 'radar', + data: { + labels: [0, 1, 2, 3, 4, 5], + datasets: [ + { + // option in dataset + data: [0, 5, 10, null, -10, -5], + pointBorderColor: '#0000ff', + pointRotation: 90 + }, + { + // option in element (fallback) + data: [4, -5, -10, null, 10, 5], + } + ] + }, + options: { + legend: false, + title: false, + elements: { + line: { + fill: false, + }, + point: { + borderColor: '#00ff00', + pointStyle: 'line', + radius: 10, + rotation: 0, + } + }, + scale: { + display: false, + ticks: { + min: -15 + } + } + } + }, + options: { + canvas: { + height: 512, + width: 512 + } + } +}; diff --git a/test/fixtures/controller.radar/rotation/value.png b/test/fixtures/controller.radar/rotation/value.png new file mode 100644 index 0000000000000000000000000000000000000000..5a5cd5977099a3f002b58e19c2dcbfc76b63cb2f GIT binary patch literal 9857 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 literal 0 HcmV?d00001 diff --git a/test/specs/controller.radar.tests.js b/test/specs/controller.radar.tests.js index a911f93020e..f9c94e49daf 100644 --- a/test/specs/controller.radar.tests.js +++ b/test/specs/controller.radar.tests.js @@ -290,165 +290,123 @@ describe('Chart.controllers.radar', function() { })); }); - it('should set point hover styles', function() { - var chart = window.acquireChart({ - type: 'radar', - data: { - datasets: [{ - data: [10, 15, 0, 4] - }], - labels: ['label1', 'label2', 'label3', 'label4'] - }, - options: { - showLines: true, - elements: { - line: { - backgroundColor: 'rgb(255, 0, 0)', - borderCapStyle: 'round', - borderColor: 'rgb(0, 255, 0)', - borderDash: [], - borderDashOffset: 0.1, - borderJoinStyle: 'bevel', - borderWidth: 1.2, - fill: true, - skipNull: true, - tension: 0.1, - }, - point: { - backgroundColor: 'rgb(255, 255, 0)', - borderWidth: 1, - borderColor: 'rgb(255, 255, 255)', - hitRadius: 1, - hoverRadius: 4, - hoverBorderWidth: 1, - radius: 3, + describe('Interactions', function() { + beforeEach(function() { + this.chart = window.acquireChart({ + type: 'radar', + data: { + labels: ['label1', 'label2', 'label3', 'label4'], + datasets: [{ + data: [10, 15, 0, 4] + }] + }, + options: { + elements: { + point: { + backgroundColor: 'rgb(100, 150, 200)', + borderColor: 'rgb(50, 100, 150)', + borderWidth: 2, + radius: 3 + } } } - } + }); }); - var meta = chart.getDatasetMeta(0); - - meta.controller.update(); // reset first - - var point = meta.data[0]; - - meta.controller.setHoverStyle(point); - expect(point._model.backgroundColor).toBe('rgb(229, 230, 0)'); - expect(point._model.borderColor).toBe('rgb(230, 230, 230)'); - expect(point._model.borderWidth).toBe(1); - expect(point._model.radius).toBe(4); - - // Can set hover style per dataset - chart.data.datasets[0].pointHoverRadius = 3.3; - chart.data.datasets[0].pointHoverBackgroundColor = 'rgb(77, 79, 81)'; - chart.data.datasets[0].pointHoverBorderColor = 'rgb(123, 125, 127)'; - chart.data.datasets[0].pointHoverBorderWidth = 2.1; - - meta.controller.setHoverStyle(point); - expect(point._model.backgroundColor).toBe('rgb(77, 79, 81)'); - expect(point._model.borderColor).toBe('rgb(123, 125, 127)'); - expect(point._model.borderWidth).toBe(2.1); - expect(point._model.radius).toBe(3.3); - - // Custom style - point.custom = { - hoverRadius: 4.4, - hoverBorderWidth: 5.5, - hoverBackgroundColor: 'rgb(0, 0, 0)', - hoverBorderColor: 'rgb(10, 10, 10)' - }; - - meta.controller.setHoverStyle(point); - expect(point._model.backgroundColor).toBe('rgb(0, 0, 0)'); - expect(point._model.borderColor).toBe('rgb(10, 10, 10)'); - expect(point._model.borderWidth).toBe(5.5); - expect(point._model.radius).toBe(4.4); - }); - - - it('should remove hover styles', function() { - var chart = window.acquireChart({ - type: 'radar', - data: { - datasets: [{ - data: [10, 15, 0, 4] - }], - labels: ['label1', 'label2', 'label3', 'label4'] - }, - options: { - showLines: true, - elements: { - line: { - backgroundColor: 'rgb(255, 0, 0)', - borderCapStyle: 'round', - borderColor: 'rgb(0, 255, 0)', - borderDash: [], - borderDashOffset: 0.1, - borderJoinStyle: 'bevel', - borderWidth: 1.2, - fill: true, - skipNull: true, - tension: 0.1, - }, - point: { - backgroundColor: 'rgb(255, 255, 0)', - borderWidth: 1, - borderColor: 'rgb(255, 255, 255)', - hitRadius: 1, - hoverRadius: 4, - hoverBorderWidth: 1, - radius: 3, - } - } - } + it ('should handle default hover styles', function() { + var chart = this.chart; + var point = chart.getDatasetMeta(0).data[0]; + + jasmine.triggerMouseEvent(chart, 'mousemove', point); + expect(point._model.backgroundColor).toBe('rgb(49, 135, 221)'); + expect(point._model.borderColor).toBe('rgb(22, 89, 156)'); + expect(point._model.borderWidth).toBe(1); + expect(point._model.radius).toBe(4); + + jasmine.triggerMouseEvent(chart, 'mouseout', point); + expect(point._model.backgroundColor).toBe('rgb(100, 150, 200)'); + expect(point._model.borderColor).toBe('rgb(50, 100, 150)'); + expect(point._model.borderWidth).toBe(2); + expect(point._model.radius).toBe(3); }); - var meta = chart.getDatasetMeta(0); - - meta.controller.update(); // reset first - - var point = meta.data[0]; - - chart.options.elements.point.backgroundColor = 'rgb(45, 46, 47)'; - chart.options.elements.point.borderColor = 'rgb(50, 51, 52)'; - chart.options.elements.point.borderWidth = 10.1; - chart.options.elements.point.radius = 1.01; + it ('should handle hover styles defined via dataset properties', function() { + var chart = this.chart; + var point = chart.getDatasetMeta(0).data[0]; + + Chart.helpers.merge(chart.data.datasets[0], { + hoverBackgroundColor: 'rgb(200, 100, 150)', + hoverBorderColor: 'rgb(150, 50, 100)', + hoverBorderWidth: 8.4, + hoverRadius: 4.2 + }); + + chart.update(); + + jasmine.triggerMouseEvent(chart, 'mousemove', point); + expect(point._model.backgroundColor).toBe('rgb(200, 100, 150)'); + expect(point._model.borderColor).toBe('rgb(150, 50, 100)'); + expect(point._model.borderWidth).toBe(8.4); + expect(point._model.radius).toBe(4.2); + + jasmine.triggerMouseEvent(chart, 'mouseout', point); + expect(point._model.backgroundColor).toBe('rgb(100, 150, 200)'); + expect(point._model.borderColor).toBe('rgb(50, 100, 150)'); + expect(point._model.borderWidth).toBe(2); + expect(point._model.radius).toBe(3); + }); - meta.controller.removeHoverStyle(point); - chart.update(); - expect(point._model.backgroundColor).toBe('rgb(45, 46, 47)'); - expect(point._model.borderColor).toBe('rgb(50, 51, 52)'); - expect(point._model.borderWidth).toBe(10.1); - expect(point._model.radius).toBe(1.01); - - // Can set hover style per dataset - chart.data.datasets[0].pointRadius = 3.3; - chart.data.datasets[0].pointBackgroundColor = 'rgb(77, 79, 81)'; - chart.data.datasets[0].pointBorderColor = 'rgb(123, 125, 127)'; - chart.data.datasets[0].pointBorderWidth = 2.1; - - meta.controller.removeHoverStyle(point); - chart.update(); - expect(point._model.backgroundColor).toBe('rgb(77, 79, 81)'); - expect(point._model.borderColor).toBe('rgb(123, 125, 127)'); - expect(point._model.borderWidth).toBe(2.1); - expect(point._model.radius).toBe(3.3); - - // Custom style - point.custom = { - radius: 4.4, - borderWidth: 5.5, - backgroundColor: 'rgb(0, 0, 0)', - borderColor: 'rgb(10, 10, 10)' - }; + it ('should handle hover styles defined via element options', function() { + var chart = this.chart; + var point = chart.getDatasetMeta(0).data[0]; + + Chart.helpers.merge(chart.options.elements.point, { + hoverBackgroundColor: 'rgb(200, 100, 150)', + hoverBorderColor: 'rgb(150, 50, 100)', + hoverBorderWidth: 8.4, + hoverRadius: 4.2 + }); + + chart.update(); + + jasmine.triggerMouseEvent(chart, 'mousemove', point); + expect(point._model.backgroundColor).toBe('rgb(200, 100, 150)'); + expect(point._model.borderColor).toBe('rgb(150, 50, 100)'); + expect(point._model.borderWidth).toBe(8.4); + expect(point._model.radius).toBe(4.2); + + jasmine.triggerMouseEvent(chart, 'mouseout', point); + expect(point._model.backgroundColor).toBe('rgb(100, 150, 200)'); + expect(point._model.borderColor).toBe('rgb(50, 100, 150)'); + expect(point._model.borderWidth).toBe(2); + expect(point._model.radius).toBe(3); + }); - meta.controller.removeHoverStyle(point); - chart.update(); - expect(point._model.backgroundColor).toBe('rgb(0, 0, 0)'); - expect(point._model.borderColor).toBe('rgb(10, 10, 10)'); - expect(point._model.borderWidth).toBe(5.5); - expect(point._model.radius).toBe(4.4); + it ('should handle hover styles defined via element custom', function() { + var chart = this.chart; + var point = chart.getDatasetMeta(0).data[0]; + + point.custom = { + hoverBackgroundColor: 'rgb(200, 100, 150)', + hoverBorderColor: 'rgb(150, 50, 100)', + hoverBorderWidth: 8.4, + hoverRadius: 4.2 + }; + + chart.update(); + + jasmine.triggerMouseEvent(chart, 'mousemove', point); + expect(point._model.backgroundColor).toBe('rgb(200, 100, 150)'); + expect(point._model.borderColor).toBe('rgb(150, 50, 100)'); + expect(point._model.borderWidth).toBe(8.4); + expect(point._model.radius).toBe(4.2); + + jasmine.triggerMouseEvent(chart, 'mouseout', point); + expect(point._model.backgroundColor).toBe('rgb(100, 150, 200)'); + expect(point._model.borderColor).toBe('rgb(50, 100, 150)'); + expect(point._model.borderWidth).toBe(2); + expect(point._model.radius).toBe(3); + }); }); it('should allow pointBorderWidth to be set to 0', function() { From 2443e38397188395ddb191b644912cced1c4b9f3 Mon Sep 17 00:00:00 2001 From: Akihiko Kusanagi Date: Mon, 4 Feb 2019 22:20:13 +0800 Subject: [PATCH 2/5] Remove the check for line._model.tension --- src/controllers/controller.radar.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/controllers/controller.radar.js b/src/controllers/controller.radar.js index d5944b6d082..1adbe603fca 100644 --- a/src/controllers/controller.radar.js +++ b/src/controllers/controller.radar.js @@ -57,9 +57,8 @@ module.exports = DatasetController.extend({ me.updateElement(points[i], i, reset); } - if (line._model.tension !== 0) { - me.updateBezierControlPoints(); - } + // Update bezier control points + me.updateBezierControlPoints(); // Now pivot the point for animation for (i = 0, ilen = points.length; i < ilen; ++i) { From 23a41fbd7660e1d3b8c7351f141862def3073af8 Mon Sep 17 00:00:00 2001 From: Akihiko Kusanagi Date: Mon, 4 Feb 2019 22:38:55 +0800 Subject: [PATCH 3/5] Add the suggested refactoring --- src/controllers/controller.radar.js | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/controllers/controller.radar.js b/src/controllers/controller.radar.js index 1adbe603fca..9023c0e626f 100644 --- a/src/controllers/controller.radar.js +++ b/src/controllers/controller.radar.js @@ -72,12 +72,9 @@ module.exports = DatasetController.extend({ var dataset = me.getDataset(); var scale = me.chart.scale; var pointPosition = scale.getPointPositionForValue(index, dataset.data[index]); - var x, y; - var options = me._resolvePointOptions(point, index); - - x = reset ? scale.xCenter : pointPosition.x; - y = reset ? scale.yCenter : pointPosition.y; + var x = reset ? scale.xCenter : pointPosition.x; + var y = reset ? scale.yCenter : pointPosition.y; // Utility point._scale = scale; From 658e85f5f6402a176cbaeedbda4334eb3ee1f97b Mon Sep 17 00:00:00 2001 From: Akihiko Kusanagi Date: Tue, 5 Feb 2019 02:26:22 +0800 Subject: [PATCH 4/5] Remove the unnecessary resolution of tension option --- src/controllers/controller.radar.js | 2 -- test/specs/controller.radar.tests.js | 4 ---- 2 files changed, 6 deletions(-) diff --git a/src/controllers/controller.radar.js b/src/controllers/controller.radar.js index 9023c0e626f..4df8497ac92 100644 --- a/src/controllers/controller.radar.js +++ b/src/controllers/controller.radar.js @@ -181,8 +181,6 @@ module.exports = DatasetController.extend({ ]); } - values.tension = resolve([custom.tension, dataset.lineTension, options.tension]); - return values; }, diff --git a/test/specs/controller.radar.tests.js b/test/specs/controller.radar.tests.js index f9c94e49daf..6b2c754547c 100644 --- a/test/specs/controller.radar.tests.js +++ b/test/specs/controller.radar.tests.js @@ -127,7 +127,6 @@ describe('Chart.controllers.radar', function() { borderJoinStyle: 'bevel', borderWidth: 1.2, fill: true, - tension: 0.1, })); [ @@ -210,7 +209,6 @@ describe('Chart.controllers.radar', function() { borderJoinStyle: 'miter', borderWidth: 0.55, fill: false, - tension: 0, })); // Since tension is now 0, we don't care about the control points @@ -237,7 +235,6 @@ describe('Chart.controllers.radar', function() { // Use custom styles for lines & first point meta.dataset.custom = { - tension: 0.25, backgroundColor: 'rgb(55, 55, 54)', borderColor: 'rgb(8, 7, 6)', borderWidth: 0.3, @@ -270,7 +267,6 @@ describe('Chart.controllers.radar', function() { borderJoinStyle: 'round', borderWidth: 0.3, fill: true, - tension: 0.25, })); expect(meta.data[0]._model.x).toBeCloseToPixel(256); From b9874a32b1c496c8cd51d1cfa61f4cbbb49bddcd Mon Sep 17 00:00:00 2001 From: Akihiko Kusanagi Date: Thu, 7 Feb 2019 11:52:17 +0800 Subject: [PATCH 5/5] Port per-point custom.tension logic to the line controller --- src/controllers/controller.line.js | 6 +++--- src/controllers/controller.radar.js | 7 +++++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/controllers/controller.line.js b/src/controllers/controller.line.js index d4d7cdc4041..49665e2299a 100644 --- a/src/controllers/controller.line.js +++ b/src/controllers/controller.line.js @@ -118,7 +118,7 @@ module.exports = DatasetController.extend({ backgroundColor: options.backgroundColor, borderColor: options.borderColor, borderWidth: options.borderWidth, - tension: lineModel ? lineModel.tension : 0, + tension: valueOrDefault(custom.tension, lineModel ? lineModel.tension : 0), steppedLine: lineModel ? lineModel.steppedLine : false, // Tooltip hitRadius: options.hitRadius @@ -156,7 +156,7 @@ module.exports = DatasetController.extend({ hoverRadius: 'pointHoverRadius', pointStyle: 'pointStyle', radius: 'pointRadius', - rotation: 'pointRotation', + rotation: 'pointRotation' }; var keys = Object.keys(ELEMENT_OPTIONS); @@ -211,7 +211,7 @@ module.exports = DatasetController.extend({ // to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158 // This option gives lines the ability to span gaps values.spanGaps = valueOrDefault(dataset.spanGaps, options.spanGaps); - values.tension = resolve([custom.tension, dataset.lineTension, elementOptions.tension]); + values.tension = valueOrDefault(dataset.lineTension, elementOptions.tension); values.steppedLine = resolve([custom.steppedLine, dataset.steppedLine, elementOptions.stepped]); return values; diff --git a/src/controllers/controller.radar.js b/src/controllers/controller.radar.js index 4df8497ac92..770ddc51afe 100644 --- a/src/controllers/controller.radar.js +++ b/src/controllers/controller.radar.js @@ -73,6 +73,7 @@ module.exports = DatasetController.extend({ var scale = me.chart.scale; var pointPosition = scale.getPointPositionForValue(index, dataset.data[index]); var options = me._resolvePointOptions(point, index); + var lineModel = me.getMeta().dataset._model; var x = reset ? scale.xCenter : pointPosition.x; var y = reset ? scale.yCenter : pointPosition.y; @@ -94,7 +95,7 @@ module.exports = DatasetController.extend({ backgroundColor: options.backgroundColor, borderColor: options.borderColor, borderWidth: options.borderWidth, - tension: resolve([custom.tension, dataset.lineTension, me.chart.options.elements.line.tension]), + tension: valueOrDefault(custom.tension, lineModel ? lineModel.tension : 0), // Tooltip hitRadius: options.hitRadius @@ -132,7 +133,7 @@ module.exports = DatasetController.extend({ hoverRadius: 'pointHoverRadius', pointStyle: 'pointStyle', radius: 'pointRadius', - rotation: 'pointRotation', + rotation: 'pointRotation' }; var keys = Object.keys(ELEMENT_OPTIONS); @@ -181,6 +182,8 @@ module.exports = DatasetController.extend({ ]); } + values.tension = valueOrDefault(dataset.lineTension, options.tension); + return values; },