187 lines
6.3 KiB
JavaScript
187 lines
6.3 KiB
JavaScript
|
|
||
|
/*
|
||
|
* 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;
|