UNPKG

@antv/f2

Version:

Charts for mobile visualization.

60 lines (59 loc) 1.84 kB
"use strict"; 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; };