Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
missman
incubator-echarts
提交
db620045
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,发现更多精彩内容 >>
提交
db620045
编写于
12月 31, 2017
作者:
P
pissang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[scatter] support updateTransform.
上级
33749e9e
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
132 addition
and
48 deletion
+132
-48
src/chart/heatmap/HeatmapView.js
src/chart/heatmap/HeatmapView.js
+1
-1
src/chart/helper/LargeSymbolDraw.js
src/chart/helper/LargeSymbolDraw.js
+37
-14
src/chart/helper/SymbolDraw.js
src/chart/helper/SymbolDraw.js
+4
-0
src/chart/scatter/ScatterView.js
src/chart/scatter/ScatterView.js
+46
-0
src/coord/View.js
src/coord/View.js
+35
-26
src/coord/geo/Geo.js
src/coord/geo/Geo.js
+9
-7
未找到文件。
src/chart/heatmap/HeatmapView.js
浏览文件 @
db620045
...
...
@@ -246,7 +246,7 @@ export default echarts.extendChartView({
hmLayer
.
maxOpacity
=
seriesModel
.
get
(
'
maxOpacity
'
);
var
rect
=
geo
.
getViewRect
().
clone
();
var
roamTransform
=
geo
.
getRoamTransform
()
.
transform
;
var
roamTransform
=
geo
.
getRoamTransform
();
rect
.
applyTransform
(
roamTransform
);
// Clamp on viewport
...
...
src/chart/helper/LargeSymbolDraw.js
浏览文件 @
db620045
...
...
@@ -20,6 +20,10 @@ var LargeSymbolPath = graphic.extendShape({
var
symbolProxyShape
=
symbolProxy
.
shape
;
var
ctx
=
path
.
getContext
?
path
.
getContext
()
:
path
;
var
canBoost
=
ctx
&&
size
[
0
]
<
4
;
// Do draw in afterBrush.
if
(
canBoost
)
{
return
;
}
for
(
var
i
=
0
;
i
<
points
.
length
;)
{
var
x
=
points
[
i
++
];
...
...
@@ -29,23 +33,38 @@ var LargeSymbolPath = graphic.extendShape({
continue
;
}
symbolProxyShape
.
x
=
x
-
size
[
0
]
/
2
;
symbolProxyShape
.
y
=
y
-
size
[
1
]
/
2
;
symbolProxyShape
.
width
=
size
[
0
];
symbolProxyShape
.
height
=
size
[
1
];
if
(
canBoost
)
{
// Optimize for small symbol
// PENDING, Do fill in buildPath??
ctx
.
fillRect
(
x
-
size
[
0
]
/
2
,
y
-
size
[
1
]
/
2
,
size
[
0
],
size
[
1
]
);
}
else
{
symbolProxyShape
.
x
=
x
-
size
[
0
]
/
2
;
symbolProxyShape
.
y
=
y
-
size
[
1
]
/
2
;
symbolProxyShape
.
width
=
size
[
0
];
symbolProxyShape
.
height
=
size
[
1
];
symbolProxy
.
buildPath
(
path
,
symbolProxyShape
,
true
);
}
},
afterBrush
:
function
(
ctx
)
{
var
shape
=
this
.
shape
;
var
points
=
shape
.
points
;
var
size
=
shape
.
size
;
var
canBoost
=
size
[
0
]
<
4
;
if
(
!
canBoost
)
{
return
;
}
symbolProxy
.
buildPath
(
path
,
symbolProxyShape
,
true
);
// Don't consider transform.
// PENDING If style or other canvas status changed?
for
(
var
i
=
0
;
i
<
points
.
length
;)
{
var
x
=
points
[
i
++
];
var
y
=
points
[
i
++
];
if
(
isNaN
(
x
)
||
isNaN
(
y
))
{
continue
;
}
// fillRect is faster than building a rect path and draw.
// And it support light globalCompositeOperation.
ctx
.
fillRect
(
x
-
size
[
0
]
/
2
,
y
-
size
[
1
]
/
2
,
size
[
0
],
size
[
1
]
);
}
},
...
...
@@ -82,6 +101,10 @@ function LargeSymbolDraw() {
var
largeSymbolProto
=
LargeSymbolDraw
.
prototype
;
largeSymbolProto
.
isPersistent
=
function
()
{
return
!
this
.
_incremental
;
};
/**
* Update symbols draw by new data
* @param {module:echarts/data/List} data
...
...
src/chart/helper/SymbolDraw.js
浏览文件 @
db620045
...
...
@@ -80,6 +80,10 @@ symbolDrawProto.updateData = function (data, isIgnore) {
this
.
_data
=
data
;
};
symbolDrawProto
.
isPersistent
=
function
()
{
return
true
;
};
symbolDrawProto
.
updateLayout
=
function
()
{
var
data
=
this
.
_data
;
if
(
data
)
{
...
...
src/chart/scatter/ScatterView.js
浏览文件 @
db620045
import
*
as
echarts
from
'
../../echarts
'
;
import
SymbolDraw
from
'
../helper/SymbolDraw
'
;
import
LargeSymbolDraw
from
'
../helper/LargeSymbolDraw
'
;
import
*
as
matrix
from
'
zrender/src/core/matrix
'
;
echarts
.
extendChartView
({
...
...
@@ -8,6 +9,8 @@ echarts.extendChartView({
render
:
function
(
seriesModel
,
ecModel
,
api
)
{
var
data
=
seriesModel
.
getData
();
this
.
_removeRoamTransformInPoints
(
seriesModel
,
0
,
data
.
count
());
var
symbolDraw
=
this
.
_updateSymbolDraw
(
data
,
seriesModel
);
symbolDraw
.
updateData
(
data
);
},
...
...
@@ -19,9 +22,52 @@ echarts.extendChartView({
},
incrementalRender
:
function
(
taskParams
,
seriesModel
,
ecModel
)
{
this
.
_removeRoamTransformInPoints
(
seriesModel
,
taskParams
.
start
,
taskParams
.
end
);
this
.
_symbolDraw
.
incrementalUpdate
(
taskParams
,
seriesModel
.
getData
());
},
updateTransform
:
function
(
seriesModel
,
ecModel
,
api
)
{
var
coordSys
=
seriesModel
.
coordinateSystem
;
// Must mark group dirty and make sure the incremental layer will be cleared
// PENDING
this
.
group
.
dirty
();
if
(
coordSys
.
getRoamTransform
&&
this
.
_symbolDraw
.
isPersistent
())
{
this
.
group
.
transform
=
matrix
.
clone
(
coordSys
.
getRoamTransform
());
this
.
group
.
decomposeTransform
();
}
else
{
return
{
update
:
true
};
}
},
_removeRoamTransformInPoints
:
function
(
seriesModel
,
start
,
end
)
{
var
coordSys
=
seriesModel
.
coordinateSystem
;
if
(
coordSys
&&
coordSys
.
removeRoamTransformInPoint
)
{
var
data
=
seriesModel
.
getData
();
var
pt
=
[];
if
(
seriesModel
.
get
(
'
large
'
))
{
var
points
=
data
.
getLayout
(
'
symbolPoints
'
);
if
(
points
)
{
for
(
var
i
=
0
;
i
<
points
.
length
;
i
+=
2
)
{
pt
[
0
]
=
points
[
i
];
pt
[
1
]
=
points
[
i
+
1
];
coordSys
.
removeRoamTransformInPoint
(
pt
);
points
[
i
]
=
pt
[
0
];
points
[
i
+
1
]
=
pt
[
1
];
}
}
}
else
{
for
(
var
i
=
start
;
i
<
end
;
i
++
)
{
var
pt
=
data
.
getItemLayout
(
i
);
coordSys
.
removeRoamTransformInPoint
(
pt
);
}
}
}
},
_updateSymbolDraw
:
function
(
data
,
seriesModel
)
{
var
symbolDraw
=
this
.
_symbolDraw
;
var
pipelineContext
=
seriesModel
.
pipelineContext
;
...
...
src/coord/View.js
浏览文件 @
db620045
...
...
@@ -30,9 +30,9 @@ function View(name) {
Transformable
.
call
(
this
);
this
.
_roamTransform
=
new
TransformDummy
();
this
.
_roamTransform
able
=
new
TransformDummy
();
this
.
_
viewTransform
=
new
TransformDummy
();
this
.
_
rawTransformable
=
new
TransformDummy
();
this
.
_center
;
this
.
_zoom
;
...
...
@@ -92,13 +92,13 @@ View.prototype = {
*/
transformTo
:
function
(
x
,
y
,
width
,
height
)
{
var
rect
=
this
.
getBoundingRect
();
var
viewTransform
=
this
.
_viewTransform
;
var
rawTransform
=
this
.
_rawTransformable
;
vie
wTransform
.
transform
=
rect
.
calculateTransform
(
ra
wTransform
.
transform
=
rect
.
calculateTransform
(
new
BoundingRect
(
x
,
y
,
width
,
height
)
);
vie
wTransform
.
decomposeTransform
();
ra
wTransform
.
decomposeTransform
();
this
.
_updateTransform
();
},
...
...
@@ -160,19 +160,29 @@ View.prototype = {
* @return {Array.<number}
*/
getRoamTransform
:
function
()
{
return
this
.
_roamTransform
;
return
this
.
_roamTransform
able
.
getLocalTransform
()
;
},
removeRoamTransformInPoint
:
function
(
pt
)
{
if
(
this
.
_roamTransformable
.
invTransform
)
{
vector
.
applyTransform
(
pt
,
pt
,
this
.
_roamTransformable
.
invTransform
);
}
},
/**
* Remove roam
*/
_updateCenterAndZoom
:
function
()
{
// Must update after view transform updated
var
viewTransformMatrix
=
this
.
_viewTransform
.
getLocalTransform
();
var
roamTransform
=
this
.
_roamTransform
;
var
rawTransformMatrix
=
this
.
_rawTransformable
.
getLocalTransform
();
var
roamTransform
=
this
.
_roamTransform
able
;
var
defaultCenter
=
this
.
getDefaultCenter
();
var
center
=
this
.
getCenter
();
var
zoom
=
this
.
getZoom
();
center
=
vector
.
applyTransform
([],
center
,
vie
wTransformMatrix
);
defaultCenter
=
vector
.
applyTransform
([],
defaultCenter
,
vie
wTransformMatrix
);
center
=
vector
.
applyTransform
([],
center
,
ra
wTransformMatrix
);
defaultCenter
=
vector
.
applyTransform
([],
defaultCenter
,
ra
wTransformMatrix
);
roamTransform
.
origin
=
center
;
roamTransform
.
position
=
[
...
...
@@ -189,23 +199,20 @@ View.prototype = {
* @private
*/
_updateTransform
:
function
()
{
var
roamTransform
=
this
.
_roamTransform
;
var
viewTransform
=
this
.
_viewTransform
;
var
roamTransform
able
=
this
.
_roamTransformable
;
var
rawTransformable
=
this
.
_rawTransformable
;
viewTransform
.
parent
=
roamTransform
;
roamTransform
.
updateTransform
();
viewTransform
.
updateTransform
();
rawTransformable
.
parent
=
roamTransformable
;
roamTransform
able
.
updateTransform
();
rawTransformable
.
updateTransform
();
viewTransform
.
transform
&&
matrix
.
copy
(
this
.
transform
||
(
this
.
transform
=
[]),
viewTransform
.
transform
);
matrix
.
copy
(
this
.
transform
||
(
this
.
transform
=
[]),
rawTransformable
.
transform
||
matrix
.
create
());
this
.
_rawTransform
=
rawTransformable
.
getLocalTransform
();
this
.
invTransform
=
this
.
invTransform
||
[];
matrix
.
invert
(
this
.
invTransform
,
this
.
transform
);
if
(
this
.
transform
)
{
this
.
invTransform
=
this
.
invTransform
||
[];
matrix
.
invert
(
this
.
invTransform
,
this
.
transform
);
}
else
{
this
.
invTransform
=
null
;
}
this
.
decomposeTransform
();
},
...
...
@@ -229,10 +236,12 @@ View.prototype = {
/**
* Convert a single (lon, lat) data item to (x, y) point.
* @param {Array.<number>} data
* @param {boolean} noRoam
* @param {Array.<number>} [out]
* @return {Array.<number>}
*/
dataToPoint
:
function
(
data
,
preserved
,
out
)
{
var
transform
=
this
.
transform
;
dataToPoint
:
function
(
data
,
noRoam
,
out
)
{
var
transform
=
noRoam
?
this
.
_rawTransform
:
this
.
transform
;
out
=
out
||
[];
return
transform
?
v2ApplyTransform
(
out
,
data
,
transform
)
...
...
src/coord/geo/Geo.js
浏览文件 @
db620045
...
...
@@ -123,18 +123,18 @@ Geo.prototype = {
// Longitute is inverted
rect
.
y
=
-
rect
.
y
-
rect
.
height
;
var
viewTransform
=
this
.
_viewTransform
;
var
rawTransformable
=
this
.
_rawTransformable
;
viewTransform
.
transform
=
rect
.
calculateTransform
(
rawTransformable
.
transform
=
rect
.
calculateTransform
(
new
BoundingRect
(
x
,
y
,
width
,
height
)
);
viewTransform
.
decomposeTransform
();
rawTransformable
.
decomposeTransform
();
var
scale
=
viewTransform
.
scale
;
var
scale
=
rawTransformable
.
scale
;
scale
[
1
]
=
-
scale
[
1
];
viewTransform
.
updateTransform
();
rawTransformable
.
updateTransform
();
this
.
_updateTransform
();
},
...
...
@@ -193,15 +193,17 @@ Geo.prototype = {
/**
* @param {string|Array.<number>} data
* @param {boolean} noRoam
* @param {Array.<number>} [out]
* @return {Array.<number>}
*/
dataToPoint
:
function
(
data
,
preserved
,
out
)
{
dataToPoint
:
function
(
data
,
noRoam
,
out
)
{
if
(
typeof
data
===
'
string
'
)
{
// Map area name to geoCoord
data
=
this
.
getGeoCoord
(
data
);
}
if
(
data
)
{
return
View
.
prototype
.
dataToPoint
.
call
(
this
,
data
,
preserved
,
out
);
return
View
.
prototype
.
dataToPoint
.
call
(
this
,
data
,
noRoam
,
out
);
}
},
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录