From ddbcdd42cd748383a9bd4b12f0a9a20fbbee7cf4 Mon Sep 17 00:00:00 2001 From: deqingli Date: Mon, 4 Nov 2019 19:39:00 +0800 Subject: [PATCH 1/3] fix #11385 #8534 --- src/chart/tree/TreeSeries.js | 13 ++++++++++++- src/data/Tree.js | 4 +++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/chart/tree/TreeSeries.js b/src/chart/tree/TreeSeries.js index 6ec1dc2bde..2816f9f9e8 100644 --- a/src/chart/tree/TreeSeries.js +++ b/src/chart/tree/TreeSeries.js @@ -47,7 +47,18 @@ export default SeriesModel.extend({ treeOption.leaves = leaves; - var tree = Tree.createTree(root, this, treeOption); + var tree = Tree.createTree(root, this, treeOption, beforeLink); + + function beforeLink(nodeData) { + nodeData.wrapMethod('getItemModel', function (model, idx) { + var node = tree.getNodeByDataIndex(idx); + var leavesModel = node.getLeavesModel(); + if (node.children.length === 0 || (node.children.length !== 0 && node.isExpand === false)) { + model.parentModel = leavesModel; + } + return model; + }); + } var treeDepth = 0; diff --git a/src/data/Tree.js b/src/data/Tree.js index ad81605ca1..85b41a2dd6 100644 --- a/src/data/Tree.js +++ b/src/data/Tree.js @@ -472,7 +472,7 @@ Tree.prototype = { * @param {Array.} treeOptions.leaves * @return module:echarts/data/Tree */ -Tree.createTree = function (dataRoot, hostModel, treeOptions) { +Tree.createTree = function (dataRoot, hostModel, treeOptions, beforeLink) { var tree = new Tree(hostModel, treeOptions.levels, treeOptions.leaves); var listData = []; @@ -519,6 +519,8 @@ Tree.createTree = function (dataRoot, hostModel, treeOptions) { tree.update(); + beforeLink && beforeLink(list); + return tree; }; From 470475aeba6d2676dab276ea4eafabac89c61942 Mon Sep 17 00:00:00 2001 From: deqingli Date: Wed, 6 Nov 2019 18:04:14 +0800 Subject: [PATCH 2/3] test(tree): add leaves label formatter test --- test/tree-addNode.html | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/test/tree-addNode.html b/test/tree-addNode.html index 82c6647096..0c656e9edf 100644 --- a/test/tree-addNode.html +++ b/test/tree-addNode.html @@ -49,15 +49,18 @@ var data = { "name": "flare", + "value": 111, "children": [ { "name": "flex", + "value": 222, "children": [ {"name": "FlareVis", "value": 4116, symbolSize: 20} ] }, { "name": "scale", + "value": 333, "children": [ {"name": "IScaleMap", "value": 2105}, {"name": "LinearScale", "value": 1316}, @@ -73,6 +76,7 @@ }, { "name": "display", + "value": 444, "children": [ {"name": "DirtySprite", "value": 8833} ] @@ -120,14 +124,18 @@ label: { position: 'right', verticalAlign: 'middle', - align: 'left' + align: 'left', + formatter: '{b}: {c}' }, leaves: { label: { - position: 'left', - verticalAlign: 'middle', - align: 'right' + position: 'left', + verticalAlign: 'middle', + align: 'right', + formatter: function (params) { + return params.data.name + params.dataIndex; + } } }, From f010225987a38cffc27a9afe45a09ca23790893c Mon Sep 17 00:00:00 2001 From: deqingli Date: Wed, 6 Nov 2019 19:43:53 +0800 Subject: [PATCH 3/3] optimize code logic --- src/chart/tree/TreeSeries.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/chart/tree/TreeSeries.js b/src/chart/tree/TreeSeries.js index 2816f9f9e8..068844d3d0 100644 --- a/src/chart/tree/TreeSeries.js +++ b/src/chart/tree/TreeSeries.js @@ -53,7 +53,7 @@ export default SeriesModel.extend({ nodeData.wrapMethod('getItemModel', function (model, idx) { var node = tree.getNodeByDataIndex(idx); var leavesModel = node.getLeavesModel(); - if (node.children.length === 0 || (node.children.length !== 0 && node.isExpand === false)) { + if (!node.children.length || !node.isExpand) { model.parentModel = leavesModel; } return model;