Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
alon@wen
echarts
提交
2a1694f5
E
echarts
项目概览
alon@wen
/
echarts
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
E
echarts
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2a1694f5
编写于
8月 26, 2015
作者:
P
pah100
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update dependcy graph
上级
5e3e9867
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
89 addition
and
52 deletion
+89
-52
src/component/dataZoom/DataZoomModel.js
src/component/dataZoom/DataZoomModel.js
+0
-5
src/component/dataZoom/DataZoomProcessor.js
src/component/dataZoom/DataZoomProcessor.js
+0
-6
src/model/Component.js
src/model/Component.js
+37
-33
src/model/Global.js
src/model/Global.js
+1
-1
test/config.js
test/config.js
+1
-1
test/ut/spec/model/Component.js
test/ut/spec/model/Component.js
+50
-6
未找到文件。
src/component/dataZoom/DataZoomModel.js
浏览文件 @
2a1694f5
...
...
@@ -17,11 +17,6 @@ define(function(require) {
* @private
*/
this
.
_state
=
{};
/**
* @type {Array}
* @private
*/
this
.
_stack
=
[];
this
.
mergeOption
();
},
...
...
src/component/dataZoom/DataZoomProcessor.js
浏览文件 @
2a1694f5
...
...
@@ -4,12 +4,6 @@
define
(
function
(
require
)
{
require
(
'
../echarts
'
).
registerProcessor
(
function
(
ecModel
)
{
var
legendModel
=
ecModel
.
getComponent
(
'
legend
'
);
if
(
legendModel
)
{
ecModel
.
filterSeries
(
function
(
series
)
{
return
legendModel
.
isSelected
(
series
.
name
);
});
}
});
});
\ No newline at end of file
src/model/Component.js
浏览文件 @
2a1694f5
...
...
@@ -16,16 +16,6 @@ define(function(require) {
*/
var
componentModelClasses
=
{};
/**
* key: conponentType,
* value: {
* predecessor: [conponentTypes...]
* successor: [conponentTypes...]
* }
* @type {Object}
*/
var
dependencyGraph
=
{};
/**
* @alias module:echarts/model/Component
* @constructor
...
...
@@ -63,8 +53,6 @@ define(function(require) {
throw
new
Error
(
'
Component model "
'
+
componentType
+
'
" exists.
'
);
}
componentModelClasses
[
componentType
]
=
SubComponentModel
;
initDepndency
(
opts
);
}
return
SubComponentModel
;
};
...
...
@@ -86,16 +74,17 @@ define(function(require) {
* @param {Array.<string>} componentTypeList Target Component type list.
* @param {Function} callback Params: componentType, depends.
*/
ComponentModel
.
topologicalTavel
=
function
(
componentTypeList
,
callback
)
{
ComponentModel
.
topologicalTavel
=
function
(
componentTypeList
,
callback
,
scope
)
{
if
(
!
componentTypeList
.
length
)
{
return
;
}
var
dependencyGraph
=
makeDepndencyGraph
(
componentTypeList
);
var
stack
=
[];
var
ent
er
Count
=
[];
var
ent
ry
Count
=
[];
zrUtil
.
each
(
dependencyGraph
,
function
(
vertex
,
componentType
)
{
ent
erCount
[
componentType
]
=
vertex
.
predecessor
.
length
;
if
(
ent
er
Count
[
componentType
]
===
0
)
{
zrUtil
.
each
(
componentTypeList
,
function
(
componentType
)
{
ent
ryCount
[
componentType
]
=
dependencyGraph
[
componentType
]
.
predecessor
.
length
;
if
(
ent
ry
Count
[
componentType
]
===
0
)
{
stack
.
push
(
componentType
);
}
});
...
...
@@ -107,34 +96,49 @@ define(function(require) {
while
(
stack
.
length
)
{
var
currComponentType
=
stack
.
pop
();
var
currVertex
=
dependencyGraph
[
currComponentType
];
callback
(
currComponentType
,
currVertex
.
predecessor
.
slice
());
callback
.
call
(
scope
,
currComponentType
,
currVertex
.
predecessor
.
slice
());
zrUtil
.
each
(
currVertex
.
successor
,
removeEdge
);
}
function
removeEdge
(
succComponentType
)
{
ent
er
Count
[
succComponentType
]
--
;
if
(
ent
er
Count
[
succComponentType
]
===
0
)
{
ent
ry
Count
[
succComponentType
]
--
;
if
(
ent
ry
Count
[
succComponentType
]
===
0
)
{
stack
.
push
(
succComponentType
);
}
}
};
function
initDepndency
(
opts
)
{
var
currComponentType
=
opts
.
type
;
var
thisItem
=
createDependencyMapItem
(
currComponentType
);
zrUtil
.
each
(
opts
.
depends
||
[],
function
(
depComponentType
)
{
if
(
zrUtil
.
indexOf
(
thisItem
.
predecessor
,
depComponentType
)
<
0
)
{
thisItem
.
predecessor
.
push
(
depComponentType
);
}
var
thatItem
=
createDependencyMapItem
(
depComponentType
);
if
(
zrUtil
.
indexOf
(
thatItem
.
successor
,
depComponentType
)
<
0
)
{
thatItem
.
successor
.
push
(
currComponentType
);
}
/**
* DepndencyGraph: {Object}
* key: conponentType,
* value: {
* predecessor: [conponentTypes...]
* successor: [conponentTypes...]
* }
*/
function
makeDepndencyGraph
(
componentTypeList
)
{
var
dependencyGraph
=
{};
zrUtil
.
each
(
componentTypeList
,
function
(
componentType
)
{
var
thisItem
=
createDependencyGraphItem
(
dependencyGraph
,
componentType
);
var
ModelClass
=
componentModelClasses
[
componentType
];
var
depends
=
ModelClass
.
prototype
.
depends
||
[];
zrUtil
.
each
(
depends
,
function
(
depComponentType
)
{
if
(
zrUtil
.
indexOf
(
thisItem
.
predecessor
,
depComponentType
)
<
0
)
{
thisItem
.
predecessor
.
push
(
depComponentType
);
}
var
thatItem
=
createDependencyGraphItem
(
dependencyGraph
,
depComponentType
);
if
(
zrUtil
.
indexOf
(
thatItem
.
successor
,
depComponentType
)
<
0
)
{
thatItem
.
successor
.
push
(
componentType
);
}
});
});
return
dependencyGraph
;
}
function
createDependency
MapItem
(
componentType
)
{
function
createDependency
GraphItem
(
dependencyGraph
,
componentType
)
{
if
(
!
dependencyGraph
[
componentType
])
{
dependencyGraph
[
componentType
]
=
{
predecessor
:
[],
successor
:
[]};
}
...
...
src/model/Global.js
浏览文件 @
2a1694f5
...
...
@@ -179,7 +179,7 @@ define(function (require) {
}
}
}
});
}
,
this
);
},
/**
...
...
test/config.js
浏览文件 @
2a1694f5
...
...
@@ -11,5 +11,5 @@ require.config({
name
:
'
zrender
'
}
],
urlArgs
:
'
_v_=
'
+
Math
.
random
()
urlArgs
:
'
_v_=
'
+
+
new
Date
()
});
\ No newline at end of file
test/ut/spec/model/Component.js
浏览文件 @
2a1694f5
...
...
@@ -18,17 +18,21 @@ describe('Component', function() {
}
function
xtestCase
()
{}
// jshint ignore:line
testCase
(
'
topologicalTavel
1
'
,
function
(
ComponentModel
)
{
testCase
(
'
topologicalTavel
_base
'
,
function
(
ComponentModel
)
{
ComponentModel
.
extend
({
type
:
'
m1
'
,
depends
:
[
'
a1
'
,
'
a2
'
]});
ComponentModel
.
extend
({
type
:
'
a1
'
});
ComponentModel
.
extend
({
type
:
'
a2
'
});
var
result
=
[];
ComponentModel
.
topologicalTavel
([
'
m1
'
],
function
(
componentType
,
depends
)
{
ComponentModel
.
topologicalTavel
([
'
m1
'
,
'
a1
'
,
'
a2
'
],
function
(
componentType
,
depends
)
{
result
.
push
([
componentType
,
depends
]);
});
expect
(
result
).
toEqual
([[
'
a2
'
,
[]],
[
'
a1
'
,
[]],
[
'
m1
'
,
[
'
a1
'
,
'
a2
'
]]]);
});
testCase
(
'
topologicalTavel
2
'
,
function
(
ComponentModel
)
{
testCase
(
'
topologicalTavel
_empty
'
,
function
(
ComponentModel
)
{
ComponentModel
.
extend
({
type
:
'
m1
'
,
depends
:
[
'
a1
'
,
'
a2
'
]});
ComponentModel
.
extend
({
type
:
'
a1
'
});
ComponentModel
.
extend
({
type
:
'
a2
'
});
var
result
=
[];
ComponentModel
.
topologicalTavel
([],
function
(
componentType
,
depends
)
{
result
.
push
([
componentType
,
depends
]);
...
...
@@ -36,15 +40,55 @@ describe('Component', function() {
expect
(
result
).
toEqual
([]);
});
xtestCase
(
'
topologicalTavel3_loop
'
,
function
(
ComponentModel
)
{
testCase
(
'
topologicalTavel_isolate
'
,
function
(
ComponentModel
)
{
ComponentModel
.
extend
({
type
:
'
a2
'
});
ComponentModel
.
extend
({
type
:
'
a1
'
});
ComponentModel
.
extend
({
type
:
'
m1
'
,
depends
:
[
'
a2
'
]});
var
result
=
[];
ComponentModel
.
topologicalTavel
([
'
a1
'
,
'
a2
'
,
'
m1
'
],
function
(
componentType
,
depends
)
{
result
.
push
([
componentType
,
depends
]);
});
expect
(
result
).
toEqual
([[
'
a2
'
,
[]],
[
'
m1
'
,
[
'
a2
'
]],
[
'
a1
'
,
[]]]);
});
testCase
(
'
topologicalTavel_diamond
'
,
function
(
ComponentModel
)
{
ComponentModel
.
extend
({
type
:
'
a1
'
,
depends
:
[]});
ComponentModel
.
extend
({
type
:
'
a2
'
,
depends
:
[
'
a1
'
]});
ComponentModel
.
extend
({
type
:
'
a3
'
,
depends
:
[
'
a1
'
]});
ComponentModel
.
extend
({
type
:
'
m1
'
,
depends
:
[
'
a2
'
,
'
a3
'
]});
var
result
=
[];
ComponentModel
.
topologicalTavel
([
'
m1
'
,
'
a1
'
,
'
a2
'
,
'
a3
'
],
function
(
componentType
,
depends
)
{
result
.
push
([
componentType
,
depends
]);
});
expect
(
result
).
toEqual
([[
'
a1
'
,
[]],
[
'
a3
'
,
[
'
a1
'
]],
[
'
a2
'
,
[
'
a1
'
]],
[
'
m1
'
,
[
'
a2
'
,
'
a3
'
]]]);
});
testCase
(
'
topologicalTavel_loop
'
,
function
(
ComponentModel
)
{
ComponentModel
.
extend
({
type
:
'
m1
'
,
depends
:
[
'
a1
'
,
'
a2
'
]});
ComponentModel
.
extend
({
type
:
'
m2
'
,
depends
:
[
'
m1
'
,
'
a2
'
]});
ComponentModel
.
extend
({
type
:
'
a1
'
,
depends
:
[
'
m2
'
,
'
a2
'
]});
ComponentModel
.
extend
({
type
:
'
a2
'
});
expect
(
function
()
{
ComponentModel
.
topologicalTavel
([
'
m1
'
,
'
m2
'
,
'
a1
'
]);
}).
toThrowError
(
/Circl/
);
});
testCase
(
'
topologicalTavel_re
'
,
function
(
ComponentModel
)
{
ComponentModel
.
extend
({
type
:
'
m1
'
,
depends
:
[
'
a1
'
,
'
a2
'
]});
ComponentModel
.
extend
({
type
:
'
a1
'
});
ComponentModel
.
extend
({
type
:
'
a2
'
});
var
result
=
[];
ComponentModel
.
topologicalTavel
([
'
m1
'
,
'
m2
'
,
'
a1
'
],
function
(
componentType
,
depends
)
{
ComponentModel
.
topologicalTavel
([
'
m1
'
,
'
a1
'
,
'
a2
'
],
function
(
componentType
,
depends
)
{
result
.
push
([
componentType
,
depends
]);
});
expect
(
result
).
toEqual
([]);
expect
(
result
).
toEqual
([[
'
a2
'
,
[]],
[
'
a1
'
,
[]],
[
'
m1
'
,
[
'
a1
'
,
'
a2
'
]]]);
result
=
[];
ComponentModel
.
extend
({
type
:
'
m2
'
,
depends
:
[
'
a1
'
,
'
m1
'
]});
ComponentModel
.
topologicalTavel
([
'
m2
'
,
'
m1
'
,
'
a1
'
,
'
a2
'
],
function
(
componentType
,
depends
)
{
result
.
push
([
componentType
,
depends
]);
});
expect
(
result
).
toEqual
([[
'
a2
'
,
[]],
[
'
a1
'
,
[]],
[
'
m1
'
,
[
'
a1
'
,
'
a2
'
]],
[
'
m2
'
,
[
'
a1
'
,
'
m1
'
]]]);
});
});
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录