Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
missman
incubator-echarts
提交
89565df1
I
incubator-echarts
项目概览
missman
/
incubator-echarts
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
I
incubator-echarts
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
89565df1
编写于
2月 23, 2017
作者:
D
dengxiaohong01
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
extract common part and private fn
上级
07d81487
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
172 addition
and
197 deletion
+172
-197
src/chart/heatmap/HeatmapView.js
src/chart/heatmap/HeatmapView.js
+90
-115
src/component/calendar/CalendarView.js
src/component/calendar/CalendarView.js
+1
-1
src/coord/calendar/Calendar.js
src/coord/calendar/Calendar.js
+81
-81
未找到文件。
src/chart/heatmap/HeatmapView.js
浏览文件 @
89565df1
...
...
@@ -77,25 +77,40 @@ define(function (require) {
this
.
group
.
removeAll
();
var
coordSys
=
seriesModel
.
coordinateSystem
;
if
(
coordSys
.
type
===
'
cartesian2d
'
)
{
this
.
_renderOnCartesian
(
coordSys
,
seriesModel
,
api
);
if
(
coordSys
.
type
===
'
cartesian2d
'
||
coordSys
.
type
===
'
calendar
'
)
{
this
.
_renderOnCartesian
AndCalendar
(
coordSys
,
seriesModel
,
api
);
}
else
if
(
isGeoCoordSys
(
coordSys
))
{
this
.
_renderOnGeo
(
coordSys
,
seriesModel
,
visualMapOfThisSeries
,
api
);
}
else
if
(
coordSys
.
type
===
'
calendar
'
)
{
this
.
_renderOnCalendar
(
coordSys
,
seriesModel
,
api
);
}
},
dispose
:
function
()
{},
_renderOnCa
lendar
:
function
(
calendar
,
seriesModel
,
api
)
{
_renderOnCa
rtesianAndCalendar
:
function
(
coordSys
,
seriesModel
,
api
)
{
var
group
=
this
.
group
;
if
(
coordSys
.
type
===
'
cartesian2d
'
)
{
var
xAxis
=
coordSys
.
getAxis
(
'
x
'
);
var
yAxis
=
coordSys
.
getAxis
(
'
y
'
);
if
(
__DEV__
)
{
if
(
!
(
xAxis
.
type
===
'
category
'
&&
yAxis
.
type
===
'
category
'
))
{
throw
new
Error
(
'
Heatmap on cartesian must have two category axes
'
);
}
if
(
!
(
xAxis
.
onBand
&&
yAxis
.
onBand
))
{
throw
new
Error
(
'
Heatmap on cartesian must have two axes with boundaryGap true
'
);
}
}
var
width
=
xAxis
.
getBandWidth
();
var
height
=
yAxis
.
getBandWidth
();
}
var
group
=
this
.
group
;
var
data
=
seriesModel
.
getData
();
var
itemStyleQuery
=
'
itemStyle.normal
'
;
...
...
@@ -107,129 +122,89 @@ define(function (require) {
var
labelModel
=
seriesModel
.
getModel
(
'
label.normal
'
);
var
hoverLabelModel
=
seriesModel
.
getModel
(
'
label.emphasis
'
);
data
.
each
([
'
time
'
,
'
value
'
],
function
(
time
,
value
,
idx
)
{
var
itemModel
=
data
.
getItemModel
(
idx
);
// Ignore empty data
if
(
isNaN
(
value
))
{
return
;
}
var
rect
=
new
graphic
.
Rect
({
z2
:
1
,
shape
:
calendar
.
dataToRect
([
time
,
value
]).
contentShape
,
style
:
{
fill
:
data
.
getItemVisual
(
idx
,
'
color
'
),
opacity
:
data
.
getItemVisual
(
idx
,
'
opacity
'
)
}
});
// Optimization for large datset
if
(
data
.
hasItemOption
)
{
style
=
itemModel
.
getModel
(
itemStyleQuery
).
getItemStyle
([
'
color
'
]);
hoverStl
=
itemModel
.
getModel
(
hoverItemStyleQuery
).
getItemStyle
();
labelModel
=
itemModel
.
getModel
(
labelQuery
);
hoverLabelModel
=
itemModel
.
getModel
(
hoverLabelQuery
);
}
data
.
each
(
coordSys
.
type
===
'
cartesian2d
'
?
[
'
x
'
,
'
y
'
,
'
z
'
]
:
[
'
time
'
,
'
value
'
],
var
rawValue
=
seriesModel
.
getRawValue
(
idx
);
var
defaultText
=
'
-
'
;
if
(
rawValue
&&
rawValue
[
2
]
!=
null
)
{
defaultText
=
rawValue
[
2
];
}
if
(
labelModel
.
getShallow
(
'
show
'
))
{
graphic
.
setText
(
style
,
labelModel
);
style
.
text
=
seriesModel
.
getFormattedLabel
(
idx
,
'
normal
'
)
||
defaultText
;
}
if
(
hoverLabelModel
.
getShallow
(
'
show
'
))
{
graphic
.
setText
(
hoverStl
,
hoverLabelModel
);
hoverStl
.
text
=
seriesModel
.
getFormattedLabel
(
idx
,
'
emphasis
'
)
||
defaultText
;
}
function
(
x
,
y
,
z
,
idx
)
{
var
rect
;
rect
.
setStyle
(
style
);
if
(
coordSys
.
type
===
'
cartesian2d
'
)
{
graphic
.
setHoverStyle
(
rect
,
data
.
hasItemOption
?
hoverStl
:
zrUtil
.
extend
({},
hoverStl
));
// Ignore empty data
if
(
isNaN
(
z
))
{
return
;
}
group
.
add
(
rect
);
data
.
setItemGraphicEl
(
idx
,
rect
);
});
},
_renderOnCartesian
:
function
(
cartesian
,
seriesModel
,
api
)
{
var
xAxis
=
cartesian
.
getAxis
(
'
x
'
);
var
yAxis
=
cartesian
.
getAxis
(
'
y
'
);
var
group
=
this
.
group
;
if
(
__DEV__
)
{
if
(
!
(
xAxis
.
type
===
'
category
'
&&
yAxis
.
type
===
'
category
'
))
{
throw
new
Error
(
'
Heatmap on cartesian must have two category axes
'
);
}
if
(
!
(
xAxis
.
onBand
&&
yAxis
.
onBand
))
{
throw
new
Error
(
'
Heatmap on cartesian must have two axes with boundaryGap true
'
);
}
}
var
point
=
coordSys
.
dataToPoint
([
x
,
y
]);
var
width
=
xAxis
.
getBandWidth
();
var
height
=
yAxis
.
getBandWidth
();
rect
=
new
graphic
.
Rect
({
shape
:
{
x
:
point
[
0
]
-
width
/
2
,
y
:
point
[
1
]
-
height
/
2
,
width
:
width
,
height
:
height
},
style
:
{
fill
:
data
.
getItemVisual
(
idx
,
'
color
'
),
opacity
:
data
.
getItemVisual
(
idx
,
'
opacity
'
)
}
});
}
else
{
// x => time y => value z => idx
// Ignore empty data
if
(
isNaN
(
y
))
{
return
;
}
idx
=
z
;
rect
=
new
graphic
.
Rect
({
z2
:
1
,
shape
:
coordSys
.
dataToRect
([
x
,
y
]).
contentShape
,
style
:
{
fill
:
data
.
getItemVisual
(
idx
,
'
color
'
),
opacity
:
data
.
getItemVisual
(
idx
,
'
opacity
'
)
}
});
}
var
data
=
seriesModel
.
getData
();
var
itemStyleQuery
=
'
itemStyle.normal
'
;
var
hoverItemStyleQuery
=
'
itemStyle.emphasis
'
;
var
labelQuery
=
'
label.normal
'
;
var
hoverLabelQuery
=
'
label.emphasis
'
;
var
style
=
seriesModel
.
getModel
(
itemStyleQuery
).
getItemStyle
([
'
color
'
]);
var
hoverStl
=
seriesModel
.
getModel
(
hoverItemStyleQuery
).
getItemStyle
();
var
labelModel
=
seriesModel
.
getModel
(
'
label.normal
'
);
var
hoverLabelModel
=
seriesModel
.
getModel
(
'
label.emphasis
'
);
var
itemModel
=
data
.
getItemModel
(
idx
);
data
.
each
([
'
x
'
,
'
y
'
,
'
z
'
],
function
(
x
,
y
,
z
,
idx
)
{
var
itemModel
=
data
.
getItemModel
(
idx
);
var
point
=
cartesian
.
dataToPoint
([
x
,
y
]);
// Ignore empty data
if
(
isNaN
(
z
))
{
return
;
}
var
rect
=
new
graphic
.
Rect
({
shape
:
{
x
:
point
[
0
]
-
width
/
2
,
y
:
point
[
1
]
-
height
/
2
,
width
:
width
,
height
:
height
},
style
:
{
fill
:
data
.
getItemVisual
(
idx
,
'
color
'
),
opacity
:
data
.
getItemVisual
(
idx
,
'
opacity
'
)
// Optimization for large datset
if
(
data
.
hasItemOption
)
{
style
=
itemModel
.
getModel
(
itemStyleQuery
).
getItemStyle
([
'
color
'
]);
hoverStl
=
itemModel
.
getModel
(
hoverItemStyleQuery
).
getItemStyle
();
labelModel
=
itemModel
.
getModel
(
labelQuery
);
hoverLabelModel
=
itemModel
.
getModel
(
hoverLabelQuery
);
}
});
// Optimization for large datset
if
(
data
.
hasItemOption
)
{
style
=
itemModel
.
getModel
(
itemStyleQuery
).
getItemStyle
([
'
color
'
]);
hoverStl
=
itemModel
.
getModel
(
hoverItemStyleQuery
).
getItemStyle
();
labelModel
=
itemModel
.
getModel
(
labelQuery
);
hoverLabelModel
=
itemModel
.
getModel
(
hoverLabelQuery
);
}
var
rawValue
=
seriesModel
.
getRawValue
(
idx
);
var
defaultText
=
'
-
'
;
if
(
rawValue
&&
rawValue
[
2
]
!=
null
)
{
defaultText
=
rawValue
[
2
];
}
if
(
labelModel
.
getShallow
(
'
show
'
))
{
graphic
.
setText
(
style
,
labelModel
);
style
.
text
=
seriesModel
.
getFormattedLabel
(
idx
,
'
normal
'
)
||
defaultText
;
}
if
(
hoverLabelModel
.
getShallow
(
'
show
'
))
{
graphic
.
setText
(
hoverStl
,
hoverLabelModel
);
hoverStl
.
text
=
seriesModel
.
getFormattedLabel
(
idx
,
'
emphasis
'
)
||
defaultText
;
}
var
rawValue
=
seriesModel
.
getRawValue
(
idx
);
var
defaultText
=
'
-
'
;
if
(
rawValue
&&
rawValue
[
2
]
!=
null
)
{
defaultText
=
rawValue
[
2
];
}
if
(
labelModel
.
getShallow
(
'
show
'
))
{
graphic
.
setText
(
style
,
labelModel
);
style
.
text
=
seriesModel
.
getFormattedLabel
(
idx
,
'
normal
'
)
||
defaultText
;
}
if
(
hoverLabelModel
.
getShallow
(
'
show
'
))
{
graphic
.
setText
(
hoverStl
,
hoverLabelModel
);
hoverStl
.
text
=
seriesModel
.
getFormattedLabel
(
idx
,
'
emphasis
'
)
||
defaultText
;
}
rect
.
setStyle
(
style
);
rect
.
setStyle
(
style
);
graphic
.
setHoverStyle
(
rect
,
data
.
hasItemOption
?
hoverStl
:
zrUtil
.
extend
({},
hoverStl
));
graphic
.
setHoverStyle
(
rect
,
data
.
hasItemOption
?
hoverStl
:
zrUtil
.
extend
({},
hoverStl
));
group
.
add
(
rect
);
data
.
setItemGraphicEl
(
idx
,
rect
);
});
group
.
add
(
rect
);
data
.
setItemGraphicEl
(
idx
,
rect
);
}
);
},
_renderOnGeo
:
function
(
geo
,
seriesModel
,
visualMapModel
,
api
)
{
...
...
src/component/calendar/CalendarView.js
浏览文件 @
89565df1
...
...
@@ -145,7 +145,7 @@ define(function (require) {
firstDay
=
coordSys
.
getDateInfo
(
date
);
}
addPoints
(
coordSys
.
getNextNDay
(
rangeData
.
range
[
1
]
,
1
).
formatedDate
);
addPoints
(
coordSys
.
getNextNDay
(
rangeData
.
end
.
time
,
1
).
formatedDate
);
function
addPoints
(
date
)
{
...
...
src/coord/calendar/Calendar.js
浏览文件 @
89565df1
...
...
@@ -8,7 +8,7 @@ define(function (require) {
'
use strict
'
;
var
layout
=
require
(
'
../../util/layout
'
);
var
number
=
require
(
'
../../util/number
'
);
var
number
Util
=
require
(
'
../../util/number
'
);
var
zrUtil
=
require
(
'
zrender/core/util
'
);
// (24*60*60*1000)
...
...
@@ -68,40 +68,48 @@ define(function (require) {
return
this
.
_firstDayOfWeek
;
},
_initRangeOption
:
function
()
{
var
range
=
this
.
_model
.
get
(
'
range
'
);
var
rg
=
range
;
/**
* get date info
*
* @param {string|number} date date
* @return {Object} info
*/
getDateInfo
:
function
(
date
)
{
if
(
zrUtil
.
isArray
(
rg
)
&&
rg
.
length
===
1
)
{
rg
=
rg
[
0
];
}
date
=
numberUtil
.
parseDate
(
date
);
if
(
/^
\d{4}
$/
.
test
(
rg
))
{
range
=
[
rg
+
'
-01-01
'
,
rg
+
'
-12-31
'
];
}
var
y
=
date
.
getFullYear
();
if
(
/^
\d{4}[\/
|-
]\d{1,2}
$/
.
test
(
rg
))
{
var
m
=
date
.
getMonth
()
+
1
;
m
=
m
<
10
?
'
0
'
+
m
:
m
;
var
start
=
this
.
getDateInfo
(
rg
);
var
firstDay
=
start
.
date
;
firstDay
.
setMonth
(
firstDay
.
getMonth
()
+
1
);
var
d
=
date
.
getDate
();
d
=
d
<
10
?
'
0
'
+
d
:
d
;
var
end
=
this
.
getNextNDay
(
firstDay
,
-
1
);
range
=
[
start
.
formatedDate
,
end
.
formatedDate
];
}
var
day
=
date
.
getDay
();
if
(
/^
\d{4}[\/
|-
]\d{1,2}[\/
|-
]\d{1,2}
$/
.
test
(
rg
))
{
range
=
[
rg
,
rg
];
}
day
=
Math
.
abs
((
day
+
7
-
this
.
getFirstDayOfWeek
())
%
7
);
var
tmp
=
this
.
getRangeInfo
(
range
);
return
{
y
:
y
,
m
:
m
,
d
:
d
,
day
:
day
,
time
:
date
.
getTime
(),
formatedDate
:
y
+
'
-
'
+
m
+
'
-
'
+
d
,
date
:
date
};
},
if
(
tmp
.
start
.
time
>
tmp
.
end
.
time
)
{
range
.
reverse
();
getNextNDay
:
function
(
date
,
n
)
{
n
=
n
||
0
;
if
(
n
===
0
)
{
return
this
.
getDateInfo
(
date
);
}
return
range
;
var
time
=
this
.
getDateInfo
(
date
).
time
;
return
this
.
getDateInfo
(
time
+
ONE_DAY
*
n
);
},
update
:
function
(
ecModel
,
api
)
{
...
...
@@ -118,7 +126,7 @@ define(function (require) {
this
.
_firstDayOfWeek
=
this
.
_model
.
getModel
(
'
dayLabel
'
).
get
(
'
firstDay
'
);
this
.
_rangeInfo
=
this
.
getRangeInfo
(
this
.
_initRangeOption
());
this
.
_rangeInfo
=
this
.
_
getRangeInfo
(
this
.
_initRangeOption
());
var
size
=
this
.
_model
.
get
(
'
cellSize
'
);
...
...
@@ -148,16 +156,16 @@ define(function (require) {
dataToPoint
:
function
(
data
,
noClip
)
{
var
dayInfo
=
this
.
getDateInfo
(
data
[
0
]);
var
range
=
this
.
_rangeInfo
.
range
;
var
range
=
this
.
_rangeInfo
;
var
date
=
dayInfo
.
formatedDate
;
// if not in range return [NaN, NaN]
if
(
!
noClip
&&
!
this
.
isInRangeOfDate
(
date
,
rang
e
))
{
if
(
!
noClip
&&
!
(
dayInfo
.
time
>=
range
.
start
.
time
&&
dayInfo
.
time
<=
range
.
end
.
tim
e
))
{
return
[
NaN
,
NaN
];
}
var
week
=
dayInfo
.
day
;
var
nthWeek
=
this
.
getRangeInfo
([
range
[
0
]
,
date
]).
weeks
;
var
nthWeek
=
this
.
_getRangeInfo
([
range
.
start
.
time
,
date
]).
weeks
;
if
(
this
.
_orient
===
'
vertical
'
)
{
return
[
...
...
@@ -243,10 +251,46 @@ define(function (require) {
var
range
=
this
.
_rangeInfo
.
range
;
if
(
this
.
_orient
===
'
vertical
'
)
{
return
this
.
getDateByWeeksAndDay
(
nthY
,
nthX
-
1
,
range
);
return
this
.
_
getDateByWeeksAndDay
(
nthY
,
nthX
-
1
,
range
);
}
return
this
.
getDateByWeeksAndDay
(
nthX
,
nthY
-
1
,
range
);
return
this
.
_getDateByWeeksAndDay
(
nthX
,
nthY
-
1
,
range
);
},
_initRangeOption
:
function
()
{
var
range
=
this
.
_model
.
get
(
'
range
'
);
var
rg
=
range
;
if
(
zrUtil
.
isArray
(
rg
)
&&
rg
.
length
===
1
)
{
rg
=
rg
[
0
];
}
if
(
/^
\d{4}
$/
.
test
(
rg
))
{
range
=
[
rg
+
'
-01-01
'
,
rg
+
'
-12-31
'
];
}
if
(
/^
\d{4}[\/
|-
]\d{1,2}
$/
.
test
(
rg
))
{
var
start
=
this
.
getDateInfo
(
rg
);
var
firstDay
=
start
.
date
;
firstDay
.
setMonth
(
firstDay
.
getMonth
()
+
1
);
var
end
=
this
.
getNextNDay
(
firstDay
,
-
1
);
range
=
[
start
.
formatedDate
,
end
.
formatedDate
];
}
if
(
/^
\d{4}[\/
|-
]\d{1,2}[\/
|-
]\d{1,2}
$/
.
test
(
rg
))
{
range
=
[
rg
,
rg
];
}
var
tmp
=
this
.
_getRangeInfo
(
range
);
if
(
tmp
.
start
.
time
>
tmp
.
end
.
time
)
{
range
.
reverse
();
}
return
range
;
},
/**
...
...
@@ -255,7 +299,7 @@ define(function (require) {
* @param {Array} range range ['2017-01-01', '2017-07-08']
* @return {Object} obj
*/
getRangeInfo
:
function
(
range
)
{
_
getRangeInfo
:
function
(
range
)
{
var
start
=
this
.
getDateInfo
(
range
[
0
]);
var
end
=
this
.
getDateInfo
(
range
[
1
]);
...
...
@@ -283,8 +327,8 @@ define(function (require) {
* @param {Array} range [d1, d2]
* @return {string} 'YYYY-MM-DD'
*/
getDateByWeeksAndDay
:
function
(
nthWeek
,
day
,
range
)
{
var
rangeInfo
=
this
.
getRangeInfo
(
range
);
_
getDateByWeeksAndDay
:
function
(
nthWeek
,
day
,
range
)
{
var
rangeInfo
=
this
.
_
getRangeInfo
(
range
);
if
(
nthWeek
>
rangeInfo
.
weeks
||
(
nthWeek
===
0
&&
day
<
rangeInfo
.
fweek
)
...
...
@@ -295,7 +339,7 @@ define(function (require) {
var
nthDay
=
(
nthWeek
-
1
)
*
7
-
rangeInfo
.
fweek
+
day
;
var
time
=
this
.
getDateInfo
(
rangeInfo
.
range
[
0
])
.
time
+
nthDay
*
ONE_DAY
;
var
time
=
rangeInfo
.
start
.
time
+
nthDay
*
ONE_DAY
;
return
this
.
getDateInfo
(
time
);
...
...
@@ -306,9 +350,9 @@ define(function (require) {
*
* @param {string|number} date date
* @param {Array} range [d1, d2]
* @return {
B
oolean} true | false
* @return {
b
oolean} true | false
*/
isInRangeOfDate
:
function
(
date
,
range
)
{
_
isInRangeOfDate
:
function
(
date
,
range
)
{
var
start
=
this
.
getDateInfo
(
range
[
0
]).
time
;
var
end
=
this
.
getDateInfo
(
range
[
1
]).
time
;
var
cur
=
this
.
getDateInfo
(
date
).
time
;
...
...
@@ -318,50 +362,6 @@ define(function (require) {
}
return
false
;
},
/**
* get date info
*
* @param {string|number} date date
* @return {Object} info
*/
getDateInfo
:
function
(
date
)
{
date
=
number
.
parseDate
(
date
);
var
y
=
date
.
getFullYear
();
var
m
=
date
.
getMonth
()
+
1
;
m
=
m
<
10
?
'
0
'
+
m
:
m
;
var
d
=
date
.
getDate
();
d
=
d
<
10
?
'
0
'
+
d
:
d
;
var
day
=
date
.
getDay
();
day
=
Math
.
abs
((
day
+
7
-
this
.
getFirstDayOfWeek
())
%
7
);
return
{
y
:
y
,
m
:
m
,
d
:
d
,
day
:
day
,
time
:
date
.
getTime
(),
formatedDate
:
y
+
'
-
'
+
m
+
'
-
'
+
d
,
date
:
date
};
},
getNextNDay
:
function
(
date
,
n
)
{
n
=
n
||
0
;
if
(
n
===
0
)
{
return
this
.
getDateInfo
(
date
);
}
var
time
=
this
.
getDateInfo
(
date
).
time
;
return
this
.
getDateInfo
(
time
+
ONE_DAY
*
n
);
}
};
Calendar
.
dimensions
=
Calendar
.
prototype
.
dimensions
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录