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 2021/04/27 06:08:30 UTC
[echarts] 01/01: fix(clip): clipShape may be null if `clip` is set
as `false`, resolves #14803.
This is an automated email from the ASF dual-hosted git repository.
wangzx pushed a commit to branch fix-line-clip
in repository https://gitbox.apache.org/repos/asf/echarts.git
commit 7d6d9949487a82ca2e49499a97b60b7a2b274fe7
Author: plainheart <yh...@all-my-life.cn>
AuthorDate: Tue Apr 27 14:02:47 2021 +0800
fix(clip): clipShape may be null if `clip` is set as `false`, resolves #14803.
---
src/chart/line/LineView.ts | 48 ++++++++++++++++---------------
test/line-clip.html | 70 ++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 95 insertions(+), 23 deletions(-)
diff --git a/src/chart/line/LineView.ts b/src/chart/line/LineView.ts
index a6fcb18..84b8fde 100644
--- a/src/chart/line/LineView.ts
+++ b/src/chart/line/LineView.ts
@@ -980,31 +980,33 @@ class LineView extends ChartView {
let start;
let end;
let current;
- if (isCoordSysPolar) {
- const polarClip = clipShape as PolarArea;
- const coord = (coordSys as Polar).pointToCoord(point);
- if (isHorizontalOrRadial) {
- start = polarClip.startAngle;
- end = polarClip.endAngle;
- current = -coord[1] / 180 * Math.PI;
- }
- else {
- start = polarClip.r0;
- end = polarClip.r;
- current = coord[0];
- }
- }
- else {
- const gridClip = clipShape as Cartesian2DArea;
- if (isHorizontalOrRadial) {
- start = gridClip.x;
- end = gridClip.x + gridClip.width;
- current = symbol.x;
+ if (clipShape) {
+ if (isCoordSysPolar) {
+ const polarClip = clipShape as PolarArea;
+ const coord = (coordSys as Polar).pointToCoord(point);
+ if (isHorizontalOrRadial) {
+ start = polarClip.startAngle;
+ end = polarClip.endAngle;
+ current = -coord[1] / 180 * Math.PI;
+ }
+ else {
+ start = polarClip.r0;
+ end = polarClip.r;
+ current = coord[0];
+ }
}
else {
- start = gridClip.y + gridClip.height;
- end = gridClip.y;
- current = symbol.y;
+ const gridClip = clipShape as Cartesian2DArea;
+ if (isHorizontalOrRadial) {
+ start = gridClip.x;
+ end = gridClip.x + gridClip.width;
+ current = symbol.x;
+ }
+ else {
+ start = gridClip.y + gridClip.height;
+ end = gridClip.y;
+ current = symbol.y;
+ }
}
}
let ratio = end === start ? 0 : (current - start) / (end - start);
diff --git a/test/line-clip.html b/test/line-clip.html
new file mode 100644
index 0000000..76ed723
--- /dev/null
+++ b/test/line-clip.html
@@ -0,0 +1,70 @@
+<!DOCTYPE html>
+<!--
+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">
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
+ <script src="lib/esl.js"></script>
+ <script src="lib/config.js"></script>
+ <script src="lib/facePrint.js"></script>
+ <script src="lib/testHelper.js"></script>
+ <link rel="stylesheet" href="lib/reset.css" />
+</head>
+
+<body>
+ <div id="main0"></div>
+ <div></div>
+ <script>
+ var chart;
+ var myChart;
+
+ require([
+ 'echarts'
+ ], function (echarts) {
+ var option = {
+ xAxis: {
+ type: 'category',
+ boundaryGap: false,
+ data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
+ },
+ yAxis: {
+ type: 'value'
+ },
+ series: [{
+ data: [820, 932, 901, 934, 1290, 1330, 1320],
+ type: 'line',
+ areaStyle: {},
+ clip: false
+ }]
+ };
+
+ chart = myChart = testHelper.create(echarts, 'main0', {
+ title: [
+ 'The line chart should be rendered without any error in console when `**clip**` is set as `**false**`'
+ ],
+ option: option
+ });
+ });
+
+ </script>
+</body>
+
+</html>
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@echarts.apache.org
For additional commands, e-mail: commits-help@echarts.apache.org