project/node_modules/echarts/lib/chart/tree/TreeSeries.js

187 lines
6.3 KiB
JavaScript
Raw Normal View History

2024-07-14 15:48:34 +08:00
/*
* 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.
*/
/**
* AUTO-GENERATED FILE. DO NOT MODIFY.
*/
/*
* 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.
*/
import { __extends } from "tslib";
import SeriesModel from '../../model/Series.js';
import Tree from '../../data/Tree.js';
import Model from '../../model/Model.js';
import { createTooltipMarkup } from '../../component/tooltip/tooltipMarkup.js';
import { wrapTreePathInfo } from '../helper/treeHelper.js';
var TreeSeriesModel = /** @class */function (_super) {
__extends(TreeSeriesModel, _super);
function TreeSeriesModel() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.hasSymbolVisual = true;
// Do it self.
_this.ignoreStyleOnData = true;
return _this;
}
/**
* Init a tree data structure from data in option series
*/
TreeSeriesModel.prototype.getInitialData = function (option) {
// create a virtual root
var root = {
name: option.name,
children: option.data
};
var leaves = option.leaves || {};
var leavesModel = new Model(leaves, this, this.ecModel);
var tree = Tree.createTree(root, this, beforeLink);
function beforeLink(nodeData) {
nodeData.wrapMethod('getItemModel', function (model, idx) {
var node = tree.getNodeByDataIndex(idx);
if (!(node && node.children.length && node.isExpand)) {
model.parentModel = leavesModel;
}
return model;
});
}
var treeDepth = 0;
tree.eachNode('preorder', function (node) {
if (node.depth > treeDepth) {
treeDepth = node.depth;
}
});
var expandAndCollapse = option.expandAndCollapse;
var expandTreeDepth = expandAndCollapse && option.initialTreeDepth >= 0 ? option.initialTreeDepth : treeDepth;
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;
});
return tree.data;
};
/**
* Make the configuration 'orient' backward compatibly, with 'horizontal = LR', 'vertical = TB'.
* @returns {string} orient
*/
TreeSeriesModel.prototype.getOrient = function () {
var orient = this.get('orient');
if (orient === 'horizontal') {
orient = 'LR';
} else if (orient === 'vertical') {
orient = 'TB';
}
return orient;
};
TreeSeriesModel.prototype.setZoom = function (zoom) {
this.option.zoom = zoom;
};
TreeSeriesModel.prototype.setCenter = function (center) {
this.option.center = center;
};
TreeSeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {
var tree = this.getData().tree;
var realRoot = tree.root.children[0];
var node = tree.getNodeByDataIndex(dataIndex);
var value = node.getValue();
var name = node.name;
while (node && node !== realRoot) {
name = node.parentNode.name + '.' + name;
node = node.parentNode;
}
return createTooltipMarkup('nameValue', {
name: name,
value: value,
noValue: isNaN(value) || value == null
});
};
// Add tree path to tooltip param
TreeSeriesModel.prototype.getDataParams = function (dataIndex) {
var params = _super.prototype.getDataParams.apply(this, arguments);
var node = this.getData().tree.getNodeByDataIndex(dataIndex);
params.treeAncestors = wrapTreePathInfo(node, this);
params.collapsed = !node.isExpand;
return params;
};
TreeSeriesModel.type = 'series.tree';
// can support the position parameters 'left', 'top','right','bottom', 'width',
// 'height' in the setOption() with 'merge' mode normal.
TreeSeriesModel.layoutMode = 'box';
TreeSeriesModel.defaultOption = {
// zlevel: 0,
z: 2,
coordinateSystem: 'view',
// the position of the whole view
left: '12%',
top: '12%',
right: '12%',
bottom: '12%',
// the layout of the tree, two value can be selected, 'orthogonal' or 'radial'
layout: 'orthogonal',
// value can be 'polyline'
edgeShape: 'curve',
edgeForkPosition: '50%',
// true | false | 'move' | 'scale', see module:component/helper/RoamController.
roam: false,
// Symbol size scale ratio in roam
nodeScaleRatio: 0.4,
// Default on center of graph
center: null,
zoom: 1,
orient: 'LR',
symbol: 'emptyCircle',
symbolSize: 7,
expandAndCollapse: true,
initialTreeDepth: 2,
lineStyle: {
color: '#ccc',
width: 1.5,
curveness: 0.5
},
itemStyle: {
color: 'lightsteelblue',
// borderColor: '#c23531',
borderWidth: 1.5
},
label: {
show: true
},
animationEasing: 'linear',
animationDuration: 700,
animationDurationUpdate: 500
};
return TreeSeriesModel;
}(SeriesModel);
export default TreeSeriesModel;