From db8f6c38dcd5eabba33c261ed32a73046572c16c Mon Sep 17 00:00:00 2001 From: Akihiko Kusanagi Date: Tue, 18 Dec 2018 21:58:02 +0900 Subject: [PATCH] Add support for 'inner' border for arc elements (#5841) --- docs/charts/doughnut.md | 21 +++- docs/charts/polar.md | 21 +++- src/controllers/controller.doughnut.js | 92 ++++++++++---- src/controllers/controller.polarArea.js | 4 +- src/elements/element.arc.js | 45 +++++-- test/context.js | 1 + .../doughnut-border-align-center.json | 31 +++++ .../doughnut-border-align-center.png | Bin 0 -> 28418 bytes .../doughnut-border-align-inner.json | 32 +++++ .../doughnut-border-align-inner.png | Bin 0 -> 27021 bytes .../pie-border-align-center.json | 31 +++++ .../pie-border-align-center.png | Bin 0 -> 22739 bytes .../pie-border-align-inner.json | 32 +++++ .../pie-border-align-inner.png | Bin 0 -> 22208 bytes .../border-align-center.json | 41 ++++++ .../border-align-center.png | Bin 0 -> 20190 bytes .../border-align-inner.json | 42 +++++++ .../border-align-inner.png | Bin 0 -> 9999 bytes test/specs/controller.doughnut.tests.js | 66 ++++++++-- test/specs/core.tooltip.tests.js | 2 +- test/specs/element.arc.tests.js | 118 ++++++++++++++++-- 21 files changed, 511 insertions(+), 68 deletions(-) create mode 100644 test/fixtures/controller.doughnut/doughnut-border-align-center.json create mode 100644 test/fixtures/controller.doughnut/doughnut-border-align-center.png create mode 100644 test/fixtures/controller.doughnut/doughnut-border-align-inner.json create mode 100644 test/fixtures/controller.doughnut/doughnut-border-align-inner.png create mode 100644 test/fixtures/controller.doughnut/pie-border-align-center.json create mode 100644 test/fixtures/controller.doughnut/pie-border-align-center.png create mode 100644 test/fixtures/controller.doughnut/pie-border-align-inner.json create mode 100644 test/fixtures/controller.doughnut/pie-border-align-inner.png create mode 100644 test/fixtures/controller.polarArea/border-align-center.json create mode 100644 test/fixtures/controller.polarArea/border-align-center.png create mode 100644 test/fixtures/controller.polarArea/border-align-inner.json create mode 100644 test/fixtures/controller.polarArea/border-align-inner.png diff --git a/docs/charts/doughnut.md b/docs/charts/doughnut.md index 4f1656f30..9fda1bbf7 100644 --- a/docs/charts/doughnut.md +++ b/docs/charts/doughnut.md @@ -55,12 +55,21 @@ The doughnut/pie chart allows a number of properties to be specified for each da | Name | Type | Description | ---- | ---- | ----------- -| `backgroundColor` | `Color[]` | The fill color of the arcs in the dataset. See [Colors](../general/colors.md#colors). -| `borderColor` | `Color[]` | The border color of the arcs in the dataset. See [Colors](../general/colors.md#colors). -| `borderWidth` | `Number[]` | The border width of the arcs in the dataset. -| `hoverBackgroundColor` | `Color[]` | The fill colour of the arcs when hovered. -| `hoverBorderColor` | `Color[]` | The stroke colour of the arcs when hovered. -| `hoverBorderWidth` | `Number[]` | The stroke width of the arcs when hovered. +| `backgroundColor` | `Color/Color[]` | The fill color of the arcs in the dataset. See [Colors](../general/colors.md#colors). +| `borderColor` | `Color/Color[]` | The border color of the arcs in the dataset. See [Colors](../general/colors.md#colors). +| `borderWidth` | `Number/Number[]` | The border width of the arcs in the dataset. +| `borderAlign` | `String/String[]` | The border alignment of the arcs in the dataset. [more...](#border-alignment) +| `hoverBackgroundColor` | `Color/Color[]` | The fill colour of the arcs when hovered. +| `hoverBorderColor` | `Color/Color[]` | The stroke colour of the arcs when hovered. +| `hoverBorderWidth` | `Number/Number[]` | The stroke width of the arcs when hovered. + +### Border Alignment + +The following values are supported for `borderAlign`. +* `'center'` (default) +* `'inner'` + +When `'center'` is set, the borders of arcs next to each other will overlap. When `'inner'` is set, it is guaranteed that all the borders are not overlap. ## Config Options diff --git a/docs/charts/polar.md b/docs/charts/polar.md index 2ae8b5ec3..20dc93c28 100644 --- a/docs/charts/polar.md +++ b/docs/charts/polar.md @@ -46,12 +46,21 @@ The following options can be included in a polar area chart dataset to configure | Name | Type | Description | ---- | ---- | ----------- -| `backgroundColor` | `Color[]` | The fill color of the arcs in the dataset. See [Colors](../general/colors.md#colors). -| `borderColor` | `Color[]` | The border color of the arcs in the dataset. See [Colors](../general/colors.md#colors). -| `borderWidth` | `Number[]` | The border width of the arcs in the dataset. -| `hoverBackgroundColor` | `Color[]` | The fill colour of the arcs when hovered. -| `hoverBorderColor` | `Color[]` | The stroke colour of the arcs when hovered. -| `hoverBorderWidth` | `Number[]` | The stroke width of the arcs when hovered. +| `backgroundColor` | `Color/Color[]` | The fill color of the arcs in the dataset. See [Colors](../general/colors.md#colors). +| `borderColor` | `Color/Color[]` | The border color of the arcs in the dataset. See [Colors](../general/colors.md#colors). +| `borderWidth` | `Number/Number[]` | The border width of the arcs in the dataset. +| `borderAlign` | `String/String[]` | The border alignment of the arcs in the dataset. [more...](#border-alignment) +| `hoverBackgroundColor` | `Color/Color[]` | The fill colour of the arcs when hovered. +| `hoverBorderColor` | `Color/Color[]` | The stroke colour of the arcs when hovered. +| `hoverBorderWidth` | `Number/Number[]` | The stroke width of the arcs when hovered. + +### Border Alignment + +The following values are supported for `borderAlign`. +* `'center'` (default) +* `'inner'` + +When `'center'` is set, the borders of arcs next to each other will overlap. When `'inner'` is set, it is guaranteed that all the borders are not overlap. ## Config Options diff --git a/src/controllers/controller.doughnut.js b/src/controllers/controller.doughnut.js index b24a7a00e..f2a55d84e 100644 --- a/src/controllers/controller.doughnut.js +++ b/src/controllers/controller.doughnut.js @@ -143,14 +143,15 @@ module.exports = DatasetController.extend({ var chart = me.chart; var chartArea = chart.chartArea; var opts = chart.options; - var arcOpts = opts.elements.arc; - var availableWidth = chartArea.right - chartArea.left - arcOpts.borderWidth; - var availableHeight = chartArea.bottom - chartArea.top - arcOpts.borderWidth; + var availableWidth = chartArea.right - chartArea.left; + var availableHeight = chartArea.bottom - chartArea.top; var minSize = Math.min(availableWidth, availableHeight); var offset = {x: 0, y: 0}; var meta = me.getMeta(); + var arcs = meta.data; var cutoutPercentage = opts.cutoutPercentage; var circumference = opts.circumference; + var i, ilen; // If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc if (circumference < Math.PI * 2.0) { @@ -171,7 +172,11 @@ module.exports = DatasetController.extend({ offset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5}; } - chart.borderWidth = me.getMaxBorderWidth(meta.data); + for (i = 0, ilen = arcs.length; i < ilen; ++i) { + arcs[i]._options = me._resolveElementOptions(arcs[i], i, reset); + } + + chart.borderWidth = me.getMaxBorderWidth(); chart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0); chart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 0, 0); chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount(); @@ -183,9 +188,9 @@ module.exports = DatasetController.extend({ me.outerRadius = chart.outerRadius - (chart.radiusLength * me.getRingIndex(me.index)); me.innerRadius = Math.max(me.outerRadius - chart.radiusLength, 0); - helpers.each(meta.data, function(arc, index) { - me.updateElement(arc, index, reset); - }); + for (i = 0, ilen = arcs.length; i < ilen; ++i) { + me.updateElement(arcs[i], i, reset); + } }, updateElement: function(arc, index, reset) { @@ -202,7 +207,7 @@ module.exports = DatasetController.extend({ var circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI)); var innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius; var outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius; - var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault; + var options = arc._options || {}; helpers.extend(arc, { // Utility @@ -211,6 +216,10 @@ module.exports = DatasetController.extend({ // Desired view properties _model: { + backgroundColor: options.backgroundColor, + borderColor: options.borderColor, + borderWidth: options.borderWidth, + borderAlign: options.borderAlign, x: centerX + chart.offsetX, y: centerY + chart.offsetY, startAngle: startAngle, @@ -218,20 +227,12 @@ module.exports = DatasetController.extend({ circumference: circumference, outerRadius: outerRadius, innerRadius: innerRadius, - label: valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index]) + label: helpers.valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index]) } }); var model = arc._model; - // Resets the visual styles - var custom = arc.custom || {}; - var valueOrDefault = helpers.valueAtIndexOrDefault; - var elementOpts = this.chart.options.elements.arc; - model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor); - model.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor); - model.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth); - // Set correct angles if not resetting if (!reset || !animationOpts.animateRotate) { if (index === 0) { @@ -276,19 +277,58 @@ module.exports = DatasetController.extend({ // gets the max border or hover width to properly scale pie charts getMaxBorderWidth: function(arcs) { + var me = this; var max = 0; - var index = this.index; - var length = arcs.length; - var borderWidth; - var hoverWidth; + var chart = me.chart; + var i, ilen, meta, arc, controller, options, borderWidth, hoverWidth; + + if (!arcs) { + // Find the outmost visible dataset + for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) { + if (chart.isDatasetVisible(i)) { + meta = chart.getDatasetMeta(i); + arcs = meta.data; + if (i !== me.index) { + controller = meta.controller; + } + break; + } + } + } + + if (!arcs) { + return 0; + } - for (var i = 0; i < length; i++) { - borderWidth = arcs[i]._model ? arcs[i]._model.borderWidth : 0; - hoverWidth = arcs[i]._chart ? arcs[i]._chart.config.data.datasets[index].hoverBorderWidth : 0; + for (i = 0, ilen = arcs.length; i < ilen; ++i) { + arc = arcs[i]; + options = controller ? controller._resolveElementOptions(arc, i) : arc._options; + if (options.borderAlign !== 'inner') { + borderWidth = options.borderWidth; + hoverWidth = options.hoverBorderWidth; - max = borderWidth > max ? borderWidth : max; - max = hoverWidth > max ? hoverWidth : max; + max = borderWidth > max ? borderWidth : max; + max = hoverWidth > max ? hoverWidth : max; + } } return max; + }, + + /** + * @private + */ + _resolveElementOptions: function(arc, index) { + var me = this; + var dataset = me.getDataset(); + var custom = arc.custom || {}; + var options = me.chart.options.elements.arc; + var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault; + + return { + backgroundColor: custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(dataset.backgroundColor, index, options.backgroundColor), + borderColor: custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(dataset.borderColor, index, options.borderColor), + borderWidth: custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(dataset.borderWidth, index, options.borderWidth), + borderAlign: custom.borderAlign ? custom.borderAlign : valueAtIndexOrDefault(dataset.borderAlign, index, options.borderAlign) + }; } }); diff --git a/src/controllers/controller.polarArea.js b/src/controllers/controller.polarArea.js index fb045e302..39013d872 100644 --- a/src/controllers/controller.polarArea.js +++ b/src/controllers/controller.polarArea.js @@ -148,10 +148,9 @@ module.exports = DatasetController.extend({ var chart = me.chart; var chartArea = chart.chartArea; var opts = chart.options; - var arcOpts = opts.elements.arc; var minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top); - chart.outerRadius = Math.max((minSize - arcOpts.borderWidth / 2) / 2, 0); + chart.outerRadius = Math.max(minSize / 2, 0); chart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0); chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount(); @@ -206,6 +205,7 @@ module.exports = DatasetController.extend({ model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor); model.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor); model.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth); + model.borderAlign = custom.borderAlign ? custom.borderAlign : valueOrDefault(dataset.borderAlign, index, elementOpts.borderAlign); arc.pivot(); }, diff --git a/src/elements/element.arc.js b/src/elements/element.arc.js index 0d665d717..82d836c6b 100644 --- a/src/elements/element.arc.js +++ b/src/elements/element.arc.js @@ -9,7 +9,8 @@ defaults._set('global', { arc: { backgroundColor: defaults.global.defaultColor, borderColor: '#fff', - borderWidth: 2 + borderWidth: 2, + borderAlign: 'center' } } }); @@ -85,23 +86,51 @@ module.exports = Element.extend({ var vm = this._view; var sA = vm.startAngle; var eA = vm.endAngle; + var pixelMargin = (vm.borderAlign === 'inner') ? 0.33 : 0; + var angleMargin; - ctx.beginPath(); + ctx.save(); - ctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA); + ctx.beginPath(); + ctx.arc(vm.x, vm.y, vm.outerRadius - pixelMargin, sA, eA); ctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true); - ctx.closePath(); - ctx.strokeStyle = vm.borderColor; - ctx.lineWidth = vm.borderWidth; ctx.fillStyle = vm.backgroundColor; - ctx.fill(); - ctx.lineJoin = 'bevel'; if (vm.borderWidth) { + if (vm.borderAlign === 'inner') { + // Draw an inner border by cliping the arc and drawing a double-width border + // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders + ctx.beginPath(); + angleMargin = pixelMargin / vm.outerRadius; + ctx.arc(vm.x, vm.y, vm.outerRadius, sA - angleMargin, eA + angleMargin); + if (vm.innerRadius > pixelMargin) { + angleMargin = pixelMargin / vm.innerRadius; + ctx.arc(vm.x, vm.y, vm.innerRadius - pixelMargin, eA + angleMargin, sA - angleMargin, true); + } else { + ctx.arc(vm.x, vm.y, pixelMargin, eA + Math.PI / 2, sA - Math.PI / 2); + } + ctx.closePath(); + ctx.clip(); + + ctx.beginPath(); + ctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA); + ctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true); + ctx.closePath(); + + ctx.lineWidth = vm.borderWidth * 2; + ctx.lineJoin = 'round'; + } else { + ctx.lineWidth = vm.borderWidth; + ctx.lineJoin = 'bevel'; + } + + ctx.strokeStyle = vm.borderColor; ctx.stroke(); } + + ctx.restore(); } }); diff --git a/test/context.js b/test/context.js index ecf5f8a4a..4b683aff7 100644 --- a/test/context.js +++ b/test/context.js @@ -79,6 +79,7 @@ Context.prototype._initMethods = function() { beginPath: function() {}, bezierCurveTo: function() {}, clearRect: function() {}, + clip: function() {}, closePath: function() {}, fill: function() {}, fillRect: function() {}, diff --git a/test/fixtures/controller.doughnut/doughnut-border-align-center.json b/test/fixtures/controller.doughnut/doughnut-border-align-center.json new file mode 100644 index 000000000..b76b2e82f --- /dev/null +++ b/test/fixtures/controller.doughnut/doughnut-border-align-center.json @@ -0,0 +1,31 @@ +{ + "config": { + "type": "doughnut", + "data": { + "labels": ["A", "B", "C", "D", "E"], + "datasets": [{ + "data": [1, 5, 10, 50, 100], + "backgroundColor": [ + "rgba(255, 99, 132, 0.8)", + "rgba(54, 162, 235, 0.8)", + "rgba(255, 206, 86, 0.8)", + "rgba(75, 192, 192, 0.8)", + "rgba(153, 102, 255, 0.8)" + ], + "borderWidth": 20, + "borderColor": [ + "rgb(255, 99, 132)", + "rgb(54, 162, 235)", + "rgb(255, 206, 86)", + "rgb(75, 192, 192)", + "rgb(153, 102, 255)" + ] + }] + }, + "options": { + "responsive": false, + "legend": false, + "title": false + } + } +} diff --git a/test/fixtures/controller.doughnut/doughnut-border-align-center.png b/test/fixtures/controller.doughnut/doughnut-border-align-center.png new file mode 100644 index 0000000000000000000000000000000000000000..3eec51ff8074d0d9930bdada377cd8da3324283b GIT binary patch literal 28418 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 GqW%x~U0pQ* literal 0 Hc-jL100001 diff --git a/test/fixtures/controller.doughnut/doughnut-border-align-inner.json b/test/fixtures/controller.doughnut/doughnut-border-align-inner.json new file mode 100644 index 000000000..7fb4a76e1 --- /dev/null +++ b/test/fixtures/controller.doughnut/doughnut-border-align-inner.json @@ -0,0 +1,32 @@ +{ + "config": { + "type": "doughnut", + "data": { + "labels": ["A", "B", "C", "D", "E"], + "datasets": [{ + "data": [1, 5, 10, 50, 100], + "backgroundColor": [ + "rgba(255, 99, 132, 0.8)", + "rgba(54, 162, 235, 0.8)", + "rgba(255, 206, 86, 0.8)", + "rgba(75, 192, 192, 0.8)", + "rgba(153, 102, 255, 0.8)" + ], + "borderWidth": 20, + "borderColor": [ + "rgb(255, 99, 132)", + "rgb(54, 162, 235)", + "rgb(255, 206, 86)", + "rgb(75, 192, 192)", + "rgb(153, 102, 255)" + ], + "borderAlign": "inner" + }] + }, + "options": { + "responsive": false, + "legend": false, + "title": false + } + } +} diff --git a/test/fixtures/controller.doughnut/doughnut-border-align-inner.png b/test/fixtures/controller.doughnut/doughnut-border-align-inner.png new file mode 100644 index 0000000000000000000000000000000000000000..d33adf4c206b1489febf007e30cd7153c5986bae GIT binary patch literal 27021 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 literal 0 Hc-jL100001 diff --git a/test/fixtures/controller.doughnut/pie-border-align-inner.json b/test/fixtures/controller.doughnut/pie-border-align-inner.json new file mode 100644 index 000000000..7b1bd0361 --- /dev/null +++ b/test/fixtures/controller.doughnut/pie-border-align-inner.json @@ -0,0 +1,32 @@ +{ + "config": { + "type": "pie", + "data": { + "labels": ["A", "B", "C", "D", "E"], + "datasets": [{ + "data": [1, 5, 10, 50, 100], + "backgroundColor": [ + "rgba(255, 99, 132, 0.8)", + "rgba(54, 162, 235, 0.8)", + "rgba(255, 206, 86, 0.8)", + "rgba(75, 192, 192, 0.8)", + "rgba(153, 102, 255, 0.8)" + ], + "borderWidth": 20, + "borderColor": [ + "rgb(255, 99, 132)", + "rgb(54, 162, 235)", + "rgb(255, 206, 86)", + "rgb(75, 192, 192)", + "rgb(153, 102, 255)" + ], + "borderAlign": "inner" + }] + }, + "options": { + "responsive": false, + "legend": false, + "title": false + } + } +} diff --git a/test/fixtures/controller.doughnut/pie-border-align-inner.png b/test/fixtures/controller.doughnut/pie-border-align-inner.png new file mode 100644 index 0000000000000000000000000000000000000000..a2f348eb7dd1bb46dddd6a99133b69fb3531bffb GIT binary patch literal 22208 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 OKfa_rUQM1c%>My9PCC#4 literal 0 Hc-jL100001 diff --git a/test/fixtures/controller.polarArea/border-align-center.json b/test/fixtures/controller.polarArea/border-align-center.json new file mode 100644 index 000000000..234712001 --- /dev/null +++ b/test/fixtures/controller.polarArea/border-align-center.json @@ -0,0 +1,41 @@ +{ + "config": { + "type": "polarArea", + "data": { + "labels": ["A", "B", "C", "D", "E"], + "datasets": [{ + "data": [11, 16, 21, 1, 10], + "backgroundColor": [ + "rgba(255, 99, 132, 0.8)", + "rgba(54, 162, 235, 0.8)", + "rgba(255, 206, 86, 0.8)", + "rgba(75, 192, 192, 0.8)", + "rgba(153, 102, 255, 0.8)" + ], + "borderWidth": 20, + "borderColor": [ + "rgb(255, 99, 132)", + "rgb(54, 162, 235)", + "rgb(255, 206, 86)", + "rgb(75, 192, 192)", + "rgb(153, 102, 255)" + ] + }] + }, + "options": { + "elements": { + "arc": { + "angle": [ + 0.0378, 0.1892, 0.3786, 1.8925, 3.7849 + ] + } + }, + "responsive": false, + "legend": false, + "title": false, + "scale": { + "display": false + } + } + } +} diff --git a/test/fixtures/controller.polarArea/border-align-center.png b/test/fixtures/controller.polarArea/border-align-center.png new file mode 100644 index 0000000000000000000000000000000000000000..ab0941bbb4d4958ec156c42db96c52fe720746ba GIT binary patch literal 20190 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 literal 0 Hc-jL100001 diff --git a/test/fixtures/controller.polarArea/border-align-inner.json b/test/fixtures/controller.polarArea/border-align-inner.json new file mode 100644 index 000000000..fa165484d --- /dev/null +++ b/test/fixtures/controller.polarArea/border-align-inner.json @@ -0,0 +1,42 @@ +{ + "config": { + "type": "polarArea", + "data": { + "labels": ["A", "B", "C", "D", "E"], + "datasets": [{ + "data": [11, 16, 21, 1, 10], + "backgroundColor": [ + "rgba(255, 99, 132, 0.8)", + "rgba(54, 162, 235, 0.8)", + "rgba(255, 206, 86, 0.8)", + "rgba(75, 192, 192, 0.8)", + "rgba(153, 102, 255, 0.8)" + ], + "borderWidth": 20, + "borderColor": [ + "rgb(255, 99, 132)", + "rgb(54, 162, 235)", + "rgb(255, 206, 86)", + "rgb(75, 192, 192)", + "rgb(153, 102, 255)" + ], + "borderAlign": "inner" + }] + }, + "options": { + "elements": { + "arc": { + "angle": [ + 0.0378, 0.1892, 0.3786, 1.8925, 3.7849 + ] + } + }, + "responsive": false, + "legend": false, + "title": false, + "scale": { + "display": false + } + } + } +} diff --git a/test/fixtures/controller.polarArea/border-align-inner.png b/test/fixtures/controller.polarArea/border-align-inner.png new file mode 100644 index 0000000000000000000000000000000000000000..f3911a4754d467d5623927cea5ba124be7280bd8 GIT binary patch literal 9999 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 P? chart.width) { break; diff --git a/test/specs/element.arc.tests.js b/test/specs/element.arc.tests.js index b2caaadaa..dd3736435 100644 --- a/test/specs/element.arc.tests.js +++ b/test/specs/element.arc.tests.js @@ -126,6 +126,9 @@ describe('Arc element tests', function() { arc.draw(); expect(mockContext.getCalls()).toEqual([{ + name: 'save', + args: [] + }, { name: 'beginPath', args: [] }, { @@ -137,12 +140,6 @@ describe('Arc element tests', function() { }, { name: 'closePath', args: [] - }, { - name: 'setStrokeStyle', - args: ['rgb(255, 0, 0)'] - }, { - name: 'setLineWidth', - args: [undefined] }, { name: 'setFillStyle', args: ['rgb(0, 0, 255)'] @@ -150,8 +147,8 @@ describe('Arc element tests', function() { name: 'fill', args: [] }, { - name: 'setLineJoin', - args: ['bevel'] + name: 'restore', + args: [] }]); }); @@ -182,6 +179,9 @@ describe('Arc element tests', function() { arc.draw(); expect(mockContext.getCalls()).toEqual([{ + name: 'save', + args: [] + }, { name: 'beginPath', args: [] }, { @@ -194,23 +194,119 @@ describe('Arc element tests', function() { name: 'closePath', args: [] }, { - name: 'setStrokeStyle', - args: ['rgb(255, 0, 0)'] + name: 'setFillStyle', + args: ['rgb(0, 0, 255)'] + }, { + name: 'fill', + args: [] }, { name: 'setLineWidth', args: [5] + }, { + name: 'setLineJoin', + args: ['bevel'] + }, { + name: 'setStrokeStyle', + args: ['rgb(255, 0, 0)'] + }, { + name: 'stroke', + args: [] + }, { + name: 'restore', + args: [] + }]); + }); + + it ('should draw correctly with an inner border', function() { + var mockContext = window.createMockContext(); + var arc = new Chart.elements.Arc({ + _datasetIndex: 2, + _index: 1, + _chart: { + ctx: mockContext, + } + }); + + // Mock out the view as if the controller put it there + arc._view = { + startAngle: 0, + endAngle: Math.PI / 2, + x: 10, + y: 5, + innerRadius: 1, + outerRadius: 3, + + backgroundColor: 'rgb(0, 0, 255)', + borderColor: 'rgb(255, 0, 0)', + borderWidth: 5, + borderAlign: 'inner' + }; + + arc.draw(); + + expect(mockContext.getCalls()).toEqual([{ + name: 'save', + args: [] + }, { + name: 'beginPath', + args: [] + }, { + name: 'arc', + args: [10, 5, 2.67, 0, Math.PI / 2] + }, { + name: 'arc', + args: [10, 5, 1, Math.PI / 2, 0, true] + }, { + name: 'closePath', + args: [] }, { name: 'setFillStyle', args: ['rgb(0, 0, 255)'] }, { name: 'fill', args: [] + }, { + name: 'beginPath', + args: [] + }, { + name: 'arc', + args: [10, 5, 3, -0.11, Math.PI / 2 + 0.11] + }, { + name: 'arc', + args: [10, 5, 1 - 0.33, Math.PI / 2 + 0.33, -0.33, true] + }, { + name: 'closePath', + args: [] + }, { + name: 'clip', + args: [] + }, { + name: 'beginPath', + args: [] + }, { + name: 'arc', + args: [10, 5, 3, 0, Math.PI / 2] + }, { + name: 'arc', + args: [10, 5, 1, Math.PI / 2, 0, true] + }, { + name: 'closePath', + args: [] + }, { + name: 'setLineWidth', + args: [10] }, { name: 'setLineJoin', - args: ['bevel'] + args: ['round'] + }, { + name: 'setStrokeStyle', + args: ['rgb(255, 0, 0)'] }, { name: 'stroke', args: [] + }, { + name: 'restore', + args: [] }]); }); }); -- 2.39.5