Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
missman
incubator-echarts
提交
b84c8afc
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,发现更多精彩内容 >>
提交
b84c8afc
编写于
11月 25, 2015
作者:
L
lang
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
https://github.com/pissang/echarts-next
上级
4b9373c4
231f2ae0
变更
29
隐藏空白更改
内联
并排
Showing
29 changed file
with
238 addition
and
219 deletion
+238
-219
src/action/createDataSelectAction.js
src/action/createDataSelectAction.js
+1
-1
src/chart/graph/roamAction.js
src/chart/graph/roamAction.js
+1
-1
src/chart/helper/createListFromArray.js
src/chart/helper/createListFromArray.js
+9
-3
src/chart/treemap/TreemapView.js
src/chart/treemap/TreemapView.js
+5
-1
src/chart/treemap/helper.js
src/chart/treemap/helper.js
+0
-19
src/chart/treemap/treemapLayout.js
src/chart/treemap/treemapLayout.js
+6
-8
src/chart/treemap/treemapVisual.js
src/chart/treemap/treemapVisual.js
+2
-5
src/component/dataRange/DataRangeModel.js
src/component/dataRange/DataRangeModel.js
+1
-18
src/component/dataRange/dataRangeAction.js
src/component/dataRange/dataRangeAction.js
+1
-1
src/component/dataZoom/SliderZoomView.js
src/component/dataZoom/SliderZoomView.js
+1
-1
src/component/dataZoom/dataZoomAction.js
src/component/dataZoom/dataZoomAction.js
+1
-1
src/component/legend/LegendView.js
src/component/legend/LegendView.js
+2
-2
src/component/marker/MarkLineModel.js
src/component/marker/MarkLineModel.js
+2
-2
src/component/marker/MarkPointModel.js
src/component/marker/MarkPointModel.js
+2
-2
src/component/tooltip.js
src/component/tooltip.js
+2
-4
src/coord/parallel/ParallelModel.js
src/coord/parallel/ParallelModel.js
+1
-1
src/echarts.js
src/echarts.js
+12
-16
src/layout/barGrid.js
src/layout/barGrid.js
+3
-2
src/model/Component.js
src/model/Component.js
+6
-13
src/model/Global.js
src/model/Global.js
+156
-99
src/model/Series.js
src/model/Series.js
+10
-5
src/visual/dataColor.js
src/visual/dataColor.js
+2
-2
src/visual/seriesColor.js
src/visual/seriesColor.js
+1
-1
src/visual/symbol.js
src/visual/symbol.js
+1
-1
test/color-mix-aqi.html
test/color-mix-aqi.html
+2
-2
test/multipleGrid.html
test/multipleGrid.html
+2
-2
test/pie3.html
test/pie3.html
+2
-2
test/treemap-disk.html
test/treemap-disk.html
+2
-2
test/treemap-obama.html
test/treemap-obama.html
+2
-2
未找到文件。
src/action/createDataSelectAction.js
浏览文件 @
b84c8afc
...
...
@@ -9,7 +9,7 @@ define(function (require) {
echarts
.
registerAction
(
actionInfo
,
function
(
payload
,
ecModel
)
{
ecModel
.
eachComponent
(
{
mainType
:
'
series
'
,
subType
:
seriesType
,
payload
:
payload
},
{
mainType
:
'
series
'
,
subType
:
seriesType
,
query
:
payload
},
function
(
seriesModel
)
{
if
(
seriesModel
.
toggleSelected
)
{
seriesModel
.
toggleSelected
(
payload
.
name
);
...
...
src/chart/graph/roamAction.js
浏览文件 @
b84c8afc
...
...
@@ -20,7 +20,7 @@ define(function (require) {
*/
echarts
.
registerAction
(
actionInfo
,
function
(
payload
,
ecModel
)
{
ecModel
.
eachComponent
({
mainType
:
'
series
'
,
payload
:
payload
},
function
(
seriesModel
)
{
ecModel
.
eachComponent
({
mainType
:
'
series
'
,
query
:
payload
},
function
(
seriesModel
)
{
var
coordSys
=
seriesModel
.
coordinateSystem
;
var
roamDetailModel
=
seriesModel
.
getModel
(
'
roamDetail
'
);
...
...
src/chart/helper/createListFromArray.js
浏览文件 @
b84c8afc
...
...
@@ -71,12 +71,18 @@ define(function(require) {
polar
:
function
(
data
,
seriesModel
,
ecModel
)
{
var
dimensions
=
[];
var
categoryAxisModel
;
var
polarIndex
=
seriesModel
.
get
(
'
polarIndex
'
)
||
0
;
var
axisFinder
=
function
(
axisModel
)
{
return
axisModel
.
get
(
'
polarIndex
'
)
===
polarIndex
;
};
var
polarIndex
=
seriesModel
.
get
(
'
polarIndex
'
)
||
0
;
var
angleAxisModel
=
ecModel
.
findComponent
(
'
angleAxis
'
,
axisFinder
);
var
radiusAxisModel
=
ecModel
.
findComponent
(
'
radiusAxis
'
,
axisFinder
);
var
angleAxisModel
=
ecModel
.
findComponents
({
mainType
:
'
angleAxis
'
,
filter
:
axisFinder
})[
0
];
var
radiusAxisModel
=
ecModel
.
findComponents
({
mainType
:
'
radiusAxis
'
,
filter
:
axisFinder
})[
0
];
var
isRadiusAxisCategory
=
radiusAxisModel
.
get
(
'
type
'
)
===
'
category
'
;
if
(
angleAxisModel
.
get
(
'
type
'
)
===
'
category
'
)
{
...
...
src/chart/treemap/TreemapView.js
浏览文件 @
b84c8afc
...
...
@@ -72,7 +72,11 @@
* @override
*/
render
:
function
(
seriesModel
,
ecModel
,
api
,
payload
)
{
if
(
helper
.
irrelevant
(
payload
,
seriesModel
))
{
var
models
=
ecModel
.
findComponents
({
mainType
:
'
series
'
,
subType
:
'
treemap
'
,
query
:
payload
});
if
(
zrUtil
.
indexOf
(
models
,
seriesModel
)
<
0
)
{
return
;
}
...
...
src/chart/treemap/helper.js
浏览文件 @
b84c8afc
...
...
@@ -2,26 +2,7 @@ define(function (require) {
var
helper
=
{
irrelevant
:
function
(
payload
,
seriesModel
)
{
// It is irrelavant only when seriesID or seriesName is
// specified and not equals to seriesModel's.
return
payload
&&
(
payload
.
seriesId
!=
null
?
seriesModel
.
getId
()
!==
payload
.
seriesId
:
payload
.
seriesName
!=
null
// FIXME
// seriesModel.getId() ???
?
payload
.
seriesName
!==
seriesModel
.
get
(
'
name
'
)
:
false
);
},
retrieveTargetInfo
:
function
(
payload
,
seriesModel
)
{
if
(
helper
.
irrelevant
(
payload
,
seriesModel
))
{
return
;
}
if
(
!
payload
||
payload
.
type
!==
'
treemapZoomToNode
'
)
{
return
;
}
...
...
src/chart/treemap/treemapLayout.js
浏览文件 @
b84c8afc
...
...
@@ -16,11 +16,8 @@ define(function (require) {
function
update
(
ecModel
,
api
,
payload
)
{
// Layout result in each node:
// {x, y, width, height, area, borderWidth}
ecModel
.
eachSeriesByType
(
'
treemap
'
,
function
(
seriesModel
)
{
if
(
helper
.
irrelevant
(
payload
,
seriesModel
))
{
return
;
}
var
condition
=
{
mainType
:
'
series
'
,
subType
:
'
treemap
'
,
query
:
payload
};
ecModel
.
eachComponent
(
condition
,
function
(
seriesModel
)
{
var
ecWidth
=
api
.
getWidth
();
var
ecHeight
=
api
.
getHeight
();
...
...
@@ -203,7 +200,7 @@ define(function (require) {
orderBy
!==
'
asc
'
&&
orderBy
!==
'
desc
'
&&
(
orderBy
=
null
);
if
(
options
.
hideChildren
)
{
return
node
.
viewChildren
=
[]
;
return
(
node
.
viewChildren
=
[])
;
}
// Sort children, order by desc.
...
...
@@ -335,7 +332,8 @@ define(function (require) {
var
areaMin
=
Infinity
;
for
(
var
i
=
0
,
area
,
len
=
row
.
length
;
i
<
len
;
i
++
)
{
if
(
area
=
row
[
i
].
getLayout
().
area
)
{
area
=
row
[
i
].
getLayout
().
area
;
if
(
area
)
{
area
<
areaMin
&&
(
areaMin
=
area
);
area
>
areaMax
&&
(
areaMax
=
area
);
}
...
...
@@ -416,7 +414,7 @@ define(function (require) {
var
viewArea
=
containerWidth
*
containerHeight
;
var
area
=
viewArea
*
seriesModel
.
get
(
'
zoomToNodeRatio
'
);
while
(
parent
=
currNode
.
parentNode
)
{
while
(
parent
=
currNode
.
parentNode
)
{
// jshint ignore:line
var
sum
=
0
;
var
siblings
=
parent
.
children
;
...
...
src/chart/treemap/treemapVisual.js
浏览文件 @
b84c8afc
...
...
@@ -3,17 +3,14 @@ define(function (require) {
var
VisualMapping
=
require
(
'
../../visual/VisualMapping
'
);
var
zrColor
=
require
(
'
zrender/tool/color
'
);
var
zrUtil
=
require
(
'
zrender/core/util
'
);
var
helper
=
require
(
'
./helper
'
);
var
isArray
=
zrUtil
.
isArray
;
var
ITEM_STYLE_NORMAL
=
'
itemStyle.normal
'
;
return
function
(
ecModel
,
payload
)
{
ecModel
.
eachSeriesByType
(
'
treemap
'
,
function
(
seriesModel
)
{
if
(
helper
.
irrelevant
(
payload
,
seriesModel
))
{
return
;
}
var
condition
=
{
mainType
:
'
series
'
,
subType
:
'
treemap
'
,
query
:
payload
};
ecModel
.
eachComponent
(
condition
,
function
(
seriesModel
)
{
var
tree
=
seriesModel
.
getData
().
tree
;
var
root
=
tree
.
root
;
...
...
src/component/dataRange/DataRangeModel.js
浏览文件 @
b84c8afc
...
...
@@ -248,26 +248,9 @@ define(function(require) {
// Because series and data may be modified in processing stage.
// So we do not support the feature "auto min/max".
// var dataExtent = [Infinity, -Infinity];
// zrUtil.each(thisOption.seriesIndex, function (seriesIndex) {
// var data = this.ecModel.getSeriesByIndex(seriesIndex).getData();
// // FIXME
// // 只考虑了list
// if (data.type === 'list') {
// var oneExtent = data.getDataExtent(this.getDataDimension(data));
// oneExtent[0] < dataExtent[0] && (dataExtent[0] = oneExtent[0]);
// oneExtent[1] > dataExtent[1] && (dataExtent[1] = oneExtent[1]);
// }
// }, this);
var
extent
=
asc
([
thisOption
.
min
,
thisOption
.
max
]);
// extent[0] = Math.max(extent[0], dataExtent[0]);
// extent[1] = Math.min(extent[1], dataExtent[1]);
this
.
_dataExtent
=
extent
;
},
/**
...
...
@@ -442,7 +425,7 @@ define(function(require) {
*/
eachTargetSeries
:
function
(
callback
,
context
)
{
zrUtil
.
each
(
this
.
option
.
seriesIndex
,
function
(
seriesIndex
)
{
callback
.
call
(
context
,
this
.
ecModel
.
getSeriesByIndex
(
seriesIndex
,
true
));
callback
.
call
(
context
,
this
.
ecModel
.
getSeriesByIndex
(
seriesIndex
));
},
this
);
},
...
...
src/component/dataRange/dataRangeAction.js
浏览文件 @
b84c8afc
...
...
@@ -14,7 +14,7 @@ define(function(require) {
echarts
.
registerAction
(
actionInfo
,
function
(
payload
,
ecModel
)
{
ecModel
.
eachComponent
({
mainType
:
'
dataRange
'
,
payload
:
payload
},
function
(
model
)
{
ecModel
.
eachComponent
({
mainType
:
'
dataRange
'
,
query
:
payload
},
function
(
model
)
{
model
.
setSelected
(
payload
.
selected
);
});
...
...
src/component/dataZoom/SliderZoomView.js
浏览文件 @
b84c8afc
...
...
@@ -237,7 +237,7 @@ define(function (require) {
}
var
size
=
this
.
_size
;
var
data
=
info
.
series
.
get
DataAll
();
var
data
=
info
.
series
.
get
RawData
();
var
otherDataExtent
=
data
.
getDataExtent
(
info
.
otherDim
);
// Nice extent.
...
...
src/component/dataZoom/dataZoomAction.js
浏览文件 @
b84c8afc
...
...
@@ -21,7 +21,7 @@ define(function(require) {
var
effectedModels
=
[];
ecModel
.
eachComponent
({
mainType
:
'
dataZoom
'
,
payload
:
payload
},
function
(
model
)
{
ecModel
.
eachComponent
({
mainType
:
'
dataZoom
'
,
query
:
payload
},
function
(
model
)
{
distinctPush
(
effectedModels
,
linkedNodesFinder
(
model
).
nodes
);
});
...
...
src/component/legend/LegendView.js
浏览文件 @
b84c8afc
...
...
@@ -86,7 +86,7 @@ define(function (require) {
var
legendDrawedMap
=
{};
zrUtil
.
each
(
legendModel
.
getData
(),
function
(
itemModel
)
{
var
seriesName
=
itemModel
.
get
(
'
name
'
);
var
seriesModel
=
ecModel
.
getSeriesByName
(
seriesName
,
true
)
;
var
seriesModel
=
ecModel
.
getSeriesByName
(
seriesName
)[
0
]
;
legendDataMap
[
seriesName
]
=
itemModel
;
...
...
@@ -126,7 +126,7 @@ define(function (require) {
legendDrawedMap
[
seriesName
]
=
true
;
},
this
);
ecModel
.
each
SeriesAll
(
function
(
seriesModel
)
{
ecModel
.
each
RawSeries
(
function
(
seriesModel
)
{
if
(
seriesModel
.
legendDataProvider
)
{
var
data
=
seriesModel
.
legendDataProvider
();
data
.
each
(
function
(
idx
)
{
...
...
src/component/marker/MarkLineModel.js
浏览文件 @
b84c8afc
...
...
@@ -12,7 +12,7 @@ define(function (require) {
/**
* @overrite
*/
init
:
function
(
option
,
parentModel
,
ecModel
,
dependentModels
,
idx
,
createdBySelf
)
{
init
:
function
(
option
,
parentModel
,
ecModel
,
extraOpt
,
createdBySelf
)
{
this
.
mergeDefaultAndTheme
(
option
,
ecModel
);
this
.
mergeOption
(
option
,
createdBySelf
);
},
...
...
@@ -26,7 +26,7 @@ define(function (require) {
var
mlModel
=
seriesModel
.
markLineModel
;
if
(
!
mlModel
)
{
mlModel
=
new
MarkLineModel
(
markLineOpt
,
this
,
ecModel
,
[],
0
,
true
markLineOpt
,
this
,
ecModel
,
{}
,
true
);
}
else
{
...
...
src/component/marker/MarkPointModel.js
浏览文件 @
b84c8afc
...
...
@@ -11,7 +11,7 @@ define(function (require) {
/**
* @overrite
*/
init
:
function
(
option
,
parentModel
,
ecModel
,
dependentModels
,
idx
,
createdBySelf
)
{
init
:
function
(
option
,
parentModel
,
ecModel
,
extraOpt
,
createdBySelf
)
{
this
.
mergeDefaultAndTheme
(
option
,
ecModel
);
this
.
mergeOption
(
option
,
createdBySelf
);
},
...
...
@@ -25,7 +25,7 @@ define(function (require) {
var
mpModel
=
seriesModel
.
markPointModel
;
if
(
!
mpModel
)
{
mpModel
=
new
MarkPointModel
(
markPointOpt
,
this
,
ecModel
,
[],
0
,
true
markPointOpt
,
this
,
ecModel
,
{}
,
true
);
}
else
{
...
...
src/component/tooltip.js
浏览文件 @
b84c8afc
...
...
@@ -218,9 +218,7 @@ define(function (require) {
// Use hostModel in element if possible
// Used when mouseover on a element like markPoint or edge
// In which case, the data is not main data in series.
var
hostModel
=
el
.
hostModel
||
ecModel
.
getSeriesByIndex
(
el
.
seriesIndex
,
true
);
var
hostModel
=
el
.
hostModel
||
ecModel
.
getSeriesByIndex
(
el
.
seriesIndex
);
var
dataIndex
=
el
.
dataIndex
;
var
itemModel
=
hostModel
.
getData
().
getItemModel
(
dataIndex
);
// Series or single data may use item trigger when global is axis trigger
...
...
@@ -262,7 +260,7 @@ define(function (require) {
if
(
axisPointerType
===
'
cross
'
)
{
var
el
=
e
.
target
;
if
(
el
&&
el
.
dataIndex
!=
null
)
{
var
seriesModel
=
ecModel
.
getSeriesByIndex
(
el
.
seriesIndex
,
true
);
var
seriesModel
=
ecModel
.
getSeriesByIndex
(
el
.
seriesIndex
);
var
dataIndex
=
el
.
dataIndex
;
this
.
_showItemTooltipContent
(
seriesModel
,
dataIndex
,
e
);
}
...
...
src/coord/parallel/ParallelModel.js
浏览文件 @
b84c8afc
...
...
@@ -47,7 +47,7 @@ define(function(require) {
/**
* @override
*/
init
:
function
(
option
,
parentModel
,
ecModel
,
dependentModels
,
index
)
{
init
:
function
()
{
Component
.
prototype
.
init
.
apply
(
this
,
arguments
);
this
.
mergeOption
({});
...
...
src/echarts.js
浏览文件 @
b84c8afc
...
...
@@ -290,19 +290,17 @@ define(function (require) {
*/
echartsProto
.
_toggleHighlight
=
function
(
method
,
payload
)
{
var
ecModel
=
this
.
_model
;
var
seriesModel
;
if
(
payload
.
seriesIndex
)
{
seriesModel
=
ecModel
.
getSeriesByIndex
(
payload
.
seriesIndex
,
true
);
}
else
if
(
payload
.
seriesName
)
{
seriesModel
=
ecModel
.
getSeriesByName
(
payload
.
seriesName
,
true
);
}
if
(
seriesModel
)
{
var
chartView
=
this
.
_chartsMap
[
seriesModel
.
getId
()];
if
(
chartView
)
{
chartView
[
method
](
seriesModel
,
ecModel
,
this
.
_api
,
payload
);
}
}
ecModel
.
eachComponent
(
{
mainType
:
'
series
'
,
query
:
payload
},
function
(
seriesModel
)
{
var
chartView
=
this
.
_chartsMap
[
seriesModel
.
getId
()];
if
(
chartView
)
{
chartView
[
method
](
seriesModel
,
ecModel
,
this
.
_api
,
payload
);
}
},
this
);
};
/**
...
...
@@ -543,9 +541,7 @@ define(function (require) {
var
ecModel
=
this
.
getModel
();
var
el
=
e
.
target
;
if
(
el
&&
el
.
dataIndex
!=
null
)
{
var
hostModel
=
el
.
hostModel
||
ecModel
.
getSeriesByIndex
(
el
.
seriesIndex
,
true
);
var
hostModel
=
el
.
hostModel
||
ecModel
.
getSeriesByIndex
(
el
.
seriesIndex
);
var
params
=
hostModel
&&
hostModel
.
getDataParams
(
el
.
dataIndex
)
||
{};
params
.
event
=
e
;
params
.
type
=
eveName
;
...
...
src/layout/barGrid.js
浏览文件 @
b84c8afc
...
...
@@ -131,8 +131,9 @@ define(function(require) {
zrUtil
.
filter
(
ecModel
.
getSeriesByType
(
seriesType
),
function
(
seriesModel
)
{
return
seriesModel
.
coordinateSystem
&&
seriesModel
.
coordinateSystem
.
type
===
'
cartesian2d
'
;
return
!
ecModel
.
isSeriesFiltered
(
seriesModel
)
&&
seriesModel
.
coordinateSystem
&&
seriesModel
.
coordinateSystem
.
type
===
'
cartesian2d
'
;
}
)
);
...
...
src/model/Component.js
浏览文件 @
b84c8afc
...
...
@@ -49,7 +49,7 @@ define(function(require) {
* @readOnly
* @type {number}
*/
componentIndex
:
null
,
componentIndex
:
0
,
/**
* @type {Object}
...
...
@@ -69,7 +69,7 @@ define(function(require) {
* @type {Object.<string, Array.<module:echarts/model/Model>>}
* @readOnly
*/
dependentModels
:
null
,
dependentModels
:
[]
,
/**
* @type {string}
...
...
@@ -77,7 +77,7 @@ define(function(require) {
*/
uid
:
null
,
init
:
function
(
option
,
parentModel
,
ecModel
,
dependentModels
,
index
)
{
init
:
function
(
option
,
parentModel
,
ecModel
,
extraOpt
)
{
this
.
mergeDefaultAndTheme
(
this
.
option
,
this
.
ecModel
);
},
...
...
@@ -119,16 +119,9 @@ define(function(require) {
// Reset ComponentModel.extend, add preConstruct.
clazzUtil
.
enableClassExtend
(
ComponentModel
,
function
(
option
,
parentModel
,
ecModel
,
dependentModels
,
index
,
keyInfo
)
{
this
.
ecModel
=
ecModel
;
this
.
dependentModels
=
dependentModels
;
this
.
componentIndex
=
index
;
this
.
name
=
keyInfo
.
name
;
this
.
id
=
keyInfo
.
id
;
this
.
mainType
=
keyInfo
.
mainType
;
this
.
subType
=
keyInfo
.
subType
;
function
(
option
,
parentModel
,
ecModel
,
extraOpt
)
{
// Set dependentModels, componentIndex, name, id, mainType, subType.
zrUtil
.
extend
(
this
,
extraOpt
);
this
.
uid
=
componentUtil
.
getUID
(
'
componentModel
'
);
}
...
...
src/model/Global.js
浏览文件 @
b84c8afc
...
...
@@ -5,14 +5,13 @@
*
*/
// FIXME Filter 后 series 是否能够被 getComponent 或者 getComponenentById 获取?
define
(
function
(
require
)
{
var
zrUtil
=
require
(
'
zrender/core/util
'
);
var
Model
=
require
(
'
./Model
'
);
var
each
=
zrUtil
.
each
;
var
filter
=
zrUtil
.
filter
;
var
map
=
zrUtil
.
map
;
var
ComponentModel
=
require
(
'
./Component
'
);
...
...
@@ -42,11 +41,12 @@ define(function (require) {
this
.
_componentsMap
=
{};
/**
* All components before processing
* @type {Object.<string, module:echarts/model/Model>}
* Mapping between filtered series list and raw series list.
* key: filtered series indices, value: raw series indices.
* @type {Array.<nubmer>}
* @private
*/
this
.
_
componentsMapAll
=
{}
;
this
.
_
seriesIndices
;
/**
* @type {module:echarts/model/Model}
...
...
@@ -130,6 +130,8 @@ define(function (require) {
mainType
,
newCptOptionList
,
existComponents
);
var
dependentModels
=
this
.
_getComponentsByTypes
(
dependencies
);
each
(
newCptOptionList
,
function
(
newCptOption
,
index
)
{
var
componentModel
=
existComponents
[
index
];
...
...
@@ -144,18 +146,23 @@ define(function (require) {
// PENDING Global as parent ?
componentModel
=
new
ComponentModelClass
(
newCptOption
,
this
,
this
,
this
.
_getComponentsByTypes
(
dependencies
),
index
,
keyInfoList
[
index
]
zrUtil
.
extend
(
{
dependentModels
:
dependentModels
,
componentIndex
:
index
},
keyInfoList
[
index
]
)
);
componentsMap
[
mainType
][
index
]
=
componentModel
;
}
},
this
);
}
// Backup data
each
(
componentsMap
,
function
(
components
,
mainType
)
{
this
.
_componentsMapAll
[
mainType
]
=
components
.
slice
();
},
this
);
// Backup series for filtering.
if
(
mainType
===
'
series
'
)
{
this
.
_seriesIndices
=
createSeriesIndices
(
componentsMap
.
series
);
}
}
},
/**
...
...
@@ -345,13 +352,60 @@ define(function (require) {
});
}
var
subType
=
condition
.
subType
;
return
filterBySubType
(
result
,
condition
);
},
return
subType
==
null
?
result
:
filter
(
result
,
function
(
cpt
)
{
return
cpt
.
subType
===
subType
;
});
/**
* The interface is different from queryComponents,
* which is convenient for inner usage.
*
* @usage
* findComponents(
* {mainType: 'dataZoom', query: {dataZoomId: 'abc'}},
* function (model, index) {...}
* );
* findComponents(
* {mainType: 'series', subType: 'pie', query: {seriesName: 'uio'}},
* function (model, index) {...}
* );
* findComponents(
* {mainType: 'series'},
* function (model, index) {...}
* );
*
* @param {Object} condition
* @param {string} condition.mainType Mandatory.
* @param {string} [condition.subType] Optional.
* @param {Object} [condition.query] like {xxxIndex, xxxId, xxxName},
* where xxx is mainType.
* If query attribute is null/undefined, do not filtering by
* query conditions, which is convenient for no-payload
* situations like visual coding, layout.
* @param {Function} [condition.filter] parameter: component, return boolean.
*/
findComponents
:
function
(
condition
)
{
var
mainType
=
condition
.
mainType
;
var
query
=
condition
.
query
;
var
result
;
if
(
query
)
{
condition
.
index
=
query
[
mainType
+
'
Index
'
];
condition
.
id
=
query
[
mainType
+
'
Id
'
];
condition
.
name
=
query
[
mainType
+
'
Name
'
];
result
=
this
.
queryComponents
(
condition
);
}
else
{
result
=
filterBySubType
(
this
.
_componentsMap
[
mainType
],
condition
);
}
if
(
condition
.
filter
)
{
result
=
filter
(
result
,
condition
.
filter
);
}
return
result
;
},
/**
...
...
@@ -364,107 +418,65 @@ define(function (require) {
* // (componentType is 'xxx' but not 'xxx.aa')
* });
* eachComponent(
* {mainType: 'dataZoom',
payload
: {dataZoomId: 'abc'}},
* {mainType: 'dataZoom',
query
: {dataZoomId: 'abc'}},
* function (model, index) {...}
* );
* eachComponent(
* {mainType: 'series', subType: 'pie',
payload
: {seriesName: 'uio'}},
* {mainType: 'series', subType: 'pie',
query
: {seriesName: 'uio'}},
* function (model, index) {...}
* );
*
* @param {string=} mainType
* @param {string|Object=} mainType When mainType is object, the definition
* is the same as the method 'findComponents'.
* @param {Function} cb
* @param {*} context
*/
eachComponent
:
function
(
mainType
,
cb
,
context
)
{
var
componentsMap
=
this
.
_componentsMap
;
if
(
typeof
mainType
===
'
function
'
)
{
context
=
cb
;
cb
=
mainType
;
each
(
this
.
_
componentsMap
,
function
(
components
,
componentType
)
{
each
(
componentsMap
,
function
(
components
,
componentType
)
{
each
(
components
,
function
(
component
,
index
)
{
cb
.
call
(
this
,
componentType
,
component
,
index
);
}
,
this
);
}
,
context
);
cb
.
call
(
context
,
componentType
,
component
,
index
);
});
});
}
else
if
(
zrUtil
.
isString
(
mainType
))
{
each
(
this
.
_
componentsMap
[
mainType
],
cb
,
context
);
each
(
componentsMap
[
mainType
],
cb
,
context
);
}
// Query by payload.
else
if
(
zrUtil
.
isObject
(
mainType
))
{
var
condition
=
zrUtil
.
extend
({},
mainType
);
var
payload
=
condition
.
payload
;
var
mainType
=
condition
.
mainType
;
// Style in payload: xxxIndex, xxxId, xxxName,
// where xxx is mainType.
condition
.
index
=
payload
[
mainType
+
'
Index
'
];
condition
.
id
=
payload
[
mainType
+
'
Id
'
];
condition
.
name
=
payload
[
mainType
+
'
Name
'
];
each
(
this
.
queryComponents
(
condition
),
cb
,
context
);
}
},
/**
* @param {string} mainType
* @param {Function} cb
* @param {*} context
* @return {module:echarts/model/Component}
*/
findComponent
:
function
(
mainType
,
cb
,
context
)
{
var
components
=
this
.
_componentsMap
[
mainType
];
if
(
components
)
{
for
(
var
i
=
0
,
len
=
components
.
length
;
i
<
len
;
i
++
)
{
if
(
cb
.
call
(
context
,
components
[
i
],
i
))
{
// Return first found
return
components
[
i
];
}
}
each
(
this
.
findComponents
(
mainType
),
cb
,
context
);
}
},
/**
* @param {string} name
* @param {boolean} beforeProcessing
* @return {module:echarts/model/Series}
* @return {Array.<module:echarts/model/Series>}
*/
getSeriesByName
:
function
(
name
,
beforeProcessing
)
{
var
series
=
this
[
'
_componentsMap
'
+
(
beforeProcessing
?
'
All
'
:
''
)].
series
;
for
(
var
i
=
0
,
len
=
series
.
length
;
i
<
len
;
i
++
)
{
// name should be unique.
if
(
series
[
i
].
name
===
name
)
{
return
series
[
i
];
}
}
getSeriesByName
:
function
(
name
)
{
var
series
=
this
.
_componentsMap
.
series
;
return
filter
(
series
,
function
(
oneSeries
)
{
return
oneSeries
.
name
===
name
;
});
},
// FIXME Index of series is confusing
/**
* @param {number} seriesIndex
* @param {boolean} beforeProcessing
* @return {module:echarts/model/Series}
*/
getSeriesByIndex
:
function
(
seriesIndex
,
beforeProcessing
)
{
// return this._componentsMap.series[seriesIndex];
var
series
=
this
[
'
_componentsMap
'
+
(
beforeProcessing
?
'
All
'
:
''
)].
series
;
for
(
var
i
=
0
,
len
=
series
.
length
;
i
<
len
;
i
++
)
{
// name should be unique.
if
(
series
[
i
].
seriesIndex
===
seriesIndex
)
{
return
series
[
i
];
}
}
getSeriesByIndex
:
function
(
seriesIndex
)
{
return
this
.
_componentsMap
.
series
[
seriesIndex
];
},
/**
* @param {string} subType
* @param {boolean} beforeProcessing
* @return {Array.<module:echarts/model/Series>}
*/
getSeriesByType
:
function
(
subType
,
beforeProcessing
)
{
var
series
=
this
[
'
_componentsMap
'
+
(
beforeProcessing
?
'
All
'
:
''
)]
.
series
;
return
zrUtil
.
filter
(
series
,
function
(
oneSeries
)
{
getSeriesByType
:
function
(
subType
)
{
var
series
=
this
.
_componentsMap
.
series
;
return
filter
(
series
,
function
(
oneSeries
)
{
return
oneSeries
.
subType
===
subType
;
});
},
...
...
@@ -477,46 +489,65 @@ define(function (require) {
},
/**
* After filtering, series may be different
* frome raw series.
*
* @param {Function} cb
* @param {*} context
*/
eachSeries
:
function
(
cb
,
context
)
{
each
(
this
.
_componentsMap
.
series
,
cb
,
context
);
assertSeriesInitialized
(
this
);
each
(
this
.
_seriesIndices
,
function
(
rawSeriesIndex
)
{
var
series
=
this
.
_componentsMap
.
series
[
rawSeriesIndex
];
cb
.
call
(
context
,
series
,
rawSeriesIndex
);
},
this
);
},
/**
* Iterate all series before filtered
* Iterate raw series before filtered.
*
* @param {Function} cb
* @param {*} context
*/
each
SeriesAll
:
function
(
cb
,
context
)
{
each
(
this
.
_componentsMap
All
.
series
,
cb
,
context
);
each
RawSeries
:
function
(
cb
,
context
)
{
each
(
this
.
_componentsMap
.
series
,
cb
,
context
);
},
/**
* After filtering, series may be different.
* frome raw series.
*
* @parma {string} subType
* @param {Function} cb
* @param {*} context
*/
eachSeriesByType
:
function
(
subType
,
cb
,
context
)
{
return
each
(
this
.
getSeriesByType
(
subType
),
cb
,
context
);
assertSeriesInitialized
(
this
);
each
(
this
.
_seriesIndices
,
function
(
rawSeriesIndex
)
{
var
series
=
this
.
_componentsMap
.
series
[
rawSeriesIndex
];
if
(
series
.
subType
===
subType
)
{
cb
.
call
(
context
,
series
,
rawSeriesIndex
);
}
},
this
);
},
/**
* Iterate all series before filtered of given type
* Iterate raw series before filtered of given type.
*
* @parma {string} subType
* @param {Function} cb
* @param {*} context
*/
each
SeriesByTypeAll
:
function
(
subType
,
cb
,
context
)
{
return
each
(
this
.
getSeriesByType
(
subType
,
true
),
cb
,
context
);
each
RawSeriesByType
:
function
(
subType
,
cb
,
context
)
{
return
each
(
this
.
getSeriesByType
(
subType
),
cb
,
context
);
},
/**
* @param {
}
* @param {
module:echarts/model/Series} seriesModel
*/
isSeriesFiltered
:
function
(
seriesModel
)
{
return
zrUtil
.
indexOf
(
this
.
_componentsMap
.
series
,
seriesModel
)
<
0
;
assertSeriesInitialized
(
this
);
return
zrUtil
.
indexOf
(
this
.
_seriesIndices
,
seriesModel
.
componentIndex
)
<
0
;
},
/**
...
...
@@ -524,18 +555,20 @@ define(function (require) {
* @param {*} context
*/
filterSeries
:
function
(
cb
,
context
)
{
var
componentsMap
=
this
.
_componentsMap
;
componentsMap
.
series
=
zrUtil
.
filter
(
componentsMap
.
series
,
cb
,
context
assertSeriesInitialized
(
this
)
;
var
filteredSeries
=
filter
(
this
.
_
componentsMap
.
series
,
cb
,
context
);
this
.
_seriesIndices
=
createSeriesIndices
(
filteredSeries
);
},
restoreData
:
function
()
{
var
componentsMap
=
this
.
_componentsMap
;
var
componentTypes
=
[];
each
(
this
.
_componentsMapAll
,
function
(
components
,
componentType
)
{
componentsMap
[
componentType
]
=
components
.
slice
();
this
.
_seriesIndices
=
createSeriesIndices
(
componentsMap
.
series
);
var
componentTypes
=
[];
each
(
componentsMap
,
function
(
components
,
componentType
)
{
componentTypes
.
push
(
componentType
);
});
...
...
@@ -569,5 +602,29 @@ define(function (require) {
}
});
function
createSeriesIndices
(
seriesModels
)
{
return
map
(
seriesModels
,
function
(
series
)
{
return
series
.
componentIndex
;
},
this
);
}
function
filterBySubType
(
components
,
condition
)
{
return
condition
.
hasOwnProperty
(
'
subType
'
)
?
filter
(
components
,
function
(
cpt
)
{
return
cpt
.
subType
===
condition
.
subType
;
})
:
components
;
}
function
assertSeriesInitialized
(
ecModel
)
{
// Components that use _seriesIndices should depends on series component,
// which make sure that their initialization is after series.
if
(
!
ecModel
.
_seriesIndices
)
{
// FIXME
// 验证和提示怎么写
throw
new
Error
(
'
Series is not initialized. Please depends sereis.
'
);
}
}
return
GlobalModel
;
});
\ No newline at end of file
src/model/Series.js
浏览文件 @
b84c8afc
...
...
@@ -35,11 +35,13 @@ define(function(require) {
// PENDING
legendDataProvider
:
null
,
init
:
function
(
option
,
parentModel
,
ecModel
,
dependentModels
,
seriesIndex
)
{
init
:
function
(
option
,
parentModel
,
ecModel
,
extraOpt
)
{
/**
* @type {number}
* @readOnly
*/
this
.
seriesIndex
=
series
Index
;
this
.
seriesIndex
=
this
.
component
Index
;
this
.
mergeDefaultAndTheme
(
option
,
ecModel
);
...
...
@@ -47,9 +49,12 @@ define(function(require) {
* @type {module:echarts/data/List|module:echarts/data/Tree|module:echarts/data/Graph}
* @private
*/
this
.
_data
=
this
.
getInitialData
(
option
,
ecModel
);
this
.
_data
BeforeProcessed
=
this
.
getInitialData
(
option
,
ecModel
);
this
.
_dataBeforeProcessed
=
this
.
_data
.
cloneShallow
();
// When using module:echarts/data/Tree or module:echarts/data/Graph,
// cloneShallow will cause this._data.graph.data pointing to new data list.
// Wo we make this._dataBeforeProcessed first, and then make this._data.
this
.
_data
=
this
.
_dataBeforeProcessed
.
cloneShallow
();
},
/**
...
...
@@ -108,7 +113,7 @@ define(function(require) {
* Get data before processed
* @return {module:echarts/data/List}
*/
get
DataAll
:
function
()
{
get
RawData
:
function
()
{
return
this
.
_dataBeforeProcessed
;
},
...
...
src/visual/dataColor.js
浏览文件 @
b84c8afc
...
...
@@ -5,8 +5,8 @@ define(function (require) {
var
offset
=
0
;
var
colorList
=
ecModel
.
get
(
'
color
'
);
ecModel
.
each
SeriesByTypeAll
(
seriesType
,
function
(
seriesModel
)
{
var
dataAll
=
seriesModel
.
get
DataAll
();
ecModel
.
each
RawSeriesByType
(
seriesType
,
function
(
seriesModel
)
{
var
dataAll
=
seriesModel
.
get
RawData
();
if
(
!
ecModel
.
isSeriesFiltered
(
seriesModel
))
{
var
data
=
seriesModel
.
getData
();
data
.
each
(
function
(
idx
)
{
...
...
src/visual/seriesColor.js
浏览文件 @
b84c8afc
define
(
function
(
require
)
{
var
Gradient
=
require
(
'
zrender/graphic/Gradient
'
);
return
function
(
ecModel
)
{
ecModel
.
each
SeriesAll
(
function
(
seriesModel
)
{
ecModel
.
each
RawSeries
(
function
(
seriesModel
)
{
var
colorAccessPath
=
[
'
itemStyle
'
,
'
normal
'
,
'
color
'
];
var
colorList
=
ecModel
.
get
(
'
color
'
);
var
data
=
seriesModel
.
getData
();
...
...
src/visual/symbol.js
浏览文件 @
b84c8afc
...
...
@@ -7,7 +7,7 @@ define(function (require) {
return
function
(
seriesType
,
defaultSymbolType
,
legendSymbol
,
ecModel
,
api
)
{
// Encoding visual for all series include which is filtered for legend drawing
ecModel
.
each
SeriesByTypeAll
(
seriesType
,
function
(
seriesModel
)
{
ecModel
.
each
RawSeriesByType
(
seriesType
,
function
(
seriesModel
)
{
var
data
=
seriesModel
.
getData
();
var
symbolType
=
seriesModel
.
get
(
'
symbol
'
)
||
defaultSymbolType
;
...
...
test/color-mix-aqi.html
浏览文件 @
b84c8afc
...
...
@@ -78,9 +78,9 @@
borderColor
:
'
#777
'
,
borderWidth
:
1
,
formatter
:
function
(
obj
)
{
var
value
=
obj
[
0
]
.
value
;
var
value
=
obj
.
value
;
return
'
<div style="border-bottom: 1px solid rgba(255,255,255,.3); font-size: 18px;padding-bottom: 7px;margin-bottom: 7px">
'
+
obj
[
0
]
.
seriesName
+
'
'
+
value
[
0
]
+
'
日:
'
+
obj
.
seriesName
+
'
'
+
value
[
0
]
+
'
日:
'
+
value
[
7
]
+
'
</div>
'
+
schema
[
1
].
text
+
'
:
'
+
value
[
1
]
+
'
<br>
'
...
...
test/multipleGrid.html
浏览文件 @
b84c8afc
...
...
@@ -94,8 +94,8 @@
tooltip
:
{
trigger
:
'
axis
'
,
formatter
:
function
(
params
)
{
return
params
[
0
]
.
name
+
'
<br/>
'
+
params
[
0
].
seriesName
+
'
:
'
+
params
[
0
]
.
value
+
'
(m^3/s)<br/>
'
;
return
params
.
name
+
'
<br/>
'
+
params
.
seriesName
+
'
:
'
+
params
.
value
+
'
(m^3/s)<br/>
'
;
}
},
legend
:
{
...
...
test/pie3.html
浏览文件 @
b84c8afc
...
...
@@ -47,8 +47,8 @@
backgroundColor
:
'
trasparent
'
,
formatter
:
function
(
params
)
{
return
'
<div class="tooltip-content">
\
<h4>
'
+
params
[
0
]
.
name
+
'
</h4>
\
<h5>
'
+
(
params
[
0
]
.
percent
*
100
).
toFixed
(
1
)
+
'
%</h5>
\
<h4>
'
+
params
.
name
+
'
</h4>
\
<h5>
'
+
(
params
.
percent
*
100
).
toFixed
(
1
)
+
'
%</h5>
\
</div>
\
'
;
}
...
...
test/treemap-disk.html
浏览文件 @
b84c8afc
...
...
@@ -139,8 +139,8 @@
tooltip
:
{
formatter
:
function
(
info
)
{
var
value
=
info
[
0
]
.
value
;
var
treePathInfo
=
info
[
0
]
.
treePathInfo
;
var
value
=
info
.
value
;
var
treePathInfo
=
info
.
treePathInfo
;
var
treePath
=
[];
for
(
var
i
=
1
;
i
<
treePathInfo
.
length
;
i
++
)
{
...
...
test/treemap-obama.html
浏览文件 @
b84c8afc
...
...
@@ -240,7 +240,7 @@
var
amountIndex2011
=
mode
===
1
?
0
:
1
;
return
function
(
info
)
{
var
value
=
info
[
0
]
.
value
;
var
value
=
info
.
value
;
var
amount
=
value
[
amountIndex
];
amount
=
isValidNumber
(
amount
)
...
...
@@ -263,7 +263,7 @@
:
'
-
'
;
return
[
'
<div class="tooltip-title">
'
+
formatUtil
.
encodeHTML
(
info
[
0
]
.
name
)
+
'
</div>
'
,
'
<div class="tooltip-title">
'
+
formatUtil
.
encodeHTML
(
info
.
name
)
+
'
</div>
'
,
'
2012 Amount:
'
+
amount
+
'
<br>
'
,
'
Per Household:
'
+
perHousehold
+
'
<br>
'
,
'
2011 Amount:
'
+
amount2011
+
'
<br>
'
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录