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.
98 lines
3.6 KiB
98 lines
3.6 KiB
1 month ago
|
|
||
|
/*
|
||
|
* 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 * as zrUtil from 'zrender/lib/core/util.js';
|
||
|
import * as modelUtil from '../../util/model.js';
|
||
|
/**
|
||
|
* @param finder contains {seriesIndex, dataIndex, dataIndexInside}
|
||
|
* @param ecModel
|
||
|
* @return {point: [x, y], el: ...} point Will not be null.
|
||
|
*/
|
||
|
export default function findPointFromSeries(finder, ecModel) {
|
||
|
var point = [];
|
||
|
var seriesIndex = finder.seriesIndex;
|
||
|
var seriesModel;
|
||
|
if (seriesIndex == null || !(seriesModel = ecModel.getSeriesByIndex(seriesIndex))) {
|
||
|
return {
|
||
|
point: []
|
||
|
};
|
||
|
}
|
||
|
var data = seriesModel.getData();
|
||
|
var dataIndex = modelUtil.queryDataIndex(data, finder);
|
||
|
if (dataIndex == null || dataIndex < 0 || zrUtil.isArray(dataIndex)) {
|
||
|
return {
|
||
|
point: []
|
||
|
};
|
||
|
}
|
||
|
var el = data.getItemGraphicEl(dataIndex);
|
||
|
var coordSys = seriesModel.coordinateSystem;
|
||
|
if (seriesModel.getTooltipPosition) {
|
||
|
point = seriesModel.getTooltipPosition(dataIndex) || [];
|
||
|
} else if (coordSys && coordSys.dataToPoint) {
|
||
|
if (finder.isStacked) {
|
||
|
var baseAxis = coordSys.getBaseAxis();
|
||
|
var valueAxis = coordSys.getOtherAxis(baseAxis);
|
||
|
var valueAxisDim = valueAxis.dim;
|
||
|
var baseAxisDim = baseAxis.dim;
|
||
|
var baseDataOffset = valueAxisDim === 'x' || valueAxisDim === 'radius' ? 1 : 0;
|
||
|
var baseDim = data.mapDimension(baseAxisDim);
|
||
|
var stackedData = [];
|
||
|
stackedData[baseDataOffset] = data.get(baseDim, dataIndex);
|
||
|
stackedData[1 - baseDataOffset] = data.get(data.getCalculationInfo('stackResultDimension'), dataIndex);
|
||
|
point = coordSys.dataToPoint(stackedData) || [];
|
||
|
} else {
|
||
|
point = coordSys.dataToPoint(data.getValues(zrUtil.map(coordSys.dimensions, function (dim) {
|
||
|
return data.mapDimension(dim);
|
||
|
}), dataIndex)) || [];
|
||
|
}
|
||
|
} else if (el) {
|
||
|
// Use graphic bounding rect
|
||
|
var rect = el.getBoundingRect().clone();
|
||
|
rect.applyTransform(el.transform);
|
||
|
point = [rect.x + rect.width / 2, rect.y + rect.height / 2];
|
||
|
}
|
||
|
return {
|
||
|
point: point,
|
||
|
el: el
|
||
|
};
|
||
|
}
|