You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@echarts.apache.org by wa...@apache.org on 2025/01/18 07:40:46 UTC

(echarts) 01/01: fix(heatmap): fix labels that are not in calendar range are unexpectedly displayed (resolves #20690)

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

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

commit 2872e5c4a7a3d5932123c07f10abe9ca0be83aea
Author: plainheart <yh...@all-my-life.cn>
AuthorDate: Sat Jan 18 15:40:20 2025 +0800

    fix(heatmap): fix labels that are not in calendar range are unexpectedly displayed (resolves #20690)
---
 src/chart/heatmap/HeatmapView.ts |  8 +++-
 test/calendar-heatmap2.html      | 81 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 88 insertions(+), 1 deletion(-)

diff --git a/src/chart/heatmap/HeatmapView.ts b/src/chart/heatmap/HeatmapView.ts
index d0de889ba..235d757ab 100644
--- a/src/chart/heatmap/HeatmapView.ts
+++ b/src/chart/heatmap/HeatmapView.ts
@@ -266,9 +266,15 @@ class HeatmapView extends ChartView {
                     continue;
                 }
 
+                const contentShape = coordSys.dataToRect([data.get(dataDims[0], idx)]).contentShape;
+                // Ignore data that are not in range
+                if (isNaN(contentShape.x) || isNaN(contentShape.y)) {
+                    continue;
+                }
+
                 rect = new graphic.Rect({
                     z2: 1,
-                    shape: coordSys.dataToRect([data.get(dataDims[0], idx)]).contentShape,
+                    shape: contentShape,
                     style
                 });
             }
diff --git a/test/calendar-heatmap2.html b/test/calendar-heatmap2.html
new file mode 100644
index 000000000..f04c145ba
--- /dev/null
+++ b/test/calendar-heatmap2.html
@@ -0,0 +1,81 @@
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>calendar</title>
+        <meta name="viewport" content="width=device-width, initial-scale=1" />
+        <link rel="stylesheet" href="lib/reset.css">
+        <script src="lib/simpleRequire.js"></script>
+        <script src="lib/config.js"></script>
+        <script src="lib/testHelper.js"></script>
+        <script src="lib/jquery.min.js"></script>
+    </head>
+    <body>
+        <div id="main0"></div>
+
+        <script>
+            require(['echarts'], function (echarts) {
+                var option = {
+                    visualMap: {
+                        show: false,
+                        min: 0,
+                        max: 10000
+                    },
+                    calendar: {
+                        range: '2016-01'
+                    },
+                    series: {
+                        type: 'heatmap',
+                        coordinateSystem: 'calendar',
+                        data: [
+                            ['2016-01-05', 500],
+                            ['2016-01-16', 100],
+                            ['2016-01-20', 670],
+                            ['2016-01-27', 300],
+                            ['2016-02-01', 800],
+                        ],
+                        label: {
+                            show: true,
+                            verticalAlign: 'top',
+                            align: 'left',
+                            formatter(params) {
+                                if (!params.value[0].startsWith('2016-01')) {
+                                    return 'UNEXPECTED LABELS!!!'
+                                }
+                                return ''
+                            },
+                            color: 'red',
+                            fontWeight: 'bold',
+                            fontSize: 20
+                        }
+                    }
+                };
+                var chart = testHelper.create(echarts, 'main0', {
+                    title: [
+                        `Labels that are not in calendar range **SHOULDN'T** display at the top left corner`
+                    ],
+                    option: option
+                });
+            });
+        </script>
+    </body>
+</html>


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