You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@echarts.apache.org by de...@apache.org on 2018/04/08 02:59:20 UTC
[incubator-echarts] branch master updated: resolve the remove node
problem in the tree view
This is an automated email from the ASF dual-hosted git repository.
deqingli 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 012d613 resolve the remove node problem in the tree view
new f5f4521 Merge branch 'master' of https://github.com/ecomfe/echarts
012d613 is described below
commit 012d613e122a8bfe669ac81eb85439867f3a14d0
Author: deqingli <an...@gmail.com>
AuthorDate: Wed Apr 4 20:15:36 2018 +0800
resolve the remove node problem in the tree view
---
src/chart/tree.js | 6 +-
src/chart/tree/TreeSeries.js | 3 +-
src/chart/tree/TreeView.js | 4 +-
src/chart/tree/orthogonalLayout.js | 7 --
src/chart/tree/radialLayout.js | 7 --
src/chart/tree/{commonLayout.js => treeLayout.js} | 9 +-
test/README.md | 4 -
test/tree-removeNode.html | 132 ++++++++++++++++++++++
8 files changed, 146 insertions(+), 26 deletions(-)
diff --git a/src/chart/tree.js b/src/chart/tree.js
index fec3db9..6eda1d2 100644
--- a/src/chart/tree.js
+++ b/src/chart/tree.js
@@ -5,9 +5,7 @@ import './tree/TreeView';
import './tree/treeAction';
import visualSymbol from '../visual/symbol';
-import orthogonalLayout from './tree/orthogonalLayout';
-import radialLayout from './tree/radialLayout';
+import treeLayout from './tree/treeLayout';
echarts.registerVisual(visualSymbol('tree', 'circle'));
-echarts.registerLayout(orthogonalLayout);
-echarts.registerLayout(radialLayout);
+echarts.registerLayout(treeLayout);
diff --git a/src/chart/tree/TreeSeries.js b/src/chart/tree/TreeSeries.js
index 1256588..bab128d 100644
--- a/src/chart/tree/TreeSeries.js
+++ b/src/chart/tree/TreeSeries.js
@@ -48,6 +48,7 @@ export default SeriesModel.extend({
tree.root.eachNode('preorder', function (node) {
var item = node.hostTree.data.getRawDataItem(node.dataIndex);
+ // add item.collapsed != null, because users can collapse node original in the series.data.
node.isExpand = (item && item.collapsed != null)
? !item.collapsed
: node.depth <= expandTreeDepth;
@@ -57,7 +58,7 @@ export default SeriesModel.extend({
},
/**
- * make the configuration 'orient' backward compatibly, with 'horizontal = LR', 'vertical = TB'.
+ * Make the configuration 'orient' backward compatibly, with 'horizontal = LR', 'vertical = TB'.
* @returns {string} orient
*/
getOrient: function () {
diff --git a/src/chart/tree/TreeView.js b/src/chart/tree/TreeView.js
index 2aae5b4..63b5ce0 100644
--- a/src/chart/tree/TreeView.js
+++ b/src/chart/tree/TreeView.js
@@ -76,7 +76,7 @@ export default echarts.extendChartView({
.update(function (newIdx, oldIdx) {
var symbolEl = oldData.getItemGraphicEl(oldIdx);
if (!symbolNeedsDraw(data, newIdx)) {
- symbolEl && removeNode(data, newIdx, symbolEl, group, seriesModel, seriesScope);
+ symbolEl && removeNode(oldData, oldIdx, symbolEl, group, seriesModel, seriesScope);
return;
}
// update node and edge
@@ -84,7 +84,7 @@ export default echarts.extendChartView({
})
.remove(function (oldIdx) {
var symbolEl = oldData.getItemGraphicEl(oldIdx);
- removeNode(data, oldIdx, symbolEl, group, seriesModel, seriesScope);
+ removeNode(oldData, oldIdx, symbolEl, group, seriesModel, seriesScope);
})
.execute();
diff --git a/src/chart/tree/orthogonalLayout.js b/src/chart/tree/orthogonalLayout.js
deleted file mode 100644
index ce87c37..0000000
--- a/src/chart/tree/orthogonalLayout.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import commonLayout from './commonLayout';
-
-export default function (ecModel, api) {
- ecModel.eachSeriesByType('tree', function (seriesModel) {
- commonLayout(seriesModel, api);
- });
-}
\ No newline at end of file
diff --git a/src/chart/tree/radialLayout.js b/src/chart/tree/radialLayout.js
deleted file mode 100644
index ce87c37..0000000
--- a/src/chart/tree/radialLayout.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import commonLayout from './commonLayout';
-
-export default function (ecModel, api) {
- ecModel.eachSeriesByType('tree', function (seriesModel) {
- commonLayout(seriesModel, api);
- });
-}
\ No newline at end of file
diff --git a/src/chart/tree/commonLayout.js b/src/chart/tree/treeLayout.js
similarity index 94%
rename from src/chart/tree/commonLayout.js
rename to src/chart/tree/treeLayout.js
index c655453..75dc7c6 100644
--- a/src/chart/tree/commonLayout.js
+++ b/src/chart/tree/treeLayout.js
@@ -11,7 +11,13 @@ import {
getViewRect
} from './layoutHelper';
-export default function (seriesModel, api) {
+export default function (ecModel, api) {
+ ecModel.eachSeriesByType('tree', function (seriesModel) {
+ commonLayout(seriesModel, api);
+ });
+}
+
+function commonLayout(seriesModel, api) {
var layoutInfo = getViewRect(seriesModel, api);
seriesModel.layoutInfo = layoutInfo;
@@ -35,6 +41,7 @@ export default function (seriesModel, api) {
var virtualRoot = seriesModel.getData().tree.root;
var realRoot = virtualRoot.children[0];
+
init(virtualRoot);
eachAfter(realRoot, firstWalk, separation);
virtualRoot.hierNode.modifier = - realRoot.hierNode.prelim;
diff --git a/test/README.md b/test/README.md
index 9ecad94..e0fe0aa 100644
--- a/test/README.md
+++ b/test/README.md
@@ -1,13 +1,9 @@
# Test Guide
-
-
## Functional Test
Open `./*.html` files in Web Browsers.
-
-
## Unit Test
### Rendering-relevant
diff --git a/test/tree-removeNode.html b/test/tree-removeNode.html
new file mode 100644
index 0000000..5761746
--- /dev/null
+++ b/test/tree-removeNode.html
@@ -0,0 +1,132 @@
+<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/jquery.min.js"></script>
+ </head>
+ <body>
+ <style>
+ html, body, #main {
+ width: 100%;
+ padding: 0;
+ margin: 0;
+ height: 100%;
+ }
+ </style>
+ <div id="main"></div>
+ <script>
+ require([
+ 'echarts'
+ ], function (echarts) {
+ var chart = echarts.init(document.getElementById('main'), null, {
+ });
+
+ window.onresize = function () {
+ chart.resize();
+ };
+
+ var data = {
+ "name": "flare",
+ "children": [
+ {
+ "name": "flex",
+ "children": [
+ {"name": "FlareVis", "value": 4116}
+ ]
+ },
+ {
+ "name": "scale",
+ "children": [
+ {"name": "IScaleMap", "value": 2105},
+ {"name": "LinearScale", "value": 1316},
+ {"name": "LogScale", "value": 3151},
+ {"name": "OrdinalScale", "value": 3770},
+ {"name": "QuantileScale", "value": 2435},
+ {"name": "QuantitativeScale", "value": 4839},
+ {"name": "RootScale", "value": 1756},
+ {"name": "Scale", "value": 4268},
+ {"name": "ScaleType", "value": 1821},
+ {"name": "TimeScale", "value": 5833}
+ ]
+ },
+ {
+ "name": "display",
+ "children": [
+ {"name": "DirtySprite", "value": 8833}
+ ]
+ }
+ ]
+ };
+
+ chart.setOption({
+
+ tooltip: {
+ trigger: 'item',
+ triggerOn: 'mousemove'
+ },
+
+ legend: {
+ top: '2%',
+ left: '3%',
+ orient: 'vertical',
+ data: [{
+ name: 'tree1',
+ icon: 'rectangle'
+ }],
+ borderColor: '#c23531'
+ },
+
+ series:[
+ {
+ type: 'tree',
+ id: '2',
+ name: 'tree1',
+ data: [data],
+
+ top: '20%',
+ left: '30%',
+ bottom: '22%',
+ right: '20%',
+
+ symbolSize: 7,
+ orient: 'RL',
+
+ label: {
+ position: 'right',
+ verticalAlign: 'middle',
+ align: 'left'
+ },
+
+ leaves: {
+ label: {
+ position: 'left',
+ verticalAlign: 'middle',
+ align: 'right'
+ }
+ },
+
+ expandAndCollapse: true,
+ animationDuration: 550,
+ animationDurationUpdate: 750
+ }
+ ]
+ });
+
+ setTimeout(function() {
+ var cloneData = echarts.util.clone(data);
+ cloneData.children.splice(0, 1);
+ chart.setOption({
+ series: [{
+ type: 'tree',
+ id: '2',
+ data: [cloneData]
+ }]
+ }, false);
+ }, 1000);
+
+ });
+ </script>
+ </body>
+</html>
\ No newline at end of file
--
To stop receiving notification emails like this one, please contact
deqingli@apache.org.
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@echarts.apache.org
For additional commands, e-mail: commits-help@echarts.apache.org