From 9e4018e814916cfdeec4ab8345389c0b4b496b78 Mon Sep 17 00:00:00 2001 From: Akihiko Kusanagi Date: Thu, 25 Apr 2019 17:16:04 +0800 Subject: [PATCH 1/2] Fix arc size calculation when circumference is under 2PI --- src/controllers/controller.doughnut.js | 15 ++++---- .../doughnut-circumference.json | 32 ++++++++++++++++++ .../doughnut-circumference.png | Bin 0 -> 39794 bytes .../pie-circumference.json | 32 ++++++++++++++++++ .../controller.doughnut/pie-circumference.png | Bin 0 -> 46902 bytes 5 files changed, 71 insertions(+), 8 deletions(-) create mode 100644 test/fixtures/controller.doughnut/doughnut-circumference.json create mode 100644 test/fixtures/controller.doughnut/doughnut-circumference.png create mode 100644 test/fixtures/controller.doughnut/pie-circumference.json create mode 100644 test/fixtures/controller.doughnut/pie-circumference.png diff --git a/src/controllers/controller.doughnut.js b/src/controllers/controller.doughnut.js index a6d4a63775a..ac92c955b0a 100644 --- a/src/controllers/controller.doughnut.js +++ b/src/controllers/controller.doughnut.js @@ -145,18 +145,16 @@ module.exports = DatasetController.extend({ var chart = me.chart; var chartArea = chart.chartArea; var opts = chart.options; - var availableWidth = chartArea.right - chartArea.left; - var availableHeight = chartArea.bottom - chartArea.top; - var minSize = Math.min(availableWidth, availableHeight); + var size = {width: 1, height: 1}; var offset = {x: 0, y: 0}; var meta = me.getMeta(); var arcs = meta.data; var cutoutPercentage = opts.cutoutPercentage; var circumference = opts.circumference; var chartWeight = me._getRingWeight(me.index); - var i, ilen; + var maxWidth, maxHeight, 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 the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc if (circumference < Math.PI * 2.0) { var startAngle = opts.rotation % (Math.PI * 2.0); startAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0); @@ -170,8 +168,7 @@ module.exports = DatasetController.extend({ var cutout = cutoutPercentage / 100.0; var min = {x: contains180 ? -1 : Math.min(start.x * (start.x < 0 ? 1 : cutout), end.x * (end.x < 0 ? 1 : cutout)), y: contains270 ? -1 : Math.min(start.y * (start.y < 0 ? 1 : cutout), end.y * (end.y < 0 ? 1 : cutout))}; var max = {x: contains0 ? 1 : Math.max(start.x * (start.x > 0 ? 1 : cutout), end.x * (end.x > 0 ? 1 : cutout)), y: contains90 ? 1 : Math.max(start.y * (start.y > 0 ? 1 : cutout), end.y * (end.y > 0 ? 1 : cutout))}; - var size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5}; - minSize = Math.min(availableWidth / size.width, availableHeight / size.height); + size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5}; offset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5}; } @@ -180,7 +177,9 @@ module.exports = DatasetController.extend({ } chart.borderWidth = me.getMaxBorderWidth(); - chart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0); + maxWidth = (chartArea.right - chartArea.left - chart.borderWidth) / size.width; + maxHeight = (chartArea.bottom - chartArea.top - chart.borderWidth) / size.height; + chart.outerRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0); chart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 0, 0); chart.radiusLength = (chart.outerRadius - chart.innerRadius) / (me._getVisibleDatasetWeightTotal() || 1); chart.offsetX = offset.x * chart.outerRadius; diff --git a/test/fixtures/controller.doughnut/doughnut-circumference.json b/test/fixtures/controller.doughnut/doughnut-circumference.json new file mode 100644 index 00000000000..427079f505b --- /dev/null +++ b/test/fixtures/controller.doughnut/doughnut-circumference.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)" + ] + }] + }, + "options": { + "circumference": 1, + "responsive": false, + "legend": false, + "title": false + } + } +} diff --git a/test/fixtures/controller.doughnut/doughnut-circumference.png b/test/fixtures/controller.doughnut/doughnut-circumference.png new file mode 100644 index 0000000000000000000000000000000000000000..e5bf207409128408ea343d623468e1da2b006e13 GIT binary patch literal 39794 zcmdpd^+S~1^Y-qt#L|t@9TFnlEYgj%Gy>A0bT^1dcjronbVw^8(jeU+CEd-t>+?LH z@Bi@r1Pk|`b7s!WHFM3(9igToi-k^#4gdhKeWy5xsCd z`<(jvxl+t2%ips?t85=@1sXr1GY1m{D}g}r2W^%!w~vBAhql;_CFetx1LXsu!*$e~ zn#(y`-^|3pHCR0I0E^%JU z!T(SDhA2_f~$;J=m=D+O6I+3$l zZJ~zRcfTu_i)-r(JiT`L$m#c=+Lfre!T9I^&y8OwH&0c80#mNX!5pwAk8h0@y8QST z_UwgXf%d7>mv39;mdP07TY*iF`+W3}#b(sP{l~|jqNCp^XL>1d_rsQF zC3`4~M=-@Glm0aeXdnIP?(^ed|LeyxTR{$r2X-k}x(cgXRKC^czK#+)1vKo!UxwA^ z0PUb^iV%B%z3okF;_bua#iOIZJit;o%5TG#7pa!$zavv5KqEmbE5;9wu79F_hUK6s zPE34s@mR9F()d-;KT%*kE8kk1m?42061dQS;n`YMCO&qpo7_<%-@Fv}z9-&#LQK`0 zobP|;gaP4U1zirqWITIm2Q)_#S_T ziEv8M1gY6yp;VBH2V>&_P#;hHOT2k2pLns6kH>RP zzfUL$rCJFaxaO2Aw2*b(!r3>va$Sd5K{**F@IT;I1Jx^2q{z@_nDBWjfE99%)jtuxYp`uqs_2JYL zHeTymV^{wqLIzAVv7)L^XeX?f53{noKJBbFeVg9UEc}n?8v?+&$DfZ+0m>16l-s<7 z{8*`(e94MGDZkB%8Y#_3DGC@ydJB&cx#}3qriZ`nRG<}5>6RJO{I$tjuDx zCJny+Wi}E0ekV64FLErkfr1EyScdV<7eR&45*0H^P?>=QRK1-kVksu<<)N6k-(9o{ z0X1s(KL8DZ)I|V1JdYUAc4y=EwravAzRa;GqtR}W$u*bk7zBQ9V+!>!2K>xP#b zey%1H)Y-*_hyg+`0tJ9hmcMitw6d}RXjY6yPv2WlQ470{*a^s0`AJNH6HH|b6JODK z$%3lT^DPL`*t~C!dKRBW-Te~^pr~|ki#{l(4DZnX1tWS%(nhI>YMh;nrImHrPdz+) zOQ*FtGb{n7U!kNnT&={H%eP4X%U_44)Y^J3^@5{RTt7*$Aps0*w89V2!TAtW^jXEQO9w9j(5L)2SnVsp#lLGlG;J#4 z5(SR-bztF48BGkE@`x|IZw2Y_Wyce>Z&VW)BY7BteugAgsY`zsR>gS|yQ()TC_+Xq zgfLJOafBZ9mwS#Hd5}8;R%90DAH&K4cR^Z_89h5pd;=d%gdzwW&cA&o02BNU4vh za0H|&96iH^3|F)aay+=%-97!l>t^RhpD4E{*7)BE-hozPcnO@0bMUN@IrB`29(3=w z>g;@Kou#h!sM8J`ZDP~$@5q!Nf86`ypON+ST^hVSKdk%lm?SZ*E~!3%0x|-PajQ?~ zc-jmQHlpE+{}a4(1K`(lCD{>i<^BDrZcyb<4LQH|uVYsHtIhpicbpI?ICV>k)B&H@geM%x$obAQ*0N?;{bH-MlPyN2d&QdehkG z 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

2^ku1f^tIu-WrM~xtrx{C|Ae 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

oa=}e9 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 R%K`>|R1`GjD`hRi{||Zm9PR)B literal 0 HcmV?d00001 From 799d0bbe9fcd8ff06bc523b52eb3295dda596429 Mon Sep 17 00:00:00 2001 From: Akihiko Kusanagi Date: Wed, 1 May 2019 16:09:09 +0800 Subject: [PATCH 2/2] Refactor to be simpler --- src/controllers/controller.doughnut.js | 63 +++++++++++++++----------- 1 file changed, 37 insertions(+), 26 deletions(-) diff --git a/src/controllers/controller.doughnut.js b/src/controllers/controller.doughnut.js index ac92c955b0a..688368edac4 100644 --- a/src/controllers/controller.doughnut.js +++ b/src/controllers/controller.doughnut.js @@ -8,6 +8,10 @@ var helpers = require('../helpers/index'); var resolve = helpers.options.resolve; var valueOrDefault = helpers.valueOrDefault; +var PI = Math.PI; +var DOUBLE_PI = PI * 2; +var HALF_PI = PI / 2; + defaults._set('doughnut', { animation: { // Boolean - Whether we animate the rotation of the Doughnut @@ -91,10 +95,10 @@ defaults._set('doughnut', { cutoutPercentage: 50, // The rotation of the chart, where the first data arc begins. - rotation: Math.PI * -0.5, + rotation: -HALF_PI, // The total circumference of the chart. - circumference: Math.PI * 2.0, + circumference: DOUBLE_PI, // Need to override these to give a nice default tooltips: { @@ -145,31 +149,38 @@ module.exports = DatasetController.extend({ var chart = me.chart; var chartArea = chart.chartArea; var opts = chart.options; - var size = {width: 1, height: 1}; - var offset = {x: 0, y: 0}; + var ratioX = 1; + var ratioY = 1; + var offsetX = 0; + var offsetY = 0; var meta = me.getMeta(); var arcs = meta.data; - var cutoutPercentage = opts.cutoutPercentage; + var cutout = opts.cutoutPercentage / 100 || 0; var circumference = opts.circumference; var chartWeight = me._getRingWeight(me.index); var maxWidth, maxHeight, i, ilen; // If the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc - if (circumference < Math.PI * 2.0) { - var startAngle = opts.rotation % (Math.PI * 2.0); - startAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0); + if (circumference < DOUBLE_PI) { + var startAngle = opts.rotation % DOUBLE_PI; + startAngle += startAngle >= PI ? -DOUBLE_PI : startAngle < -PI ? DOUBLE_PI : 0; var endAngle = startAngle + circumference; - var start = {x: Math.cos(startAngle), y: Math.sin(startAngle)}; - var end = {x: Math.cos(endAngle), y: Math.sin(endAngle)}; - var contains0 = (startAngle <= 0 && endAngle >= 0) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle); - var contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle); - var contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle); - var contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle); - var cutout = cutoutPercentage / 100.0; - var min = {x: contains180 ? -1 : Math.min(start.x * (start.x < 0 ? 1 : cutout), end.x * (end.x < 0 ? 1 : cutout)), y: contains270 ? -1 : Math.min(start.y * (start.y < 0 ? 1 : cutout), end.y * (end.y < 0 ? 1 : cutout))}; - var max = {x: contains0 ? 1 : Math.max(start.x * (start.x > 0 ? 1 : cutout), end.x * (end.x > 0 ? 1 : cutout)), y: contains90 ? 1 : Math.max(start.y * (start.y > 0 ? 1 : cutout), end.y * (end.y > 0 ? 1 : cutout))}; - size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5}; - offset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5}; + var startX = Math.cos(startAngle); + var startY = Math.sin(startAngle); + var endX = Math.cos(endAngle); + var endY = Math.sin(endAngle); + var contains0 = (startAngle <= 0 && endAngle >= 0) || endAngle >= DOUBLE_PI; + var contains90 = (startAngle <= HALF_PI && endAngle >= HALF_PI) || endAngle >= DOUBLE_PI + HALF_PI; + var contains180 = startAngle === -PI || endAngle >= PI; + var contains270 = (startAngle <= -HALF_PI && endAngle >= -HALF_PI) || endAngle >= PI + HALF_PI; + var minX = contains180 ? -1 : Math.min(startX, startX * cutout, endX, endX * cutout); + var minY = contains270 ? -1 : Math.min(startY, startY * cutout, endY, endY * cutout); + var maxX = contains0 ? 1 : Math.max(startX, startX * cutout, endX, endX * cutout); + var maxY = contains90 ? 1 : Math.max(startY, startY * cutout, endY, endY * cutout); + ratioX = (maxX - minX) / 2; + ratioY = (maxY - minY) / 2; + offsetX = -(maxX + minX) / 2; + offsetY = -(maxY + minY) / 2; } for (i = 0, ilen = arcs.length; i < ilen; ++i) { @@ -177,13 +188,13 @@ module.exports = DatasetController.extend({ } chart.borderWidth = me.getMaxBorderWidth(); - maxWidth = (chartArea.right - chartArea.left - chart.borderWidth) / size.width; - maxHeight = (chartArea.bottom - chartArea.top - chart.borderWidth) / size.height; + maxWidth = (chartArea.right - chartArea.left - chart.borderWidth) / ratioX; + maxHeight = (chartArea.bottom - chartArea.top - chart.borderWidth) / ratioY; chart.outerRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0); - chart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 0, 0); + chart.innerRadius = Math.max(chart.outerRadius * cutout, 0); chart.radiusLength = (chart.outerRadius - chart.innerRadius) / (me._getVisibleDatasetWeightTotal() || 1); - chart.offsetX = offset.x * chart.outerRadius; - chart.offsetY = offset.y * chart.outerRadius; + chart.offsetX = offsetX * chart.outerRadius; + chart.offsetY = offsetY * chart.outerRadius; meta.total = me.calculateTotal(); @@ -206,7 +217,7 @@ module.exports = DatasetController.extend({ var startAngle = opts.rotation; // non reset case handled later var endAngle = opts.rotation; // non reset case handled later var dataset = me.getDataset(); - var circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI)); + var circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / DOUBLE_PI); var innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius; var outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius; var options = arc._options || {}; @@ -272,7 +283,7 @@ module.exports = DatasetController.extend({ calculateCircumference: function(value) { var total = this.getMeta().total; if (total > 0 && !isNaN(value)) { - return (Math.PI * 2.0) * (Math.abs(value) / total); + return DOUBLE_PI * (Math.abs(value) / total); } return 0; },