You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@echarts.apache.org by ov...@apache.org on 2020/06/03 06:15:29 UTC

[incubator-echarts] 01/01: fix(sunburst): enables label formatter in levels #12223

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

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

commit 9a9d829dcd69ea67e75c47861507c45b9acc30d9
Author: Ovilia <zw...@gmail.com>
AuthorDate: Wed Jun 3 14:02:55 2020 +0800

    fix(sunburst): enables label formatter in levels #12223
---
 src/chart/sunburst/SunburstPiece.js  |  6 +++++-
 src/chart/sunburst/SunburstSeries.js | 18 +++++++++++++++++-
 test/sunburst-visualMap.html         | 24 +++++++++++++++++++++++-
 3 files changed, 45 insertions(+), 3 deletions(-)

diff --git a/src/chart/sunburst/SunburstPiece.js b/src/chart/sunburst/SunburstPiece.js
index f64e5ab7..dad2efb 100644
--- a/src/chart/sunburst/SunburstPiece.js
+++ b/src/chart/sunburst/SunburstPiece.js
@@ -203,9 +203,13 @@ SunburstPieceProto._updateLabel = function (seriesModel, visualColor, state) {
         : itemModel.getModel(state + '.label');
     var labelHoverModel = itemModel.getModel('emphasis.label');
 
+    var labelFormatter = labelModel.get('formatter');
+    // Use normal formatter if no state formatter is defined
+    var labelState = labelFormatter ? state : 'normal';
+
     var text = zrUtil.retrieve(
         seriesModel.getFormattedLabel(
-            this.node.dataIndex, state, null, null, 'label'
+            this.node.dataIndex, labelState, null, null, 'label'
         ),
         this.node.name
     );
diff --git a/src/chart/sunburst/SunburstSeries.js b/src/chart/sunburst/SunburstSeries.js
index 4e43fc3..3bf66d2 100644
--- a/src/chart/sunburst/SunburstSeries.js
+++ b/src/chart/sunburst/SunburstSeries.js
@@ -20,6 +20,7 @@
 import * as zrUtil from 'zrender/src/core/util';
 import SeriesModel from '../../model/Series';
 import Tree from '../../data/Tree';
+import Model from '../../model/Model';
 import {wrapTreePathInfo} from '../helper/treeHelper';
 
 export default SeriesModel.extend({
@@ -41,6 +42,10 @@ export default SeriesModel.extend({
 
         // levels = option.levels = setDefault(levels, ecModel);
 
+        var levelModels = zrUtil.map(levels || [], function (levelDefine) {
+            return new Model(levelDefine, this, ecModel);
+        }, this);
+
         var treeOption = {};
 
         treeOption.levels = levels;
@@ -48,7 +53,18 @@ export default SeriesModel.extend({
         // Make sure always a new tree is created when setOption,
         // in TreemapView, we check whether oldTree === newTree
         // to choose mappings approach among old shapes and new shapes.
-        return Tree.createTree(root, this, treeOption).data;
+        var tree = Tree.createTree(root, this, treeOption, beforeLink);
+
+        function beforeLink(nodeData) {
+            nodeData.wrapMethod('getItemModel', function (model, idx) {
+                var node = tree.getNodeByDataIndex(idx);
+                var levelModel = levelModels[node.depth];
+                levelModel && (model.parentModel = levelModel);
+                return model;
+            });
+        }
+
+        return tree.data;
     },
 
     optionUpdated: function () {
diff --git a/test/sunburst-visualMap.html b/test/sunburst-visualMap.html
index 3d42df5..19cc7fe 100644
--- a/test/sunburst-visualMap.html
+++ b/test/sunburst-visualMap.html
@@ -128,7 +128,29 @@ under the License.
                         radius: [0, '90%'],
                         label: {
                             rotate: 'radial'
-                        }
+                        },
+                        levels: [{}, {
+                            label: {
+                                formatter: function (params) {
+                                    return 'First Level\n' + params.name;
+                                }
+                            },
+                            emphasis: {
+                                label: {
+                                    formatter: function (params) {
+                                        return 'emphasis\n' + params.name;
+                                    }
+                                }
+                            }
+                        }, {
+                            downplay: {
+                                label: {
+                                    formatter: function (params) {
+                                        return 'downplay\n' + params.name;
+                                    }
+                                }
+                            }
+                        }]
                     }
                 });
 


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