cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
76 lines (75 loc) • 2.31 kB
JavaScript
import { isDimensionStacked } from "../../data/helper/dataStackHelper.mjs";
import { map, isNumber } from "../../../../zrender/lib/core/util.mjs";
function prepareDataCoordInfo(coordSys, data, valueOrigin) {
var baseAxis = coordSys.getBaseAxis();
var valueAxis = coordSys.getOtherAxis(baseAxis);
var valueStart = getValueStart(valueAxis, valueOrigin);
var baseAxisDim = baseAxis.dim;
var valueAxisDim = valueAxis.dim;
var valueDim = data.mapDimension(valueAxisDim);
var baseDim = data.mapDimension(baseAxisDim);
var baseDataOffset = valueAxisDim === "x" || valueAxisDim === "radius" ? 1 : 0;
var dims = map(coordSys.dimensions, function(coordDim) {
return data.mapDimension(coordDim);
});
var stacked = false;
var stackResultDim = data.getCalculationInfo("stackResultDimension");
if (isDimensionStacked(
data,
dims[0]
)) {
stacked = true;
dims[0] = stackResultDim;
}
if (isDimensionStacked(
data,
dims[1]
)) {
stacked = true;
dims[1] = stackResultDim;
}
return {
dataDimsForPoint: dims,
valueStart,
valueAxisDim,
baseAxisDim,
stacked: !!stacked,
valueDim,
baseDim,
baseDataOffset,
stackedOverDimension: data.getCalculationInfo("stackedOverDimension")
};
}
function getValueStart(valueAxis, valueOrigin) {
var valueStart = 0;
var extent = valueAxis.scale.getExtent();
if (valueOrigin === "start") {
valueStart = extent[0];
} else if (valueOrigin === "end") {
valueStart = extent[1];
} else if (isNumber(valueOrigin) && !isNaN(valueOrigin)) {
valueStart = valueOrigin;
} else {
if (extent[0] > 0) {
valueStart = extent[0];
} else if (extent[1] < 0) {
valueStart = extent[1];
}
}
return valueStart;
}
function getStackedOnPoint(dataCoordInfo, coordSys, data, idx) {
var value = NaN;
if (dataCoordInfo.stacked) {
value = data.get(data.getCalculationInfo("stackedOverDimension"), idx);
}
if (isNaN(value)) {
value = dataCoordInfo.valueStart;
}
var baseDataOffset = dataCoordInfo.baseDataOffset;
var stackedData = [];
stackedData[baseDataOffset] = data.get(dataCoordInfo.baseDim, idx);
stackedData[1 - baseDataOffset] = value;
return coordSys.dataToPoint(stackedData);
}
export { getStackedOnPoint, prepareDataCoordInfo };