@antv/f2
Version:
Charts for mobile visualization.
60 lines (59 loc) • 1.84 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.adjustPosition = void 0;
var adjustPosition = exports.adjustPosition = function adjustPosition(half, showSide, props, labelWidth) {
var coord = props.coord,
sidePadding = props.sidePadding,
adjustOffset = props.adjustOffset;
var coordLeft = coord.left,
coordRight = coord.right;
var labels = [];
var lastY = 0;
var delta;
half.forEach(function (label) {
var anchor = label.anchor,
inflection = label.inflection,
y = label.y,
height = label.height;
var points = [anchor, inflection];
var endX = showSide === 'left' ? coordLeft + sidePadding : coordRight - sidePadding;
var endY = y;
delta = y - lastY - (lastY === 0 ? 0.5 * height : height);
if (delta < 0) {
// 文本调整下去了 需要添加折线
endY = y - delta;
var point2 = {
x: showSide === 'left' ? endX + labelWidth + adjustOffset : endX - labelWidth - adjustOffset,
y: inflection.y
};
var point3 = {
x: showSide === 'left' ? endX + labelWidth : endX - labelWidth,
y: endY
};
if (Math.abs(delta) < height * props.adjustRatio || showSide === 'right' && point2.x < inflection.x || showSide === 'left' && point2.x > inflection.x) {
// 根据锚点位置计算拐点
var bendPoint = {
x: anchor.x + (point3.x - anchor.x) * 0.5,
y: endY
};
points[1] = bendPoint;
} else {
points.push(point2);
points.push(point3);
}
}
// 文本结束点
var labelEnd = {
x: endX,
y: endY
};
lastY = delta < 0 ? y - delta : y;
points.push(labelEnd);
label.points = points;
label.side = showSide;
labels.push(label);
});
return labels;
};
;