Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
x649585723
incubator-echarts
提交
b5f18a56
I
incubator-echarts
项目概览
x649585723
/
incubator-echarts
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
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,体验更适合开发者的 AI 搜索 >>
提交
b5f18a56
编写于
4月 29, 2015
作者:
L
lang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更新示例库
上级
f95b075a
变更
12
展开全部
隐藏空白更改
内联
并排
Showing
12 changed file
with
24 addition
and
21 deletion
+24
-21
doc/example/www/js/chart/bar.js
doc/example/www/js/chart/bar.js
+1
-1
doc/example/www/js/chart/chord.js
doc/example/www/js/chart/chord.js
+1
-1
doc/example/www/js/chart/eventRiver.js
doc/example/www/js/chart/eventRiver.js
+1
-1
doc/example/www/js/chart/force.js
doc/example/www/js/chart/force.js
+1
-1
doc/example/www/js/chart/funnel.js
doc/example/www/js/chart/funnel.js
+1
-1
doc/example/www/js/chart/k.js
doc/example/www/js/chart/k.js
+1
-1
doc/example/www/js/chart/line.js
doc/example/www/js/chart/line.js
+1
-1
doc/example/www/js/chart/map.js
doc/example/www/js/chart/map.js
+1
-1
doc/example/www/js/chart/pie.js
doc/example/www/js/chart/pie.js
+1
-1
doc/example/www/js/chart/treemap.js
doc/example/www/js/chart/treemap.js
+1
-0
doc/example/www/js/chart/venn.js
doc/example/www/js/chart/venn.js
+1
-0
doc/example/www/js/echarts.js
doc/example/www/js/echarts.js
+13
-12
未找到文件。
doc/example/www/js/chart/bar.js
浏览文件 @
b5f18a56
define
(
"
echarts/chart/bar
"
,[
"
require
"
,
"
./base
"
,
"
zrender/shape/Rectangle
"
,
"
../component/axis
"
,
"
../component/grid
"
,
"
../component/dataZoom
"
,
"
../config
"
,
"
../util/ecData
"
,
"
zrender/tool/util
"
,
"
zrender/tool/color
"
,
"
../chart
"
],
function
(
e
){
function
t
(
e
,
t
,
n
,
a
,
o
){
i
.
call
(
this
,
e
,
t
,
n
,
a
,
o
),
this
.
refresh
(
a
)}
var
i
=
e
(
"
./base
"
),
n
=
e
(
"
zrender/shape/Rectangle
"
);
e
(
"
../component/axis
"
),
e
(
"
../component/grid
"
),
e
(
"
../component/dataZoom
"
);
var
a
=
e
(
"
../config
"
);
a
.
bar
=
{
zlevel
:
0
,
z
:
2
,
clickable
:
!
0
,
legendHoverLink
:
!
0
,
xAxisIndex
:
0
,
yAxisIndex
:
0
,
barMinHeight
:
0
,
barGap
:
"
30%
"
,
barCategoryGap
:
"
20%
"
,
itemStyle
:{
normal
:{
barBorderColor
:
"
#fff
"
,
barBorderRadius
:
0
,
barBorderWidth
:
0
,
label
:{
show
:
!
1
}},
emphasis
:{
barBorderColor
:
"
#fff
"
,
barBorderRadius
:
0
,
barBorderWidth
:
0
,
label
:{
show
:
!
1
}}}};
var
o
=
e
(
"
../util/ecData
"
),
r
=
e
(
"
zrender/tool/util
"
),
s
=
e
(
"
zrender/tool/color
"
);
return
t
.
prototype
=
{
type
:
a
.
CHART_TYPE_BAR
,
_buildShape
:
function
(){
this
.
_buildPosition
()},
_buildNormal
:
function
(
e
,
t
,
i
,
o
,
r
){
for
(
var
s
,
l
,
h
,
d
,
m
,
c
,
p
,
u
,
V
,
U
,
g
,
y
,
f
=
this
.
series
,
b
=
i
[
0
][
0
],
_
=
f
[
b
],
x
=
"
horizontal
"
==
r
,
k
=
this
.
component
.
xAxis
,
L
=
this
.
component
.
yAxis
,
v
=
x
?
k
.
getAxis
(
_
.
xAxisIndex
):
L
.
getAxis
(
_
.
yAxisIndex
),
W
=
this
.
_mapSize
(
v
,
i
),
w
=
W
.
gap
,
X
=
W
.
barGap
,
I
=
W
.
barWidthMap
,
K
=
W
.
barMaxWidthMap
,
S
=
W
.
barWidth
,
C
=
W
.
barMinHeightMap
,
T
=
W
.
interval
,
E
=
this
.
deepQuery
([
this
.
ecTheme
,
a
],
"
island.r
"
),
z
=
0
,
A
=
t
;
A
>
z
&&
null
!=
v
.
getNameByIndex
(
z
);
z
++
){
x
?
d
=
v
.
getCoordByIndex
(
z
)
-
w
/
2
:
m
=
v
.
getCoordByIndex
(
z
)
+
w
/
2
;
for
(
var
M
=
0
,
J
=
i
.
length
;
J
>
M
;
M
++
){
var
F
=
f
[
i
[
M
][
0
]].
yAxisIndex
||
0
,
O
=
f
[
i
[
M
][
0
]].
xAxisIndex
||
0
;
s
=
x
?
L
.
getAxis
(
F
):
k
.
getAxis
(
O
),
p
=
c
=
V
=
u
=
s
.
getCoord
(
0
);
for
(
var
P
=
0
,
D
=
i
[
M
].
length
;
D
>
P
;
P
++
)
b
=
i
[
M
][
P
],
_
=
f
[
b
],
g
=
_
.
data
[
z
],
y
=
this
.
getDataFromOption
(
g
,
"
-
"
),
o
[
b
]
=
o
[
b
]
||
{
min
:
Number
.
POSITIVE_INFINITY
,
max
:
Number
.
NEGATIVE_INFINITY
,
sum
:
0
,
counter
:
0
,
average
:
0
},
h
=
Math
.
min
(
K
[
b
]
||
Number
.
MAX_VALUE
,
I
[
b
]
||
S
),
"
-
"
!==
y
&&
(
y
>
0
?(
l
=
P
>
0
?
s
.
getCoordSize
(
y
):
x
?
p
-
s
.
getCoord
(
y
):
s
.
getCoord
(
y
)
-
p
,
1
===
D
&&
C
[
b
]
>
l
&&
(
l
=
C
[
b
]),
x
?(
c
-=
l
,
m
=
c
):(
d
=
c
,
c
+=
l
)):
0
>
y
?(
l
=
P
>
0
?
s
.
getCoordSize
(
y
):
x
?
s
.
getCoord
(
y
)
-
V
:
V
-
s
.
getCoord
(
y
),
1
===
D
&&
C
[
b
]
>
l
&&
(
l
=
C
[
b
]),
x
?(
m
=
u
,
u
+=
l
):(
u
-=
l
,
d
=
u
)):(
l
=
0
,
x
?(
c
-=
l
,
m
=
c
):(
d
=
c
,
c
+=
l
)),
o
[
b
][
z
]
=
x
?
d
+
h
/
2
:
m
-
h
/
2
,
o
[
b
].
min
>
y
&&
(
o
[
b
].
min
=
y
,
x
?(
o
[
b
].
minY
=
m
,
o
[
b
].
minX
=
o
[
b
][
z
]):(
o
[
b
].
minX
=
d
+
l
,
o
[
b
].
minY
=
o
[
b
][
z
])),
o
[
b
].
max
<
y
&&
(
o
[
b
].
max
=
y
,
x
?(
o
[
b
].
maxY
=
m
,
o
[
b
].
maxX
=
o
[
b
][
z
]):(
o
[
b
].
maxX
=
d
+
l
,
o
[
b
].
maxY
=
o
[
b
][
z
])),
o
[
b
].
sum
+=
y
,
o
[
b
].
counter
++
,
z
%
T
===
0
&&
(
U
=
this
.
_getBarItem
(
b
,
z
,
v
.
getNameByIndex
(
z
),
d
,
m
-
(
x
?
0
:
h
),
x
?
h
:
l
,
x
?
l
:
h
,
x
?
"
vertical
"
:
"
horizontal
"
),
this
.
shapeList
.
push
(
new
n
(
U
))));
for
(
var
P
=
0
,
D
=
i
[
M
].
length
;
D
>
P
;
P
++
)
b
=
i
[
M
][
P
],
_
=
f
[
b
],
g
=
_
.
data
[
z
],
y
=
this
.
getDataFromOption
(
g
,
"
-
"
),
h
=
Math
.
min
(
K
[
b
]
||
Number
.
MAX_VALUE
,
I
[
b
]
||
S
),
"
-
"
==
y
&&
this
.
deepQuery
([
g
,
_
,
this
.
option
],
"
calculable
"
)
&&
(
x
?(
c
-=
E
,
m
=
c
):(
d
=
c
,
c
+=
E
),
U
=
this
.
_getBarItem
(
b
,
z
,
v
.
getNameByIndex
(
z
),
d
,
m
-
(
x
?
0
:
h
),
x
?
h
:
E
,
x
?
E
:
h
,
x
?
"
vertical
"
:
"
horizontal
"
),
U
.
hoverable
=!
1
,
U
.
draggable
=!
1
,
U
.
style
.
lineWidth
=
1
,
U
.
style
.
brushType
=
"
stroke
"
,
U
.
style
.
strokeColor
=
_
.
calculableHolderColor
||
this
.
ecTheme
.
calculableHolderColor
||
a
.
calculableHolderColor
,
this
.
shapeList
.
push
(
new
n
(
U
)));
x
?
d
+=
h
+
X
:
m
-=
h
+
X
}}
this
.
_calculMarkMapXY
(
o
,
i
,
x
?
"
y
"
:
"
x
"
)},
_buildHorizontal
:
function
(
e
,
t
,
i
,
n
){
return
this
.
_buildNormal
(
e
,
t
,
i
,
n
,
"
horizontal
"
)},
_buildVertical
:
function
(
e
,
t
,
i
,
n
){
return
this
.
_buildNormal
(
e
,
t
,
i
,
n
,
"
vertical
"
)},
_buildOther
:
function
(
e
,
t
,
i
,
a
){
for
(
var
o
=
this
.
series
,
r
=
0
,
s
=
i
.
length
;
s
>
r
;
r
++
)
for
(
var
l
=
0
,
h
=
i
[
r
].
length
;
h
>
l
;
l
++
){
var
d
=
i
[
r
][
l
],
m
=
o
[
d
],
c
=
m
.
xAxisIndex
||
0
,
p
=
this
.
component
.
xAxis
.
getAxis
(
c
),
u
=
p
.
getCoord
(
0
),
V
=
m
.
yAxisIndex
||
0
,
U
=
this
.
component
.
yAxis
.
getAxis
(
V
),
g
=
U
.
getCoord
(
0
);
a
[
d
]
=
a
[
d
]
||
{
min0
:
Number
.
POSITIVE_INFINITY
,
min1
:
Number
.
POSITIVE_INFINITY
,
max0
:
Number
.
NEGATIVE_INFINITY
,
max1
:
Number
.
NEGATIVE_INFINITY
,
sum0
:
0
,
sum1
:
0
,
counter0
:
0
,
counter1
:
0
,
average0
:
0
,
average1
:
0
};
for
(
var
y
=
0
,
f
=
m
.
data
.
length
;
f
>
y
;
y
++
){
var
b
=
m
.
data
[
y
],
_
=
this
.
getDataFromOption
(
b
,
"
-
"
);
if
(
_
instanceof
Array
){
var
x
,
k
,
L
=
p
.
getCoord
(
_
[
0
]),
v
=
U
.
getCoord
(
_
[
1
]),
W
=
[
b
,
m
],
w
=
this
.
deepQuery
(
W
,
"
barWidth
"
)
||
10
,
X
=
this
.
deepQuery
(
W
,
"
barHeight
"
);
null
!=
X
?(
x
=
"
horizontal
"
,
_
[
0
]
>
0
?(
w
=
L
-
u
,
L
-=
w
):
w
=
_
[
0
]
<
0
?
u
-
L
:
0
,
k
=
this
.
_getBarItem
(
d
,
y
,
_
[
0
],
L
,
v
-
X
/
2
,
w
,
X
,
x
)):(
x
=
"
vertical
"
,
_
[
1
]
>
0
?
X
=
g
-
v
:
_
[
1
]
<
0
?(
X
=
v
-
g
,
v
-=
X
):
X
=
0
,
k
=
this
.
_getBarItem
(
d
,
y
,
_
[
0
],
L
-
w
/
2
,
v
,
w
,
X
,
x
)),
this
.
shapeList
.
push
(
new
n
(
k
)),
L
=
p
.
getCoord
(
_
[
0
]),
v
=
U
.
getCoord
(
_
[
1
]),
a
[
d
].
min0
>
_
[
0
]
&&
(
a
[
d
].
min0
=
_
[
0
],
a
[
d
].
minY0
=
v
,
a
[
d
].
minX0
=
L
),
a
[
d
].
max0
<
_
[
0
]
&&
(
a
[
d
].
max0
=
_
[
0
],
a
[
d
].
maxY0
=
v
,
a
[
d
].
maxX0
=
L
),
a
[
d
].
sum0
+=
_
[
0
],
a
[
d
].
counter0
++
,
a
[
d
].
min1
>
_
[
1
]
&&
(
a
[
d
].
min1
=
_
[
1
],
a
[
d
].
minY1
=
v
,
a
[
d
].
minX1
=
L
),
a
[
d
].
max1
<
_
[
1
]
&&
(
a
[
d
].
max1
=
_
[
1
],
a
[
d
].
maxY1
=
v
,
a
[
d
].
maxX1
=
L
),
a
[
d
].
sum1
+=
_
[
1
],
a
[
d
].
counter1
++
}}}
this
.
_calculMarkMapXY
(
a
,
i
,
"
xy
"
)},
_mapSize
:
function
(
e
,
t
,
i
){
var
n
,
a
,
o
=
this
.
_findSpecialBarSzie
(
t
,
i
),
r
=
o
.
barWidthMap
,
s
=
o
.
barMaxWidthMap
,
l
=
o
.
barMinHeightMap
,
h
=
o
.
sBarWidthCounter
,
d
=
o
.
sBarWidthTotal
,
m
=
o
.
barGap
,
c
=
o
.
barCategoryGap
,
p
=
1
;
if
(
t
.
length
!=
h
){
if
(
i
)
n
=
e
.
getGap
(),
m
=
0
,
a
=+
(
n
/
t
.
length
).
toFixed
(
2
),
0
>=
a
&&
(
p
=
Math
.
floor
(
t
.
length
/
n
),
a
=
1
);
else
if
(
n
=
"
string
"
==
typeof
c
&&
c
.
match
(
/%$/
)?(
e
.
getGap
()
*
(
100
-
parseFloat
(
c
))
/
100
).
toFixed
(
2
)
-
0
:
e
.
getGap
()
-
c
,
"
string
"
==
typeof
m
&&
m
.
match
(
/%$/
)?(
m
=
parseFloat
(
m
)
/
100
,
a
=+
((
n
-
d
)
/
((
t
.
length
-
1
)
*
m
+
t
.
length
-
h
)).
toFixed
(
2
),
m
=
a
*
m
):(
m
=
parseFloat
(
m
),
a
=+
((
n
-
d
-
m
*
(
t
.
length
-
1
))
/
(
t
.
length
-
h
)).
toFixed
(
2
)),
0
>=
a
)
return
this
.
_mapSize
(
e
,
t
,
!
0
)}
else
if
(
n
=
h
>
1
?
"
string
"
==
typeof
c
&&
c
.
match
(
/%$/
)?
+
(
e
.
getGap
()
*
(
100
-
parseFloat
(
c
))
/
100
).
toFixed
(
2
):
e
.
getGap
()
-
c
:
d
,
a
=
0
,
m
=
h
>
1
?
+
((
n
-
d
)
/
(
h
-
1
)).
toFixed
(
2
):
0
,
0
>
m
)
return
this
.
_mapSize
(
e
,
t
,
!
0
);
return
this
.
_recheckBarMaxWidth
(
t
,
r
,
s
,
l
,
n
,
a
,
m
,
p
)},
_findSpecialBarSzie
:
function
(
e
,
t
){
for
(
var
i
,
n
,
a
,
o
,
r
=
this
.
series
,
s
=
{},
l
=
{},
h
=
{},
d
=
0
,
m
=
0
,
c
=
0
,
p
=
e
.
length
;
p
>
c
;
c
++
)
for
(
var
u
=
{
barWidth
:
!
1
,
barMaxWidth
:
!
1
},
V
=
0
,
U
=
e
[
c
].
length
;
U
>
V
;
V
++
){
var
g
=
e
[
c
][
V
],
y
=
r
[
g
];
if
(
!
t
){
if
(
u
.
barWidth
)
s
[
g
]
=
i
;
else
if
(
i
=
this
.
query
(
y
,
"
barWidth
"
),
null
!=
i
){
s
[
g
]
=
i
,
m
+=
i
,
d
++
,
u
.
barWidth
=!
0
;
for
(
var
f
=
0
,
b
=
V
;
b
>
f
;
f
++
){
var
_
=
e
[
c
][
f
];
s
[
_
]
=
i
}}
if
(
u
.
barMaxWidth
)
l
[
g
]
=
n
;
else
if
(
n
=
this
.
query
(
y
,
"
barMaxWidth
"
),
null
!=
n
){
l
[
g
]
=
n
,
u
.
barMaxWidth
=!
0
;
for
(
var
f
=
0
,
b
=
V
;
b
>
f
;
f
++
){
var
_
=
e
[
c
][
f
];
l
[
_
]
=
n
}}}
h
[
g
]
=
this
.
query
(
y
,
"
barMinHeight
"
),
a
=
null
!=
a
?
a
:
this
.
query
(
y
,
"
barGap
"
),
o
=
null
!=
o
?
o
:
this
.
query
(
y
,
"
barCategoryGap
"
)}
return
{
barWidthMap
:
s
,
barMaxWidthMap
:
l
,
barMinHeightMap
:
h
,
sBarWidth
:
i
,
sBarMaxWidth
:
n
,
sBarWidthCounter
:
d
,
sBarWidthTotal
:
m
,
barGap
:
a
,
barCategoryGap
:
o
}},
_recheckBarMaxWidth
:
function
(
e
,
t
,
i
,
n
,
a
,
o
,
r
,
s
){
for
(
var
l
=
0
,
h
=
e
.
length
;
h
>
l
;
l
++
){
var
d
=
e
[
l
][
0
];
i
[
d
]
&&
i
[
d
]
<
o
&&
(
a
-=
o
-
i
[
d
])}
return
{
barWidthMap
:
t
,
barMaxWidthMap
:
i
,
barMinHeightMap
:
n
,
gap
:
a
,
barWidth
:
o
,
barGap
:
r
,
interval
:
s
}},
_getBarItem
:
function
(
e
,
t
,
i
,
n
,
a
,
r
,
l
,
h
){
var
d
,
m
=
this
.
series
,
c
=
m
[
e
],
p
=
c
.
data
[
t
],
u
=
this
.
_sIndex2ColorMap
[
e
],
V
=
[
p
,
c
],
U
=
this
.
deepMerge
(
V
,
"
itemStyle.normal
"
),
g
=
this
.
deepMerge
(
V
,
"
itemStyle.emphasis
"
),
y
=
U
.
barBorderWidth
;
d
=
{
zlevel
:
this
.
getZlevelBase
(),
z
:
this
.
getZBase
(),
clickable
:
this
.
deepQuery
(
V
,
"
clickable
"
),
style
:{
x
:
n
,
y
:
a
,
width
:
r
,
height
:
l
,
brushType
:
"
both
"
,
color
:
this
.
getItemStyleColor
(
this
.
deepQuery
(
V
,
"
itemStyle.normal.color
"
)
||
u
,
e
,
t
,
p
),
radius
:
U
.
barBorderRadius
,
lineWidth
:
y
,
strokeColor
:
U
.
barBorderColor
},
highlightStyle
:{
color
:
this
.
getItemStyleColor
(
this
.
deepQuery
(
V
,
"
itemStyle.emphasis.color
"
),
e
,
t
,
p
),
radius
:
g
.
barBorderRadius
,
lineWidth
:
g
.
barBorderWidth
,
strokeColor
:
g
.
barBorderColor
},
_orient
:
h
};
var
f
=
d
.
style
;
d
.
highlightStyle
.
color
=
d
.
highlightStyle
.
color
||
(
"
string
"
==
typeof
f
.
color
?
s
.
lift
(
f
.
color
,
-
.
3
):
f
.
color
),
f
.
x
=
Math
.
floor
(
f
.
x
),
f
.
y
=
Math
.
floor
(
f
.
y
),
f
.
height
=
Math
.
ceil
(
f
.
height
),
f
.
width
=
Math
.
ceil
(
f
.
width
),
y
>
0
&&
f
.
height
>
y
&&
f
.
width
>
y
?(
f
.
y
+=
y
/
2
,
f
.
height
-=
y
,
f
.
x
+=
y
/
2
,
f
.
width
-=
y
):
f
.
brushType
=
"
fill
"
,
d
.
highlightStyle
.
textColor
=
d
.
highlightStyle
.
color
,
d
=
this
.
addLabel
(
d
,
c
,
p
,
i
,
h
);
for
(
var
b
=
[
f
,
d
.
highlightStyle
],
_
=
0
,
x
=
b
.
length
;
x
>
_
;
_
++
){
var
k
=
b
[
_
].
textPosition
;
if
(
"
insideLeft
"
===
k
||
"
insideRight
"
===
k
||
"
insideTop
"
===
k
||
"
insideBottom
"
===
k
){
var
L
=
5
;
switch
(
k
){
case
"
insideLeft
"
:
b
[
_
].
textX
=
f
.
x
+
L
,
b
[
_
].
textY
=
f
.
y
+
f
.
height
/
2
,
b
[
_
].
textAlign
=
"
left
"
,
b
[
_
].
textBaseline
=
"
middle
"
;
break
;
case
"
insideRight
"
:
b
[
_
].
textX
=
f
.
x
+
f
.
width
-
L
,
b
[
_
].
textY
=
f
.
y
+
f
.
height
/
2
,
b
[
_
].
textAlign
=
"
right
"
,
b
[
_
].
textBaseline
=
"
middle
"
;
break
;
case
"
insideTop
"
:
b
[
_
].
textX
=
f
.
x
+
f
.
width
/
2
,
b
[
_
].
textY
=
f
.
y
+
L
/
2
,
b
[
_
].
textAlign
=
"
center
"
,
b
[
_
].
textBaseline
=
"
top
"
;
break
;
case
"
insideBottom
"
:
b
[
_
].
textX
=
f
.
x
+
f
.
width
/
2
,
b
[
_
].
textY
=
f
.
y
+
f
.
height
-
L
/
2
,
b
[
_
].
textAlign
=
"
center
"
,
b
[
_
].
textBaseline
=
"
bottom
"
}
b
[
_
].
textPosition
=
"
specific
"
,
b
[
_
].
textColor
=
b
[
_
].
textColor
||
"
#fff
"
}}
return
this
.
deepQuery
([
p
,
c
,
this
.
option
],
"
calculable
"
)
&&
(
this
.
setCalculable
(
d
),
d
.
draggable
=!
0
),
o
.
pack
(
d
,
m
[
e
],
e
,
m
[
e
].
data
[
t
],
t
,
i
),
d
},
getMarkCoord
:
function
(
e
,
t
){
var
i
,
n
,
a
=
this
.
series
[
e
],
o
=
this
.
xMarkMap
[
e
],
r
=
this
.
component
.
xAxis
.
getAxis
(
a
.
xAxisIndex
),
s
=
this
.
component
.
yAxis
.
getAxis
(
a
.
yAxisIndex
);
if
(
!
t
.
type
||
"
max
"
!==
t
.
type
&&
"
min
"
!==
t
.
type
&&
"
average
"
!==
t
.
type
)
if
(
o
.
isHorizontal
){
i
=
"
string
"
==
typeof
t
.
xAxis
&&
r
.
getIndexByName
?
r
.
getIndexByName
(
t
.
xAxis
):
t
.
xAxis
||
0
;
var
l
=
o
[
i
];
l
=
null
!=
l
?
l
:
"
string
"
!=
typeof
t
.
xAxis
&&
r
.
getCoordByIndex
?
r
.
getCoordByIndex
(
t
.
xAxis
||
0
):
r
.
getCoord
(
t
.
xAxis
||
0
),
n
=
[
l
,
s
.
getCoord
(
t
.
yAxis
||
0
)]}
else
{
i
=
"
string
"
==
typeof
t
.
yAxis
&&
s
.
getIndexByName
?
s
.
getIndexByName
(
t
.
yAxis
):
t
.
yAxis
||
0
;
var
h
=
o
[
i
];
h
=
null
!=
h
?
h
:
"
string
"
!=
typeof
t
.
yAxis
&&
s
.
getCoordByIndex
?
s
.
getCoordByIndex
(
t
.
yAxis
||
0
):
s
.
getCoord
(
t
.
yAxis
||
0
),
n
=
[
r
.
getCoord
(
t
.
xAxis
||
0
),
h
]}
else
{
var
d
=
null
!=
t
.
valueIndex
?
t
.
valueIndex
:
null
!=
o
.
maxX0
?
"
1
"
:
""
;
n
=
[
o
[
t
.
type
+
"
X
"
+
d
],
o
[
t
.
type
+
"
Y
"
+
d
],
o
[
t
.
type
+
"
Line
"
+
d
],
o
[
t
.
type
+
d
]]}
return
n
},
refresh
:
function
(
e
){
e
&&
(
this
.
option
=
e
,
this
.
series
=
e
.
series
),
this
.
backupShapeList
(),
this
.
_buildShape
()},
addDataAnimation
:
function
(
e
,
t
){
function
i
(){
V
--
,
0
===
V
&&
t
&&
t
()}
for
(
var
n
=
this
.
series
,
a
=
{},
r
=
0
,
s
=
e
.
length
;
s
>
r
;
r
++
)
a
[
e
[
r
][
0
]]
=
e
[
r
];
for
(
var
l
,
h
,
d
,
m
,
c
,
p
,
u
,
V
=
0
,
r
=
this
.
shapeList
.
length
-
1
;
r
>=
0
;
r
--
)
if
(
p
=
o
.
get
(
this
.
shapeList
[
r
],
"
seriesIndex
"
),
a
[
p
]
&&!
a
[
p
][
3
]
&&
"
rectangle
"
===
this
.
shapeList
[
r
].
type
){
if
(
u
=
o
.
get
(
this
.
shapeList
[
r
],
"
dataIndex
"
),
c
=
n
[
p
],
a
[
p
][
2
]
&&
u
===
c
.
data
.
length
-
1
){
this
.
zr
.
delShape
(
this
.
shapeList
[
r
].
id
);
continue
}
if
(
!
a
[
p
][
2
]
&&
0
===
u
){
this
.
zr
.
delShape
(
this
.
shapeList
[
r
].
id
);
continue
}
"
horizontal
"
===
this
.
shapeList
[
r
].
_orient
?(
m
=
this
.
component
.
yAxis
.
getAxis
(
c
.
yAxisIndex
||
0
).
getGap
(),
d
=
a
[
p
][
2
]?
-
m
:
m
,
l
=
0
):(
h
=
this
.
component
.
xAxis
.
getAxis
(
c
.
xAxisIndex
||
0
).
getGap
(),
l
=
a
[
p
][
2
]?
h
:
-
h
,
d
=
0
),
this
.
shapeList
[
r
].
position
=
[
0
,
0
],
V
++
,
this
.
zr
.
animate
(
this
.
shapeList
[
r
].
id
,
""
).
when
(
this
.
query
(
this
.
option
,
"
animationDurationUpdate
"
),{
position
:[
l
,
d
]}).
done
(
i
).
start
()}
V
||
i
()}},
r
.
inherits
(
t
,
i
),
e
(
"
../chart
"
).
define
(
"
bar
"
,
t
),
t
});
\ No newline at end of file
define
(
"
echarts/chart/bar
"
,[
"
require
"
,
"
./base
"
,
"
zrender/shape/Rectangle
"
,
"
../component/axis
"
,
"
../component/grid
"
,
"
../component/dataZoom
"
,
"
../config
"
,
"
../util/ecData
"
,
"
zrender/tool/util
"
,
"
zrender/tool/color
"
,
"
../chart
"
],
function
(
e
){
function
t
(
e
,
t
,
n
,
a
,
o
){
i
.
call
(
this
,
e
,
t
,
n
,
a
,
o
),
this
.
refresh
(
a
)}
var
i
=
e
(
"
./base
"
),
n
=
e
(
"
zrender/shape/Rectangle
"
);
e
(
"
../component/axis
"
),
e
(
"
../component/grid
"
),
e
(
"
../component/dataZoom
"
);
var
a
=
e
(
"
../config
"
);
a
.
bar
=
{
zlevel
:
0
,
z
:
2
,
clickable
:
!
0
,
legendHoverLink
:
!
0
,
xAxisIndex
:
0
,
yAxisIndex
:
0
,
barMinHeight
:
0
,
barGap
:
"
30%
"
,
barCategoryGap
:
"
20%
"
,
itemStyle
:{
normal
:{
barBorderColor
:
"
#fff
"
,
barBorderRadius
:
0
,
barBorderWidth
:
0
,
label
:{
show
:
!
1
}},
emphasis
:{
barBorderColor
:
"
#fff
"
,
barBorderRadius
:
0
,
barBorderWidth
:
0
,
label
:{
show
:
!
1
}}}};
var
o
=
e
(
"
../util/ecData
"
),
r
=
e
(
"
zrender/tool/util
"
),
s
=
e
(
"
zrender/tool/color
"
);
return
t
.
prototype
=
{
type
:
a
.
CHART_TYPE_BAR
,
_buildShape
:
function
(){
this
.
_buildPosition
()},
_buildNormal
:
function
(
e
,
t
,
i
,
o
,
r
){
for
(
var
s
,
l
,
h
,
d
,
m
,
c
,
p
,
u
,
V
,
U
,
g
,
f
,
y
=
this
.
series
,
b
=
i
[
0
][
0
],
_
=
y
[
b
],
x
=
"
horizontal
"
==
r
,
k
=
this
.
component
.
xAxis
,
v
=
this
.
component
.
yAxis
,
L
=
x
?
k
.
getAxis
(
_
.
xAxisIndex
):
v
.
getAxis
(
_
.
yAxisIndex
),
W
=
this
.
_mapSize
(
L
,
i
),
w
=
W
.
gap
,
X
=
W
.
barGap
,
I
=
W
.
barWidthMap
,
S
=
W
.
barMaxWidthMap
,
K
=
W
.
barWidth
,
C
=
W
.
barMinHeightMap
,
T
=
W
.
interval
,
E
=
this
.
deepQuery
([
this
.
ecTheme
,
a
],
"
island.r
"
),
z
=
0
,
A
=
t
;
A
>
z
&&
null
!=
L
.
getNameByIndex
(
z
);
z
++
){
x
?
d
=
L
.
getCoordByIndex
(
z
)
-
w
/
2
:
m
=
L
.
getCoordByIndex
(
z
)
+
w
/
2
;
for
(
var
M
=
0
,
F
=
i
.
length
;
F
>
M
;
M
++
){
var
J
=
y
[
i
[
M
][
0
]].
yAxisIndex
||
0
,
O
=
y
[
i
[
M
][
0
]].
xAxisIndex
||
0
;
s
=
x
?
v
.
getAxis
(
J
):
k
.
getAxis
(
O
),
p
=
c
=
V
=
u
=
s
.
getCoord
(
0
);
for
(
var
P
=
0
,
D
=
i
[
M
].
length
;
D
>
P
;
P
++
)
b
=
i
[
M
][
P
],
_
=
y
[
b
],
g
=
_
.
data
[
z
],
f
=
this
.
getDataFromOption
(
g
,
"
-
"
),
o
[
b
]
=
o
[
b
]
||
{
min
:
Number
.
POSITIVE_INFINITY
,
max
:
Number
.
NEGATIVE_INFINITY
,
sum
:
0
,
counter
:
0
,
average
:
0
},
h
=
Math
.
min
(
S
[
b
]
||
Number
.
MAX_VALUE
,
I
[
b
]
||
K
),
"
-
"
!==
f
&&
(
f
>
0
?(
l
=
P
>
0
?
s
.
getCoordSize
(
f
):
x
?
p
-
s
.
getCoord
(
f
):
s
.
getCoord
(
f
)
-
p
,
1
===
D
&&
C
[
b
]
>
l
&&
(
l
=
C
[
b
]),
x
?(
c
-=
l
,
m
=
c
):(
d
=
c
,
c
+=
l
)):
0
>
f
?(
l
=
P
>
0
?
s
.
getCoordSize
(
f
):
x
?
s
.
getCoord
(
f
)
-
V
:
V
-
s
.
getCoord
(
f
),
1
===
D
&&
C
[
b
]
>
l
&&
(
l
=
C
[
b
]),
x
?(
m
=
u
,
u
+=
l
):(
u
-=
l
,
d
=
u
)):(
l
=
0
,
x
?(
c
-=
l
,
m
=
c
):(
d
=
c
,
c
+=
l
)),
o
[
b
][
z
]
=
x
?
d
+
h
/
2
:
m
-
h
/
2
,
o
[
b
].
min
>
f
&&
(
o
[
b
].
min
=
f
,
x
?(
o
[
b
].
minY
=
m
,
o
[
b
].
minX
=
o
[
b
][
z
]):(
o
[
b
].
minX
=
d
+
l
,
o
[
b
].
minY
=
o
[
b
][
z
])),
o
[
b
].
max
<
f
&&
(
o
[
b
].
max
=
f
,
x
?(
o
[
b
].
maxY
=
m
,
o
[
b
].
maxX
=
o
[
b
][
z
]):(
o
[
b
].
maxX
=
d
+
l
,
o
[
b
].
maxY
=
o
[
b
][
z
])),
o
[
b
].
sum
+=
f
,
o
[
b
].
counter
++
,
z
%
T
===
0
&&
(
U
=
this
.
_getBarItem
(
b
,
z
,
L
.
getNameByIndex
(
z
),
d
,
m
-
(
x
?
0
:
h
),
x
?
h
:
l
,
x
?
l
:
h
,
x
?
"
vertical
"
:
"
horizontal
"
),
this
.
shapeList
.
push
(
new
n
(
U
))));
for
(
var
P
=
0
,
D
=
i
[
M
].
length
;
D
>
P
;
P
++
)
b
=
i
[
M
][
P
],
_
=
y
[
b
],
g
=
_
.
data
[
z
],
f
=
this
.
getDataFromOption
(
g
,
"
-
"
),
h
=
Math
.
min
(
S
[
b
]
||
Number
.
MAX_VALUE
,
I
[
b
]
||
K
),
"
-
"
==
f
&&
this
.
deepQuery
([
g
,
_
,
this
.
option
],
"
calculable
"
)
&&
(
x
?(
c
-=
E
,
m
=
c
):(
d
=
c
,
c
+=
E
),
U
=
this
.
_getBarItem
(
b
,
z
,
L
.
getNameByIndex
(
z
),
d
,
m
-
(
x
?
0
:
h
),
x
?
h
:
E
,
x
?
E
:
h
,
x
?
"
vertical
"
:
"
horizontal
"
),
U
.
hoverable
=!
1
,
U
.
draggable
=!
1
,
U
.
style
.
lineWidth
=
1
,
U
.
style
.
brushType
=
"
stroke
"
,
U
.
style
.
strokeColor
=
_
.
calculableHolderColor
||
this
.
ecTheme
.
calculableHolderColor
||
a
.
calculableHolderColor
,
this
.
shapeList
.
push
(
new
n
(
U
)));
x
?
d
+=
h
+
X
:
m
-=
h
+
X
}}
this
.
_calculMarkMapXY
(
o
,
i
,
x
?
"
y
"
:
"
x
"
)},
_buildHorizontal
:
function
(
e
,
t
,
i
,
n
){
return
this
.
_buildNormal
(
e
,
t
,
i
,
n
,
"
horizontal
"
)},
_buildVertical
:
function
(
e
,
t
,
i
,
n
){
return
this
.
_buildNormal
(
e
,
t
,
i
,
n
,
"
vertical
"
)},
_buildOther
:
function
(
e
,
t
,
i
,
a
){
for
(
var
o
=
this
.
series
,
r
=
0
,
s
=
i
.
length
;
s
>
r
;
r
++
)
for
(
var
l
=
0
,
h
=
i
[
r
].
length
;
h
>
l
;
l
++
){
var
d
=
i
[
r
][
l
],
m
=
o
[
d
],
c
=
m
.
xAxisIndex
||
0
,
p
=
this
.
component
.
xAxis
.
getAxis
(
c
),
u
=
p
.
getCoord
(
0
),
V
=
m
.
yAxisIndex
||
0
,
U
=
this
.
component
.
yAxis
.
getAxis
(
V
),
g
=
U
.
getCoord
(
0
);
a
[
d
]
=
a
[
d
]
||
{
min0
:
Number
.
POSITIVE_INFINITY
,
min1
:
Number
.
POSITIVE_INFINITY
,
max0
:
Number
.
NEGATIVE_INFINITY
,
max1
:
Number
.
NEGATIVE_INFINITY
,
sum0
:
0
,
sum1
:
0
,
counter0
:
0
,
counter1
:
0
,
average0
:
0
,
average1
:
0
};
for
(
var
f
=
0
,
y
=
m
.
data
.
length
;
y
>
f
;
f
++
){
var
b
=
m
.
data
[
f
],
_
=
this
.
getDataFromOption
(
b
,
"
-
"
);
if
(
_
instanceof
Array
){
var
x
,
k
,
v
=
p
.
getCoord
(
_
[
0
]),
L
=
U
.
getCoord
(
_
[
1
]),
W
=
[
b
,
m
],
w
=
this
.
deepQuery
(
W
,
"
barWidth
"
)
||
10
,
X
=
this
.
deepQuery
(
W
,
"
barHeight
"
);
null
!=
X
?(
x
=
"
horizontal
"
,
_
[
0
]
>
0
?(
w
=
v
-
u
,
v
-=
w
):
w
=
_
[
0
]
<
0
?
u
-
v
:
0
,
k
=
this
.
_getBarItem
(
d
,
f
,
_
[
0
],
v
,
L
-
X
/
2
,
w
,
X
,
x
)):(
x
=
"
vertical
"
,
_
[
1
]
>
0
?
X
=
g
-
L
:
_
[
1
]
<
0
?(
X
=
L
-
g
,
L
-=
X
):
X
=
0
,
k
=
this
.
_getBarItem
(
d
,
f
,
_
[
0
],
v
-
w
/
2
,
L
,
w
,
X
,
x
)),
this
.
shapeList
.
push
(
new
n
(
k
)),
v
=
p
.
getCoord
(
_
[
0
]),
L
=
U
.
getCoord
(
_
[
1
]),
a
[
d
].
min0
>
_
[
0
]
&&
(
a
[
d
].
min0
=
_
[
0
],
a
[
d
].
minY0
=
L
,
a
[
d
].
minX0
=
v
),
a
[
d
].
max0
<
_
[
0
]
&&
(
a
[
d
].
max0
=
_
[
0
],
a
[
d
].
maxY0
=
L
,
a
[
d
].
maxX0
=
v
),
a
[
d
].
sum0
+=
_
[
0
],
a
[
d
].
counter0
++
,
a
[
d
].
min1
>
_
[
1
]
&&
(
a
[
d
].
min1
=
_
[
1
],
a
[
d
].
minY1
=
L
,
a
[
d
].
minX1
=
v
),
a
[
d
].
max1
<
_
[
1
]
&&
(
a
[
d
].
max1
=
_
[
1
],
a
[
d
].
maxY1
=
L
,
a
[
d
].
maxX1
=
v
),
a
[
d
].
sum1
+=
_
[
1
],
a
[
d
].
counter1
++
}}}
this
.
_calculMarkMapXY
(
a
,
i
,
"
xy
"
)},
_mapSize
:
function
(
e
,
t
,
i
){
var
n
,
a
,
o
=
this
.
_findSpecialBarSzie
(
t
,
i
),
r
=
o
.
barWidthMap
,
s
=
o
.
barMaxWidthMap
,
l
=
o
.
barMinHeightMap
,
h
=
o
.
sBarWidthCounter
,
d
=
o
.
sBarWidthTotal
,
m
=
o
.
barGap
,
c
=
o
.
barCategoryGap
,
p
=
1
;
if
(
t
.
length
!=
h
){
if
(
i
)
n
=
e
.
getGap
(),
m
=
0
,
a
=+
(
n
/
t
.
length
).
toFixed
(
2
),
0
>=
a
&&
(
p
=
Math
.
floor
(
t
.
length
/
n
),
a
=
1
);
else
if
(
n
=
"
string
"
==
typeof
c
&&
c
.
match
(
/%$/
)?(
e
.
getGap
()
*
(
100
-
parseFloat
(
c
))
/
100
).
toFixed
(
2
)
-
0
:
e
.
getGap
()
-
c
,
"
string
"
==
typeof
m
&&
m
.
match
(
/%$/
)?(
m
=
parseFloat
(
m
)
/
100
,
a
=+
((
n
-
d
)
/
((
t
.
length
-
1
)
*
m
+
t
.
length
-
h
)).
toFixed
(
2
),
m
=
a
*
m
):(
m
=
parseFloat
(
m
),
a
=+
((
n
-
d
-
m
*
(
t
.
length
-
1
))
/
(
t
.
length
-
h
)).
toFixed
(
2
)),
0
>=
a
)
return
this
.
_mapSize
(
e
,
t
,
!
0
)}
else
if
(
n
=
h
>
1
?
"
string
"
==
typeof
c
&&
c
.
match
(
/%$/
)?
+
(
e
.
getGap
()
*
(
100
-
parseFloat
(
c
))
/
100
).
toFixed
(
2
):
e
.
getGap
()
-
c
:
d
,
a
=
0
,
m
=
h
>
1
?
+
((
n
-
d
)
/
(
h
-
1
)).
toFixed
(
2
):
0
,
0
>
m
)
return
this
.
_mapSize
(
e
,
t
,
!
0
);
return
this
.
_recheckBarMaxWidth
(
t
,
r
,
s
,
l
,
n
,
a
,
m
,
p
)},
_findSpecialBarSzie
:
function
(
e
,
t
){
for
(
var
i
,
n
,
a
,
o
,
r
=
this
.
series
,
s
=
{},
l
=
{},
h
=
{},
d
=
0
,
m
=
0
,
c
=
0
,
p
=
e
.
length
;
p
>
c
;
c
++
)
for
(
var
u
=
{
barWidth
:
!
1
,
barMaxWidth
:
!
1
},
V
=
0
,
U
=
e
[
c
].
length
;
U
>
V
;
V
++
){
var
g
=
e
[
c
][
V
],
f
=
r
[
g
];
if
(
!
t
){
if
(
u
.
barWidth
)
s
[
g
]
=
i
;
else
if
(
i
=
this
.
query
(
f
,
"
barWidth
"
),
null
!=
i
){
s
[
g
]
=
i
,
m
+=
i
,
d
++
,
u
.
barWidth
=!
0
;
for
(
var
y
=
0
,
b
=
V
;
b
>
y
;
y
++
){
var
_
=
e
[
c
][
y
];
s
[
_
]
=
i
}}
if
(
u
.
barMaxWidth
)
l
[
g
]
=
n
;
else
if
(
n
=
this
.
query
(
f
,
"
barMaxWidth
"
),
null
!=
n
){
l
[
g
]
=
n
,
u
.
barMaxWidth
=!
0
;
for
(
var
y
=
0
,
b
=
V
;
b
>
y
;
y
++
){
var
_
=
e
[
c
][
y
];
l
[
_
]
=
n
}}}
h
[
g
]
=
this
.
query
(
f
,
"
barMinHeight
"
),
a
=
null
!=
a
?
a
:
this
.
query
(
f
,
"
barGap
"
),
o
=
null
!=
o
?
o
:
this
.
query
(
f
,
"
barCategoryGap
"
)}
return
{
barWidthMap
:
s
,
barMaxWidthMap
:
l
,
barMinHeightMap
:
h
,
sBarWidth
:
i
,
sBarMaxWidth
:
n
,
sBarWidthCounter
:
d
,
sBarWidthTotal
:
m
,
barGap
:
a
,
barCategoryGap
:
o
}},
_recheckBarMaxWidth
:
function
(
e
,
t
,
i
,
n
,
a
,
o
,
r
,
s
){
for
(
var
l
=
0
,
h
=
e
.
length
;
h
>
l
;
l
++
){
var
d
=
e
[
l
][
0
];
i
[
d
]
&&
i
[
d
]
<
o
&&
(
a
-=
o
-
i
[
d
])}
return
{
barWidthMap
:
t
,
barMaxWidthMap
:
i
,
barMinHeightMap
:
n
,
gap
:
a
,
barWidth
:
o
,
barGap
:
r
,
interval
:
s
}},
_getBarItem
:
function
(
e
,
t
,
i
,
n
,
a
,
r
,
l
,
h
){
var
d
,
m
=
this
.
series
,
c
=
m
[
e
],
p
=
c
.
data
[
t
],
u
=
this
.
_sIndex2ColorMap
[
e
],
V
=
[
p
,
c
],
U
=
this
.
deepMerge
(
V
,
"
itemStyle.normal
"
),
g
=
this
.
deepMerge
(
V
,
"
itemStyle.emphasis
"
),
f
=
U
.
barBorderWidth
;
d
=
{
zlevel
:
this
.
getZlevelBase
(),
z
:
this
.
getZBase
(),
clickable
:
this
.
deepQuery
(
V
,
"
clickable
"
),
style
:{
x
:
n
,
y
:
a
,
width
:
r
,
height
:
l
,
brushType
:
"
both
"
,
color
:
this
.
getItemStyleColor
(
this
.
deepQuery
(
V
,
"
itemStyle.normal.color
"
)
||
u
,
e
,
t
,
p
),
radius
:
U
.
barBorderRadius
,
lineWidth
:
f
,
strokeColor
:
U
.
barBorderColor
},
highlightStyle
:{
color
:
this
.
getItemStyleColor
(
this
.
deepQuery
(
V
,
"
itemStyle.emphasis.color
"
),
e
,
t
,
p
),
radius
:
g
.
barBorderRadius
,
lineWidth
:
g
.
barBorderWidth
,
strokeColor
:
g
.
barBorderColor
},
_orient
:
h
};
var
y
=
d
.
style
;
d
.
highlightStyle
.
color
=
d
.
highlightStyle
.
color
||
(
"
string
"
==
typeof
y
.
color
?
s
.
lift
(
y
.
color
,
-
.
3
):
y
.
color
),
y
.
x
=
Math
.
floor
(
y
.
x
),
y
.
y
=
Math
.
floor
(
y
.
y
),
y
.
height
=
Math
.
ceil
(
y
.
height
),
y
.
width
=
Math
.
ceil
(
y
.
width
),
f
>
0
&&
y
.
height
>
f
&&
y
.
width
>
f
?(
y
.
y
+=
f
/
2
,
y
.
height
-=
f
,
y
.
x
+=
f
/
2
,
y
.
width
-=
f
):
y
.
brushType
=
"
fill
"
,
d
.
highlightStyle
.
textColor
=
d
.
highlightStyle
.
color
,
d
=
this
.
addLabel
(
d
,
c
,
p
,
i
,
h
);
for
(
var
b
=
[
y
,
d
.
highlightStyle
],
_
=
0
,
x
=
b
.
length
;
x
>
_
;
_
++
){
var
k
=
b
[
_
].
textPosition
;
if
(
"
insideLeft
"
===
k
||
"
insideRight
"
===
k
||
"
insideTop
"
===
k
||
"
insideBottom
"
===
k
){
var
v
=
5
;
switch
(
k
){
case
"
insideLeft
"
:
b
[
_
].
textX
=
y
.
x
+
v
,
b
[
_
].
textY
=
y
.
y
+
y
.
height
/
2
,
b
[
_
].
textAlign
=
"
left
"
,
b
[
_
].
textBaseline
=
"
middle
"
;
break
;
case
"
insideRight
"
:
b
[
_
].
textX
=
y
.
x
+
y
.
width
-
v
,
b
[
_
].
textY
=
y
.
y
+
y
.
height
/
2
,
b
[
_
].
textAlign
=
"
right
"
,
b
[
_
].
textBaseline
=
"
middle
"
;
break
;
case
"
insideTop
"
:
b
[
_
].
textX
=
y
.
x
+
y
.
width
/
2
,
b
[
_
].
textY
=
y
.
y
+
v
/
2
,
b
[
_
].
textAlign
=
"
center
"
,
b
[
_
].
textBaseline
=
"
top
"
;
break
;
case
"
insideBottom
"
:
b
[
_
].
textX
=
y
.
x
+
y
.
width
/
2
,
b
[
_
].
textY
=
y
.
y
+
y
.
height
-
v
/
2
,
b
[
_
].
textAlign
=
"
center
"
,
b
[
_
].
textBaseline
=
"
bottom
"
}
b
[
_
].
textPosition
=
"
specific
"
,
b
[
_
].
textColor
=
b
[
_
].
textColor
||
"
#fff
"
}}
return
this
.
deepQuery
([
p
,
c
,
this
.
option
],
"
calculable
"
)
&&
(
this
.
setCalculable
(
d
),
d
.
draggable
=!
0
),
o
.
pack
(
d
,
m
[
e
],
e
,
m
[
e
].
data
[
t
],
t
,
i
),
d
},
getMarkCoord
:
function
(
e
,
t
){
var
i
,
n
,
a
=
this
.
series
[
e
],
o
=
this
.
xMarkMap
[
e
],
r
=
this
.
component
.
xAxis
.
getAxis
(
a
.
xAxisIndex
),
s
=
this
.
component
.
yAxis
.
getAxis
(
a
.
yAxisIndex
);
if
(
!
t
.
type
||
"
max
"
!==
t
.
type
&&
"
min
"
!==
t
.
type
&&
"
average
"
!==
t
.
type
)
if
(
o
.
isHorizontal
){
i
=
"
string
"
==
typeof
t
.
xAxis
&&
r
.
getIndexByName
?
r
.
getIndexByName
(
t
.
xAxis
):
t
.
xAxis
||
0
;
var
l
=
o
[
i
];
l
=
null
!=
l
?
l
:
"
string
"
!=
typeof
t
.
xAxis
&&
r
.
getCoordByIndex
?
r
.
getCoordByIndex
(
t
.
xAxis
||
0
):
r
.
getCoord
(
t
.
xAxis
||
0
),
n
=
[
l
,
s
.
getCoord
(
t
.
yAxis
||
0
)]}
else
{
i
=
"
string
"
==
typeof
t
.
yAxis
&&
s
.
getIndexByName
?
s
.
getIndexByName
(
t
.
yAxis
):
t
.
yAxis
||
0
;
var
h
=
o
[
i
];
h
=
null
!=
h
?
h
:
"
string
"
!=
typeof
t
.
yAxis
&&
s
.
getCoordByIndex
?
s
.
getCoordByIndex
(
t
.
yAxis
||
0
):
s
.
getCoord
(
t
.
yAxis
||
0
),
n
=
[
r
.
getCoord
(
t
.
xAxis
||
0
),
h
]}
else
{
var
d
=
null
!=
t
.
valueIndex
?
t
.
valueIndex
:
null
!=
o
.
maxX0
?
"
1
"
:
""
;
n
=
[
o
[
t
.
type
+
"
X
"
+
d
],
o
[
t
.
type
+
"
Y
"
+
d
],
o
[
t
.
type
+
"
Line
"
+
d
],
o
[
t
.
type
+
d
]]}
return
n
},
refresh
:
function
(
e
){
e
&&
(
this
.
option
=
e
,
this
.
series
=
e
.
series
),
this
.
backupShapeList
(),
this
.
_buildShape
()},
addDataAnimation
:
function
(
e
,
t
){
function
i
(){
V
--
,
0
===
V
&&
t
&&
t
()}
for
(
var
n
=
this
.
series
,
a
=
{},
r
=
0
,
s
=
e
.
length
;
s
>
r
;
r
++
)
a
[
e
[
r
][
0
]]
=
e
[
r
];
for
(
var
l
,
h
,
d
,
m
,
c
,
p
,
u
,
V
=
0
,
r
=
this
.
shapeList
.
length
-
1
;
r
>=
0
;
r
--
)
if
(
p
=
o
.
get
(
this
.
shapeList
[
r
],
"
seriesIndex
"
),
a
[
p
]
&&!
a
[
p
][
3
]
&&
"
rectangle
"
===
this
.
shapeList
[
r
].
type
){
if
(
u
=
o
.
get
(
this
.
shapeList
[
r
],
"
dataIndex
"
),
c
=
n
[
p
],
a
[
p
][
2
]
&&
u
===
c
.
data
.
length
-
1
){
this
.
zr
.
delShape
(
this
.
shapeList
[
r
].
id
);
continue
}
if
(
!
a
[
p
][
2
]
&&
0
===
u
){
this
.
zr
.
delShape
(
this
.
shapeList
[
r
].
id
);
continue
}
"
horizontal
"
===
this
.
shapeList
[
r
].
_orient
?(
m
=
this
.
component
.
yAxis
.
getAxis
(
c
.
yAxisIndex
||
0
).
getGap
(),
d
=
a
[
p
][
2
]?
-
m
:
m
,
l
=
0
):(
h
=
this
.
component
.
xAxis
.
getAxis
(
c
.
xAxisIndex
||
0
).
getGap
(),
l
=
a
[
p
][
2
]?
h
:
-
h
,
d
=
0
),
this
.
shapeList
[
r
].
position
=
[
0
,
0
],
V
++
,
this
.
zr
.
animate
(
this
.
shapeList
[
r
].
id
,
""
).
when
(
this
.
query
(
this
.
option
,
"
animationDurationUpdate
"
),{
position
:[
l
,
d
]}).
done
(
i
).
start
()}
V
||
i
()}},
r
.
inherits
(
t
,
i
),
e
(
"
../chart
"
).
define
(
"
bar
"
,
t
),
t
});
\ No newline at end of file
doc/example/www/js/chart/chord.js
浏览文件 @
b5f18a56
此差异已折叠。
点击以展开。
doc/example/www/js/chart/eventRiver.js
浏览文件 @
b5f18a56
define
(
"
echarts/chart/eventRiver
"
,[
"
require
"
,
"
./base
"
,
"
../layout/eventRiver
"
,
"
zrender/shape/Polygon
"
,
"
../component/axis
"
,
"
../component/grid
"
,
"
../component/dataZoom
"
,
"
../config
"
,
"
../util/ecData
"
,
"
../util/date
"
,
"
zrender/tool/util
"
,
"
zrender/tool/color
"
,
"
../chart
"
],
function
(
e
){
function
t
(
e
,
t
,
i
,
a
,
o
){
n
.
call
(
this
,
e
,
t
,
i
,
a
,
o
);
var
r
=
this
;
r
.
_ondragend
=
function
(){
r
.
isDragend
=!
0
},
this
.
refresh
(
a
)}
var
n
=
e
(
"
./base
"
),
i
=
e
(
"
../layout/eventRiver
"
),
a
=
e
(
"
zrender/shape/Polygon
"
);
e
(
"
../component/axis
"
),
e
(
"
../component/grid
"
),
e
(
"
../component/dataZoom
"
);
var
o
=
e
(
"
../config
"
);
o
.
eventRiver
=
{
zlevel
:
0
,
z
:
2
,
clickable
:
!
0
,
legendHoverLink
:
!
0
,
itemStyle
:{
normal
:{
borderColor
:
"
rgba(0,0,0,0)
"
,
borderWidth
:
1
,
label
:{
show
:
!
0
,
position
:
"
inside
"
,
formatter
:
"
{b}
"
}},
emphasis
:{
borderColor
:
"
rgba(0,0,0,0)
"
,
borderWidth
:
1
,
label
:{
show
:
!
0
}}}};
var
r
=
e
(
"
../util/ecData
"
),
s
=
e
(
"
../util/date
"
),
l
=
e
(
"
zrender/tool/util
"
),
h
=
e
(
"
zrender/tool/color
"
);
return
t
.
prototype
=
{
type
:
o
.
CHART_TYPE_EVENTRIVER
,
_buildShape
:
function
(){
var
e
=
this
.
series
;
this
.
selectedMap
=
{},
this
.
_dataPreprocessing
();
for
(
var
t
=
this
.
component
.
legend
,
n
=
[],
a
=
0
;
a
<
e
.
length
;
a
++
)
if
(
e
[
a
].
type
===
this
.
type
){
e
[
a
]
=
this
.
reformOption
(
e
[
a
]),
this
.
legendHoverLink
=
e
[
a
].
legendHoverLink
||
this
.
legendHoverLink
;
var
o
=
e
[
a
].
name
||
""
;
if
(
this
.
selectedMap
[
o
]
=
t
?
t
.
isSelected
(
o
):
!
0
,
!
this
.
selectedMap
[
o
])
continue
;
this
.
buildMark
(
a
),
n
.
push
(
this
.
series
[
a
])}
i
(
n
,
this
.
_intervalX
,
this
.
component
.
grid
.
getArea
()),
this
.
_drawEventRiver
(),
this
.
addShapeList
()},
_dataPreprocessing
:
function
(){
for
(
var
e
,
t
,
n
=
this
.
series
,
i
=
0
,
a
=
n
.
length
;
a
>
i
;
i
++
)
if
(
n
[
i
].
type
===
this
.
type
){
e
=
this
.
component
.
xAxis
.
getAxis
(
n
[
i
].
xAxisIndex
||
0
);
for
(
var
o
=
0
,
r
=
n
[
i
].
data
.
length
;
r
>
o
;
o
++
){
t
=
n
[
i
].
data
[
o
].
evolution
;
for
(
var
l
=
0
,
h
=
t
.
length
;
h
>
l
;
l
++
)
t
[
l
].
timeScale
=
e
.
getCoord
(
s
.
getNewDate
(
t
[
l
].
time
)
-
0
),
t
[
l
].
valueScale
=
Math
.
pow
(
t
[
l
].
value
,.
8
)}}
this
.
_intervalX
=
Math
.
round
(
this
.
component
.
grid
.
getWidth
()
/
40
)},
_drawEventRiver
:
function
(){
for
(
var
e
=
this
.
series
,
t
=
0
;
t
<
e
.
length
;
t
++
){
var
n
=
e
[
t
].
name
||
""
;
if
(
e
[
t
].
type
===
this
.
type
&&
this
.
selectedMap
[
n
])
for
(
var
i
=
0
;
i
<
e
[
t
].
data
.
length
;
i
++
)
this
.
_drawEventBubble
(
e
[
t
].
data
[
i
],
t
,
i
)}},
_drawEventBubble
:
function
(
e
,
t
,
n
){
var
i
=
this
.
series
,
o
=
i
[
t
],
s
=
o
.
name
||
""
,
l
=
o
.
data
[
n
],
m
=
[
l
,
o
],
V
=
this
.
component
.
legend
,
U
=
V
?
V
.
getColor
(
s
):
this
.
zr
.
getColor
(
t
),
d
=
this
.
deepMerge
(
m
,
"
itemStyle.normal
"
)
||
{},
p
=
this
.
deepMerge
(
m
,
"
itemStyle.emphasis
"
)
||
{},
c
=
this
.
getItemStyleColor
(
d
.
color
,
t
,
n
,
l
)
||
U
,
u
=
this
.
getItemStyleColor
(
p
.
color
,
t
,
n
,
l
)
||
(
"
string
"
==
typeof
c
?
h
.
lift
(
c
,
-
.
2
):
c
),
y
=
this
.
_calculateControlPoints
(
e
),
g
=
{
zlevel
:
this
.
getZlevelBase
(),
z
:
this
.
getZBase
(),
clickable
:
this
.
deepQuery
(
m
,
"
clickable
"
),
style
:{
pointList
:
y
,
smooth
:
"
spline
"
,
brushType
:
"
both
"
,
lineJoin
:
"
round
"
,
color
:
c
,
lineWidth
:
d
.
borderWidth
,
strokeColor
:
d
.
borderColor
},
highlightStyle
:{
color
:
u
,
lineWidth
:
p
.
borderWidth
,
strokeColor
:
p
.
borderColor
},
draggable
:
"
vertical
"
,
ondragend
:
this
.
_ondragend
};
g
=
new
a
(
g
),
this
.
addLabel
(
g
,
o
,
l
,
e
.
name
),
r
.
pack
(
g
,
i
[
t
],
t
,
i
[
t
].
data
[
n
],
n
,
i
[
t
].
data
[
n
].
name
),
this
.
shapeList
.
push
(
g
)},
_calculateControlPoints
:
function
(
e
){
var
t
=
this
.
_intervalX
,
n
=
e
.
y
,
i
=
e
.
evolution
,
a
=
i
.
length
;
if
(
!
(
1
>
a
)){
for
(
var
o
=
[],
r
=
[],
s
=
0
;
a
>
s
;
s
++
)
o
.
push
(
i
[
s
].
timeScale
),
r
.
push
(
i
[
s
].
valueScale
);
var
l
=
[];
l
.
push
([
o
[
0
],
n
]);
var
s
=
0
;
for
(
s
=
0
;
a
-
1
>
s
;
s
++
)
l
.
push
([(
o
[
s
]
+
o
[
s
+
1
])
/
2
,
r
[
s
]
/-
2
+
n
]);
for
(
l
.
push
([(
o
[
s
]
+
(
o
[
s
]
+
t
))
/
2
,
r
[
s
]
/-
2
+
n
]),
l
.
push
([
o
[
s
]
+
t
,
n
]),
l
.
push
([(
o
[
s
]
+
(
o
[
s
]
+
t
))
/
2
,
r
[
s
]
/
2
+
n
]),
s
=
a
-
1
;
s
>
0
;
s
--
)
l
.
push
([(
o
[
s
]
+
o
[
s
-
1
])
/
2
,
r
[
s
-
1
]
/
2
+
n
]);
return
l
}},
ondragend
:
function
(
e
,
t
){
this
.
isDragend
&&
e
.
target
&&
(
t
.
dragOut
=!
0
,
t
.
dragIn
=!
0
,
t
.
needRefresh
=!
1
,
this
.
isDragend
=!
1
)},
refresh
:
function
(
e
){
e
&&
(
this
.
option
=
e
,
this
.
series
=
e
.
series
),
this
.
backupShapeList
(),
this
.
_buildShape
()}},
l
.
inherits
(
t
,
n
),
e
(
"
../chart
"
).
define
(
"
eventRiver
"
,
t
),
t
}),
define
(
"
echarts/layout/eventRiver
"
,[
"
require
"
],
function
(){
function
e
(
e
,
o
,
r
){
function
s
(
e
,
t
){
var
n
=
e
.
importance
,
i
=
t
.
importance
;
return
n
>
i
?
-
1
:
i
>
n
?
1
:
0
}
function
l
(
e
,
t
){
if
(
e
.
indexOf
)
return
e
.
indexOf
(
t
);
for
(
var
n
=
0
,
i
=
e
.
length
;
i
>
n
;
n
++
)
if
(
e
[
n
]
===
t
)
return
n
;
return
-
1
}
for
(
var
h
=
5
,
m
=
o
,
V
=
0
;
V
<
e
.
length
;
V
++
){
for
(
var
U
=
0
;
U
<
e
[
V
].
data
.
length
;
U
++
){
null
==
e
[
V
].
data
[
U
].
weight
&&
(
e
[
V
].
data
[
U
].
weight
=
1
);
for
(
var
d
=
0
,
p
=
0
;
p
<
e
[
V
].
data
[
U
].
evolution
.
length
;
p
++
)
d
+=
e
[
V
].
data
[
U
].
evolution
[
p
].
valueScale
;
e
[
V
].
data
[
U
].
importance
=
d
*
e
[
V
].
data
[
U
].
weight
}
e
[
V
].
data
.
sort
(
s
)}
for
(
var
V
=
0
;
V
<
e
.
length
;
V
++
){
null
==
e
[
V
].
weight
&&
(
e
[
V
].
weight
=
1
);
for
(
var
d
=
0
,
U
=
0
;
U
<
e
[
V
].
data
.
length
;
U
++
)
d
+=
e
[
V
].
data
[
U
].
weight
;
e
[
V
].
importance
=
d
*
e
[
V
].
weight
}
e
.
sort
(
s
);
for
(
var
c
=
Number
.
MAX_VALUE
,
u
=
0
,
V
=
0
;
V
<
e
.
length
;
V
++
)
for
(
var
U
=
0
;
U
<
e
[
V
].
data
.
length
;
U
++
)
for
(
var
p
=
0
;
p
<
e
[
V
].
data
[
U
].
evolution
.
length
;
p
++
){
var
y
=
e
[
V
].
data
[
U
].
evolution
[
p
].
timeScale
;
c
=
Math
.
min
(
c
,
y
),
u
=
Math
.
max
(
u
,
y
)}
for
(
var
g
=
n
(
Math
.
floor
(
c
),
Math
.
ceil
(
u
)),
b
=
0
,
V
=
0
;
V
<
e
.
length
;
V
++
)
for
(
var
U
=
0
;
U
<
e
[
V
].
data
.
length
;
U
++
){
var
f
=
e
[
V
].
data
[
U
];
f
.
time
=
[],
f
.
value
=
[];
for
(
var
p
=
0
;
p
<
e
[
V
].
data
[
U
].
evolution
.
length
;
p
++
)
f
.
time
.
push
(
e
[
V
].
data
[
U
].
evolution
[
p
].
timeScale
),
f
.
value
.
push
(
e
[
V
].
data
[
U
].
evolution
[
p
].
valueScale
);
var
k
=
l
(
f
.
value
,
Math
.
max
.
apply
(
Math
,
f
.
value
)),
x
=
i
(
g
,
f
.
time
[
k
],
f
.
time
[
k
+
1
]),
p
=
0
;
for
(
f
.
y
=
x
+
f
.
value
[
k
]
/
2
+
h
,
p
=
0
;
p
<
f
.
time
.
length
-
1
;
p
++
){
var
_
=
i
(
g
,
f
.
time
[
p
],
f
.
time
[
p
+
1
]);
f
.
y
-
f
.
value
[
p
]
/
2
-
h
<
_
&&
(
f
.
y
=
_
+
f
.
value
[
p
]
/
2
+
h
)}
var
_
=
i
(
g
,
f
.
time
[
p
],
f
.
time
[
p
]
+
m
);
for
(
f
.
y
-
f
.
value
[
p
]
/
2
-
h
<
_
&&
(
f
.
y
=
_
+
f
.
value
[
p
]
/
2
+
h
),
e
[
V
].
y
=
f
.
y
,
b
=
Math
.
max
(
b
,
f
.
y
+
f
.
value
[
k
]
/
2
),
p
=
0
;
p
<
f
.
time
.
length
-
1
;
p
++
)
a
(
g
,
f
.
time
[
p
],
f
.
time
[
p
+
1
],
f
.
y
+
f
.
value
[
p
]
/
2
);
a
(
g
,
f
.
time
[
p
],
f
.
time
[
p
]
+
m
,
f
.
y
+
f
.
value
[
p
]
/
2
)}
t
(
e
,
r
,
b
,
h
)}
function
t
(
e
,
t
,
n
,
i
){
for
(
var
a
=
t
.
y
,
o
=
(
t
.
height
-
i
)
/
n
,
r
=
0
;
r
<
e
.
length
;
r
++
){
e
[
r
].
y
=
e
[
r
].
y
*
o
+
a
;
for
(
var
s
=
e
[
r
].
data
,
l
=
0
;
l
<
s
.
length
;
l
++
){
s
[
l
].
y
=
s
[
l
].
y
*
o
+
a
;
for
(
var
h
=
s
[
l
].
evolution
,
m
=
0
;
m
<
h
.
length
;
m
++
)
h
[
m
].
valueScale
*=
1
*
o
}}}
function
n
(
e
,
t
){
var
i
=
{
left
:
e
,
right
:
t
,
leftChild
:
null
,
rightChild
:
null
,
maxValue
:
0
};
if
(
t
>
e
+
1
){
var
a
=
Math
.
round
((
e
+
t
)
/
2
);
i
.
leftChild
=
n
(
e
,
a
),
i
.
rightChild
=
n
(
a
,
t
)}
return
i
}
function
i
(
e
,
t
,
n
){
if
(
1
>
n
-
t
)
return
0
;
var
a
=
Math
.
round
((
e
.
left
+
e
.
right
)
/
2
),
o
=
0
;
if
(
t
==
e
.
left
&&
n
==
e
.
right
)
o
=
e
.
maxValue
;
else
if
(
a
>=
n
&&
null
!=
e
.
leftChild
)
o
=
i
(
e
.
leftChild
,
t
,
n
);
else
if
(
t
>=
a
&&
null
!=
e
.
rightChild
)
o
=
i
(
e
.
rightChild
,
t
,
n
);
else
{
var
r
=
0
,
s
=
0
;
null
!=
e
.
leftChild
&&
(
r
=
i
(
e
.
leftChild
,
t
,
a
)),
null
!=
e
.
rightChild
&&
(
s
=
i
(
e
.
rightChild
,
a
,
n
)),
o
=
r
>
s
?
r
:
s
}
return
o
}
function
a
(
e
,
t
,
n
,
i
){
if
(
null
!=
e
){
var
o
=
Math
.
round
((
e
.
left
+
e
.
right
)
/
2
);
e
.
maxValue
=
e
.
maxValue
>
i
?
e
.
maxValue
:
i
,(
Math
.
floor
(
10
*
t
)
!=
Math
.
floor
(
10
*
e
.
left
)
||
Math
.
floor
(
10
*
n
)
!=
Math
.
floor
(
10
*
e
.
right
))
&&
(
o
>=
n
?
a
(
e
.
leftChild
,
t
,
n
,
i
):
t
>=
o
?
a
(
e
.
rightChild
,
t
,
n
,
i
):(
a
(
e
.
leftChild
,
t
,
o
,
i
),
a
(
e
.
rightChild
,
o
,
n
,
i
)))}}
return
e
});
\ No newline at end of file
define
(
"
echarts/chart/eventRiver
"
,[
"
require
"
,
"
./base
"
,
"
../layout/eventRiver
"
,
"
zrender/shape/Polygon
"
,
"
../component/axis
"
,
"
../component/grid
"
,
"
../component/dataZoom
"
,
"
../config
"
,
"
../util/ecData
"
,
"
../util/date
"
,
"
zrender/tool/util
"
,
"
zrender/tool/color
"
,
"
../chart
"
],
function
(
e
){
function
t
(
e
,
t
,
i
,
a
,
o
){
n
.
call
(
this
,
e
,
t
,
i
,
a
,
o
);
var
r
=
this
;
r
.
_ondragend
=
function
(){
r
.
isDragend
=!
0
},
this
.
refresh
(
a
)}
var
n
=
e
(
"
./base
"
),
i
=
e
(
"
../layout/eventRiver
"
),
a
=
e
(
"
zrender/shape/Polygon
"
);
e
(
"
../component/axis
"
),
e
(
"
../component/grid
"
),
e
(
"
../component/dataZoom
"
);
var
o
=
e
(
"
../config
"
);
o
.
eventRiver
=
{
zlevel
:
0
,
z
:
2
,
clickable
:
!
0
,
legendHoverLink
:
!
0
,
itemStyle
:{
normal
:{
borderColor
:
"
rgba(0,0,0,0)
"
,
borderWidth
:
1
,
label
:{
show
:
!
0
,
position
:
"
inside
"
,
formatter
:
"
{b}
"
}},
emphasis
:{
borderColor
:
"
rgba(0,0,0,0)
"
,
borderWidth
:
1
,
label
:{
show
:
!
0
}}}};
var
r
=
e
(
"
../util/ecData
"
),
s
=
e
(
"
../util/date
"
),
l
=
e
(
"
zrender/tool/util
"
),
h
=
e
(
"
zrender/tool/color
"
);
return
t
.
prototype
=
{
type
:
o
.
CHART_TYPE_EVENTRIVER
,
_buildShape
:
function
(){
var
e
=
this
.
series
;
this
.
selectedMap
=
{},
this
.
_dataPreprocessing
();
for
(
var
t
=
this
.
component
.
legend
,
n
=
[],
a
=
0
;
a
<
e
.
length
;
a
++
)
if
(
e
[
a
].
type
===
this
.
type
){
e
[
a
]
=
this
.
reformOption
(
e
[
a
]),
this
.
legendHoverLink
=
e
[
a
].
legendHoverLink
||
this
.
legendHoverLink
;
var
o
=
e
[
a
].
name
||
""
;
if
(
this
.
selectedMap
[
o
]
=
t
?
t
.
isSelected
(
o
):
!
0
,
!
this
.
selectedMap
[
o
])
continue
;
this
.
buildMark
(
a
),
n
.
push
(
this
.
series
[
a
])}
i
(
n
,
this
.
_intervalX
,
this
.
component
.
grid
.
getArea
()),
this
.
_drawEventRiver
(),
this
.
addShapeList
()},
_dataPreprocessing
:
function
(){
for
(
var
e
,
t
,
n
=
this
.
series
,
i
=
0
,
a
=
n
.
length
;
a
>
i
;
i
++
)
if
(
n
[
i
].
type
===
this
.
type
){
e
=
this
.
component
.
xAxis
.
getAxis
(
n
[
i
].
xAxisIndex
||
0
);
for
(
var
o
=
0
,
r
=
n
[
i
].
data
.
length
;
r
>
o
;
o
++
){
t
=
n
[
i
].
data
[
o
].
evolution
;
for
(
var
l
=
0
,
h
=
t
.
length
;
h
>
l
;
l
++
)
t
[
l
].
timeScale
=
e
.
getCoord
(
s
.
getNewDate
(
t
[
l
].
time
)
-
0
),
t
[
l
].
valueScale
=
Math
.
pow
(
t
[
l
].
value
,.
8
)}}
this
.
_intervalX
=
Math
.
round
(
this
.
component
.
grid
.
getWidth
()
/
40
)},
_drawEventRiver
:
function
(){
for
(
var
e
=
this
.
series
,
t
=
0
;
t
<
e
.
length
;
t
++
){
var
n
=
e
[
t
].
name
||
""
;
if
(
e
[
t
].
type
===
this
.
type
&&
this
.
selectedMap
[
n
])
for
(
var
i
=
0
;
i
<
e
[
t
].
data
.
length
;
i
++
)
this
.
_drawEventBubble
(
e
[
t
].
data
[
i
],
t
,
i
)}},
_drawEventBubble
:
function
(
e
,
t
,
n
){
var
i
=
this
.
series
,
o
=
i
[
t
],
s
=
o
.
name
||
""
,
l
=
o
.
data
[
n
],
m
=
[
l
,
o
],
V
=
this
.
component
.
legend
,
U
=
V
?
V
.
getColor
(
s
):
this
.
zr
.
getColor
(
t
),
d
=
this
.
deepMerge
(
m
,
"
itemStyle.normal
"
)
||
{},
p
=
this
.
deepMerge
(
m
,
"
itemStyle.emphasis
"
)
||
{},
c
=
this
.
getItemStyleColor
(
d
.
color
,
t
,
n
,
l
)
||
U
,
u
=
this
.
getItemStyleColor
(
p
.
color
,
t
,
n
,
l
)
||
(
"
string
"
==
typeof
c
?
h
.
lift
(
c
,
-
.
2
):
c
),
g
=
this
.
_calculateControlPoints
(
e
),
y
=
{
zlevel
:
this
.
getZlevelBase
(),
z
:
this
.
getZBase
(),
clickable
:
this
.
deepQuery
(
m
,
"
clickable
"
),
style
:{
pointList
:
g
,
smooth
:
"
spline
"
,
brushType
:
"
both
"
,
lineJoin
:
"
round
"
,
color
:
c
,
lineWidth
:
d
.
borderWidth
,
strokeColor
:
d
.
borderColor
},
highlightStyle
:{
color
:
u
,
lineWidth
:
p
.
borderWidth
,
strokeColor
:
p
.
borderColor
},
draggable
:
"
vertical
"
,
ondragend
:
this
.
_ondragend
};
y
=
new
a
(
y
),
this
.
addLabel
(
y
,
o
,
l
,
e
.
name
),
r
.
pack
(
y
,
i
[
t
],
t
,
i
[
t
].
data
[
n
],
n
,
i
[
t
].
data
[
n
].
name
),
this
.
shapeList
.
push
(
y
)},
_calculateControlPoints
:
function
(
e
){
var
t
=
this
.
_intervalX
,
n
=
e
.
y
,
i
=
e
.
evolution
,
a
=
i
.
length
;
if
(
!
(
1
>
a
)){
for
(
var
o
=
[],
r
=
[],
s
=
0
;
a
>
s
;
s
++
)
o
.
push
(
i
[
s
].
timeScale
),
r
.
push
(
i
[
s
].
valueScale
);
var
l
=
[];
l
.
push
([
o
[
0
],
n
]);
var
s
=
0
;
for
(
s
=
0
;
a
-
1
>
s
;
s
++
)
l
.
push
([(
o
[
s
]
+
o
[
s
+
1
])
/
2
,
r
[
s
]
/-
2
+
n
]);
for
(
l
.
push
([(
o
[
s
]
+
(
o
[
s
]
+
t
))
/
2
,
r
[
s
]
/-
2
+
n
]),
l
.
push
([
o
[
s
]
+
t
,
n
]),
l
.
push
([(
o
[
s
]
+
(
o
[
s
]
+
t
))
/
2
,
r
[
s
]
/
2
+
n
]),
s
=
a
-
1
;
s
>
0
;
s
--
)
l
.
push
([(
o
[
s
]
+
o
[
s
-
1
])
/
2
,
r
[
s
-
1
]
/
2
+
n
]);
return
l
}},
ondragend
:
function
(
e
,
t
){
this
.
isDragend
&&
e
.
target
&&
(
t
.
dragOut
=!
0
,
t
.
dragIn
=!
0
,
t
.
needRefresh
=!
1
,
this
.
isDragend
=!
1
)},
refresh
:
function
(
e
){
e
&&
(
this
.
option
=
e
,
this
.
series
=
e
.
series
),
this
.
backupShapeList
(),
this
.
_buildShape
()}},
l
.
inherits
(
t
,
n
),
e
(
"
../chart
"
).
define
(
"
eventRiver
"
,
t
),
t
}),
define
(
"
echarts/layout/eventRiver
"
,[
"
require
"
],
function
(){
function
e
(
e
,
o
,
r
){
function
s
(
e
,
t
){
var
n
=
e
.
importance
,
i
=
t
.
importance
;
return
n
>
i
?
-
1
:
i
>
n
?
1
:
0
}
function
l
(
e
,
t
){
if
(
e
.
indexOf
)
return
e
.
indexOf
(
t
);
for
(
var
n
=
0
,
i
=
e
.
length
;
i
>
n
;
n
++
)
if
(
e
[
n
]
===
t
)
return
n
;
return
-
1
}
for
(
var
h
=
5
,
m
=
o
,
V
=
0
;
V
<
e
.
length
;
V
++
){
for
(
var
U
=
0
;
U
<
e
[
V
].
data
.
length
;
U
++
){
null
==
e
[
V
].
data
[
U
].
weight
&&
(
e
[
V
].
data
[
U
].
weight
=
1
);
for
(
var
d
=
0
,
p
=
0
;
p
<
e
[
V
].
data
[
U
].
evolution
.
length
;
p
++
)
d
+=
e
[
V
].
data
[
U
].
evolution
[
p
].
valueScale
;
e
[
V
].
data
[
U
].
importance
=
d
*
e
[
V
].
data
[
U
].
weight
}
e
[
V
].
data
.
sort
(
s
)}
for
(
var
V
=
0
;
V
<
e
.
length
;
V
++
){
null
==
e
[
V
].
weight
&&
(
e
[
V
].
weight
=
1
);
for
(
var
d
=
0
,
U
=
0
;
U
<
e
[
V
].
data
.
length
;
U
++
)
d
+=
e
[
V
].
data
[
U
].
weight
;
e
[
V
].
importance
=
d
*
e
[
V
].
weight
}
e
.
sort
(
s
);
for
(
var
c
=
Number
.
MAX_VALUE
,
u
=
0
,
V
=
0
;
V
<
e
.
length
;
V
++
)
for
(
var
U
=
0
;
U
<
e
[
V
].
data
.
length
;
U
++
)
for
(
var
p
=
0
;
p
<
e
[
V
].
data
[
U
].
evolution
.
length
;
p
++
){
var
g
=
e
[
V
].
data
[
U
].
evolution
[
p
].
timeScale
;
c
=
Math
.
min
(
c
,
g
),
u
=
Math
.
max
(
u
,
g
)}
for
(
var
y
=
n
(
Math
.
floor
(
c
),
Math
.
ceil
(
u
)),
b
=
0
,
V
=
0
;
V
<
e
.
length
;
V
++
)
for
(
var
U
=
0
;
U
<
e
[
V
].
data
.
length
;
U
++
){
var
f
=
e
[
V
].
data
[
U
];
f
.
time
=
[],
f
.
value
=
[];
for
(
var
p
=
0
;
p
<
e
[
V
].
data
[
U
].
evolution
.
length
;
p
++
)
f
.
time
.
push
(
e
[
V
].
data
[
U
].
evolution
[
p
].
timeScale
),
f
.
value
.
push
(
e
[
V
].
data
[
U
].
evolution
[
p
].
valueScale
);
var
k
=
l
(
f
.
value
,
Math
.
max
.
apply
(
Math
,
f
.
value
)),
x
=
i
(
y
,
f
.
time
[
k
],
f
.
time
[
k
+
1
]),
p
=
0
;
for
(
f
.
y
=
x
+
f
.
value
[
k
]
/
2
+
h
,
p
=
0
;
p
<
f
.
time
.
length
-
1
;
p
++
){
var
_
=
i
(
y
,
f
.
time
[
p
],
f
.
time
[
p
+
1
]);
f
.
y
-
f
.
value
[
p
]
/
2
-
h
<
_
&&
(
f
.
y
=
_
+
f
.
value
[
p
]
/
2
+
h
)}
var
_
=
i
(
y
,
f
.
time
[
p
],
f
.
time
[
p
]
+
m
);
for
(
f
.
y
-
f
.
value
[
p
]
/
2
-
h
<
_
&&
(
f
.
y
=
_
+
f
.
value
[
p
]
/
2
+
h
),
e
[
V
].
y
=
f
.
y
,
b
=
Math
.
max
(
b
,
f
.
y
+
f
.
value
[
k
]
/
2
),
p
=
0
;
p
<
f
.
time
.
length
-
1
;
p
++
)
a
(
y
,
f
.
time
[
p
],
f
.
time
[
p
+
1
],
f
.
y
+
f
.
value
[
p
]
/
2
);
a
(
y
,
f
.
time
[
p
],
f
.
time
[
p
]
+
m
,
f
.
y
+
f
.
value
[
p
]
/
2
)}
t
(
e
,
r
,
b
,
h
)}
function
t
(
e
,
t
,
n
,
i
){
for
(
var
a
=
t
.
y
,
o
=
(
t
.
height
-
i
)
/
n
,
r
=
0
;
r
<
e
.
length
;
r
++
){
e
[
r
].
y
=
e
[
r
].
y
*
o
+
a
;
for
(
var
s
=
e
[
r
].
data
,
l
=
0
;
l
<
s
.
length
;
l
++
){
s
[
l
].
y
=
s
[
l
].
y
*
o
+
a
;
for
(
var
h
=
s
[
l
].
evolution
,
m
=
0
;
m
<
h
.
length
;
m
++
)
h
[
m
].
valueScale
*=
1
*
o
}}}
function
n
(
e
,
t
){
var
i
=
{
left
:
e
,
right
:
t
,
leftChild
:
null
,
rightChild
:
null
,
maxValue
:
0
};
if
(
t
>
e
+
1
){
var
a
=
Math
.
round
((
e
+
t
)
/
2
);
i
.
leftChild
=
n
(
e
,
a
),
i
.
rightChild
=
n
(
a
,
t
)}
return
i
}
function
i
(
e
,
t
,
n
){
if
(
1
>
n
-
t
)
return
0
;
var
a
=
Math
.
round
((
e
.
left
+
e
.
right
)
/
2
),
o
=
0
;
if
(
t
==
e
.
left
&&
n
==
e
.
right
)
o
=
e
.
maxValue
;
else
if
(
a
>=
n
&&
null
!=
e
.
leftChild
)
o
=
i
(
e
.
leftChild
,
t
,
n
);
else
if
(
t
>=
a
&&
null
!=
e
.
rightChild
)
o
=
i
(
e
.
rightChild
,
t
,
n
);
else
{
var
r
=
0
,
s
=
0
;
null
!=
e
.
leftChild
&&
(
r
=
i
(
e
.
leftChild
,
t
,
a
)),
null
!=
e
.
rightChild
&&
(
s
=
i
(
e
.
rightChild
,
a
,
n
)),
o
=
r
>
s
?
r
:
s
}
return
o
}
function
a
(
e
,
t
,
n
,
i
){
if
(
null
!=
e
){
var
o
=
Math
.
round
((
e
.
left
+
e
.
right
)
/
2
);
e
.
maxValue
=
e
.
maxValue
>
i
?
e
.
maxValue
:
i
,(
Math
.
floor
(
10
*
t
)
!=
Math
.
floor
(
10
*
e
.
left
)
||
Math
.
floor
(
10
*
n
)
!=
Math
.
floor
(
10
*
e
.
right
))
&&
(
o
>=
n
?
a
(
e
.
leftChild
,
t
,
n
,
i
):
t
>=
o
?
a
(
e
.
rightChild
,
t
,
n
,
i
):(
a
(
e
.
leftChild
,
t
,
o
,
i
),
a
(
e
.
rightChild
,
o
,
n
,
i
)))}}
return
e
});
\ No newline at end of file
doc/example/www/js/chart/force.js
浏览文件 @
b5f18a56
此差异已折叠。
点击以展开。
doc/example/www/js/chart/funnel.js
浏览文件 @
b5f18a56
define
(
"
echarts/chart/funnel
"
,[
"
require
"
,
"
./base
"
,
"
zrender/shape/Text
"
,
"
zrender/shape/Line
"
,
"
zrender/shape/Polygon
"
,
"
../config
"
,
"
../util/ecData
"
,
"
../util/number
"
,
"
zrender/tool/util
"
,
"
zrender/tool/color
"
,
"
zrender/tool/area
"
,
"
../chart
"
],
function
(
e
){
function
t
(
e
,
t
,
i
,
a
,
o
){
n
.
call
(
this
,
e
,
t
,
i
,
a
,
o
),
this
.
refresh
(
a
)}
var
n
=
e
(
"
./base
"
),
i
=
e
(
"
zrender/shape/Text
"
),
a
=
e
(
"
zrender/shape/Line
"
),
o
=
e
(
"
zrender/shape/Polygon
"
),
r
=
e
(
"
../config
"
);
r
.
funnel
=
{
zlevel
:
0
,
z
:
2
,
clickable
:
!
0
,
legendHoverLink
:
!
0
,
x
:
80
,
y
:
60
,
x2
:
80
,
y2
:
60
,
min
:
0
,
max
:
100
,
minSize
:
"
0%
"
,
maxSize
:
"
100%
"
,
sort
:
"
descending
"
,
gap
:
0
,
funnelAlign
:
"
center
"
,
itemStyle
:{
normal
:{
borderColor
:
"
#fff
"
,
borderWidth
:
1
,
label
:{
show
:
!
0
,
position
:
"
outer
"
},
labelLine
:{
show
:
!
0
,
length
:
10
,
lineStyle
:{
width
:
1
,
type
:
"
solid
"
}}},
emphasis
:{
borderColor
:
"
rgba(0,0,0,0)
"
,
borderWidth
:
1
,
label
:{
show
:
!
0
},
labelLine
:{
show
:
!
0
}}}};
var
s
=
e
(
"
../util/ecData
"
),
l
=
e
(
"
../util/number
"
),
h
=
e
(
"
zrender/tool/util
"
),
m
=
e
(
"
zrender/tool/color
"
),
V
=
e
(
"
zrender/tool/area
"
);
return
t
.
prototype
=
{
type
:
r
.
CHART_TYPE_FUNNEL
,
_buildShape
:
function
(){
var
e
=
this
.
series
,
t
=
this
.
component
.
legend
;
this
.
_paramsMap
=
{},
this
.
_selected
=
{},
this
.
selectedMap
=
{};
for
(
var
n
,
i
=
0
,
a
=
e
.
length
;
a
>
i
;
i
++
)
if
(
e
[
i
].
type
===
r
.
CHART_TYPE_FUNNEL
){
if
(
e
[
i
]
=
this
.
reformOption
(
e
[
i
]),
this
.
legendHoverLink
=
e
[
i
].
legendHoverLink
||
this
.
legendHoverLink
,
n
=
e
[
i
].
name
||
""
,
this
.
selectedMap
[
n
]
=
t
?
t
.
isSelected
(
n
):
!
0
,
!
this
.
selectedMap
[
n
])
continue
;
this
.
_buildSingleFunnel
(
i
),
this
.
buildMark
(
i
)}
this
.
addShapeList
()},
_buildSingleFunnel
:
function
(
e
){
var
t
=
this
.
component
.
legend
,
n
=
this
.
series
[
e
],
i
=
this
.
_mapData
(
e
),
a
=
this
.
_getLocation
(
e
);
this
.
_paramsMap
[
e
]
=
{
location
:
a
,
data
:
i
};
for
(
var
o
,
r
=
0
,
s
=
[],
h
=
0
,
m
=
i
.
length
;
m
>
h
;
h
++
)
o
=
i
[
h
].
name
,
this
.
selectedMap
[
o
]
=
t
?
t
.
isSelected
(
o
):
!
0
,
this
.
selectedMap
[
o
]
&&!
isNaN
(
i
[
h
].
value
)
&&
(
s
.
push
(
i
[
h
]),
r
++
);
if
(
0
!==
r
){
for
(
var
V
,
U
,
d
,
p
,
c
=
this
.
_buildFunnelCase
(
e
),
u
=
n
.
funnelAlign
,
y
=
n
.
gap
,
g
=
r
>
1
?(
a
.
height
-
(
r
-
1
)
*
y
)
/
r
:
a
.
height
,
b
=
a
.
y
,
f
=
"
descending
"
===
n
.
sort
?
this
.
_getItemWidth
(
e
,
s
[
0
].
value
):
l
.
parsePercent
(
n
.
minSize
,
a
.
width
),
k
=
"
descending
"
===
n
.
sort
?
1
:
0
,
x
=
a
.
centerX
,
_
=
[],
h
=
0
,
m
=
s
.
length
;
m
>
h
;
h
++
)
if
(
o
=
s
[
h
].
name
,
this
.
selectedMap
[
o
]
&&!
isNaN
(
s
[
h
].
value
)){
switch
(
V
=
m
-
2
>=
h
?
this
.
_getItemWidth
(
e
,
s
[
h
+
k
].
value
):
"
descending
"
===
n
.
sort
?
l
.
parsePercent
(
n
.
minSize
,
a
.
width
):
l
.
parsePercent
(
n
.
maxSize
,
a
.
width
),
u
){
case
"
left
"
:
U
=
a
.
x
;
break
;
case
"
right
"
:
U
=
a
.
x
+
a
.
width
-
f
;
break
;
default
:
U
=
x
-
f
/
2
}
d
=
this
.
_buildItem
(
e
,
s
[
h
].
_index
,
t
?
t
.
getColor
(
o
):
this
.
zr
.
getColor
(
s
[
h
].
_index
),
U
,
b
,
f
,
V
,
g
,
u
),
b
+=
g
+
y
,
p
=
d
.
style
.
pointList
,
_
.
unshift
([
p
[
0
][
0
]
-
10
,
p
[
0
][
1
]]),
_
.
push
([
p
[
1
][
0
]
+
10
,
p
[
1
][
1
]]),
0
===
h
&&
(
0
===
f
?(
p
=
_
.
pop
(),
"
center
"
==
u
&&
(
_
[
0
][
0
]
+=
10
),
"
right
"
==
u
&&
(
_
[
0
][
0
]
=
p
[
0
]),
_
[
0
][
1
]
-=
"
center
"
==
u
?
10
:
15
,
1
==
m
&&
(
p
=
d
.
style
.
pointList
)):(
_
[
_
.
length
-
1
][
1
]
-=
5
,
_
[
0
][
1
]
-=
5
)),
f
=
V
}
c
&&
(
_
.
unshift
([
p
[
3
][
0
]
-
10
,
p
[
3
][
1
]]),
_
.
push
([
p
[
2
][
0
]
+
10
,
p
[
2
][
1
]]),
0
===
f
?(
p
=
_
.
pop
(),
"
center
"
==
u
&&
(
_
[
0
][
0
]
+=
10
),
"
right
"
==
u
&&
(
_
[
0
][
0
]
=
p
[
0
]),
_
[
0
][
1
]
+=
"
center
"
==
u
?
10
:
15
):(
_
[
_
.
length
-
1
][
1
]
+=
5
,
_
[
0
][
1
]
+=
5
),
c
.
style
.
pointList
=
_
)}},
_buildFunnelCase
:
function
(
e
){
var
t
=
this
.
series
[
e
];
if
(
this
.
deepQuery
([
t
,
this
.
option
],
"
calculable
"
)){
var
n
=
this
.
_paramsMap
[
e
].
location
,
i
=
10
,
a
=
{
hoverable
:
!
1
,
style
:{
pointListd
:[[
n
.
x
-
i
,
n
.
y
-
i
],[
n
.
x
+
n
.
width
+
i
,
n
.
y
-
i
],[
n
.
x
+
n
.
width
+
i
,
n
.
y
+
n
.
height
+
i
],[
n
.
x
-
i
,
n
.
y
+
n
.
height
+
i
]],
brushType
:
"
stroke
"
,
lineWidth
:
1
,
strokeColor
:
t
.
calculableHolderColor
||
this
.
ecTheme
.
calculableHolderColor
||
r
.
calculableHolderColor
}};
return
s
.
pack
(
a
,
t
,
e
,
void
0
,
-
1
),
this
.
setCalculable
(
a
),
a
=
new
o
(
a
),
this
.
shapeList
.
push
(
a
),
a
}},
_getLocation
:
function
(
e
){
var
t
=
this
.
series
[
e
],
n
=
this
.
zr
.
getWidth
(),
i
=
this
.
zr
.
getHeight
(),
a
=
this
.
parsePercent
(
t
.
x
,
n
),
o
=
this
.
parsePercent
(
t
.
y
,
i
),
r
=
null
==
t
.
width
?
n
-
a
-
this
.
parsePercent
(
t
.
x2
,
n
):
this
.
parsePercent
(
t
.
width
,
n
);
return
{
x
:
a
,
y
:
o
,
width
:
r
,
height
:
null
==
t
.
height
?
i
-
o
-
this
.
parsePercent
(
t
.
y2
,
i
):
this
.
parsePercent
(
t
.
height
,
i
),
centerX
:
a
+
r
/
2
}},
_mapData
:
function
(
e
){
function
t
(
e
,
t
){
return
"
-
"
===
e
.
value
?
1
:
"
-
"
===
t
.
value
?
-
1
:
t
.
value
-
e
.
value
}
function
n
(
e
,
n
){
return
-
t
(
e
,
n
)}
for
(
var
i
=
this
.
series
[
e
],
a
=
h
.
clone
(
i
.
data
),
o
=
0
,
r
=
a
.
length
;
r
>
o
;
o
++
)
a
[
o
].
_index
=
o
;
return
"
none
"
!=
i
.
sort
&&
a
.
sort
(
"
descending
"
===
i
.
sort
?
t
:
n
),
a
},
_buildItem
:
function
(
e
,
t
,
n
,
i
,
a
,
o
,
r
,
l
,
h
){
var
m
=
this
.
series
,
V
=
m
[
e
],
U
=
V
.
data
[
t
],
d
=
this
.
getPolygon
(
e
,
t
,
n
,
i
,
a
,
o
,
r
,
l
,
h
);
s
.
pack
(
d
,
m
[
e
],
e
,
m
[
e
].
data
[
t
],
t
,
m
[
e
].
data
[
t
].
name
),
this
.
shapeList
.
push
(
d
);
var
p
=
this
.
getLabel
(
e
,
t
,
n
,
i
,
a
,
o
,
r
,
l
,
h
);
s
.
pack
(
p
,
m
[
e
],
e
,
m
[
e
].
data
[
t
],
t
,
m
[
e
].
data
[
t
].
name
),
this
.
shapeList
.
push
(
p
),
this
.
_needLabel
(
V
,
U
,
!
1
)
||
(
p
.
invisible
=!
0
);
var
c
=
this
.
getLabelLine
(
e
,
t
,
n
,
i
,
a
,
o
,
r
,
l
,
h
);
this
.
shapeList
.
push
(
c
),
this
.
_needLabelLine
(
V
,
U
,
!
1
)
||
(
c
.
invisible
=!
0
);
var
u
=
[],
y
=
[];
return
this
.
_needLabelLine
(
V
,
U
,
!
0
)
&&
(
u
.
push
(
c
.
id
),
y
.
push
(
c
.
id
)),
this
.
_needLabel
(
V
,
U
,
!
0
)
&&
(
u
.
push
(
p
.
id
),
y
.
push
(
d
.
id
)),
d
.
hoverConnect
=
u
,
p
.
hoverConnect
=
y
,
d
},
_getItemWidth
:
function
(
e
,
t
){
var
n
=
this
.
series
[
e
],
i
=
this
.
_paramsMap
[
e
].
location
,
a
=
n
.
min
,
o
=
n
.
max
,
r
=
l
.
parsePercent
(
n
.
minSize
,
i
.
width
),
s
=
l
.
parsePercent
(
n
.
maxSize
,
i
.
width
);
return
(
t
-
a
)
*
(
s
-
r
)
/
(
o
-
a
)
+
r
},
getPolygon
:
function
(
e
,
t
,
n
,
i
,
a
,
r
,
s
,
l
,
h
){
var
V
,
U
=
this
.
series
[
e
],
d
=
U
.
data
[
t
],
p
=
[
d
,
U
],
c
=
this
.
deepMerge
(
p
,
"
itemStyle.normal
"
)
||
{},
u
=
this
.
deepMerge
(
p
,
"
itemStyle.emphasis
"
)
||
{},
y
=
this
.
getItemStyleColor
(
c
.
color
,
e
,
t
,
d
)
||
n
,
g
=
this
.
getItemStyleColor
(
u
.
color
,
e
,
t
,
d
)
||
(
"
string
"
==
typeof
y
?
m
.
lift
(
y
,
-
.
2
):
y
);
switch
(
h
){
case
"
left
"
:
V
=
i
;
break
;
case
"
right
"
:
V
=
i
+
(
r
-
s
);
break
;
default
:
V
=
i
+
(
r
-
s
)
/
2
}
var
b
=
{
zlevel
:
this
.
getZlevelBase
(),
z
:
this
.
getZBase
(),
clickable
:
this
.
deepQuery
(
p
,
"
clickable
"
),
style
:{
pointList
:[[
i
,
a
],[
i
+
r
,
a
],[
V
+
s
,
a
+
l
],[
V
,
a
+
l
]],
brushType
:
"
both
"
,
color
:
y
,
lineWidth
:
c
.
borderWidth
,
strokeColor
:
c
.
borderColor
},
highlightStyle
:{
color
:
g
,
lineWidth
:
u
.
borderWidth
,
strokeColor
:
u
.
borderColor
}};
return
this
.
deepQuery
([
d
,
U
,
this
.
option
],
"
calculable
"
)
&&
(
this
.
setCalculable
(
b
),
b
.
draggable
=!
0
),
new
o
(
b
)},
getLabel
:
function
(
e
,
t
,
n
,
a
,
o
,
r
,
s
,
l
,
U
){
var
d
,
p
=
this
.
series
[
e
],
c
=
p
.
data
[
t
],
u
=
this
.
_paramsMap
[
e
].
location
,
y
=
h
.
merge
(
h
.
clone
(
c
.
itemStyle
)
||
{},
p
.
itemStyle
),
g
=
"
normal
"
,
b
=
y
[
g
].
label
,
f
=
b
.
textStyle
||
{},
k
=
y
[
g
].
labelLine
.
length
,
x
=
this
.
getLabelText
(
e
,
t
,
g
),
_
=
this
.
getFont
(
f
),
L
=
n
;
b
.
position
=
b
.
position
||
y
.
normal
.
label
.
position
,
"
inner
"
===
b
.
position
||
"
inside
"
===
b
.
position
||
"
center
"
===
b
.
position
?(
d
=
U
,
L
=
Math
.
max
(
r
,
s
)
/
2
>
V
.
getTextWidth
(
x
,
_
)?
"
#fff
"
:
m
.
reverse
(
n
)):
d
=
"
left
"
===
b
.
position
?
"
right
"
:
"
left
"
;
var
W
=
{
zlevel
:
this
.
getZlevelBase
(),
z
:
this
.
getZBase
()
+
1
,
style
:{
x
:
this
.
_getLabelPoint
(
b
.
position
,
a
,
u
,
r
,
s
,
k
,
U
),
y
:
o
+
l
/
2
,
color
:
f
.
color
||
L
,
text
:
x
,
textAlign
:
f
.
align
||
d
,
textBaseline
:
f
.
baseline
||
"
middle
"
,
textFont
:
_
}};
return
g
=
"
emphasis
"
,
b
=
y
[
g
].
label
||
b
,
f
=
b
.
textStyle
||
f
,
k
=
y
[
g
].
labelLine
.
length
||
k
,
b
.
position
=
b
.
position
||
y
.
normal
.
label
.
position
,
x
=
this
.
getLabelText
(
e
,
t
,
g
),
_
=
this
.
getFont
(
f
),
L
=
n
,
"
inner
"
===
b
.
position
||
"
inside
"
===
b
.
position
||
"
center
"
===
b
.
position
?(
d
=
U
,
L
=
Math
.
max
(
r
,
s
)
/
2
>
V
.
getTextWidth
(
x
,
_
)?
"
#fff
"
:
m
.
reverse
(
n
)):
d
=
"
left
"
===
b
.
position
?
"
right
"
:
"
left
"
,
W
.
highlightStyle
=
{
x
:
this
.
_getLabelPoint
(
b
.
position
,
a
,
u
,
r
,
s
,
k
,
U
),
color
:
f
.
color
||
L
,
text
:
x
,
textAlign
:
f
.
align
||
d
,
textFont
:
_
,
brushType
:
"
fill
"
},
new
i
(
W
)},
getLabelText
:
function
(
e
,
t
,
n
){
var
i
=
this
.
series
,
a
=
i
[
e
],
o
=
a
.
data
[
t
],
r
=
this
.
deepQuery
([
o
,
a
],
"
itemStyle.
"
+
n
+
"
.label.formatter
"
);
return
r
?
"
function
"
==
typeof
r
?
r
.
call
(
this
.
myChart
,{
seriesIndex
:
e
,
seriesName
:
a
.
name
||
""
,
series
:
a
,
dataIndex
:
t
,
data
:
o
,
name
:
o
.
name
,
value
:
o
.
value
}):
"
string
"
==
typeof
r
?
r
=
r
.
replace
(
"
{a}
"
,
"
{a0}
"
).
replace
(
"
{b}
"
,
"
{b0}
"
).
replace
(
"
{c}
"
,
"
{c0}
"
).
replace
(
"
{a0}
"
,
a
.
name
).
replace
(
"
{b0}
"
,
o
.
name
).
replace
(
"
{c0}
"
,
o
.
value
):
void
0
:
o
.
name
},
getLabelLine
:
function
(
e
,
t
,
n
,
i
,
o
,
r
,
s
,
l
,
m
){
var
V
=
this
.
series
[
e
],
U
=
V
.
data
[
t
],
d
=
this
.
_paramsMap
[
e
].
location
,
p
=
h
.
merge
(
h
.
clone
(
U
.
itemStyle
)
||
{},
V
.
itemStyle
),
c
=
"
normal
"
,
u
=
p
[
c
].
labelLine
,
y
=
p
[
c
].
labelLine
.
length
,
g
=
u
.
lineStyle
||
{},
b
=
p
[
c
].
label
;
b
.
position
=
b
.
position
||
p
.
normal
.
label
.
position
;
var
f
=
{
zlevel
:
this
.
getZlevelBase
(),
z
:
this
.
getZBase
()
+
1
,
hoverable
:
!
1
,
style
:{
xStart
:
this
.
_getLabelLineStartPoint
(
i
,
d
,
r
,
s
,
m
),
yStart
:
o
+
l
/
2
,
xEnd
:
this
.
_getLabelPoint
(
b
.
position
,
i
,
d
,
r
,
s
,
y
,
m
),
yEnd
:
o
+
l
/
2
,
strokeColor
:
g
.
color
||
n
,
lineType
:
g
.
type
,
lineWidth
:
g
.
width
}};
return
c
=
"
emphasis
"
,
u
=
p
[
c
].
labelLine
||
u
,
y
=
p
[
c
].
labelLine
.
length
||
y
,
g
=
u
.
lineStyle
||
g
,
b
=
p
[
c
].
label
||
b
,
b
.
position
=
b
.
position
,
f
.
highlightStyle
=
{
xEnd
:
this
.
_getLabelPoint
(
b
.
position
,
i
,
d
,
r
,
s
,
y
,
m
),
strokeColor
:
g
.
color
||
n
,
lineType
:
g
.
type
,
lineWidth
:
g
.
width
},
new
a
(
f
)},
_getLabelPoint
:
function
(
e
,
t
,
n
,
i
,
a
,
o
,
r
){
switch
(
e
=
"
inner
"
===
e
||
"
inside
"
===
e
?
"
center
"
:
e
){
case
"
center
"
:
return
"
center
"
==
r
?
t
+
i
/
2
:
"
left
"
==
r
?
t
+
10
:
t
+
i
-
10
;
case
"
left
"
:
return
"
auto
"
===
o
?
n
.
x
-
10
:
"
center
"
==
r
?
n
.
centerX
-
Math
.
max
(
i
,
a
)
/
2
-
o
:
"
right
"
==
r
?
t
-
(
a
>
i
?
a
-
i
:
0
)
-
o
:
n
.
x
-
o
;
default
:
return
"
auto
"
===
o
?
n
.
x
+
n
.
width
+
10
:
"
center
"
==
r
?
n
.
centerX
+
Math
.
max
(
i
,
a
)
/
2
+
o
:
"
right
"
==
r
?
n
.
x
+
n
.
width
+
o
:
t
+
Math
.
max
(
i
,
a
)
+
o
}},
_getLabelLineStartPoint
:
function
(
e
,
t
,
n
,
i
,
a
){
return
"
center
"
==
a
?
t
.
centerX
:
i
>
n
?
e
+
Math
.
min
(
n
,
i
)
/
2
:
e
+
Math
.
max
(
n
,
i
)
/
2
},
_needLabel
:
function
(
e
,
t
,
n
){
return
this
.
deepQuery
([
t
,
e
],
"
itemStyle.
"
+
(
n
?
"
emphasis
"
:
"
normal
"
)
+
"
.label.show
"
)},
_needLabelLine
:
function
(
e
,
t
,
n
){
return
this
.
deepQuery
([
t
,
e
],
"
itemStyle.
"
+
(
n
?
"
emphasis
"
:
"
normal
"
)
+
"
.labelLine.show
"
)},
refresh
:
function
(
e
){
e
&&
(
this
.
option
=
e
,
this
.
series
=
e
.
series
),
this
.
backupShapeList
(),
this
.
_buildShape
()}},
h
.
inherits
(
t
,
n
),
e
(
"
../chart
"
).
define
(
"
funnel
"
,
t
),
t
});
\ No newline at end of file
define
(
"
echarts/chart/funnel
"
,[
"
require
"
,
"
./base
"
,
"
zrender/shape/Text
"
,
"
zrender/shape/Line
"
,
"
zrender/shape/Polygon
"
,
"
../config
"
,
"
../util/ecData
"
,
"
../util/number
"
,
"
zrender/tool/util
"
,
"
zrender/tool/color
"
,
"
zrender/tool/area
"
,
"
../chart
"
],
function
(
e
){
function
t
(
e
,
t
,
i
,
a
,
o
){
n
.
call
(
this
,
e
,
t
,
i
,
a
,
o
),
this
.
refresh
(
a
)}
var
n
=
e
(
"
./base
"
),
i
=
e
(
"
zrender/shape/Text
"
),
a
=
e
(
"
zrender/shape/Line
"
),
o
=
e
(
"
zrender/shape/Polygon
"
),
r
=
e
(
"
../config
"
);
r
.
funnel
=
{
zlevel
:
0
,
z
:
2
,
clickable
:
!
0
,
legendHoverLink
:
!
0
,
x
:
80
,
y
:
60
,
x2
:
80
,
y2
:
60
,
min
:
0
,
max
:
100
,
minSize
:
"
0%
"
,
maxSize
:
"
100%
"
,
sort
:
"
descending
"
,
gap
:
0
,
funnelAlign
:
"
center
"
,
itemStyle
:{
normal
:{
borderColor
:
"
#fff
"
,
borderWidth
:
1
,
label
:{
show
:
!
0
,
position
:
"
outer
"
},
labelLine
:{
show
:
!
0
,
length
:
10
,
lineStyle
:{
width
:
1
,
type
:
"
solid
"
}}},
emphasis
:{
borderColor
:
"
rgba(0,0,0,0)
"
,
borderWidth
:
1
,
label
:{
show
:
!
0
},
labelLine
:{
show
:
!
0
}}}};
var
s
=
e
(
"
../util/ecData
"
),
l
=
e
(
"
../util/number
"
),
h
=
e
(
"
zrender/tool/util
"
),
m
=
e
(
"
zrender/tool/color
"
),
V
=
e
(
"
zrender/tool/area
"
);
return
t
.
prototype
=
{
type
:
r
.
CHART_TYPE_FUNNEL
,
_buildShape
:
function
(){
var
e
=
this
.
series
,
t
=
this
.
component
.
legend
;
this
.
_paramsMap
=
{},
this
.
_selected
=
{},
this
.
selectedMap
=
{};
for
(
var
n
,
i
=
0
,
a
=
e
.
length
;
a
>
i
;
i
++
)
if
(
e
[
i
].
type
===
r
.
CHART_TYPE_FUNNEL
){
if
(
e
[
i
]
=
this
.
reformOption
(
e
[
i
]),
this
.
legendHoverLink
=
e
[
i
].
legendHoverLink
||
this
.
legendHoverLink
,
n
=
e
[
i
].
name
||
""
,
this
.
selectedMap
[
n
]
=
t
?
t
.
isSelected
(
n
):
!
0
,
!
this
.
selectedMap
[
n
])
continue
;
this
.
_buildSingleFunnel
(
i
),
this
.
buildMark
(
i
)}
this
.
addShapeList
()},
_buildSingleFunnel
:
function
(
e
){
var
t
=
this
.
component
.
legend
,
n
=
this
.
series
[
e
],
i
=
this
.
_mapData
(
e
),
a
=
this
.
_getLocation
(
e
);
this
.
_paramsMap
[
e
]
=
{
location
:
a
,
data
:
i
};
for
(
var
o
,
r
=
0
,
s
=
[],
h
=
0
,
m
=
i
.
length
;
m
>
h
;
h
++
)
o
=
i
[
h
].
name
,
this
.
selectedMap
[
o
]
=
t
?
t
.
isSelected
(
o
):
!
0
,
this
.
selectedMap
[
o
]
&&!
isNaN
(
i
[
h
].
value
)
&&
(
s
.
push
(
i
[
h
]),
r
++
);
if
(
0
!==
r
){
for
(
var
V
,
U
,
d
,
p
,
c
=
this
.
_buildFunnelCase
(
e
),
u
=
n
.
funnelAlign
,
g
=
n
.
gap
,
y
=
r
>
1
?(
a
.
height
-
(
r
-
1
)
*
g
)
/
r
:
a
.
height
,
b
=
a
.
y
,
f
=
"
descending
"
===
n
.
sort
?
this
.
_getItemWidth
(
e
,
s
[
0
].
value
):
l
.
parsePercent
(
n
.
minSize
,
a
.
width
),
k
=
"
descending
"
===
n
.
sort
?
1
:
0
,
x
=
a
.
centerX
,
_
=
[],
h
=
0
,
m
=
s
.
length
;
m
>
h
;
h
++
)
if
(
o
=
s
[
h
].
name
,
this
.
selectedMap
[
o
]
&&!
isNaN
(
s
[
h
].
value
)){
switch
(
V
=
m
-
2
>=
h
?
this
.
_getItemWidth
(
e
,
s
[
h
+
k
].
value
):
"
descending
"
===
n
.
sort
?
l
.
parsePercent
(
n
.
minSize
,
a
.
width
):
l
.
parsePercent
(
n
.
maxSize
,
a
.
width
),
u
){
case
"
left
"
:
U
=
a
.
x
;
break
;
case
"
right
"
:
U
=
a
.
x
+
a
.
width
-
f
;
break
;
default
:
U
=
x
-
f
/
2
}
d
=
this
.
_buildItem
(
e
,
s
[
h
].
_index
,
t
?
t
.
getColor
(
o
):
this
.
zr
.
getColor
(
s
[
h
].
_index
),
U
,
b
,
f
,
V
,
y
,
u
),
b
+=
y
+
g
,
p
=
d
.
style
.
pointList
,
_
.
unshift
([
p
[
0
][
0
]
-
10
,
p
[
0
][
1
]]),
_
.
push
([
p
[
1
][
0
]
+
10
,
p
[
1
][
1
]]),
0
===
h
&&
(
0
===
f
?(
p
=
_
.
pop
(),
"
center
"
==
u
&&
(
_
[
0
][
0
]
+=
10
),
"
right
"
==
u
&&
(
_
[
0
][
0
]
=
p
[
0
]),
_
[
0
][
1
]
-=
"
center
"
==
u
?
10
:
15
,
1
==
m
&&
(
p
=
d
.
style
.
pointList
)):(
_
[
_
.
length
-
1
][
1
]
-=
5
,
_
[
0
][
1
]
-=
5
)),
f
=
V
}
c
&&
(
_
.
unshift
([
p
[
3
][
0
]
-
10
,
p
[
3
][
1
]]),
_
.
push
([
p
[
2
][
0
]
+
10
,
p
[
2
][
1
]]),
0
===
f
?(
p
=
_
.
pop
(),
"
center
"
==
u
&&
(
_
[
0
][
0
]
+=
10
),
"
right
"
==
u
&&
(
_
[
0
][
0
]
=
p
[
0
]),
_
[
0
][
1
]
+=
"
center
"
==
u
?
10
:
15
):(
_
[
_
.
length
-
1
][
1
]
+=
5
,
_
[
0
][
1
]
+=
5
),
c
.
style
.
pointList
=
_
)}},
_buildFunnelCase
:
function
(
e
){
var
t
=
this
.
series
[
e
];
if
(
this
.
deepQuery
([
t
,
this
.
option
],
"
calculable
"
)){
var
n
=
this
.
_paramsMap
[
e
].
location
,
i
=
10
,
a
=
{
hoverable
:
!
1
,
style
:{
pointListd
:[[
n
.
x
-
i
,
n
.
y
-
i
],[
n
.
x
+
n
.
width
+
i
,
n
.
y
-
i
],[
n
.
x
+
n
.
width
+
i
,
n
.
y
+
n
.
height
+
i
],[
n
.
x
-
i
,
n
.
y
+
n
.
height
+
i
]],
brushType
:
"
stroke
"
,
lineWidth
:
1
,
strokeColor
:
t
.
calculableHolderColor
||
this
.
ecTheme
.
calculableHolderColor
||
r
.
calculableHolderColor
}};
return
s
.
pack
(
a
,
t
,
e
,
void
0
,
-
1
),
this
.
setCalculable
(
a
),
a
=
new
o
(
a
),
this
.
shapeList
.
push
(
a
),
a
}},
_getLocation
:
function
(
e
){
var
t
=
this
.
series
[
e
],
n
=
this
.
zr
.
getWidth
(),
i
=
this
.
zr
.
getHeight
(),
a
=
this
.
parsePercent
(
t
.
x
,
n
),
o
=
this
.
parsePercent
(
t
.
y
,
i
),
r
=
null
==
t
.
width
?
n
-
a
-
this
.
parsePercent
(
t
.
x2
,
n
):
this
.
parsePercent
(
t
.
width
,
n
);
return
{
x
:
a
,
y
:
o
,
width
:
r
,
height
:
null
==
t
.
height
?
i
-
o
-
this
.
parsePercent
(
t
.
y2
,
i
):
this
.
parsePercent
(
t
.
height
,
i
),
centerX
:
a
+
r
/
2
}},
_mapData
:
function
(
e
){
function
t
(
e
,
t
){
return
"
-
"
===
e
.
value
?
1
:
"
-
"
===
t
.
value
?
-
1
:
t
.
value
-
e
.
value
}
function
n
(
e
,
n
){
return
-
t
(
e
,
n
)}
for
(
var
i
=
this
.
series
[
e
],
a
=
h
.
clone
(
i
.
data
),
o
=
0
,
r
=
a
.
length
;
r
>
o
;
o
++
)
a
[
o
].
_index
=
o
;
return
"
none
"
!=
i
.
sort
&&
a
.
sort
(
"
descending
"
===
i
.
sort
?
t
:
n
),
a
},
_buildItem
:
function
(
e
,
t
,
n
,
i
,
a
,
o
,
r
,
l
,
h
){
var
m
=
this
.
series
,
V
=
m
[
e
],
U
=
V
.
data
[
t
],
d
=
this
.
getPolygon
(
e
,
t
,
n
,
i
,
a
,
o
,
r
,
l
,
h
);
s
.
pack
(
d
,
m
[
e
],
e
,
m
[
e
].
data
[
t
],
t
,
m
[
e
].
data
[
t
].
name
),
this
.
shapeList
.
push
(
d
);
var
p
=
this
.
getLabel
(
e
,
t
,
n
,
i
,
a
,
o
,
r
,
l
,
h
);
s
.
pack
(
p
,
m
[
e
],
e
,
m
[
e
].
data
[
t
],
t
,
m
[
e
].
data
[
t
].
name
),
this
.
shapeList
.
push
(
p
),
this
.
_needLabel
(
V
,
U
,
!
1
)
||
(
p
.
invisible
=!
0
);
var
c
=
this
.
getLabelLine
(
e
,
t
,
n
,
i
,
a
,
o
,
r
,
l
,
h
);
this
.
shapeList
.
push
(
c
),
this
.
_needLabelLine
(
V
,
U
,
!
1
)
||
(
c
.
invisible
=!
0
);
var
u
=
[],
g
=
[];
return
this
.
_needLabelLine
(
V
,
U
,
!
0
)
&&
(
u
.
push
(
c
.
id
),
g
.
push
(
c
.
id
)),
this
.
_needLabel
(
V
,
U
,
!
0
)
&&
(
u
.
push
(
p
.
id
),
g
.
push
(
d
.
id
)),
d
.
hoverConnect
=
u
,
p
.
hoverConnect
=
g
,
d
},
_getItemWidth
:
function
(
e
,
t
){
var
n
=
this
.
series
[
e
],
i
=
this
.
_paramsMap
[
e
].
location
,
a
=
n
.
min
,
o
=
n
.
max
,
r
=
l
.
parsePercent
(
n
.
minSize
,
i
.
width
),
s
=
l
.
parsePercent
(
n
.
maxSize
,
i
.
width
);
return
(
t
-
a
)
*
(
s
-
r
)
/
(
o
-
a
)
+
r
},
getPolygon
:
function
(
e
,
t
,
n
,
i
,
a
,
r
,
s
,
l
,
h
){
var
V
,
U
=
this
.
series
[
e
],
d
=
U
.
data
[
t
],
p
=
[
d
,
U
],
c
=
this
.
deepMerge
(
p
,
"
itemStyle.normal
"
)
||
{},
u
=
this
.
deepMerge
(
p
,
"
itemStyle.emphasis
"
)
||
{},
g
=
this
.
getItemStyleColor
(
c
.
color
,
e
,
t
,
d
)
||
n
,
y
=
this
.
getItemStyleColor
(
u
.
color
,
e
,
t
,
d
)
||
(
"
string
"
==
typeof
g
?
m
.
lift
(
g
,
-
.
2
):
g
);
switch
(
h
){
case
"
left
"
:
V
=
i
;
break
;
case
"
right
"
:
V
=
i
+
(
r
-
s
);
break
;
default
:
V
=
i
+
(
r
-
s
)
/
2
}
var
b
=
{
zlevel
:
this
.
getZlevelBase
(),
z
:
this
.
getZBase
(),
clickable
:
this
.
deepQuery
(
p
,
"
clickable
"
),
style
:{
pointList
:[[
i
,
a
],[
i
+
r
,
a
],[
V
+
s
,
a
+
l
],[
V
,
a
+
l
]],
brushType
:
"
both
"
,
color
:
g
,
lineWidth
:
c
.
borderWidth
,
strokeColor
:
c
.
borderColor
},
highlightStyle
:{
color
:
y
,
lineWidth
:
u
.
borderWidth
,
strokeColor
:
u
.
borderColor
}};
return
this
.
deepQuery
([
d
,
U
,
this
.
option
],
"
calculable
"
)
&&
(
this
.
setCalculable
(
b
),
b
.
draggable
=!
0
),
new
o
(
b
)},
getLabel
:
function
(
e
,
t
,
n
,
a
,
o
,
r
,
s
,
l
,
U
){
var
d
,
p
=
this
.
series
[
e
],
c
=
p
.
data
[
t
],
u
=
this
.
_paramsMap
[
e
].
location
,
g
=
h
.
merge
(
h
.
clone
(
c
.
itemStyle
)
||
{},
p
.
itemStyle
),
y
=
"
normal
"
,
b
=
g
[
y
].
label
,
f
=
b
.
textStyle
||
{},
k
=
g
[
y
].
labelLine
.
length
,
x
=
this
.
getLabelText
(
e
,
t
,
y
),
_
=
this
.
getFont
(
f
),
L
=
n
;
b
.
position
=
b
.
position
||
g
.
normal
.
label
.
position
,
"
inner
"
===
b
.
position
||
"
inside
"
===
b
.
position
||
"
center
"
===
b
.
position
?(
d
=
U
,
L
=
Math
.
max
(
r
,
s
)
/
2
>
V
.
getTextWidth
(
x
,
_
)?
"
#fff
"
:
m
.
reverse
(
n
)):
d
=
"
left
"
===
b
.
position
?
"
right
"
:
"
left
"
;
var
W
=
{
zlevel
:
this
.
getZlevelBase
(),
z
:
this
.
getZBase
()
+
1
,
style
:{
x
:
this
.
_getLabelPoint
(
b
.
position
,
a
,
u
,
r
,
s
,
k
,
U
),
y
:
o
+
l
/
2
,
color
:
f
.
color
||
L
,
text
:
x
,
textAlign
:
f
.
align
||
d
,
textBaseline
:
f
.
baseline
||
"
middle
"
,
textFont
:
_
}};
return
y
=
"
emphasis
"
,
b
=
g
[
y
].
label
||
b
,
f
=
b
.
textStyle
||
f
,
k
=
g
[
y
].
labelLine
.
length
||
k
,
b
.
position
=
b
.
position
||
g
.
normal
.
label
.
position
,
x
=
this
.
getLabelText
(
e
,
t
,
y
),
_
=
this
.
getFont
(
f
),
L
=
n
,
"
inner
"
===
b
.
position
||
"
inside
"
===
b
.
position
||
"
center
"
===
b
.
position
?(
d
=
U
,
L
=
Math
.
max
(
r
,
s
)
/
2
>
V
.
getTextWidth
(
x
,
_
)?
"
#fff
"
:
m
.
reverse
(
n
)):
d
=
"
left
"
===
b
.
position
?
"
right
"
:
"
left
"
,
W
.
highlightStyle
=
{
x
:
this
.
_getLabelPoint
(
b
.
position
,
a
,
u
,
r
,
s
,
k
,
U
),
color
:
f
.
color
||
L
,
text
:
x
,
textAlign
:
f
.
align
||
d
,
textFont
:
_
,
brushType
:
"
fill
"
},
new
i
(
W
)},
getLabelText
:
function
(
e
,
t
,
n
){
var
i
=
this
.
series
,
a
=
i
[
e
],
o
=
a
.
data
[
t
],
r
=
this
.
deepQuery
([
o
,
a
],
"
itemStyle.
"
+
n
+
"
.label.formatter
"
);
return
r
?
"
function
"
==
typeof
r
?
r
.
call
(
this
.
myChart
,{
seriesIndex
:
e
,
seriesName
:
a
.
name
||
""
,
series
:
a
,
dataIndex
:
t
,
data
:
o
,
name
:
o
.
name
,
value
:
o
.
value
}):
"
string
"
==
typeof
r
?
r
=
r
.
replace
(
"
{a}
"
,
"
{a0}
"
).
replace
(
"
{b}
"
,
"
{b0}
"
).
replace
(
"
{c}
"
,
"
{c0}
"
).
replace
(
"
{a0}
"
,
a
.
name
).
replace
(
"
{b0}
"
,
o
.
name
).
replace
(
"
{c0}
"
,
o
.
value
):
void
0
:
o
.
name
},
getLabelLine
:
function
(
e
,
t
,
n
,
i
,
o
,
r
,
s
,
l
,
m
){
var
V
=
this
.
series
[
e
],
U
=
V
.
data
[
t
],
d
=
this
.
_paramsMap
[
e
].
location
,
p
=
h
.
merge
(
h
.
clone
(
U
.
itemStyle
)
||
{},
V
.
itemStyle
),
c
=
"
normal
"
,
u
=
p
[
c
].
labelLine
,
g
=
p
[
c
].
labelLine
.
length
,
y
=
u
.
lineStyle
||
{},
b
=
p
[
c
].
label
;
b
.
position
=
b
.
position
||
p
.
normal
.
label
.
position
;
var
f
=
{
zlevel
:
this
.
getZlevelBase
(),
z
:
this
.
getZBase
()
+
1
,
hoverable
:
!
1
,
style
:{
xStart
:
this
.
_getLabelLineStartPoint
(
i
,
d
,
r
,
s
,
m
),
yStart
:
o
+
l
/
2
,
xEnd
:
this
.
_getLabelPoint
(
b
.
position
,
i
,
d
,
r
,
s
,
g
,
m
),
yEnd
:
o
+
l
/
2
,
strokeColor
:
y
.
color
||
n
,
lineType
:
y
.
type
,
lineWidth
:
y
.
width
}};
return
c
=
"
emphasis
"
,
u
=
p
[
c
].
labelLine
||
u
,
g
=
p
[
c
].
labelLine
.
length
||
g
,
y
=
u
.
lineStyle
||
y
,
b
=
p
[
c
].
label
||
b
,
b
.
position
=
b
.
position
,
f
.
highlightStyle
=
{
xEnd
:
this
.
_getLabelPoint
(
b
.
position
,
i
,
d
,
r
,
s
,
g
,
m
),
strokeColor
:
y
.
color
||
n
,
lineType
:
y
.
type
,
lineWidth
:
y
.
width
},
new
a
(
f
)},
_getLabelPoint
:
function
(
e
,
t
,
n
,
i
,
a
,
o
,
r
){
switch
(
e
=
"
inner
"
===
e
||
"
inside
"
===
e
?
"
center
"
:
e
){
case
"
center
"
:
return
"
center
"
==
r
?
t
+
i
/
2
:
"
left
"
==
r
?
t
+
10
:
t
+
i
-
10
;
case
"
left
"
:
return
"
auto
"
===
o
?
n
.
x
-
10
:
"
center
"
==
r
?
n
.
centerX
-
Math
.
max
(
i
,
a
)
/
2
-
o
:
"
right
"
==
r
?
t
-
(
a
>
i
?
a
-
i
:
0
)
-
o
:
n
.
x
-
o
;
default
:
return
"
auto
"
===
o
?
n
.
x
+
n
.
width
+
10
:
"
center
"
==
r
?
n
.
centerX
+
Math
.
max
(
i
,
a
)
/
2
+
o
:
"
right
"
==
r
?
n
.
x
+
n
.
width
+
o
:
t
+
Math
.
max
(
i
,
a
)
+
o
}},
_getLabelLineStartPoint
:
function
(
e
,
t
,
n
,
i
,
a
){
return
"
center
"
==
a
?
t
.
centerX
:
i
>
n
?
e
+
Math
.
min
(
n
,
i
)
/
2
:
e
+
Math
.
max
(
n
,
i
)
/
2
},
_needLabel
:
function
(
e
,
t
,
n
){
return
this
.
deepQuery
([
t
,
e
],
"
itemStyle.
"
+
(
n
?
"
emphasis
"
:
"
normal
"
)
+
"
.label.show
"
)},
_needLabelLine
:
function
(
e
,
t
,
n
){
return
this
.
deepQuery
([
t
,
e
],
"
itemStyle.
"
+
(
n
?
"
emphasis
"
:
"
normal
"
)
+
"
.labelLine.show
"
)},
refresh
:
function
(
e
){
e
&&
(
this
.
option
=
e
,
this
.
series
=
e
.
series
),
this
.
backupShapeList
(),
this
.
_buildShape
()}},
h
.
inherits
(
t
,
n
),
e
(
"
../chart
"
).
define
(
"
funnel
"
,
t
),
t
});
\ No newline at end of file
doc/example/www/js/chart/k.js
浏览文件 @
b5f18a56
define
(
"
echarts/chart/k
"
,[
"
require
"
,
"
./base
"
,
"
../util/shape/Candle
"
,
"
../component/axis
"
,
"
../component/grid
"
,
"
../component/dataZoom
"
,
"
../config
"
,
"
../util/ecData
"
,
"
zrender/tool/util
"
,
"
../chart
"
],
function
(
e
){
function
t
(
e
,
t
,
n
,
a
,
o
){
i
.
call
(
this
,
e
,
t
,
n
,
a
,
o
),
this
.
refresh
(
a
)}
var
i
=
e
(
"
./base
"
),
n
=
e
(
"
../util/shape/Candle
"
);
e
(
"
../component/axis
"
),
e
(
"
../component/grid
"
),
e
(
"
../component/dataZoom
"
);
var
a
=
e
(
"
../config
"
);
a
.
k
=
{
zlevel
:
0
,
z
:
2
,
clickable
:
!
0
,
hoverable
:
!
0
,
legendHoverLink
:
!
1
,
xAxisIndex
:
0
,
yAxisIndex
:
0
,
itemStyle
:{
normal
:{
color
:
"
#fff
"
,
color0
:
"
#00aa11
"
,
lineStyle
:{
width
:
1
,
color
:
"
#ff3200
"
,
color0
:
"
#00aa11
"
},
label
:{
show
:
!
1
}},
emphasis
:{
label
:{
show
:
!
1
}}}};
var
o
=
e
(
"
../util/ecData
"
),
r
=
e
(
"
zrender/tool/util
"
);
return
t
.
prototype
=
{
type
:
a
.
CHART_TYPE_K
,
_buildShape
:
function
(){
var
e
=
this
.
series
;
this
.
selectedMap
=
{};
for
(
var
t
,
i
=
{
top
:[],
bottom
:[]},
n
=
0
,
o
=
e
.
length
;
o
>
n
;
n
++
)
e
[
n
].
type
===
a
.
CHART_TYPE_K
&&
(
e
[
n
]
=
this
.
reformOption
(
e
[
n
]),
this
.
legendHoverLink
=
e
[
n
].
legendHoverLink
||
this
.
legendHoverLink
,
t
=
this
.
component
.
xAxis
.
getAxis
(
e
[
n
].
xAxisIndex
),
t
.
type
===
a
.
COMPONENT_TYPE_AXIS_CATEGORY
&&
i
[
t
.
getPosition
()].
push
(
n
));
for
(
var
r
in
i
)
i
[
r
].
length
>
0
&&
this
.
_buildSinglePosition
(
r
,
i
[
r
]);
this
.
addShapeList
()},
_buildSinglePosition
:
function
(
e
,
t
){
var
i
=
this
.
_mapData
(
t
),
n
=
i
.
locationMap
,
a
=
i
.
maxDataLength
;
if
(
0
!==
a
&&
0
!==
n
.
length
){
this
.
_buildHorizontal
(
t
,
a
,
n
);
for
(
var
o
=
0
,
r
=
t
.
length
;
r
>
o
;
o
++
)
this
.
buildMark
(
t
[
o
])}},
_mapData
:
function
(
e
){
for
(
var
t
,
i
,
n
=
this
.
series
,
a
=
this
.
component
.
legend
,
o
=
[],
r
=
0
,
s
=
0
,
l
=
e
.
length
;
l
>
s
;
s
++
)
t
=
n
[
e
[
s
]],
i
=
t
.
name
,
this
.
selectedMap
[
i
]
=
a
?
a
.
isSelected
(
i
):
!
0
,
this
.
selectedMap
[
i
]
&&
o
.
push
(
e
[
s
]),
r
=
Math
.
max
(
r
,
t
.
data
.
length
);
return
{
locationMap
:
o
,
maxDataLength
:
r
}},
_buildHorizontal
:
function
(
e
,
t
,
i
){
for
(
var
n
,
a
,
o
,
r
,
s
,
l
,
h
,
d
,
c
,
m
,
p
=
this
.
series
,
u
=
{},
V
=
0
,
g
=
i
.
length
;
g
>
V
;
V
++
){
n
=
i
[
V
],
a
=
p
[
n
],
o
=
a
.
xAxisIndex
||
0
,
r
=
this
.
component
.
xAxis
.
getAxis
(
o
),
h
=
a
.
barWidth
||
Math
.
floor
(
r
.
getGap
()
/
2
),
m
=
a
.
barMaxWidth
,
m
&&
h
>
m
&&
(
h
=
m
),
s
=
a
.
yAxisIndex
||
0
,
l
=
this
.
component
.
yAxis
.
getAxis
(
s
),
u
[
n
]
=
[];
for
(
var
U
=
0
,
y
=
t
;
y
>
U
&&
null
!=
r
.
getNameByIndex
(
U
);
U
++
)
d
=
a
.
data
[
U
],
c
=
this
.
getDataFromOption
(
d
,
"
-
"
),
"
-
"
!==
c
&&
4
==
c
.
length
&&
u
[
n
].
push
([
r
.
getCoordByIndex
(
U
),
h
,
l
.
getCoord
(
c
[
0
]),
l
.
getCoord
(
c
[
1
]),
l
.
getCoord
(
c
[
2
]),
l
.
getCoord
(
c
[
3
]),
U
,
r
.
getNameByIndex
(
U
)])}
this
.
_buildKLine
(
e
,
u
)},
_buildKLine
:
function
(
e
,
t
){
for
(
var
i
,
n
,
o
,
r
,
s
,
l
,
h
,
d
,
c
,
m
,
p
,
u
,
V
,
g
,
U
,
y
,
f
,
_
=
this
.
series
,
b
=
0
,
x
=
e
.
length
;
x
>
b
;
b
++
)
if
(
f
=
e
[
b
],
p
=
_
[
f
],
g
=
t
[
f
],
this
.
_isLarge
(
g
)
&&
(
g
=
this
.
_getLargePointList
(
g
)),
p
.
type
===
a
.
CHART_TYPE_K
&&
null
!=
g
){
u
=
p
,
i
=
this
.
query
(
u
,
"
itemStyle.normal.lineStyle.width
"
),
n
=
this
.
query
(
u
,
"
itemStyle.normal.lineStyle.color
"
),
o
=
this
.
query
(
u
,
"
itemStyle.normal.lineStyle.color0
"
),
r
=
this
.
query
(
u
,
"
itemStyle.normal.color
"
),
s
=
this
.
query
(
u
,
"
itemStyle.normal.color0
"
),
l
=
this
.
query
(
u
,
"
itemStyle.emphasis.lineStyle.width
"
),
h
=
this
.
query
(
u
,
"
itemStyle.emphasis.lineStyle.color
"
),
d
=
this
.
query
(
u
,
"
itemStyle.emphasis.lineStyle.color0
"
),
c
=
this
.
query
(
u
,
"
itemStyle.emphasis.color
"
),
m
=
this
.
query
(
u
,
"
itemStyle.emphasis.color0
"
);
for
(
var
k
=
0
,
v
=
g
.
length
;
v
>
k
;
k
++
)
U
=
g
[
k
],
V
=
p
.
data
[
U
[
6
]],
u
=
V
,
y
=
U
[
3
]
<
U
[
2
],
this
.
shapeList
.
push
(
this
.
_getCandle
(
f
,
U
[
6
],
U
[
7
],
U
[
0
],
U
[
1
],
U
[
2
],
U
[
3
],
U
[
4
],
U
[
5
],
y
?
this
.
query
(
u
,
"
itemStyle.normal.color
"
)
||
r
:
this
.
query
(
u
,
"
itemStyle.normal.color0
"
)
||
s
,
this
.
query
(
u
,
"
itemStyle.normal.lineStyle.width
"
)
||
i
,
y
?
this
.
query
(
u
,
"
itemStyle.normal.lineStyle.color
"
)
||
n
:
this
.
query
(
u
,
"
itemStyle.normal.lineStyle.color0
"
)
||
o
,
y
?
this
.
query
(
u
,
"
itemStyle.emphasis.color
"
)
||
c
||
r
:
this
.
query
(
u
,
"
itemStyle.emphasis.color0
"
)
||
m
||
s
,
this
.
query
(
u
,
"
itemStyle.emphasis.lineStyle.width
"
)
||
l
||
i
,
y
?
this
.
query
(
u
,
"
itemStyle.emphasis.lineStyle.color
"
)
||
h
||
n
:
this
.
query
(
u
,
"
itemStyle.emphasis.lineStyle.color0
"
)
||
d
||
o
))}},
_isLarge
:
function
(
e
){
return
e
[
0
][
1
]
<
.
5
},
_getLargePointList
:
function
(
e
){
for
(
var
t
=
this
.
component
.
grid
.
getWidth
(),
i
=
e
.
length
,
n
=
[],
a
=
0
;
t
>
a
;
a
++
)
n
[
a
]
=
e
[
Math
.
floor
(
i
/
t
*
a
)];
return
n
},
_getCandle
:
function
(
e
,
t
,
i
,
a
,
r
,
s
,
l
,
h
,
d
,
c
,
m
,
p
,
u
,
V
,
g
){
var
U
=
this
.
series
,
y
=
U
[
e
],
f
=
y
.
data
[
t
],
_
=
[
f
,
y
],
b
=
{
zlevel
:
this
.
getZlevelBase
(),
z
:
this
.
getZBase
(),
clickable
:
this
.
deepQuery
(
_
,
"
clickable
"
),
hoverable
:
this
.
deepQuery
(
_
,
"
hoverable
"
),
style
:{
x
:
a
,
y
:[
s
,
l
,
h
,
d
],
width
:
r
,
color
:
c
,
strokeColor
:
p
,
lineWidth
:
m
,
brushType
:
"
both
"
},
highlightStyle
:{
color
:
u
,
strokeColor
:
g
,
lineWidth
:
V
},
_seriesIndex
:
e
};
return
b
=
this
.
addLabel
(
b
,
y
,
f
,
i
),
o
.
pack
(
b
,
y
,
e
,
f
,
t
,
i
),
b
=
new
n
(
b
)},
getMarkCoord
:
function
(
e
,
t
){
var
i
=
this
.
series
[
e
],
n
=
this
.
component
.
xAxis
.
getAxis
(
i
.
xAxisIndex
),
a
=
this
.
component
.
yAxis
.
getAxis
(
i
.
yAxisIndex
);
return
[
"
string
"
!=
typeof
t
.
xAxis
&&
n
.
getCoordByIndex
?
n
.
getCoordByIndex
(
t
.
xAxis
||
0
):
n
.
getCoord
(
t
.
xAxis
||
0
),
"
string
"
!=
typeof
t
.
yAxis
&&
a
.
getCoordByIndex
?
a
.
getCoordByIndex
(
t
.
yAxis
||
0
):
a
.
getCoord
(
t
.
yAxis
||
0
)]},
refresh
:
function
(
e
){
e
&&
(
this
.
option
=
e
,
this
.
series
=
e
.
series
),
this
.
backupShapeList
(),
this
.
_buildShape
()},
addDataAnimation
:
function
(
e
,
t
){
function
i
(){
u
--
,
0
===
u
&&
t
&&
t
()}
for
(
var
n
=
this
.
series
,
a
=
{},
r
=
0
,
s
=
e
.
length
;
s
>
r
;
r
++
)
a
[
e
[
r
][
0
]]
=
e
[
r
];
for
(
var
l
,
h
,
d
,
c
,
m
,
p
,
u
=
0
,
r
=
0
,
s
=
this
.
shapeList
.
length
;
s
>
r
;
r
++
)
if
(
m
=
this
.
shapeList
[
r
].
_seriesIndex
,
a
[
m
]
&&!
a
[
m
][
3
]
&&
"
candle
"
===
this
.
shapeList
[
r
].
type
){
if
(
p
=
o
.
get
(
this
.
shapeList
[
r
],
"
dataIndex
"
),
c
=
n
[
m
],
a
[
m
][
2
]
&&
p
===
c
.
data
.
length
-
1
){
this
.
zr
.
delShape
(
this
.
shapeList
[
r
].
id
);
continue
}
if
(
!
a
[
m
][
2
]
&&
0
===
p
){
this
.
zr
.
delShape
(
this
.
shapeList
[
r
].
id
);
continue
}
h
=
this
.
component
.
xAxis
.
getAxis
(
c
.
xAxisIndex
||
0
).
getGap
(),
l
=
a
[
m
][
2
]?
h
:
-
h
,
d
=
0
,
u
++
,
this
.
zr
.
animate
(
this
.
shapeList
[
r
].
id
,
""
).
when
(
this
.
query
(
this
.
option
,
"
animationDurationUpdate
"
),{
position
:[
l
,
d
]}).
done
(
i
).
start
()}
u
||
i
()}},
r
.
inherits
(
t
,
i
),
e
(
"
../chart
"
).
define
(
"
k
"
,
t
),
t
});
\ No newline at end of file
define
(
"
echarts/chart/k
"
,[
"
require
"
,
"
./base
"
,
"
../util/shape/Candle
"
,
"
../component/axis
"
,
"
../component/grid
"
,
"
../component/dataZoom
"
,
"
../config
"
,
"
../util/ecData
"
,
"
zrender/tool/util
"
,
"
../chart
"
],
function
(
e
){
function
t
(
e
,
t
,
n
,
a
,
o
){
i
.
call
(
this
,
e
,
t
,
n
,
a
,
o
),
this
.
refresh
(
a
)}
var
i
=
e
(
"
./base
"
),
n
=
e
(
"
../util/shape/Candle
"
);
e
(
"
../component/axis
"
),
e
(
"
../component/grid
"
),
e
(
"
../component/dataZoom
"
);
var
a
=
e
(
"
../config
"
);
a
.
k
=
{
zlevel
:
0
,
z
:
2
,
clickable
:
!
0
,
hoverable
:
!
0
,
legendHoverLink
:
!
1
,
xAxisIndex
:
0
,
yAxisIndex
:
0
,
itemStyle
:{
normal
:{
color
:
"
#fff
"
,
color0
:
"
#00aa11
"
,
lineStyle
:{
width
:
1
,
color
:
"
#ff3200
"
,
color0
:
"
#00aa11
"
},
label
:{
show
:
!
1
}},
emphasis
:{
label
:{
show
:
!
1
}}}};
var
o
=
e
(
"
../util/ecData
"
),
r
=
e
(
"
zrender/tool/util
"
);
return
t
.
prototype
=
{
type
:
a
.
CHART_TYPE_K
,
_buildShape
:
function
(){
var
e
=
this
.
series
;
this
.
selectedMap
=
{};
for
(
var
t
,
i
=
{
top
:[],
bottom
:[]},
n
=
0
,
o
=
e
.
length
;
o
>
n
;
n
++
)
e
[
n
].
type
===
a
.
CHART_TYPE_K
&&
(
e
[
n
]
=
this
.
reformOption
(
e
[
n
]),
this
.
legendHoverLink
=
e
[
n
].
legendHoverLink
||
this
.
legendHoverLink
,
t
=
this
.
component
.
xAxis
.
getAxis
(
e
[
n
].
xAxisIndex
),
t
.
type
===
a
.
COMPONENT_TYPE_AXIS_CATEGORY
&&
i
[
t
.
getPosition
()].
push
(
n
));
for
(
var
r
in
i
)
i
[
r
].
length
>
0
&&
this
.
_buildSinglePosition
(
r
,
i
[
r
]);
this
.
addShapeList
()},
_buildSinglePosition
:
function
(
e
,
t
){
var
i
=
this
.
_mapData
(
t
),
n
=
i
.
locationMap
,
a
=
i
.
maxDataLength
;
if
(
0
!==
a
&&
0
!==
n
.
length
){
this
.
_buildHorizontal
(
t
,
a
,
n
);
for
(
var
o
=
0
,
r
=
t
.
length
;
r
>
o
;
o
++
)
this
.
buildMark
(
t
[
o
])}},
_mapData
:
function
(
e
){
for
(
var
t
,
i
,
n
=
this
.
series
,
a
=
this
.
component
.
legend
,
o
=
[],
r
=
0
,
s
=
0
,
l
=
e
.
length
;
l
>
s
;
s
++
)
t
=
n
[
e
[
s
]],
i
=
t
.
name
,
this
.
selectedMap
[
i
]
=
a
?
a
.
isSelected
(
i
):
!
0
,
this
.
selectedMap
[
i
]
&&
o
.
push
(
e
[
s
]),
r
=
Math
.
max
(
r
,
t
.
data
.
length
);
return
{
locationMap
:
o
,
maxDataLength
:
r
}},
_buildHorizontal
:
function
(
e
,
t
,
i
){
for
(
var
n
,
a
,
o
,
r
,
s
,
l
,
h
,
d
,
c
,
m
,
p
=
this
.
series
,
u
=
{},
g
=
0
,
V
=
i
.
length
;
V
>
g
;
g
++
){
n
=
i
[
g
],
a
=
p
[
n
],
o
=
a
.
xAxisIndex
||
0
,
r
=
this
.
component
.
xAxis
.
getAxis
(
o
),
h
=
a
.
barWidth
||
Math
.
floor
(
r
.
getGap
()
/
2
),
m
=
a
.
barMaxWidth
,
m
&&
h
>
m
&&
(
h
=
m
),
s
=
a
.
yAxisIndex
||
0
,
l
=
this
.
component
.
yAxis
.
getAxis
(
s
),
u
[
n
]
=
[];
for
(
var
U
=
0
,
y
=
t
;
y
>
U
&&
null
!=
r
.
getNameByIndex
(
U
);
U
++
)
d
=
a
.
data
[
U
],
c
=
this
.
getDataFromOption
(
d
,
"
-
"
),
"
-
"
!==
c
&&
4
==
c
.
length
&&
u
[
n
].
push
([
r
.
getCoordByIndex
(
U
),
h
,
l
.
getCoord
(
c
[
0
]),
l
.
getCoord
(
c
[
1
]),
l
.
getCoord
(
c
[
2
]),
l
.
getCoord
(
c
[
3
]),
U
,
r
.
getNameByIndex
(
U
)])}
this
.
_buildKLine
(
e
,
u
)},
_buildKLine
:
function
(
e
,
t
){
for
(
var
i
,
n
,
o
,
r
,
s
,
l
,
h
,
d
,
c
,
m
,
p
,
u
,
g
,
V
,
U
,
y
,
f
,
_
=
this
.
series
,
b
=
0
,
x
=
e
.
length
;
x
>
b
;
b
++
)
if
(
f
=
e
[
b
],
p
=
_
[
f
],
V
=
t
[
f
],
this
.
_isLarge
(
V
)
&&
(
V
=
this
.
_getLargePointList
(
V
)),
p
.
type
===
a
.
CHART_TYPE_K
&&
null
!=
V
){
u
=
p
,
i
=
this
.
query
(
u
,
"
itemStyle.normal.lineStyle.width
"
),
n
=
this
.
query
(
u
,
"
itemStyle.normal.lineStyle.color
"
),
o
=
this
.
query
(
u
,
"
itemStyle.normal.lineStyle.color0
"
),
r
=
this
.
query
(
u
,
"
itemStyle.normal.color
"
),
s
=
this
.
query
(
u
,
"
itemStyle.normal.color0
"
),
l
=
this
.
query
(
u
,
"
itemStyle.emphasis.lineStyle.width
"
),
h
=
this
.
query
(
u
,
"
itemStyle.emphasis.lineStyle.color
"
),
d
=
this
.
query
(
u
,
"
itemStyle.emphasis.lineStyle.color0
"
),
c
=
this
.
query
(
u
,
"
itemStyle.emphasis.color
"
),
m
=
this
.
query
(
u
,
"
itemStyle.emphasis.color0
"
);
for
(
var
k
=
0
,
v
=
V
.
length
;
v
>
k
;
k
++
)
U
=
V
[
k
],
g
=
p
.
data
[
U
[
6
]],
u
=
g
,
y
=
U
[
3
]
<
U
[
2
],
this
.
shapeList
.
push
(
this
.
_getCandle
(
f
,
U
[
6
],
U
[
7
],
U
[
0
],
U
[
1
],
U
[
2
],
U
[
3
],
U
[
4
],
U
[
5
],
y
?
this
.
query
(
u
,
"
itemStyle.normal.color
"
)
||
r
:
this
.
query
(
u
,
"
itemStyle.normal.color0
"
)
||
s
,
this
.
query
(
u
,
"
itemStyle.normal.lineStyle.width
"
)
||
i
,
y
?
this
.
query
(
u
,
"
itemStyle.normal.lineStyle.color
"
)
||
n
:
this
.
query
(
u
,
"
itemStyle.normal.lineStyle.color0
"
)
||
o
,
y
?
this
.
query
(
u
,
"
itemStyle.emphasis.color
"
)
||
c
||
r
:
this
.
query
(
u
,
"
itemStyle.emphasis.color0
"
)
||
m
||
s
,
this
.
query
(
u
,
"
itemStyle.emphasis.lineStyle.width
"
)
||
l
||
i
,
y
?
this
.
query
(
u
,
"
itemStyle.emphasis.lineStyle.color
"
)
||
h
||
n
:
this
.
query
(
u
,
"
itemStyle.emphasis.lineStyle.color0
"
)
||
d
||
o
))}},
_isLarge
:
function
(
e
){
return
e
[
0
][
1
]
<
.
5
},
_getLargePointList
:
function
(
e
){
for
(
var
t
=
this
.
component
.
grid
.
getWidth
(),
i
=
e
.
length
,
n
=
[],
a
=
0
;
t
>
a
;
a
++
)
n
[
a
]
=
e
[
Math
.
floor
(
i
/
t
*
a
)];
return
n
},
_getCandle
:
function
(
e
,
t
,
i
,
a
,
r
,
s
,
l
,
h
,
d
,
c
,
m
,
p
,
u
,
g
,
V
){
var
U
=
this
.
series
,
y
=
U
[
e
],
f
=
y
.
data
[
t
],
_
=
[
f
,
y
],
b
=
{
zlevel
:
this
.
getZlevelBase
(),
z
:
this
.
getZBase
(),
clickable
:
this
.
deepQuery
(
_
,
"
clickable
"
),
hoverable
:
this
.
deepQuery
(
_
,
"
hoverable
"
),
style
:{
x
:
a
,
y
:[
s
,
l
,
h
,
d
],
width
:
r
,
color
:
c
,
strokeColor
:
p
,
lineWidth
:
m
,
brushType
:
"
both
"
},
highlightStyle
:{
color
:
u
,
strokeColor
:
V
,
lineWidth
:
g
},
_seriesIndex
:
e
};
return
b
=
this
.
addLabel
(
b
,
y
,
f
,
i
),
o
.
pack
(
b
,
y
,
e
,
f
,
t
,
i
),
b
=
new
n
(
b
)},
getMarkCoord
:
function
(
e
,
t
){
var
i
=
this
.
series
[
e
],
n
=
this
.
component
.
xAxis
.
getAxis
(
i
.
xAxisIndex
),
a
=
this
.
component
.
yAxis
.
getAxis
(
i
.
yAxisIndex
);
return
[
"
string
"
!=
typeof
t
.
xAxis
&&
n
.
getCoordByIndex
?
n
.
getCoordByIndex
(
t
.
xAxis
||
0
):
n
.
getCoord
(
t
.
xAxis
||
0
),
"
string
"
!=
typeof
t
.
yAxis
&&
a
.
getCoordByIndex
?
a
.
getCoordByIndex
(
t
.
yAxis
||
0
):
a
.
getCoord
(
t
.
yAxis
||
0
)]},
refresh
:
function
(
e
){
e
&&
(
this
.
option
=
e
,
this
.
series
=
e
.
series
),
this
.
backupShapeList
(),
this
.
_buildShape
()},
addDataAnimation
:
function
(
e
,
t
){
function
i
(){
u
--
,
0
===
u
&&
t
&&
t
()}
for
(
var
n
=
this
.
series
,
a
=
{},
r
=
0
,
s
=
e
.
length
;
s
>
r
;
r
++
)
a
[
e
[
r
][
0
]]
=
e
[
r
];
for
(
var
l
,
h
,
d
,
c
,
m
,
p
,
u
=
0
,
r
=
0
,
s
=
this
.
shapeList
.
length
;
s
>
r
;
r
++
)
if
(
m
=
this
.
shapeList
[
r
].
_seriesIndex
,
a
[
m
]
&&!
a
[
m
][
3
]
&&
"
candle
"
===
this
.
shapeList
[
r
].
type
){
if
(
p
=
o
.
get
(
this
.
shapeList
[
r
],
"
dataIndex
"
),
c
=
n
[
m
],
a
[
m
][
2
]
&&
p
===
c
.
data
.
length
-
1
){
this
.
zr
.
delShape
(
this
.
shapeList
[
r
].
id
);
continue
}
if
(
!
a
[
m
][
2
]
&&
0
===
p
){
this
.
zr
.
delShape
(
this
.
shapeList
[
r
].
id
);
continue
}
h
=
this
.
component
.
xAxis
.
getAxis
(
c
.
xAxisIndex
||
0
).
getGap
(),
l
=
a
[
m
][
2
]?
h
:
-
h
,
d
=
0
,
u
++
,
this
.
zr
.
animate
(
this
.
shapeList
[
r
].
id
,
""
).
when
(
this
.
query
(
this
.
option
,
"
animationDurationUpdate
"
),{
position
:[
l
,
d
]}).
done
(
i
).
start
()}
u
||
i
()}},
r
.
inherits
(
t
,
i
),
e
(
"
../chart
"
).
define
(
"
k
"
,
t
),
t
});
\ No newline at end of file
doc/example/www/js/chart/line.js
浏览文件 @
b5f18a56
此差异已折叠。
点击以展开。
doc/example/www/js/chart/map.js
浏览文件 @
b5f18a56
此差异已折叠。
点击以展开。
doc/example/www/js/chart/pie.js
浏览文件 @
b5f18a56
此差异已折叠。
点击以展开。
doc/example/www/js/chart/treemap.js
浏览文件 @
b5f18a56
define
(
"
echarts/chart/treemap
"
,[
"
require
"
,
"
./base
"
,
"
zrender/tool/area
"
,
"
zrender/shape/Rectangle
"
,
"
zrender/shape/Text
"
,
"
../layout/TreeMap
"
,
"
../config
"
,
"
../util/ecData
"
,
"
zrender/tool/util
"
,
"
../chart
"
],
function
(
e
){
function
t
(
e
,
t
,
n
,
a
,
o
){
i
.
call
(
this
,
e
,
t
,
n
,
a
,
o
),
this
.
refresh
(
a
)}
var
i
=
e
(
"
./base
"
),
n
=
e
(
"
zrender/tool/area
"
),
a
=
e
(
"
zrender/shape/Rectangle
"
),
o
=
(
e
(
"
zrender/shape/Text
"
),
e
(
"
../layout/TreeMap
"
)),
r
=
e
(
"
../config
"
);
r
.
treemap
=
{
zlevel
:
0
,
z
:
1
,
calculable
:
!
1
,
clickable
:
!
0
};
var
s
=
e
(
"
../util/ecData
"
),
l
=
e
(
"
zrender/tool/util
"
);
return
t
.
prototype
=
{
type
:
r
.
CHART_TYPE_TREEMAP
,
_buildShape
:
function
(){
var
e
=
this
.
series
;
this
.
data
=
e
[
0
].
data
,
this
.
x0
=
100
,
this
.
y0
=
50
,
this
.
width0
=
500
,
this
.
height0
=
300
,
this
.
_buildTreemap
(
this
.
data
),
this
.
addShapeList
()},
_buildTreemap
:
function
(
e
){
for
(
var
t
=
this
.
width0
*
this
.
height0
,
i
=
0
,
n
=
[],
a
=
0
;
a
<
e
.
length
;
a
++
)
i
+=
e
[
a
].
value
;
for
(
var
r
=
0
;
r
<
e
.
length
;
r
++
)
n
.
push
(
e
[
r
].
value
*
t
/
i
);
for
(
var
s
=
new
o
({
areas
:
n
,
x0
:
this
.
x0
,
y0
:
this
.
y0
,
width0
:
this
.
width0
,
height0
:
this
.
height0
}),
l
=
s
.
rectangleList
,
h
=
0
;
h
<
l
.
length
;
h
++
){
var
m
=
l
[
h
];
this
.
_buildItem
(
m
.
x
,
m
.
y
,
m
.
width
,
m
.
height
,
h
)}},
_buildItem
:
function
(
e
,
t
,
i
,
n
,
a
){
var
o
=
this
.
series
,
r
=
this
.
getRectangle
(
e
,
t
,
i
,
n
,
this
.
data
[
a
].
name
,
a
);
s
.
pack
(
r
,
o
[
0
],
0
,
o
[
0
].
data
[
a
],
0
,
o
[
0
].
data
[
a
].
name
),
this
.
shapeList
.
push
(
r
)},
getRectangle
:
function
(
e
,
t
,
i
,
n
,
o
,
r
){
var
s
=
this
.
series
[
0
],
l
=
this
.
data
[
r
],
h
=
[
l
,
s
],
m
=
this
.
deepMerge
(
h
,
"
itemStyle.normal
"
)
||
{},
V
=
this
.
deepMerge
(
h
,
"
itemStyle.emphasis
"
)
||
{},
U
=
m
.
color
||
this
.
zr
.
getColor
(
r
),
d
=
V
.
color
||
this
.
zr
.
getColor
(
r
),
p
=
m
.
borderWidth
||
0
,
c
=
m
.
borderColor
||
"
#ccc
"
,
u
=
this
.
getLabel
(
e
,
t
,
i
,
n
,
this
.
data
[
r
].
name
,
r
),
g
=
{
zlevel
:
this
.
getZlevelBase
(),
z
:
this
.
getZBase
(),
hoverable
:
!
0
,
clickable
:
!
0
,
style
:
$
.
extend
({
x
:
e
,
y
:
t
,
width
:
i
,
height
:
n
,
brushType
:
"
both
"
,
color
:
U
,
lineWidth
:
p
,
strokeColor
:
c
},
u
.
style
),
highlightStyle
:
$
.
extend
({
color
:
d
,
lineWidth
:
V
.
borderWidth
,
strokeColor
:
V
.
borderColor
},
u
.
highlightStyle
)};
return
new
a
(
g
)},
getLabel
:
function
(
e
,
t
,
i
,
a
,
o
,
r
){
if
(
!
this
.
series
[
0
].
itemStyle
.
normal
.
label
.
show
)
return
{};
var
s
=
12
,
l
=
5
,
h
=
13
,
m
=
h
+
"
px Arial
"
,
V
=
n
.
getTextWidth
(
o
,
m
),
U
=
n
.
getTextHeight
(
o
,
m
);
if
(
l
+
V
>
i
||
s
+
U
>
a
)
return
{};
var
d
=
this
.
data
[
r
],
p
=
{
zlevel
:
this
.
getZlevelBase
()
+
1
,
z
:
this
.
getZBase
()
+
1
,
hoverable
:
!
1
,
style
:{
x
:
e
+
l
,
y
:
t
+
s
,
text
:
o
,
textColor
:
"
#777
"
,
textFont
:
m
},
highlightStyle
:{
text
:
o
}};
return
p
=
{
style
:{
text
:
o
},
highlightStyle
:{
text
:
o
}},
p
=
this
.
addLabel
(
p
,
this
.
series
[
0
],
d
,
o
),
p
.
style
.
textPosition
=
"
specific
"
,
p
.
style
.
textX
=
e
+
l
,
p
.
style
.
textY
=
t
+
s
,
p
.
style
.
textColor
=
p
.
style
.
textColor
||
"
#000
"
,
p
.
highlightStyle
.
textPosition
=
"
specific
"
,
p
.
highlightStyle
.
textX
=
e
+
l
,
p
.
highlightStyle
.
textY
=
t
+
s
,
p
.
highlightStyle
.
textColor
=
p
.
highlightStyle
.
textColor
||
"
#000
"
,
p
},
refresh
:
function
(
e
){
e
&&
(
this
.
option
=
e
,
this
.
series
=
e
.
series
),
this
.
_buildShape
()}},
l
.
inherits
(
t
,
i
),
e
(
"
../chart
"
).
define
(
"
treemap
"
,
t
),
t
}),
define
(
"
echarts/layout/TreeMap
"
,[
"
require
"
],
function
(){
function
e
(
e
){
this
.
rectangleList
=
[];
var
t
=
{
x
:
e
.
x0
,
y
:
e
.
y0
,
width
:
e
.
width0
,
height
:
e
.
height0
};
this
.
squarify
(
e
.
areas
,
t
)}
return
e
.
prototype
.
squarify
=
function
(
e
,
t
){
var
i
=
"
VERTICAL
"
,
n
=
t
.
width
,
a
=
t
.
height
;
t
.
width
<
t
.
height
&&
(
i
=
"
HORIZONTAL
"
,
n
=
t
.
height
,
a
=
t
.
width
);
for
(
var
o
=
this
.
getShapeListInAbstractRow
(
e
,
n
,
a
),
r
=
0
;
r
<
o
.
length
;
r
++
){
o
[
r
].
x
=
0
,
o
[
r
].
y
=
0
;
for
(
var
s
=
0
;
r
>
s
;
s
++
)
o
[
r
].
y
+=
o
[
s
].
height
}
var
l
=
{};
if
(
"
VERTICAL
"
==
i
){
for
(
var
h
=
0
;
h
<
o
.
length
;
h
++
)
this
.
rectangleList
.
push
({
x
:
o
[
h
].
x
+
t
.
x
,
y
:
o
[
h
].
y
+
t
.
y
,
width
:
o
[
h
].
width
,
height
:
o
[
h
].
height
});
l
=
{
x
:
o
[
0
].
width
+
t
.
x
,
y
:
t
.
y
,
width
:
t
.
width
-
o
[
0
].
width
,
height
:
t
.
height
}}
else
{
for
(
var
m
=
0
;
m
<
o
.
length
;
m
++
)
this
.
rectangleList
.
push
({
x
:
o
[
m
].
y
+
t
.
x
,
y
:
o
[
m
].
x
+
t
.
y
,
width
:
o
[
m
].
height
,
height
:
o
[
m
].
width
});
l
=
{
x
:
t
.
x
,
y
:
t
.
y
+
o
[
0
].
width
,
width
:
t
.
width
,
height
:
t
.
height
-
o
[
0
].
width
}}
var
V
=
e
.
slice
(
o
.
length
);
0
!==
V
.
length
&&
this
.
squarify
(
V
,
l
)},
e
.
prototype
.
getShapeListInAbstractRow
=
function
(
e
,
t
,
i
){
if
(
1
===
e
.
length
)
return
[{
width
:
t
,
height
:
i
}];
for
(
var
n
=
1
;
n
<
e
.
length
;
n
++
){
var
a
=
this
.
placeFixedNumberRectangles
(
e
.
slice
(
0
,
n
),
t
,
i
),
o
=
this
.
placeFixedNumberRectangles
(
e
.
slice
(
0
,
n
+
1
),
t
,
i
);
if
(
this
.
isFirstBetter
(
a
,
o
))
return
a
}},
e
.
prototype
.
placeFixedNumberRectangles
=
function
(
e
,
t
,
i
){
for
(
var
n
=
e
.
length
,
a
=
[],
o
=
0
,
r
=
0
;
r
<
e
.
length
;
r
++
)
o
+=
e
[
r
];
for
(
var
s
=
o
/
i
,
l
=
0
;
n
>
l
;
l
++
){
var
h
=
i
*
e
[
l
]
/
o
;
a
.
push
({
width
:
s
,
height
:
h
})}
return
a
},
e
.
prototype
.
isFirstBetter
=
function
(
e
,
t
){
var
i
=
e
[
0
].
height
/
e
[
0
].
width
;
i
=
i
>
1
?
1
/
i
:
i
;
var
n
=
t
[
0
].
height
/
t
[
0
].
width
;
return
n
=
n
>
1
?
1
/
n
:
n
,
Math
.
abs
(
i
-
1
)
<=
Math
.
abs
(
n
-
1
)?
!
0
:
!
1
},
e
});
\ No newline at end of file
doc/example/www/js/chart/venn.js
浏览文件 @
b5f18a56
define
(
"
echarts/chart/venn
"
,[
"
require
"
,
"
./base
"
,
"
zrender/shape/Text
"
,
"
zrender/shape/Circle
"
,
"
zrender/shape/Path
"
,
"
../config
"
,
"
../util/ecData
"
,
"
zrender/tool/util
"
,
"
../chart
"
],
function
(
e
){
function
t
(
e
,
t
,
i
,
a
,
o
){
n
.
call
(
this
,
e
,
t
,
i
,
a
,
o
),
this
.
refresh
(
a
)}
var
n
=
e
(
"
./base
"
),
i
=
e
(
"
zrender/shape/Text
"
),
a
=
e
(
"
zrender/shape/Circle
"
),
o
=
e
(
"
zrender/shape/Path
"
),
r
=
e
(
"
../config
"
);
r
.
venn
=
{
zlevel
:
0
,
z
:
1
,
calculable
:
!
1
};
var
s
=
e
(
"
../util/ecData
"
),
l
=
e
(
"
zrender/tool/util
"
);
return
t
.
prototype
=
{
type
:
r
.
CHART_TYPE_VENN
,
_buildShape
:
function
(){
this
.
selectedMap
=
{},
this
.
_symbol
=
this
.
option
.
symbolList
,
this
.
_queryTarget
,
this
.
_dropBoxList
=
[],
this
.
_vennDataCounter
=
0
;
var
e
=
this
.
series
;
this
.
data
=
e
[
0
].
data
,
this
.
_buildVenn
(
this
.
data
),
this
.
addShapeList
()},
_buildVenn
:
function
(
e
){
var
t
,
n
;
e
[
0
].
value
>
e
[
1
].
value
?(
t
=
this
.
zr
.
getHeight
()
/
3
,
n
=
t
*
Math
.
sqrt
(
e
[
1
].
value
)
/
Math
.
sqrt
(
e
[
0
].
value
)):(
n
=
this
.
zr
.
getHeight
()
/
3
,
t
=
n
*
Math
.
sqrt
(
e
[
0
].
value
)
/
Math
.
sqrt
(
e
[
1
].
value
));
var
i
=
this
.
zr
.
getWidth
()
/
2
-
t
,
a
=
(
t
+
n
)
/
2
*
Math
.
sqrt
(
e
[
2
].
value
)
/
Math
.
sqrt
((
e
[
0
].
value
+
e
[
1
].
value
)
/
2
),
o
=
t
+
n
;
0
!==
e
[
2
].
value
&&
(
o
=
this
.
_getCoincideLength
(
e
[
0
].
value
,
e
[
1
].
value
,
e
[
2
].
value
,
t
,
n
,
a
,
Math
.
abs
(
t
-
n
),
t
+
n
));
var
r
=
i
+
o
,
s
=
this
.
zr
.
getHeight
()
/
2
;
if
(
this
.
_buildItem
(
0
,
0
,
i
,
s
,
t
),
this
.
_buildItem
(
0
,
1
,
r
,
s
,
n
),
0
!==
e
[
2
].
value
&&
e
[
2
].
value
!==
e
[
0
].
value
&&
e
[
2
].
value
!==
e
[
1
].
value
){
var
l
=
(
t
*
t
-
n
*
n
)
/
(
2
*
o
)
+
o
/
2
,
h
=
o
/
2
-
(
t
*
t
-
n
*
n
)
/
(
2
*
o
),
m
=
Math
.
sqrt
(
t
*
t
-
l
*
l
),
V
=
0
,
U
=
0
;
e
[
0
].
value
>
e
[
1
].
value
&&
i
+
l
>
r
&&
(
U
=
1
),
e
[
0
].
value
<
e
[
1
].
value
&&
i
+
h
>
r
&&
(
V
=
1
),
this
.
_buildCoincideItem
(
2
,
i
+
l
,
s
-
m
,
s
+
m
,
t
,
n
,
V
,
U
)}},
_getCoincideLength
:
function
(
e
,
t
,
n
,
i
,
a
,
o
,
r
,
s
){
var
l
=
(
i
*
i
-
a
*
a
)
/
(
2
*
o
)
+
o
/
2
,
h
=
o
/
2
-
(
i
*
i
-
a
*
a
)
/
(
2
*
o
),
m
=
Math
.
acos
(
l
/
i
),
V
=
Math
.
acos
(
h
/
a
),
U
=
i
*
i
*
Math
.
PI
,
d
=
m
*
i
*
i
-
l
*
i
*
Math
.
sin
(
m
)
+
V
*
a
*
a
-
h
*
a
*
Math
.
sin
(
V
),
p
=
d
/
U
,
c
=
n
/
e
,
u
=
Math
.
abs
(
p
/
c
);
return
u
>
.
999
&&
1.001
>
u
?
o
:.
999
>=
u
?(
s
=
o
,
o
=
(
o
+
r
)
/
2
,
this
.
_getCoincideLength
(
e
,
t
,
n
,
i
,
a
,
o
,
r
,
s
)):(
r
=
o
,
o
=
(
o
+
s
)
/
2
,
this
.
_getCoincideLength
(
e
,
t
,
n
,
i
,
a
,
o
,
r
,
s
))},
_buildItem
:
function
(
e
,
t
,
n
,
i
,
a
){
var
o
=
this
.
series
,
r
=
this
.
getCircle
(
t
,
n
,
i
,
a
);
if
(
s
.
pack
(
r
,
o
[
0
],
e
,
o
[
0
].
data
[
t
],
t
,
o
[
0
].
data
[
t
].
name
),
this
.
shapeList
.
push
(
r
),
o
[
0
].
itemStyle
.
normal
.
label
.
show
){
var
l
=
this
.
getLabel
(
t
,
n
,
i
,
a
);
s
.
pack
(
l
,
o
[
0
],
e
,
o
[
0
].
data
[
t
],
t
,
o
[
0
].
data
[
t
].
name
),
this
.
shapeList
.
push
(
l
)}},
_buildCoincideItem
:
function
(
e
,
t
,
n
,
i
,
a
,
r
,
l
,
h
){
var
m
=
this
.
series
,
V
=
m
[
0
],
U
=
this
.
data
[
e
],
d
=
[
U
,
V
],
p
=
this
.
deepMerge
(
d
,
"
itemStyle.normal
"
)
||
{},
c
=
this
.
deepMerge
(
d
,
"
itemStyle.emphasis
"
)
||
{},
u
=
p
.
color
||
this
.
zr
.
getColor
(
e
),
g
=
c
.
color
||
this
.
zr
.
getColor
(
e
),
y
=
"
M
"
+
t
+
"
,
"
+
n
+
"
A
"
+
a
+
"
,
"
+
a
+
"
,0,
"
+
l
+
"
,1,
"
+
t
+
"
,
"
+
i
+
"
A
"
+
r
+
"
,
"
+
r
+
"
,0,
"
+
h
+
"
,1,
"
+
t
+
"
,
"
+
n
,
b
=
{
color
:
u
,
path
:
y
},
f
=
{
zlevel
:
this
.
getZlevelBase
(),
z
:
this
.
getZBase
(),
style
:
b
,
highlightStyle
:{
color
:
g
,
lineWidth
:
c
.
borderWidth
,
strokeColor
:
c
.
borderColor
}};
f
=
new
o
(
f
),
f
.
buildPathArray
&&
(
f
.
style
.
pathArray
=
f
.
buildPathArray
(
b
.
path
)),
s
.
pack
(
f
,
m
[
0
],
0
,
m
[
0
].
data
[
e
],
e
,
m
[
0
].
data
[
e
].
name
),
this
.
shapeList
.
push
(
f
)},
getCircle
:
function
(
e
,
t
,
n
,
i
){
var
o
=
this
.
series
[
0
],
r
=
this
.
data
[
e
],
s
=
[
r
,
o
],
l
=
this
.
deepMerge
(
s
,
"
itemStyle.normal
"
)
||
{},
h
=
this
.
deepMerge
(
s
,
"
itemStyle.emphasis
"
)
||
{},
m
=
l
.
color
||
this
.
zr
.
getColor
(
e
),
V
=
h
.
color
||
this
.
zr
.
getColor
(
e
),
U
=
{
zlevel
:
this
.
getZlevelBase
(),
clickable
:
!
0
,
style
:{
x
:
t
,
y
:
n
,
r
:
i
,
brushType
:
"
fill
"
,
opacity
:
1
,
color
:
m
},
highlightStyle
:{
color
:
V
,
lineWidth
:
h
.
borderWidth
,
strokeColor
:
h
.
borderColor
}};
return
this
.
deepQuery
([
r
,
o
,
this
.
option
],
"
calculable
"
)
&&
(
this
.
setCalculable
(
U
),
U
.
draggable
=!
0
),
new
a
(
U
)},
getLabel
:
function
(
e
,
t
,
n
,
a
){
var
o
=
this
.
series
[
0
],
s
=
o
.
itemStyle
,
l
=
this
.
data
[
e
],
h
=
[
l
,
o
],
m
=
this
.
deepMerge
(
h
,
"
itemStyle.normal
"
)
||
{},
V
=
"
normal
"
,
U
=
s
[
V
].
label
,
d
=
U
.
textStyle
||
{},
p
=
this
.
getLabelText
(
e
,
V
),
c
=
this
.
getFont
(
d
),
u
=
m
.
color
||
this
.
zr
.
getColor
(
e
),
g
=
d
.
fontSize
||
12
,
y
=
{
zlevel
:
r
.
venn
.
zlevel
+
1
,
style
:{
x
:
t
,
y
:
n
-
a
-
g
,
color
:
d
.
color
||
u
,
text
:
p
,
textFont
:
c
,
textAlign
:
"
center
"
}};
return
new
i
(
y
)},
getLabelText
:
function
(
e
,
t
){
var
n
=
this
.
series
,
i
=
n
[
0
],
a
=
i
.
data
[
e
],
o
=
this
.
deepQuery
([
a
,
i
],
"
itemStyle.
"
+
t
+
"
.label.formatter
"
);
return
o
?
"
function
"
==
typeof
o
?
o
(
i
.
name
,
a
.
name
,
a
.
value
):
"
string
"
==
typeof
o
?(
o
=
o
.
replace
(
"
{a}
"
,
"
{a0}
"
).
replace
(
"
{b}
"
,
"
{b0}
"
).
replace
(
"
{c}
"
,
"
{c0}
"
),
o
=
o
.
replace
(
"
{a0}
"
,
i
.
name
).
replace
(
"
{b0}
"
,
a
.
name
).
replace
(
"
{c0}
"
,
a
.
value
)):
void
0
:
a
.
name
},
refresh
:
function
(
e
){
e
&&
(
this
.
option
=
e
,
this
.
series
=
e
.
series
),
this
.
_buildShape
()}},
l
.
inherits
(
t
,
n
),
e
(
"
../chart
"
).
define
(
"
venn
"
,
t
),
t
}),
define
(
"
zrender/shape/Path
"
,[
"
require
"
,
"
./Base
"
,
"
./util/PathProxy
"
,
"
../tool/util
"
],
function
(
e
){
var
t
=
e
(
"
./Base
"
),
n
=
e
(
"
./util/PathProxy
"
),
i
=
n
.
PathSegment
,
a
=
function
(
e
){
return
Math
.
sqrt
(
e
[
0
]
*
e
[
0
]
+
e
[
1
]
*
e
[
1
])},
o
=
function
(
e
,
t
){
return
(
e
[
0
]
*
t
[
0
]
+
e
[
1
]
*
t
[
1
])
/
(
a
(
e
)
*
a
(
t
))},
r
=
function
(
e
,
t
){
return
(
e
[
0
]
*
t
[
1
]
<
e
[
1
]
*
t
[
0
]?
-
1
:
1
)
*
Math
.
acos
(
o
(
e
,
t
))},
s
=
function
(
e
){
t
.
call
(
this
,
e
)};
return
s
.
prototype
=
{
type
:
"
path
"
,
buildPathArray
:
function
(
e
,
t
,
n
){
if
(
!
e
)
return
[];
t
=
t
||
0
,
n
=
n
||
0
;
var
a
=
e
,
o
=
[
"
m
"
,
"
M
"
,
"
l
"
,
"
L
"
,
"
v
"
,
"
V
"
,
"
h
"
,
"
H
"
,
"
z
"
,
"
Z
"
,
"
c
"
,
"
C
"
,
"
q
"
,
"
Q
"
,
"
t
"
,
"
T
"
,
"
s
"
,
"
S
"
,
"
a
"
,
"
A
"
];
a
=
a
.
replace
(
/-/g
,
"
-
"
),
a
=
a
.
replace
(
/ /g
,
"
"
),
a
=
a
.
replace
(
/ /g
,
"
,
"
),
a
=
a
.
replace
(
/,,/g
,
"
,
"
);
var
r
;
for
(
r
=
0
;
r
<
o
.
length
;
r
++
)
a
=
a
.
replace
(
new
RegExp
(
o
[
r
],
"
g
"
),
"
|
"
+
o
[
r
]);
var
s
=
a
.
split
(
"
|
"
),
l
=
[],
h
=
0
,
m
=
0
;
for
(
r
=
1
;
r
<
s
.
length
;
r
++
){
var
V
=
s
[
r
],
U
=
V
.
charAt
(
0
);
V
=
V
.
slice
(
1
),
V
=
V
.
replace
(
new
RegExp
(
"
e,-
"
,
"
g
"
),
"
e-
"
);
var
d
=
V
.
split
(
"
,
"
);
d
.
length
>
0
&&
""
===
d
[
0
]
&&
d
.
shift
();
for
(
var
p
=
0
;
p
<
d
.
length
;
p
++
)
d
[
p
]
=
parseFloat
(
d
[
p
]);
for
(;
d
.
length
>
0
&&!
isNaN
(
d
[
0
]);){
var
c
,
u
,
g
,
y
,
b
,
f
,
k
,
x
,
_
=
null
,
L
=
[],
W
=
h
,
X
=
m
;
switch
(
U
){
case
"
l
"
:
h
+=
d
.
shift
(),
m
+=
d
.
shift
(),
_
=
"
L
"
,
L
.
push
(
h
,
m
);
break
;
case
"
L
"
:
h
=
d
.
shift
(),
m
=
d
.
shift
(),
L
.
push
(
h
,
m
);
break
;
case
"
m
"
:
h
+=
d
.
shift
(),
m
+=
d
.
shift
(),
_
=
"
M
"
,
L
.
push
(
h
,
m
),
U
=
"
l
"
;
break
;
case
"
M
"
:
h
=
d
.
shift
(),
m
=
d
.
shift
(),
_
=
"
M
"
,
L
.
push
(
h
,
m
),
U
=
"
L
"
;
break
;
case
"
h
"
:
h
+=
d
.
shift
(),
_
=
"
L
"
,
L
.
push
(
h
,
m
);
break
;
case
"
H
"
:
h
=
d
.
shift
(),
_
=
"
L
"
,
L
.
push
(
h
,
m
);
break
;
case
"
v
"
:
m
+=
d
.
shift
(),
_
=
"
L
"
,
L
.
push
(
h
,
m
);
break
;
case
"
V
"
:
m
=
d
.
shift
(),
_
=
"
L
"
,
L
.
push
(
h
,
m
);
break
;
case
"
C
"
:
L
.
push
(
d
.
shift
(),
d
.
shift
(),
d
.
shift
(),
d
.
shift
()),
h
=
d
.
shift
(),
m
=
d
.
shift
(),
L
.
push
(
h
,
m
);
break
;
case
"
c
"
:
L
.
push
(
h
+
d
.
shift
(),
m
+
d
.
shift
(),
h
+
d
.
shift
(),
m
+
d
.
shift
()),
h
+=
d
.
shift
(),
m
+=
d
.
shift
(),
_
=
"
C
"
,
L
.
push
(
h
,
m
);
break
;
case
"
S
"
:
c
=
h
,
u
=
m
,
g
=
l
[
l
.
length
-
1
],
"
C
"
===
g
.
command
&&
(
c
=
h
+
(
h
-
g
.
points
[
2
]),
u
=
m
+
(
m
-
g
.
points
[
3
])),
L
.
push
(
c
,
u
,
d
.
shift
(),
d
.
shift
()),
h
=
d
.
shift
(),
m
=
d
.
shift
(),
_
=
"
C
"
,
L
.
push
(
h
,
m
);
break
;
case
"
s
"
:
c
=
h
,
u
=
m
,
g
=
l
[
l
.
length
-
1
],
"
C
"
===
g
.
command
&&
(
c
=
h
+
(
h
-
g
.
points
[
2
]),
u
=
m
+
(
m
-
g
.
points
[
3
])),
L
.
push
(
c
,
u
,
h
+
d
.
shift
(),
m
+
d
.
shift
()),
h
+=
d
.
shift
(),
m
+=
d
.
shift
(),
_
=
"
C
"
,
L
.
push
(
h
,
m
);
break
;
case
"
Q
"
:
L
.
push
(
d
.
shift
(),
d
.
shift
()),
h
=
d
.
shift
(),
m
=
d
.
shift
(),
L
.
push
(
h
,
m
);
break
;
case
"
q
"
:
L
.
push
(
h
+
d
.
shift
(),
m
+
d
.
shift
()),
h
+=
d
.
shift
(),
m
+=
d
.
shift
(),
_
=
"
Q
"
,
L
.
push
(
h
,
m
);
break
;
case
"
T
"
:
c
=
h
,
u
=
m
,
g
=
l
[
l
.
length
-
1
],
"
Q
"
===
g
.
command
&&
(
c
=
h
+
(
h
-
g
.
points
[
0
]),
u
=
m
+
(
m
-
g
.
points
[
1
])),
h
=
d
.
shift
(),
m
=
d
.
shift
(),
_
=
"
Q
"
,
L
.
push
(
c
,
u
,
h
,
m
);
break
;
case
"
t
"
:
c
=
h
,
u
=
m
,
g
=
l
[
l
.
length
-
1
],
"
Q
"
===
g
.
command
&&
(
c
=
h
+
(
h
-
g
.
points
[
0
]),
u
=
m
+
(
m
-
g
.
points
[
1
])),
h
+=
d
.
shift
(),
m
+=
d
.
shift
(),
_
=
"
Q
"
,
L
.
push
(
c
,
u
,
h
,
m
);
break
;
case
"
A
"
:
y
=
d
.
shift
(),
b
=
d
.
shift
(),
f
=
d
.
shift
(),
k
=
d
.
shift
(),
x
=
d
.
shift
(),
W
=
h
,
X
=
m
,
h
=
d
.
shift
(),
m
=
d
.
shift
(),
_
=
"
A
"
,
L
=
this
.
_convertPoint
(
W
,
X
,
h
,
m
,
k
,
x
,
y
,
b
,
f
);
break
;
case
"
a
"
:
y
=
d
.
shift
(),
b
=
d
.
shift
(),
f
=
d
.
shift
(),
k
=
d
.
shift
(),
x
=
d
.
shift
(),
W
=
h
,
X
=
m
,
h
+=
d
.
shift
(),
m
+=
d
.
shift
(),
_
=
"
A
"
,
L
=
this
.
_convertPoint
(
W
,
X
,
h
,
m
,
k
,
x
,
y
,
b
,
f
)}
for
(
var
K
=
0
,
v
=
L
.
length
;
v
>
K
;
K
+=
2
)
L
[
K
]
+=
t
,
L
[
K
+
1
]
+=
n
;
l
.
push
(
new
i
(
_
||
U
,
L
))}(
"
z
"
===
U
||
"
Z
"
===
U
)
&&
l
.
push
(
new
i
(
"
z
"
,[]))}
return
l
},
_convertPoint
:
function
(
e
,
t
,
n
,
i
,
a
,
s
,
l
,
h
,
m
){
var
V
=
m
*
(
Math
.
PI
/
180
),
U
=
Math
.
cos
(
V
)
*
(
e
-
n
)
/
2
+
Math
.
sin
(
V
)
*
(
t
-
i
)
/
2
,
d
=-
1
*
Math
.
sin
(
V
)
*
(
e
-
n
)
/
2
+
Math
.
cos
(
V
)
*
(
t
-
i
)
/
2
,
p
=
U
*
U
/
(
l
*
l
)
+
d
*
d
/
(
h
*
h
);
p
>
1
&&
(
l
*=
Math
.
sqrt
(
p
),
h
*=
Math
.
sqrt
(
p
));
var
c
=
Math
.
sqrt
((
l
*
l
*
h
*
h
-
l
*
l
*
d
*
d
-
h
*
h
*
U
*
U
)
/
(
l
*
l
*
d
*
d
+
h
*
h
*
U
*
U
));
a
===
s
&&
(
c
*=-
1
),
isNaN
(
c
)
&&
(
c
=
0
);
var
u
=
c
*
l
*
d
/
h
,
g
=
c
*-
h
*
U
/
l
,
y
=
(
e
+
n
)
/
2
+
Math
.
cos
(
V
)
*
u
-
Math
.
sin
(
V
)
*
g
,
b
=
(
t
+
i
)
/
2
+
Math
.
sin
(
V
)
*
u
+
Math
.
cos
(
V
)
*
g
,
f
=
r
([
1
,
0
],[(
U
-
u
)
/
l
,(
d
-
g
)
/
h
]),
k
=
[(
U
-
u
)
/
l
,(
d
-
g
)
/
h
],
x
=
[(
-
1
*
U
-
u
)
/
l
,(
-
1
*
d
-
g
)
/
h
],
_
=
r
(
k
,
x
);
return
o
(
k
,
x
)
<=-
1
&&
(
_
=
Math
.
PI
),
o
(
k
,
x
)
>=
1
&&
(
_
=
0
),
0
===
s
&&
_
>
0
&&
(
_
-=
2
*
Math
.
PI
),
1
===
s
&&
0
>
_
&&
(
_
+=
2
*
Math
.
PI
),[
y
,
b
,
l
,
h
,
f
,
_
,
V
,
s
]},
buildPath
:
function
(
e
,
t
){
var
n
=
t
.
path
,
i
=
t
.
x
||
0
,
a
=
t
.
y
||
0
;
t
.
pathArray
=
t
.
pathArray
||
this
.
buildPathArray
(
n
,
i
,
a
);
for
(
var
o
=
t
.
pathArray
,
r
=
t
.
pointList
=
[],
s
=
[],
l
=
0
,
h
=
o
.
length
;
h
>
l
;
l
++
){
"
M
"
==
o
[
l
].
command
.
toUpperCase
()
&&
(
s
.
length
>
0
&&
r
.
push
(
s
),
s
=
[]);
for
(
var
m
=
o
[
l
].
points
,
V
=
0
,
U
=
m
.
length
;
U
>
V
;
V
+=
2
)
s
.
push
([
m
[
V
],
m
[
V
+
1
]])}
s
.
length
>
0
&&
r
.
push
(
s
);
for
(
var
l
=
0
,
h
=
o
.
length
;
h
>
l
;
l
++
){
var
d
=
o
[
l
].
command
,
m
=
o
[
l
].
points
;
switch
(
d
){
case
"
L
"
:
e
.
lineTo
(
m
[
0
],
m
[
1
]);
break
;
case
"
M
"
:
e
.
moveTo
(
m
[
0
],
m
[
1
]);
break
;
case
"
C
"
:
e
.
bezierCurveTo
(
m
[
0
],
m
[
1
],
m
[
2
],
m
[
3
],
m
[
4
],
m
[
5
]);
break
;
case
"
Q
"
:
e
.
quadraticCurveTo
(
m
[
0
],
m
[
1
],
m
[
2
],
m
[
3
]);
break
;
case
"
A
"
:
var
p
=
m
[
0
],
c
=
m
[
1
],
u
=
m
[
2
],
g
=
m
[
3
],
y
=
m
[
4
],
b
=
m
[
5
],
f
=
m
[
6
],
k
=
m
[
7
],
x
=
u
>
g
?
u
:
g
,
_
=
u
>
g
?
1
:
u
/
g
,
L
=
u
>
g
?
g
/
u
:
1
;
e
.
translate
(
p
,
c
),
e
.
rotate
(
f
),
e
.
scale
(
_
,
L
),
e
.
arc
(
0
,
0
,
x
,
y
,
y
+
b
,
1
-
k
),
e
.
scale
(
1
/
_
,
1
/
L
),
e
.
rotate
(
-
f
),
e
.
translate
(
-
p
,
-
c
);
break
;
case
"
z
"
:
e
.
closePath
()}}},
getRect
:
function
(
e
){
if
(
e
.
__rect
)
return
e
.
__rect
;
var
t
;
t
=
"
stroke
"
==
e
.
brushType
||
"
fill
"
==
e
.
brushType
?
e
.
lineWidth
||
1
:
0
;
for
(
var
n
=
Number
.
MAX_VALUE
,
i
=
Number
.
MIN_VALUE
,
a
=
Number
.
MAX_VALUE
,
o
=
Number
.
MIN_VALUE
,
r
=
e
.
x
||
0
,
s
=
e
.
y
||
0
,
l
=
e
.
pathArray
||
this
.
buildPathArray
(
e
.
path
),
h
=
0
;
h
<
l
.
length
;
h
++
)
for
(
var
m
=
l
[
h
].
points
,
V
=
0
;
V
<
m
.
length
;
V
++
)
V
%
2
===
0
?(
m
[
V
]
+
r
<
n
&&
(
n
=
m
[
V
]),
m
[
V
]
+
r
>
i
&&
(
i
=
m
[
V
])):(
m
[
V
]
+
s
<
a
&&
(
a
=
m
[
V
]),
m
[
V
]
+
s
>
o
&&
(
o
=
m
[
V
]));
var
U
;
return
U
=
n
===
Number
.
MAX_VALUE
||
i
===
Number
.
MIN_VALUE
||
a
===
Number
.
MAX_VALUE
||
o
===
Number
.
MIN_VALUE
?{
x
:
0
,
y
:
0
,
width
:
0
,
height
:
0
}:{
x
:
Math
.
round
(
n
-
t
/
2
),
y
:
Math
.
round
(
a
-
t
/
2
),
width
:
i
-
n
+
t
,
height
:
o
-
a
+
t
},
e
.
__rect
=
U
,
U
}},
e
(
"
../tool/util
"
).
inherits
(
s
,
t
),
s
});
\ No newline at end of file
doc/example/www/js/echarts.js
浏览文件 @
b5f18a56
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录