NuclearDispersionSystem/ant-design-vue-jeecg/node_modules/@antv/g2/esm/chart/layout/auto.js

52 lines
2.0 KiB
Java
Raw Normal View History

2023-09-14 14:47:11 +08:00
import { each } from '@antv/util';
import { COMPONENT_TYPE } from '../../constant';
import { BBox } from '../../util/bbox';
import { isAutoPadding, parsePadding } from '../../util/padding';
import { PaddingCal } from './padding-cal';
/**
* @ignore
* 根据 view 中的组件计算实际的 padding 数值
* @param view
*/
export function calculatePadding(view) {
var padding = view.padding;
// 如果不是 auto padding那么直接解析之后返回
if (!isAutoPadding(padding)) {
return parsePadding(padding);
}
// 是 auto padding根据组件的情况来计算 padding
var viewBBox = view.viewBBox, autoPadding = view.autoPadding;
var paddingCal = new PaddingCal();
each(view.getComponents(), function (co) {
var component = co.component, type = co.type;
// grid, tooltip 不参入 padding 布局
if (type === COMPONENT_TYPE.GRID || type === COMPONENT_TYPE.TOOLTIP) {
return;
}
var bboxObject = component.getLayoutBBox();
var componentBBox = new BBox(bboxObject.x, bboxObject.y, bboxObject.width, bboxObject.height);
if (type === COMPONENT_TYPE.AXIS) {
var exceed = componentBBox.exceed(viewBBox);
paddingCal.shrink(exceed);
}
else {
// 按照方向计算 padding
var direction = co.direction;
// const direction =
// type === COMPONENT_TYPE.AXIS ? getTranslateDirection(co.direction, view.getCoordinate()) : co.direction;
paddingCal.inc(componentBBox, direction);
}
});
var calculatedPadding = paddingCal.getPadding();
if (autoPadding) {
// 取上一次以及当前计算结果的最大区间
return [
Math.max(autoPadding[0], calculatedPadding[0]),
Math.max(autoPadding[1], calculatedPadding[1]),
Math.max(autoPadding[2], calculatedPadding[2]),
Math.max(autoPadding[3], calculatedPadding[3]),
];
}
return calculatedPadding;
}
//# sourceMappingURL=auto.js.map