You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
215 lines
6.9 KiB
215 lines
6.9 KiB
|
|
/*
|
|
* 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 createGraphFromNodeEdge from '../helper/createGraphFromNodeEdge.js';
|
|
import Model from '../../model/Model.js';
|
|
import { createTooltipMarkup } from '../../component/tooltip/tooltipMarkup.js';
|
|
var SankeySeriesModel = /** @class */function (_super) {
|
|
__extends(SankeySeriesModel, _super);
|
|
function SankeySeriesModel() {
|
|
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
_this.type = SankeySeriesModel.type;
|
|
return _this;
|
|
}
|
|
/**
|
|
* Init a graph data structure from data in option series
|
|
*/
|
|
SankeySeriesModel.prototype.getInitialData = function (option, ecModel) {
|
|
var links = option.edges || option.links;
|
|
var nodes = option.data || option.nodes;
|
|
var levels = option.levels;
|
|
this.levelModels = [];
|
|
var levelModels = this.levelModels;
|
|
for (var i = 0; i < levels.length; i++) {
|
|
if (levels[i].depth != null && levels[i].depth >= 0) {
|
|
levelModels[levels[i].depth] = new Model(levels[i], this, ecModel);
|
|
} else {
|
|
if (process.env.NODE_ENV !== 'production') {
|
|
throw new Error('levels[i].depth is mandatory and should be natural number');
|
|
}
|
|
}
|
|
}
|
|
if (nodes && links) {
|
|
var graph = createGraphFromNodeEdge(nodes, links, this, true, beforeLink);
|
|
return graph.data;
|
|
}
|
|
function beforeLink(nodeData, edgeData) {
|
|
nodeData.wrapMethod('getItemModel', function (model, idx) {
|
|
var seriesModel = model.parentModel;
|
|
var layout = seriesModel.getData().getItemLayout(idx);
|
|
if (layout) {
|
|
var nodeDepth = layout.depth;
|
|
var levelModel = seriesModel.levelModels[nodeDepth];
|
|
if (levelModel) {
|
|
model.parentModel = levelModel;
|
|
}
|
|
}
|
|
return model;
|
|
});
|
|
edgeData.wrapMethod('getItemModel', function (model, idx) {
|
|
var seriesModel = model.parentModel;
|
|
var edge = seriesModel.getGraph().getEdgeByIndex(idx);
|
|
var layout = edge.node1.getLayout();
|
|
if (layout) {
|
|
var depth = layout.depth;
|
|
var levelModel = seriesModel.levelModels[depth];
|
|
if (levelModel) {
|
|
model.parentModel = levelModel;
|
|
}
|
|
}
|
|
return model;
|
|
});
|
|
}
|
|
};
|
|
SankeySeriesModel.prototype.setNodePosition = function (dataIndex, localPosition) {
|
|
var nodes = this.option.data || this.option.nodes;
|
|
var dataItem = nodes[dataIndex];
|
|
dataItem.localX = localPosition[0];
|
|
dataItem.localY = localPosition[1];
|
|
};
|
|
/**
|
|
* Return the graphic data structure
|
|
*
|
|
* @return graphic data structure
|
|
*/
|
|
SankeySeriesModel.prototype.getGraph = function () {
|
|
return this.getData().graph;
|
|
};
|
|
/**
|
|
* Get edge data of graphic data structure
|
|
*
|
|
* @return data structure of list
|
|
*/
|
|
SankeySeriesModel.prototype.getEdgeData = function () {
|
|
return this.getGraph().edgeData;
|
|
};
|
|
SankeySeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {
|
|
function noValue(val) {
|
|
return isNaN(val) || val == null;
|
|
}
|
|
// dataType === 'node' or empty do not show tooltip by default
|
|
if (dataType === 'edge') {
|
|
var params = this.getDataParams(dataIndex, dataType);
|
|
var rawDataOpt = params.data;
|
|
var edgeValue = params.value;
|
|
var edgeName = rawDataOpt.source + ' -- ' + rawDataOpt.target;
|
|
return createTooltipMarkup('nameValue', {
|
|
name: edgeName,
|
|
value: edgeValue,
|
|
noValue: noValue(edgeValue)
|
|
});
|
|
}
|
|
// dataType === 'node'
|
|
else {
|
|
var node = this.getGraph().getNodeByIndex(dataIndex);
|
|
var value = node.getLayout().value;
|
|
var name_1 = this.getDataParams(dataIndex, dataType).data.name;
|
|
return createTooltipMarkup('nameValue', {
|
|
name: name_1 != null ? name_1 + '' : null,
|
|
value: value,
|
|
noValue: noValue(value)
|
|
});
|
|
}
|
|
};
|
|
SankeySeriesModel.prototype.optionUpdated = function () {};
|
|
// Override Series.getDataParams()
|
|
SankeySeriesModel.prototype.getDataParams = function (dataIndex, dataType) {
|
|
var params = _super.prototype.getDataParams.call(this, dataIndex, dataType);
|
|
if (params.value == null && dataType === 'node') {
|
|
var node = this.getGraph().getNodeByIndex(dataIndex);
|
|
var nodeValue = node.getLayout().value;
|
|
params.value = nodeValue;
|
|
}
|
|
return params;
|
|
};
|
|
SankeySeriesModel.type = 'series.sankey';
|
|
SankeySeriesModel.defaultOption = {
|
|
// zlevel: 0,
|
|
z: 2,
|
|
coordinateSystem: 'view',
|
|
left: '5%',
|
|
top: '5%',
|
|
right: '20%',
|
|
bottom: '5%',
|
|
orient: 'horizontal',
|
|
nodeWidth: 20,
|
|
nodeGap: 8,
|
|
draggable: true,
|
|
layoutIterations: 32,
|
|
label: {
|
|
show: true,
|
|
position: 'right',
|
|
fontSize: 12
|
|
},
|
|
edgeLabel: {
|
|
show: false,
|
|
fontSize: 12
|
|
},
|
|
levels: [],
|
|
nodeAlign: 'justify',
|
|
lineStyle: {
|
|
color: '#314656',
|
|
opacity: 0.2,
|
|
curveness: 0.5
|
|
},
|
|
emphasis: {
|
|
label: {
|
|
show: true
|
|
},
|
|
lineStyle: {
|
|
opacity: 0.5
|
|
}
|
|
},
|
|
select: {
|
|
itemStyle: {
|
|
borderColor: '#212121'
|
|
}
|
|
},
|
|
animationEasing: 'linear',
|
|
animationDuration: 1000
|
|
};
|
|
return SankeySeriesModel;
|
|
}(SeriesModel);
|
|
export default SankeySeriesModel; |