diff --git a/src/chart/pie/labelLayout.js b/src/chart/pie/labelLayout.js index e0b69b8f4925b45c1aeac3d2bbe9598f435cd84e..324467363b0028ae731d7e5e237d58394d12fff3 100644 --- a/src/chart/pie/labelLayout.js +++ b/src/chart/pie/labelLayout.js @@ -26,7 +26,6 @@ function adjustSingleSide(list, cx, cy, r, dir, viewWidth, viewHeight) { return a.y - b.y; }); - // 压 function shiftDown(start, end, delta, dir) { for (var j = start; j < end; j++) { list[j].y += delta; @@ -42,7 +41,6 @@ function adjustSingleSide(list, cx, cy, r, dir, viewWidth, viewHeight) { shiftUp(end - 1, delta / 2); } - // 弹 function shiftUp(end, delta) { for (var j = end; j >= 0; j--) { list[j].y -= delta; @@ -56,18 +54,14 @@ function adjustSingleSide(list, cx, cy, r, dir, viewWidth, viewHeight) { function changeX(list, isDownList, cx, cy, r, dir) { var lastDeltaX = dir > 0 - ? isDownList // 右侧 - ? Number.MAX_VALUE // 下 - : 0 // 上 - : isDownList // 左侧 - ? Number.MAX_VALUE // 下 - : 0; // 上 + ? isDownList // right-side + ? Number.MAX_VALUE // down + : 0 // up + : isDownList // left-side + ? Number.MAX_VALUE // down + : 0; // up for (var i = 0, l = list.length; i < l; i++) { - // Not change x for center label - if (list[i].position === 'center') { - continue; - } var deltaY = Math.abs(list[i].y - cy); var length = list[i].len; var length2 = list[i].len2; @@ -78,11 +72,11 @@ function adjustSingleSide(list, cx, cy, r, dir, viewWidth, viewHeight) { ) : Math.abs(list[i].x - cx); if (isDownList && deltaX >= lastDeltaX) { - // 右下,左下 + // right-down, left-down deltaX = lastDeltaX - 10; } if (!isDownList && deltaX <= lastDeltaX) { - // 右上,左上 + // right-up, left-up deltaX = lastDeltaX + 10; } @@ -122,6 +116,9 @@ function avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight) { var leftList = []; var rightList = []; for (var i = 0; i < labelLayoutList.length; i++) { + if (isPositionCenter(labelLayoutList[i])) { + continue; + } if (labelLayoutList[i].x < cx) { leftList.push(labelLayoutList[i]); } @@ -134,6 +131,9 @@ function avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight) { adjustSingleSide(leftList, cx, cy, r, -1, viewWidth, viewHeight); for (var i = 0; i < labelLayoutList.length; i++) { + if (isPositionCenter(labelLayoutList[i])) { + continue; + } var linePoints = labelLayoutList[i].linePoints; if (linePoints) { var dist = linePoints[1][0] - linePoints[2][0]; @@ -149,6 +149,11 @@ function avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight) { } } +function isPositionCenter(layout) { + // Not change x for center label + return layout.position === 'center'; +} + export default function (seriesModel, r, viewWidth, viewHeight) { var data = seriesModel.getData(); var labelLayoutList = []; diff --git a/test/pie-label.html b/test/pie-label.html new file mode 100644 index 0000000000000000000000000000000000000000..332b53ea8b87b3a9e639f891ad8db445683eb352 --- /dev/null +++ b/test/pie-label.html @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + \ No newline at end of file diff --git a/test/tmp-base.html b/test/tmp-base.html index 3f3693c87d5a73b1431ad3a731b231c8a9fdccbe..fb3a3ba75eb2a40c5942cc79f399e366a3c95a2f 100644 --- a/test/tmp-base.html +++ b/test/tmp-base.html @@ -44,8 +44,6 @@ under the License.