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 2022/01/07 06:21:01 UTC

[echarts] 01/01: fix(line): fix endLabel have error when series is filtered.

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

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

commit 639d78e704205a94acb2354e24f7aeab3773533d
Author: pissang <bm...@gmail.com>
AuthorDate: Fri Jan 7 14:20:40 2022 +0800

    fix(line): fix endLabel have error when series is filtered.
---
 src/chart/line/LineView.ts          | 10 +++++-
 test/line-case.html                 | 70 ++++++++++++++++++++++++++++++++++++-
 test/runTest/actions/__meta__.json  |  1 +
 test/runTest/actions/line-case.json |  1 +
 4 files changed, 80 insertions(+), 2 deletions(-)

diff --git a/src/chart/line/LineView.ts b/src/chart/line/LineView.ts
index 64e388b..df90a45 100644
--- a/src/chart/line/LineView.ts
+++ b/src/chart/line/LineView.ts
@@ -1155,6 +1155,13 @@ class LineView extends ChartView {
         if (anyStateShowEndLabel(seriesModel)) {
             const data = seriesModel.getData();
             const polyline = this._polyline;
+            // series may be filtered.
+            const points = data.getLayout('points');
+            if (!points) {
+                polyline.removeTextContent();
+                this._endLabel = null;
+                return;
+            }
             let endLabel = this._endLabel;
             if (!endLabel) {
                 endLabel = this._endLabel = new graphic.Text({
@@ -1166,7 +1173,7 @@ class LineView extends ChartView {
             }
 
             // Find last non-NaN data to display data
-            const dataIndex = getLastIndexNotNull(data.getLayout('points'));
+            const dataIndex = getLastIndexNotNull(points);
             if (dataIndex >= 0) {
                 setLabelStyle(
                     polyline,
@@ -1214,6 +1221,7 @@ class LineView extends ChartView {
             }
 
             const points = data.getLayout('points');
+
             const seriesModel = data.hostModel as LineSeriesModel;
             const connectNulls = seriesModel.get('connectNulls');
             const precision = endLabelModel.get('precision');
diff --git a/test/line-case.html b/test/line-case.html
index 300ca00..aa54d7c 100644
--- a/test/line-case.html
+++ b/test/line-case.html
@@ -40,6 +40,7 @@ under the License.
         <div id="main0"></div>
         <div id="main1"></div>
         <div id="main2"></div>
+        <div id="main3"></div>
 
 
 
@@ -540,7 +541,74 @@ under the License.
                     option: option
                 });
             });
-            </script>
+        </script>
+
+        <script>
+            require([
+                'echarts'
+            ], function (echarts) {
+                option = {
+                    toolbox: {
+                            top: 10,
+                            left: 'center',
+                            show: true,
+                            orient: 'horizontal',
+                            showTitle: true,
+                            feature: {
+                                saveAsImage: {
+                                type: 'png',
+                                backgroundColor: 'pink',
+                                name: 'hwbtest',
+                                title: '保存'
+                                },
+                                restore: {},
+                                dataView: {},
+                                dataZoom: {}
+                            }
+                            },
+                        grid: {
+                            left: '10%',
+                            right: '15%',
+                            bottom: '15%',
+                        },
+                        xAxis: {
+                            type: 'category',
+                            boundaryGap: false,
+                            data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
+                        },
+                        yAxis: {
+                            type: 'value'
+                        },
+                        series: [
+                            {
+                                name: '邮件营销',
+                                type: 'line',
+                                data: [110, 132, 101, 134, 90, 230, 210],
+                                endLabel: {
+                                    show:true,
+                                    formatter: '{a}: {b}'
+                                }
+                            },
+                            {
+                                name: '销量',
+                                type: 'line',
+                                data: [210, 232, 201,234, 290, 240, 230],
+                                endLabel: {
+                                    show:true,
+                                    formatter: '{a}: {b}'
+                                }
+                            }
+                        ]
+                    };
+                var chart = testHelper.create(echarts, 'main3', {
+                    title: [
+                        'Should have no error when dataZoom on one points.',
+                        'Case from https://github.com/apache/echarts/issues/16094'
+                    ],
+                    option: option
+                });
+            });
+        </script>
 
 
     </body>
diff --git a/test/runTest/actions/__meta__.json b/test/runTest/actions/__meta__.json
index 5a20cf8..ef3c045 100644
--- a/test/runTest/actions/__meta__.json
+++ b/test/runTest/actions/__meta__.json
@@ -118,6 +118,7 @@
   "line-animation": 1,
   "line-animation-update": 3,
   "line-boldWhenHover": 1,
+  "line-case": 1,
   "line-crash": 1,
   "line-endLabel": 1,
   "line-visual2": 1,
diff --git a/test/runTest/actions/line-case.json b/test/runTest/actions/line-case.json
new file mode 100644
index 0000000..318b5d1
--- /dev/null
+++ b/test/runTest/actions/line-case.json
@@ -0,0 +1 @@
+[{"name":"Action 1","ops":[{"type":"mousedown","time":264,"x":423,"y":226},{"type":"mouseup","time":353,"x":423,"y":226},{"time":354,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":426,"x":425,"y":227},{"type":"mousemove","time":626,"x":456,"y":261},{"type":"mousemove","time":826,"x":499,"y":322},{"type":"mousedown","time":936,"x":499,"y":322},{"type":"mousemove","time":1027,"x":495,"y":317},{"type":"mousemove","time":1231,"x":443,"y":252},{"type":"mouseup","time":1403," [...]
\ No newline at end of file

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