You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@echarts.apache.org by su...@apache.org on 2020/04/22 08:06:59 UTC
[incubator-echarts] branch master updated: fix: tweak #12191 (when
edge value sum is 0, edge and node disappear)
This is an automated email from the ASF dual-hosted git repository.
sushuang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-echarts.git
The following commit(s) were added to refs/heads/master by this push:
new 27687a7 fix: tweak #12191 (when edge value sum is 0, edge and node disappear)
27687a7 is described below
commit 27687a7ade30ec79d7b580f642a536cb99158da5
Author: 100pah <su...@gmail.com>
AuthorDate: Wed Apr 22 04:24:37 2020 +0800
fix: tweak #12191 (when edge value sum is 0, edge and node disappear)
---
src/chart/sankey/sankeyLayout.js | 24 +++++++++++++++++++++---
test/sankey-depth.html | 14 +++++++++++---
2 files changed, 32 insertions(+), 6 deletions(-)
diff --git a/src/chart/sankey/sankeyLayout.js b/src/chart/sankey/sankeyLayout.js
index 3cca626..387b8ed 100644
--- a/src/chart/sankey/sankeyLayout.js
+++ b/src/chart/sankey/sankeyLayout.js
@@ -400,7 +400,13 @@ function relaxRightToLeft(nodesByBreadth, alpha, orient) {
zrUtil.each(nodes, function (node) {
if (node.outEdges.length) {
var y = sum(node.outEdges, weightedTarget, orient)
- / sum(node.outEdges, getEdgeValue, orient);
+ / sum(node.outEdges, getEdgeValue, orient);
+
+ if (isNaN(y)) {
+ var len = node.outEdges.length;
+ y = len ? sum(node.outEdges, centerTarget, orient) / len : 0;
+ }
+
if (orient === 'vertical') {
var nodeX = node.getLayout().x + (y - center(node, orient)) * alpha;
node.setLayout({x: nodeX}, true);
@@ -417,10 +423,16 @@ function relaxRightToLeft(nodesByBreadth, alpha, orient) {
function weightedTarget(edge, orient) {
return center(edge.node2, orient) * edge.getValue();
}
+function centerTarget(edge, orient) {
+ return center(edge.node2, orient);
+}
function weightedSource(edge, orient) {
return center(edge.node1, orient) * edge.getValue();
}
+function centerSource(edge, orient) {
+ return center(edge.node1, orient);
+}
function center(node, orient) {
return orient === 'vertical'
@@ -456,9 +468,15 @@ function relaxLeftToRight(nodesByBreadth, alpha, orient) {
zrUtil.each(nodesByBreadth, function (nodes) {
zrUtil.each(nodes, function (node) {
if (node.inEdges.length) {
+
var y = sum(node.inEdges, weightedSource, orient)
- / sum(node.inEdges, getEdgeValue, orient);
- isNaN(y) && (y = 0);
+ / sum(node.inEdges, getEdgeValue, orient);
+
+ if (isNaN(y)) {
+ var len = node.inEdges.length;
+ y = len ? sum(node.inEdges, centerSource, orient) / len : 0;
+ }
+
if (orient === 'vertical') {
var nodeX = node.getLayout().x + (y - center(node, orient)) * alpha;
node.setLayout({x: nodeX}, true);
diff --git a/test/sankey-depth.html b/test/sankey-depth.html
index 4d5e2c7..3da6b7c 100644
--- a/test/sankey-depth.html
+++ b/test/sankey-depth.html
@@ -83,7 +83,7 @@ under the License.
{
source: 'a',
target: 'b1',
- value: 3
+ value: 0
},
{
source: 'b1',
@@ -93,16 +93,24 @@ under the License.
{
source: 'b1',
target: 'c',
- value: 2
+ value: 3
},
{
source: 'b',
target: 'c',
- value: 1
+ value: 3
}
]
};
+ for (var i = 0; i < testData.nodes.length; i++) {
+ testData.nodes[i].tooltip = {
+ formatter: function () {
+ return 'hello';
+ }
+ }
+ }
+
chart.setOption({
color: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#d1e5f0', '#92c5de', '#4393c3', '#2166ac', '#053061'],
tooltip: {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@echarts.apache.org
For additional commands, e-mail: commits-help@echarts.apache.org