cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
61 lines (60 loc) • 2.27 kB
JavaScript
import { map } from "../../../zrender/lib/core/util.mjs";
import createRenderPlanner from "../chart/helper/createRenderPlanner.mjs";
import { isDimensionStacked } from "../data/helper/dataStackHelper.mjs";
import { createFloat32Array } from "../util/vendor.mjs";
function pointsLayout(seriesType, forceStoreInTypedArray) {
return {
seriesType,
plan: createRenderPlanner(),
reset: function(seriesModel) {
var data = seriesModel.getData();
var coordSys = seriesModel.coordinateSystem;
var pipelineContext = seriesModel.pipelineContext;
var useTypedArray = forceStoreInTypedArray || pipelineContext.large;
if (!coordSys) {
return;
}
var dims = map(coordSys.dimensions, function(dim) {
return data.mapDimension(dim);
}).slice(0, 2);
var dimLen = dims.length;
var stackResultDim = data.getCalculationInfo("stackResultDimension");
if (isDimensionStacked(data, dims[0])) {
dims[0] = stackResultDim;
}
if (isDimensionStacked(data, dims[1])) {
dims[1] = stackResultDim;
}
var store = data.getStore();
var dimIdx0 = data.getDimensionIndex(dims[0]);
var dimIdx1 = data.getDimensionIndex(dims[1]);
return dimLen && {
progress: function(params, data2) {
var segCount = params.end - params.start;
var points = useTypedArray && createFloat32Array(segCount * dimLen);
var tmpIn = [];
var tmpOut = [];
for (var i = params.start, offset = 0; i < params.end; i++) {
var point = void 0;
if (dimLen === 1) {
var x = store.get(dimIdx0, i);
point = coordSys.dataToPoint(x, null, tmpOut);
} else {
tmpIn[0] = store.get(dimIdx0, i);
tmpIn[1] = store.get(dimIdx1, i);
point = coordSys.dataToPoint(tmpIn, null, tmpOut);
}
if (useTypedArray) {
points[offset++] = point[0];
points[offset++] = point[1];
} else {
data2.setItemLayout(i, point.slice());
}
}
useTypedArray && data2.setLayout("points", points);
}
};
}
};
}
export { pointsLayout as default };