You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@echarts.apache.org by sh...@apache.org on 2020/06/22 16:01:41 UTC

[incubator-echarts] 03/03: fix(labelLine): fix error when labelLine don't have points

This is an automated email from the ASF dual-hosted git repository.

shenyi pushed a commit to branch label-enhancement
in repository https://gitbox.apache.org/repos/asf/incubator-echarts.git

commit 27c3cce86ed76771b381e7920a89ebe6534e6b77
Author: pissang <bm...@gmail.com>
AuthorDate: Tue Jun 23 00:00:55 2020 +0800

    fix(labelLine): fix error when labelLine don't have points
---
 src/label/labelGuideHelper.ts | 10 +++++--
 test/pie-alignTo.html         | 70 +++++++++++++++++++++----------------------
 test/pie-label-extreme.html   |  5 +++-
 3 files changed, 46 insertions(+), 39 deletions(-)

diff --git a/src/label/labelGuideHelper.ts b/src/label/labelGuideHelper.ts
index 1614b39..5de5092 100644
--- a/src/label/labelGuideHelper.ts
+++ b/src/label/labelGuideHelper.ts
@@ -485,8 +485,11 @@ function setLabelLineState(
 function buildLabelLinePath(path: CanvasRenderingContext2D, shape: Polyline['shape']) {
     const smooth = shape.smooth as number;
     const points = shape.points;
+    if (!points) {
+        return;
+    }
     path.moveTo(points[0][0], points[0][1]);
-    if (smooth > 0) {
+    if (smooth > 0 && points.length >= 3) {
         const len1 = vector.dist(points[0], points[1]);
         const len2 = vector.dist(points[1], points[2]);
         if (!len1 || !len2) {
@@ -505,8 +508,9 @@ function buildLabelLinePath(path: CanvasRenderingContext2D, shape: Polyline['sha
         path.bezierCurveTo(midPoint2[0], midPoint2[1], midPoint2[0], midPoint2[1], points[2][0], points[2][1]);
     }
     else {
-        path.lineTo(points[1][0], points[1][1]);
-        path.lineTo(points[2][0], points[2][1]);
+        for (let i = 1; i < points.length; i++) {
+            path.lineTo(points[i][0], points[i][1]);
+        }
     }
 }
 
diff --git a/test/pie-alignTo.html b/test/pie-alignTo.html
index db08612..ab95d50 100644
--- a/test/pie-alignTo.html
+++ b/test/pie-alignTo.html
@@ -211,45 +211,45 @@ under the License.
             });
             var config = {
                 length2: 15,
-                margin: 20
+                margin: 20,
+                overflow: 'truncate'
             };
 
-            gui
-                .add(config, 'length2', 0, 300)
-                .onChange(function (value) {
-                    if (chart0) {
-                        option0.series[0].labelLine.length2 = value;
-                        option1.series[0].labelLine.length2 = value;
-                        optionNone.series[0].labelLine.length2 = value;
-                        chart0.setOption(option0);
-                        chart1.setOption(option1);
-                        chartNone.setOption(optionNone);
-
-                        for (var i = 0; i < 4; ++i) {
-                            option2.series[i].labelLine.length2 = value;
+            function update() {
+                const newOpt = {
+                    series: [{
+                        labelLine: {
+                            length2: config.length2
+                        },
+                        label: {
+                            margin: config.margin,
+                            overflow: config.overflow
                         }
-                        chart2.setOption(option2);
-                    }
-                });
-
-            gui
-                .add(config, 'margin', 0, 300)
-                .onChange(function (value) {
-                    if (chart0) {
-                        option0.series[0].label.margin = value;
-                        option1.series[0].label.margin = value;
-                        optionNone.series[0].label.margin = value;
-                        chart0.setOption(option0);
-                        chart1.setOption(option1);
-                        chartNone.setOption(optionNone);
-
-                        for (var i = 0; i < 4; ++i) {
-                            option2.series[i].label.margin = value;
+                    }]
+                }
+                chart0.setOption(newOpt);
+                chart1.setOption(newOpt);
+                chartNone.setOption(newOpt);
+
+                const newOpt2 = { series: [] };
+                for (var i = 0; i < 4; ++i) {
+                    newOpt2.series.push({
+                        labelLine: {
+                            length2: config.length2,
+                        },
+                        label: {
+                            margin: config.margin,
+                            overflow: config.overflow
                         }
-                        chart2.setOption(option2);
-                    }
-                });
-            });
+                    })
+                }
+                chart2.setOption(newOpt2);
+            }
+
+            gui.add(config, 'length2', 0, 300).onChange(update);
+            gui.add(config, 'margin', 0, 300).onChange(update);
+            gui.add(config, 'overflow', ['truncate', 'break', 'breakAll']).onChange(update);
+        });
         </script>
     </body>
 </html>
diff --git a/test/pie-label-extreme.html b/test/pie-label-extreme.html
index e919d8a..fb9a278 100644
--- a/test/pie-label-extreme.html
+++ b/test/pie-label-extreme.html
@@ -74,6 +74,9 @@ under the License.
                         "fontSize": 10
                     },
                     "labelLine": {
+                        "lineStyle": {
+                            "color": '#ccc'
+                        },
                         "smooth": true
                     },
                     "data": [{
@@ -708,7 +711,7 @@ under the License.
             labelFolder.open();
             labelLineFolder.open();
             labelFolder.add(config.label, 'alignTo', ['none', 'edge', 'labelLine']).onChange(update);
-            labelFolder.add(config.label, 'overflow', ['truncate', 'wrap']).onChange(update);
+            labelFolder.add(config.label, 'overflow', ['truncate', 'break', 'breakAll']).onChange(update);
             labelFolder.add(config.label, 'margin', 0, 50).onChange(update);
             labelFolder.add(config.label, 'bleedMargin', 0, 500).onChange(update);
             labelLineFolder.add(config.labelLine, 'length', 0, 500).onChange(update);


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@echarts.apache.org
For additional commands, e-mail: commits-help@echarts.apache.org