Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
missman
incubator-echarts
提交
d30a0419
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,发现更多精彩内容 >>
提交
d30a0419
编写于
4月 06, 2017
作者:
P
pah100
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
tweak roamController.
上级
1aedd373
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
109 addition
and
146 deletion
+109
-146
src/chart/graph/GraphView.js
src/chart/graph/GraphView.js
+9
-5
src/component/helper/MapDraw.js
src/component/helper/MapDraw.js
+18
-6
src/component/helper/RoamController.js
src/component/helper/RoamController.js
+82
-135
未找到文件。
src/chart/graph/GraphView.js
浏览文件 @
d30a0419
...
...
@@ -4,6 +4,7 @@ define(function (require) {
var
SymbolDraw
=
require
(
'
../helper/SymbolDraw
'
);
var
LineDraw
=
require
(
'
../helper/LineDraw
'
);
var
RoamController
=
require
(
'
../../component/helper/RoamController
'
);
var
roamHelper
=
require
(
'
../../component/helper/roamHelper
'
);
var
graphic
=
require
(
'
../../util/graphic
'
);
var
adjustEdge
=
require
(
'
./adjustEdge
'
);
...
...
@@ -25,14 +26,14 @@ define(function (require) {
var
lineDraw
=
new
LineDraw
();
var
group
=
this
.
group
;
var
controller
=
new
RoamController
(
api
.
getZr
(),
group
);
this
.
_controller
=
new
RoamController
(
api
.
getZr
());
this
.
_controllerHost
=
{
target
:
group
};
group
.
add
(
symbolDraw
.
group
);
group
.
add
(
lineDraw
.
group
);
this
.
_symbolDraw
=
symbolDraw
;
this
.
_lineDraw
=
lineDraw
;
this
.
_controller
=
controller
;
this
.
_firstRender
=
true
;
},
...
...
@@ -157,6 +158,7 @@ define(function (require) {
dispose
:
function
()
{
this
.
_controller
&&
this
.
_controller
.
dispose
();
this
.
_controllerHost
=
{};
},
focusNodeAdjacency
:
function
(
seriesModel
,
ecModel
,
api
,
payload
)
{
...
...
@@ -256,6 +258,7 @@ define(function (require) {
_updateController
:
function
(
seriesModel
,
api
)
{
var
controller
=
this
.
_controller
;
var
controllerHost
=
this
.
_controllerHost
;
var
group
=
this
.
group
;
controller
.
setContainsPoint
(
function
(
x
,
y
)
{
...
...
@@ -269,14 +272,14 @@ define(function (require) {
return
;
}
controller
.
enable
(
seriesModel
.
get
(
'
roam
'
));
controller
.
zoomLimit
=
seriesModel
.
get
(
'
scaleLimit
'
);
// Update zoom from model
controller
.
zoom
=
seriesModel
.
coordinateSystem
.
getZoom
();
controllerHost
.
zoomLimit
=
seriesModel
.
get
(
'
scaleLimit
'
);
controllerHost
.
zoom
=
seriesModel
.
coordinateSystem
.
getZoom
();
controller
.
off
(
'
pan
'
)
.
off
(
'
zoom
'
)
.
on
(
'
pan
'
,
function
(
dx
,
dy
)
{
roamHelper
.
updateViewOnPan
(
controllerHost
,
dx
,
dy
);
api
.
dispatchAction
({
seriesId
:
seriesModel
.
id
,
type
:
'
graphRoam
'
,
...
...
@@ -285,6 +288,7 @@ define(function (require) {
});
})
.
on
(
'
zoom
'
,
function
(
zoom
,
mouseX
,
mouseY
)
{
roamHelper
.
updateViewOnZoom
(
controllerHost
,
zoom
,
mouseX
,
mouseY
);
api
.
dispatchAction
({
seriesId
:
seriesModel
.
id
,
type
:
'
graphRoam
'
,
...
...
src/component/helper/MapDraw.js
浏览文件 @
d30a0419
...
...
@@ -4,6 +4,7 @@
define
(
function
(
require
)
{
var
RoamController
=
require
(
'
./RoamController
'
);
var
roamHelper
=
require
(
'
../../component/helper/roamHelper
'
);
var
graphic
=
require
(
'
../../util/graphic
'
);
var
zrUtil
=
require
(
'
zrender/core/util
'
);
...
...
@@ -84,9 +85,13 @@ define(function (require) {
* @type {module:echarts/component/helper/RoamController}
* @private
*/
this
.
_controller
=
new
RoamController
(
api
.
getZr
(),
updateGroup
?
group
:
null
,
null
);
this
.
_controller
=
new
RoamController
(
api
.
getZr
());
/**
* @type {Object} {target, zoom, zoomLimit}
* @private
*/
this
.
_controllerHost
=
{
target
:
updateGroup
?
group
:
null
};
/**
* @type {module:zrender/container/Group}
...
...
@@ -295,14 +300,17 @@ define(function (require) {
remove
:
function
()
{
this
.
group
.
removeAll
();
this
.
_controller
.
dispose
();
this
.
_controllerHost
=
{};
},
_updateController
:
function
(
mapOrGeoModel
,
ecModel
,
api
)
{
var
geo
=
mapOrGeoModel
.
coordinateSystem
;
var
controller
=
this
.
_controller
;
controller
.
zoomLimit
=
mapOrGeoModel
.
get
(
'
scaleLimit
'
);
// Update zoom from model
controller
.
zoom
=
geo
.
getZoom
();
var
controllerHost
=
this
.
_controllerHost
;
controllerHost
.
zoomLimit
=
mapOrGeoModel
.
get
(
'
scaleLimit
'
);
controllerHost
.
zoom
=
geo
.
getZoom
();
// roamType is will be set default true if it is null
controller
.
enable
(
mapOrGeoModel
.
get
(
'
roam
'
)
||
false
);
var
mainType
=
mapOrGeoModel
.
mainType
;
...
...
@@ -319,6 +327,8 @@ define(function (require) {
controller
.
off
(
'
pan
'
).
on
(
'
pan
'
,
function
(
dx
,
dy
)
{
this
.
_mouseDownFlag
=
false
;
roamHelper
.
updateViewOnPan
(
controllerHost
,
dx
,
dy
);
api
.
dispatchAction
(
zrUtil
.
extend
(
makeActionBase
(),
{
dx
:
dx
,
dy
:
dy
...
...
@@ -328,6 +338,8 @@ define(function (require) {
controller
.
off
(
'
zoom
'
).
on
(
'
zoom
'
,
function
(
zoom
,
mouseX
,
mouseY
)
{
this
.
_mouseDownFlag
=
false
;
roamHelper
.
updateViewOnZoom
(
controllerHost
,
zoom
,
mouseX
,
mouseY
);
api
.
dispatchAction
(
zrUtil
.
extend
(
makeActionBase
(),
{
zoom
:
zoom
,
originX
:
mouseX
,
...
...
src/component/helper/RoamController.js
浏览文件 @
d30a0419
/**
* @module echarts/component/helper/RoamController
*/
define
(
function
(
require
)
{
var
Eventful
=
require
(
'
zrender/mixin/Eventful
'
);
...
...
@@ -9,153 +8,20 @@ define(function (require) {
var
eventTool
=
require
(
'
zrender/core/event
'
);
var
interactionMutex
=
require
(
'
./interactionMutex
'
);
function
mousedown
(
e
)
{
if
(
e
.
target
&&
e
.
target
.
draggable
)
{
return
;
}
var
x
=
e
.
offsetX
;
var
y
=
e
.
offsetY
;
if
(
this
.
containsPoint
&&
this
.
containsPoint
(
x
,
y
))
{
this
.
_x
=
x
;
this
.
_y
=
y
;
this
.
_dragging
=
true
;
}
}
function
mousemove
(
e
)
{
if
(
!
this
.
_dragging
)
{
return
;
}
eventTool
.
stop
(
e
.
event
);
if
(
e
.
gestureEvent
!==
'
pinch
'
)
{
if
(
interactionMutex
.
isTaken
(
this
.
_zr
,
'
globalPan
'
))
{
return
;
}
var
x
=
e
.
offsetX
;
var
y
=
e
.
offsetY
;
var
oldX
=
this
.
_x
;
var
oldY
=
this
.
_y
;
var
dx
=
x
-
oldX
;
var
dy
=
y
-
oldY
;
this
.
_x
=
x
;
this
.
_y
=
y
;
var
target
=
this
.
target
;
if
(
target
)
{
var
pos
=
target
.
position
;
pos
[
0
]
+=
dx
;
pos
[
1
]
+=
dy
;
target
.
dirty
();
}
eventTool
.
stop
(
e
.
event
);
this
.
trigger
(
'
pan
'
,
dx
,
dy
,
oldX
,
oldY
,
x
,
y
);
}
}
function
mouseup
(
e
)
{
this
.
_dragging
=
false
;
}
function
mousewheel
(
e
)
{
// wheelDelta maybe -0 in chrome mac.
if
(
e
.
wheelDelta
===
0
)
{
return
;
}
// Convenience:
// Mac and VM Windows on Mac: scroll up: zoom out.
// Windows: scroll up: zoom in.
var
zoomDelta
=
e
.
wheelDelta
>
0
?
1.1
:
1
/
1.1
;
zoom
.
call
(
this
,
e
,
zoomDelta
,
e
.
offsetX
,
e
.
offsetY
);
}
function
pinch
(
e
)
{
if
(
interactionMutex
.
isTaken
(
this
.
_zr
,
'
globalPan
'
))
{
return
;
}
var
zoomDelta
=
e
.
pinchScale
>
1
?
1.1
:
1
/
1.1
;
zoom
.
call
(
this
,
e
,
zoomDelta
,
e
.
pinchX
,
e
.
pinchY
);
}
function
zoom
(
e
,
zoomDelta
,
zoomX
,
zoomY
)
{
if
(
this
.
containsPoint
&&
this
.
containsPoint
(
zoomX
,
zoomY
))
{
// When mouse is out of roamController rect,
// default befavoius should be be disabled, otherwise
// page sliding is disabled, contrary to expectation.
eventTool
.
stop
(
e
.
event
);
var
target
=
this
.
target
;
var
zoomLimit
=
this
.
zoomLimit
;
if
(
target
)
{
var
pos
=
target
.
position
;
var
scale
=
target
.
scale
;
var
newZoom
=
this
.
zoom
=
this
.
zoom
||
1
;
newZoom
*=
zoomDelta
;
if
(
zoomLimit
)
{
var
zoomMin
=
zoomLimit
.
min
||
0
;
var
zoomMax
=
zoomLimit
.
max
||
Infinity
;
newZoom
=
Math
.
max
(
Math
.
min
(
zoomMax
,
newZoom
),
zoomMin
);
}
var
zoomScale
=
newZoom
/
this
.
zoom
;
this
.
zoom
=
newZoom
;
// Keep the mouse center when scaling
pos
[
0
]
-=
(
zoomX
-
pos
[
0
])
*
(
zoomScale
-
1
);
pos
[
1
]
-=
(
zoomY
-
pos
[
1
])
*
(
zoomScale
-
1
);
scale
[
0
]
*=
zoomScale
;
scale
[
1
]
*=
zoomScale
;
target
.
dirty
();
}
this
.
trigger
(
'
zoom
'
,
zoomDelta
,
zoomX
,
zoomY
);
}
}
/**
* @alias module:echarts/component/helper/RoamController
* @constructor
* @mixin {module:zrender/mixin/Eventful}
*
* @param {module:zrender/zrender~ZRender} zr
* @param {module:zrender/Element} target
*/
function
RoamController
(
zr
,
target
)
{
/**
* @type {module:zrender/Element}
*/
this
.
target
=
target
;
function
RoamController
(
zr
)
{
/**
* @type {Function}
*/
this
.
containsPoint
;
/**
* { min: 1, max: 2 }
* @type {Object}
*/
this
.
zoomLimit
;
/**
* @type {number}
*/
this
.
zoom
;
/**
* @type {module:zrender}
*/
...
...
@@ -229,5 +95,86 @@ define(function (require) {
zrUtil
.
mixin
(
RoamController
,
Eventful
);
function
mousedown
(
e
)
{
if
(
e
.
target
&&
e
.
target
.
draggable
)
{
return
;
}
var
x
=
e
.
offsetX
;
var
y
=
e
.
offsetY
;
if
(
this
.
containsPoint
&&
this
.
containsPoint
(
x
,
y
))
{
this
.
_x
=
x
;
this
.
_y
=
y
;
this
.
_dragging
=
true
;
}
}
function
mousemove
(
e
)
{
if
(
!
this
.
_dragging
)
{
return
;
}
eventTool
.
stop
(
e
.
event
);
if
(
e
.
gestureEvent
!==
'
pinch
'
)
{
if
(
interactionMutex
.
isTaken
(
this
.
_zr
,
'
globalPan
'
))
{
return
;
}
var
x
=
e
.
offsetX
;
var
y
=
e
.
offsetY
;
var
oldX
=
this
.
_x
;
var
oldY
=
this
.
_y
;
var
dx
=
x
-
oldX
;
var
dy
=
y
-
oldY
;
this
.
_x
=
x
;
this
.
_y
=
y
;
eventTool
.
stop
(
e
.
event
);
this
.
trigger
(
'
pan
'
,
dx
,
dy
,
oldX
,
oldY
,
x
,
y
);
}
}
function
mouseup
(
e
)
{
this
.
_dragging
=
false
;
}
function
mousewheel
(
e
)
{
// wheelDelta maybe -0 in chrome mac.
if
(
e
.
wheelDelta
===
0
)
{
return
;
}
// Convenience:
// Mac and VM Windows on Mac: scroll up: zoom out.
// Windows: scroll up: zoom in.
var
zoomDelta
=
e
.
wheelDelta
>
0
?
1.1
:
1
/
1.1
;
zoom
.
call
(
this
,
e
,
zoomDelta
,
e
.
offsetX
,
e
.
offsetY
);
}
function
pinch
(
e
)
{
if
(
interactionMutex
.
isTaken
(
this
.
_zr
,
'
globalPan
'
))
{
return
;
}
var
zoomDelta
=
e
.
pinchScale
>
1
?
1.1
:
1
/
1.1
;
zoom
.
call
(
this
,
e
,
zoomDelta
,
e
.
pinchX
,
e
.
pinchY
);
}
function
zoom
(
e
,
zoomDelta
,
zoomX
,
zoomY
)
{
if
(
this
.
containsPoint
&&
this
.
containsPoint
(
zoomX
,
zoomY
))
{
// When mouse is out of roamController rect,
// default befavoius should be be disabled, otherwise
// page sliding is disabled, contrary to expectation.
eventTool
.
stop
(
e
.
event
);
this
.
trigger
(
'
zoom
'
,
zoomDelta
,
zoomX
,
zoomY
);
}
}
return
RoamController
;
});
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录