Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
missman
incubator-echarts
提交
e60f55c4
I
incubator-echarts
项目概览
missman
/
incubator-echarts
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
I
incubator-echarts
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e60f55c4
编写于
10月 22, 2015
作者:
L
lang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Pie label rotate
上级
cfec12f7
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
132 addition
and
20 deletion
+132
-20
src/chart/pie/PieSeries.js
src/chart/pie/PieSeries.js
+2
-0
src/chart/pie/PieView.js
src/chart/pie/PieView.js
+19
-15
src/chart/pie/labelLayout.js
src/chart/pie/labelLayout.js
+110
-4
src/chart/pie/pieLayout.js
src/chart/pie/pieLayout.js
+1
-1
未找到文件。
src/chart/pie/PieSeries.js
浏览文件 @
e60f55c4
...
...
@@ -107,6 +107,8 @@ define(function(require) {
label
:
{
normal
:
{
// If rotate around circle
rotate
:
false
,
show
:
true
,
// 'outer', 'inside', 'center'
position
:
'
outer
'
...
...
src/chart/pie/PieView.js
浏览文件 @
e60f55c4
...
...
@@ -50,18 +50,20 @@ define(function (require) {
var
labelLine
=
new
graphic
.
Polyline
({
shape
:
{
points
:
labelLayout
.
linePoints
}
},
silent
:
true
});
var
labelText
=
new
graphic
.
Text
({
style
:
{
x
:
labelLayout
.
x
,
y
:
labelLayout
.
y
,
text
:
text
,
textAlign
:
labelLayout
.
textAlign
,
textBaseline
:
labelLayout
.
textBaseline
,
font
:
labelLayout
.
font
}
},
rotation
:
labelLayout
.
rotation
,
position
:
[
labelLayout
.
x
,
labelLayout
.
y
],
silent
:
true
});
sector
.
__labelLine
=
labelLine
;
...
...
@@ -138,17 +140,19 @@ define(function (require) {
?
sector
.
on
(
'
click
'
,
onSectorClick
)
:
sector
.
off
(
'
click
'
);
labelLine
.
animateTo
({
shape
:
{
points
:
labelLayout
.
linePoints
}
},
300
,
'
cubicOut
'
);
labelText
.
animateTo
({
style
:
{
x
:
labelLayout
.
x
,
y
:
labelLayout
.
y
}
},
300
,
'
cubicOut
'
);
if
(
labelLine
)
{
labelLine
.
animateTo
({
shape
:
{
points
:
labelLayout
.
linePoints
}
},
300
,
'
cubicOut
'
);
}
if
(
labelText
)
{
labelText
.
animateTo
({
position
:
[
labelLayout
.
x
,
labelLayout
.
y
],
rotation
:
labelLayout
.
rotation
},
300
,
'
cubicOut
'
);
}
labelText
.
setStyle
({
textAlign
:
labelLayout
.
textAlign
,
...
...
src/chart/pie/labelLayout.js
浏览文件 @
e60f55c4
...
...
@@ -4,21 +4,84 @@ define(function (require) {
'
use strict
'
;
var
textContain
=
require
(
'
zrender/contain/text
'
);
// var BoundingRect = require('zrender/core/BoundingRect');
// var vec2 = require('zrender/core/vector');
// var v2Set = vec2.set;
return
function
(
seriesModel
)
{
// var scaleAndAdd = vec2.scaleAndAdd;
// function forceLabelLayout(labels, cx, cy, r, viewWidth, viewHeight) {
// var step = 0;
// var len = labels.length;
// var v = [];
// var center = [cx, cy];
// r += 100;
// do {
// var energy = 0;
// for (var i = 0; i < len; i++) {
// var label = labels[i];
// v2Set(label.f, 0, 0);
// for (var j = 0; j < len; j++) {
// if (i === j) {
// continue;
// }
// vec2.sub(v, label.p, labels[j].p);
// var dist = Math.max(vec2.len(v), 1);
// var factor = label.rect.intersect(labels[j].rect)
// ? 10 : 1;
// scaleAndAdd(label.f, label.f, v, factor * 1000 / (dist * dist));
// }
// // Move to center
// vec2.sub(v, center, label.p);
// var distToCenter = vec2.len(v);
// var dist = Math.abs(distToCenter - label.r);
// vec2.normalize(v, v);
// if (distToCenter < r) {
// vec2.negate(v, v);
// }
// scaleAndAdd(label.f, label.f, v, dist * dist);
// // collision with bounding box
// var fScalar = vec2.len(label.f);
// energy += fScalar;
// scaleAndAdd(label.p, label.p, label.f, 1 / fScalar);
// var labelRect = label.rect;
// labelRect.x = label.p[0];
// labelRect.y = label.p[1]
// }
// if (energy < 100) {
// break;
// }
// step++;
// } while (step < 200);
// }
return
function
(
seriesModel
,
viewWidth
,
viewHeight
)
{
var
data
=
seriesModel
.
getData
();
var
labelLineModel
=
seriesModel
.
getModel
(
'
labelLine
'
);
var
labelLineLen
=
labelLineModel
.
get
(
'
length
'
);
var
labelLineLen2
=
labelLineModel
.
get
(
'
length2
'
);
var
avoidLabelOverlap
=
seriesModel
.
get
(
'
avoidLabelOverlap
'
);
// var avoidLabelOverlap = seriesModel.get('avoidLabelOverlap');
var
labelNodes
=
[];
data
.
each
(
function
(
idx
)
{
var
layout
=
data
.
getItemLayout
(
idx
);
var
itemModel
=
data
.
getItemModel
(
idx
);
var
labelModel
=
itemModel
.
getModel
(
'
label.normal
'
);
var
font
=
labelModel
.
getModel
(
'
textStyle
'
).
getFont
();
var
labelPosition
=
labelModel
.
get
(
'
position
'
);
var
midAngle
=
(
layout
.
startAngle
+
layout
.
endAngle
)
/
2
;
...
...
@@ -31,6 +94,7 @@ define(function (require) {
var
textY
;
var
linePoints
;
var
textAlign
;
if
(
labelPosition
===
'
center
'
)
{
textX
=
layout
.
cx
;
textY
=
layout
.
cy
;
...
...
@@ -59,6 +123,10 @@ define(function (require) {
}
var
textBaseline
=
'
middle
'
;
var
font
=
labelModel
.
getModel
(
'
textStyle
'
).
getFont
();
var
labelRotate
=
labelModel
.
get
(
'
rotate
'
)
?
(
dx
<
0
?
-
midAngle
+
Math
.
PI
:
-
midAngle
)
:
0
;
layout
.
label
=
{
x
:
textX
,
...
...
@@ -66,8 +134,46 @@ define(function (require) {
linePoints
:
linePoints
,
textAlign
:
textAlign
,
textBaseline
:
textBaseline
,
font
:
font
font
:
font
,
rotation
:
labelRotate
};
// if (avoidLabelOverlap) {
// var text = seriesModel.getFormattedLabel(idx, 'normal')
// || data.getName(idx);
// var rect = textContain.getBoundingRect(text, font, textAlign, textBaseline);
// var p = [textX + rect.x, textY + rect.y];
// labelNodes.push({
// p: p,
// rect: new BoundingRect(textX + rect.x, textY + rect.y, rect.width, rect.height),
// f: [0, 0],
// r: vec2.dist(p, center)
// });
// }
});
// if (avoidLabelOverlap) {
// var cx;
// var cy;
// forceLabelLayout(
// labelNodes, cx, cy, r, viewWidth, viewHeight
// );
// data.each(function (idx) {
// var labelLayout = data.getItemLayout(idx).label;
// var forcedLayout = labelNodes[idx];
// var x = forcedLayout.p[0];
// var y = forcedLayout.p[1]
// var linePoints = labelLayout.linePoints;
// labelLayout.x = x;
// labelLayout.y = y;
// if (linePoints) {
// linePoints[2] = x -
// }
// });
// }
}
});
\ No newline at end of file
src/chart/pie/pieLayout.js
浏览文件 @
e60f55c4
...
...
@@ -47,7 +47,7 @@ define(function (require) {
startAngle
=
endAngle
;
},
true
);
labelLayout
(
seriesModel
);
labelLayout
(
seriesModel
,
width
,
height
);
});
}
});
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录