cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
64 lines (63 loc) • 2.49 kB
JavaScript
import { retrieve, each } from "../../../../zrender/lib/core/util.mjs";
import { SINGLE_REFERRING } from "../../util/model.mjs";
function layout(gridModel, axisModel, opt) {
opt = opt || {};
var grid = gridModel.coordinateSystem;
var axis = axisModel.axis;
var layout2 = {};
var otherAxisOnZeroOf = axis.getAxesOnZeroOf()[0];
var rawAxisPosition = axis.position;
var axisPosition = otherAxisOnZeroOf ? "onZero" : rawAxisPosition;
var axisDim = axis.dim;
var rect = grid.getRect();
var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];
var idx = {
left: 0,
right: 1,
top: 0,
bottom: 1,
onZero: 2
};
var axisOffset = axisModel.get("offset") || 0;
var posBound = axisDim === "x" ? [rectBound[2] - axisOffset, rectBound[3] + axisOffset] : [rectBound[0] - axisOffset, rectBound[1] + axisOffset];
if (otherAxisOnZeroOf) {
var onZeroCoord = otherAxisOnZeroOf.toGlobalCoord(otherAxisOnZeroOf.dataToCoord(0));
posBound[idx.onZero] = Math.max(Math.min(onZeroCoord, posBound[1]), posBound[0]);
}
layout2.position = [axisDim === "y" ? posBound[idx[axisPosition]] : rectBound[0], axisDim === "x" ? posBound[idx[axisPosition]] : rectBound[3]];
layout2.rotation = Math.PI / 2 * (axisDim === "x" ? 0 : 1);
var dirMap = {
top: -1,
bottom: 1,
left: -1,
right: 1
};
layout2.labelDirection = layout2.tickDirection = layout2.nameDirection = dirMap[rawAxisPosition];
layout2.labelOffset = otherAxisOnZeroOf ? posBound[idx[rawAxisPosition]] - posBound[idx.onZero] : 0;
if (axisModel.get(["axisTick", "inside"])) {
layout2.tickDirection = -layout2.tickDirection;
}
if (retrieve(opt.labelInside, axisModel.get(["axisLabel", "inside"]))) {
layout2.labelDirection = -layout2.labelDirection;
}
var labelRotate = axisModel.get(["axisLabel", "rotate"]);
layout2.labelRotate = axisPosition === "top" ? -labelRotate : labelRotate;
layout2.z2 = 1;
return layout2;
}
function isCartesian2DSeries(seriesModel) {
return seriesModel.get("coordinateSystem") === "cartesian2d";
}
function findAxisModels(seriesModel) {
var axisModelMap = {
xAxisModel: null,
yAxisModel: null
};
each(axisModelMap, function(v, key) {
var axisType = key.replace(/Model$/, "");
var axisModel = seriesModel.getReferringComponents(axisType, SINGLE_REFERRING).models[0];
axisModelMap[key] = axisModel;
});
return axisModelMap;
}
export { findAxisModels, isCartesian2DSeries, layout };