]> git.ipfire.org Git - thirdparty/Chart.js.git/commitdiff
Fix point label counting in radialLinear scale (#6280)
authorAkihiko Kusanagi <nagi@nagi-p.com>
Thu, 16 May 2019 18:34:43 +0000 (19:34 +0100)
committerSimon Brunel <simonbrunel@users.noreply.github.com>
Thu, 16 May 2019 18:34:43 +0000 (20:34 +0200)
src/scales/scale.radialLinear.js
test/fixtures/scale.radialLinear/anglelines-disable.json [new file with mode: 0644]
test/fixtures/scale.radialLinear/anglelines-disable.png [new file with mode: 0644]
test/fixtures/scale.radialLinear/gridlines-disable.json [new file with mode: 0644]
test/fixtures/scale.radialLinear/gridlines-disable.png [new file with mode: 0644]

index 75dcb09192f26cb349bd864a0f3e867e55e018ef..bbd4062f805437fcb06de5ed1ca1352430679291 100644 (file)
@@ -59,11 +59,6 @@ var defaultConfig = {
        }
 };
 
-function getValueCount(scale) {
-       var opts = scale.options;
-       return opts.angleLines.display || opts.pointLabels.display ? scale.chart.data.labels.length : 0;
-}
-
 function getTickBackdropHeight(opts) {
        var tickOpts = opts.ticks;
 
@@ -153,7 +148,7 @@ function fitWithPointLabels(scale) {
        scale.ctx.font = plFont.string;
        scale._pointLabelSizes = [];
 
-       var valueCount = getValueCount(scale);
+       var valueCount = scale.chart.data.labels.length;
        for (i = 0; i < valueCount; i++) {
                pointPosition = scale.getPointPosition(i, scale.drawingArea + 5);
                textSize = measureLabelSize(scale.ctx, plFont.lineHeight, scale.pointLabels[i]);
@@ -234,7 +229,7 @@ function drawPointLabels(scale) {
        ctx.font = plFont.string;
        ctx.textBaseline = 'middle';
 
-       for (var i = getValueCount(scale) - 1; i >= 0; i--) {
+       for (var i = scale.chart.data.labels.length - 1; i >= 0; i--) {
                // Extra pixels out for some label spacing
                var extra = (i === 0 ? tickBackdropHeight / 2 : 0);
                var pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + 5);
@@ -255,7 +250,7 @@ function drawPointLabels(scale) {
 function drawRadiusLine(scale, gridLineOpts, radius, index) {
        var ctx = scale.ctx;
        var circular = gridLineOpts.circular;
-       var valueCount = getValueCount(scale);
+       var valueCount = scale.chart.data.labels.length;
        var lineColor = valueAtIndexOrDefault(gridLineOpts.color, index - 1);
        var lineWidth = valueAtIndexOrDefault(gridLineOpts.lineWidth, index - 1);
        var pointPosition;
@@ -403,8 +398,9 @@ module.exports = LinearScaleBase.extend({
        },
 
        getIndexAngle: function(index) {
-               var angleMultiplier = 360 / getValueCount(this);
-               var options = this.chart.options || {};
+               var chart = this.chart;
+               var angleMultiplier = 360 / chart.data.labels.length;
+               var options = chart.options || {};
                var startAngle = options.startAngle || 0;
 
                // Start from the top instead of right, so remove a quarter of the circle
@@ -488,7 +484,7 @@ module.exports = LinearScaleBase.extend({
                                ctx.lineDashOffset = resolve([angleLineOpts.borderDashOffset, gridLineOpts.borderDashOffset, 0.0]);
                        }
 
-                       for (i = getValueCount(me) - 1; i >= 0; i--) {
+                       for (i = me.chart.data.labels.length - 1; i >= 0; i--) {
                                offset = me.getDistanceFromCenterForValue(opts.ticks.reverse ? me.min : me.max);
                                position = me.getPointPosition(i, offset);
                                ctx.beginPath();
diff --git a/test/fixtures/scale.radialLinear/anglelines-disable.json b/test/fixtures/scale.radialLinear/anglelines-disable.json
new file mode 100644 (file)
index 0000000..40c3dc6
--- /dev/null
@@ -0,0 +1,28 @@
+{
+    "config": {
+        "type": "radar",
+        "data": {
+            "labels": ["A", "B", "C", "D", "E"]
+        },
+        "options": {
+            "responsive": false,
+            "legend": false,
+            "title": false,
+            "scale": {
+                "gridLines": {
+                    "color": "rgb(0, 0, 0)",
+                    "lineWidth": 1
+                },
+                "angleLines": {
+                    "display": false
+                },
+                "pointLabels": {
+                    "display": false
+                },
+                "ticks": {
+                    "display": false
+                }
+            }
+        }
+    }
+}
diff --git a/test/fixtures/scale.radialLinear/anglelines-disable.png b/test/fixtures/scale.radialLinear/anglelines-disable.png
new file mode 100644 (file)
index 0000000..dcba77a
Binary files /dev/null and b/test/fixtures/scale.radialLinear/anglelines-disable.png differ
diff --git a/test/fixtures/scale.radialLinear/gridlines-disable.json b/test/fixtures/scale.radialLinear/gridlines-disable.json
new file mode 100644 (file)
index 0000000..5f38d11
--- /dev/null
@@ -0,0 +1,28 @@
+{
+    "config": {
+        "type": "radar",
+        "data": {
+            "labels": ["A", "B", "C", "D", "E"]
+        },
+        "options": {
+            "responsive": false,
+            "legend": false,
+            "title": false,
+            "scale": {
+                "gridLines": {
+                    "display": false
+                },
+                "angleLines": {
+                    "color": "rgb(0, 0, 0)",
+                    "lineWidth": 1
+                },
+                "pointLabels": {
+                    "display": false
+                },
+                "ticks": {
+                    "display": false
+                }
+            }
+        }
+    }
+}
diff --git a/test/fixtures/scale.radialLinear/gridlines-disable.png b/test/fixtures/scale.radialLinear/gridlines-disable.png
new file mode 100644 (file)
index 0000000..d756eac
Binary files /dev/null and b/test/fixtures/scale.radialLinear/gridlines-disable.png differ