Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
alon@wen
echarts
提交
2ff880ff
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,发现更多精彩内容 >>
提交
2ff880ff
编写于
9月 07, 2015
作者:
L
lang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Series stack. List improvement
上级
582526e7
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
173 addition
and
60 deletion
+173
-60
ecn.todo
ecn.todo
+0
-1
src/chart/bar/barLayoutPolar.js
src/chart/bar/barLayoutPolar.js
+0
-0
src/coord/cartesian/Cartesian2D.js
src/coord/cartesian/Cartesian2D.js
+2
-2
src/coord/cartesian/Grid.js
src/coord/cartesian/Grid.js
+1
-1
src/coord/polar/Polar.js
src/coord/polar/Polar.js
+1
-1
src/coord/polar/polarCreator.js
src/coord/polar/polarCreator.js
+5
-2
src/data/List.js
src/data/List.js
+134
-51
src/echarts.js
src/echarts.js
+22
-0
src/layout/barGrid.js
src/layout/barGrid.js
+1
-1
test/bar.html
test/bar.html
+3
-0
test/line.html
test/line.html
+4
-1
未找到文件。
ecn.todo
已删除
100644 → 0
浏览文件 @
582526e7
Default Option
\ No newline at end of file
src/chart/bar/barLayoutPolar.js
已删除
100644 → 0
浏览文件 @
582526e7
src/coord/cartesian/Cartesian2D.js
浏览文件 @
2ff880ff
...
...
@@ -29,8 +29,8 @@ define(function(require) {
return
data
.
map
(
function
(
dataItem
)
{
var
coord
=
[];
coord
[
xIndex
]
=
xAxis
.
dataToCoord
(
dataItem
.
getX
());
coord
[
1
-
xIndex
]
=
yAxis
.
dataToCoord
(
dataItem
.
getY
());
coord
[
xIndex
]
=
xAxis
.
dataToCoord
(
dataItem
.
getX
(
true
));
coord
[
1
-
xIndex
]
=
yAxis
.
dataToCoord
(
dataItem
.
getY
(
true
));
return
coord
;
},
this
);
},
...
...
src/coord/cartesian/Grid.js
浏览文件 @
2ff880ff
...
...
@@ -309,7 +309,7 @@ define(function(require, factory) {
if
(
value
!=
null
)
{
axisData
[
categoryAxis
.
dim
===
'
y
'
?
'
x
'
:
'
y
'
].
push
(
value
);
}
});
}
,
true
);
}
}
}
...
...
src/coord/polar/Polar.js
浏览文件 @
2ff880ff
...
...
@@ -74,7 +74,7 @@ define(function(require) {
*/
dataToCoords
:
function
(
data
)
{
return
data
.
map
(
function
(
dataItem
)
{
return
this
.
dataToCoord
([
dataItem
.
getRadius
(
),
dataItem
.
getAngle
(
)]);
return
this
.
dataToCoord
([
dataItem
.
getRadius
(
true
),
dataItem
.
getAngle
(
true
)]);
},
this
);
},
...
...
src/coord/polar/polarCreator.js
浏览文件 @
2ff880ff
...
...
@@ -108,11 +108,14 @@ define(function (require) {
var
isAngleCategory
=
angleAxis
.
type
===
'
category
'
;
var
data
=
seriesModel
.
getData
();
var
valueMapper
=
function
(
a
)
{
return
a
;
}
if
(
!
isRadiusCategory
)
{
radiusAxis
.
scale
.
setExtentFromData
(
data
.
map
(
function
(
dataItem
)
{
return
dataItem
.
getRadius
();
}
),
true
);
radiusAxis
.
scale
.
setExtentFromData
(
data
.
map
Radius
(
valueMapper
,
true
),
true
);
}
if
(
!
isAngleCategory
)
{
angleAxis
.
scale
.
setExtentFromData
(
data
.
map
(
function
(
dataItem
)
{
return
dataItem
.
getAngle
();
}
),
true
);
angleAxis
.
scale
.
setExtentFromData
(
data
.
map
Angle
(
valueMapper
,
true
),
true
);
}
}
});
...
...
src/data/List.js
浏览文件 @
2ff880ff
...
...
@@ -7,29 +7,24 @@ define(function(require) {
var
Model
=
require
(
'
../model/Model
'
);
var
DataDiffer
=
require
(
'
./DataDiffer
'
);
function
createArrayIterWithDepth
(
maxDepth
,
properties
,
cb
,
context
,
iterType
)
{
// Simple optimization to avoid read the undefined value in properties array
var
nestedProperties
=
properties
.
length
>
0
;
return
function
eachAxis
(
array
,
depth
)
{
if
(
depth
===
maxDepth
)
{
return
zrUtil
[
iterType
](
array
,
cb
,
context
);
}
else
if
(
array
)
{
var
property
=
properties
[
depth
];
for
(
var
i
=
0
;
i
<
array
.
length
;
i
++
)
{
var
item
=
array
[
i
];
// Access property of each item
if
(
nestedProperties
&&
property
&&
item
)
{
item
=
item
[
property
];
}
array
[
i
]
=
eachAxis
(
item
,
depth
);
}
var
POSSIBLE_DIMENSIONS
=
[
'
x
'
,
'
y
'
,
'
z
'
,
'
value
'
,
'
radius
'
,
'
angle
'
];
/**
* Check if two entries has same xIndex, yIndex, zIndex, valueIndex, etc.
* @param {module:echarts/data/List~Entry} entry1
* @param {module:echarts/data/List~Entry} entry2
* @inner
*/
function
isEntrySameShape
(
entry1
,
entry2
)
{
for
(
var
i
=
0
;
i
<
POSSIBLE_DIMENSIONS
.
length
;
i
++
)
{
var
key
=
POSSIBLE_DIMENSIONS
[
i
]
+
'
Index
'
;
if
(
entry1
[
key
]
!==
entry2
[
key
])
{
return
false
;
}
};
}
return
true
;
}
var
dimensions
=
[
'
x
'
,
'
y
'
,
'
z
'
,
'
value
'
,
'
radius
'
,
'
angle
'
];
/**
* @name echarts/data/List~Entry
* @extends {module:echarts/model/Model}
...
...
@@ -80,6 +75,11 @@ define(function(require) {
*/
valueIndex
:
1
,
/**
* @type {module:echarts/data/List~Entry}
*/
stackedOn
:
null
,
init
:
function
(
option
,
parentModel
,
rawDataIndex
,
independentVar
,
dependentVar
)
{
/**
...
...
@@ -143,25 +143,19 @@ define(function(require) {
this
.
rawDataIndex
=
rawDataIndex
;
},
/**
* @return {number}
*/
getStackedValue
:
function
()
{
},
setDataIndex
:
function
(
index
)
{
if
(
this
.
dataIndexIndex
!=
null
)
{
this
.
_value
[
this
.
dataIndexIndex
]
=
index
;
}
},
clone
:
function
()
{
var
entry
=
new
Entry
(
this
.
option
,
this
.
parentModel
,
this
.
rawD
ataIndex
);
clone
:
function
(
dataIndex
)
{
var
entry
=
new
Entry
(
this
.
option
,
this
.
parentModel
,
d
ataIndex
);
entry
.
name
=
this
.
name
;
entry
.
stackedOn
=
this
.
stackedOn
;
for
(
var
i
=
0
;
i
<
dimensions
.
length
;
i
++
)
{
var
key
=
dimensions
[
i
]
+
'
Index
'
;
for
(
var
i
=
0
;
i
<
POSSIBLE_DIMENSIONS
.
length
;
i
++
)
{
var
key
=
POSSIBLE_DIMENSIONS
[
i
]
+
'
Index
'
;
if
(
this
.
hasOwnProperty
(
key
))
{
entry
[
key
]
=
this
[
key
];
}
...
...
@@ -170,23 +164,62 @@ define(function(require) {
}
});
zrUtil
.
each
(
dimensions
,
function
(
dim
)
{
zrUtil
.
each
(
POSSIBLE_DIMENSIONS
,
function
(
dim
)
{
var
capitalized
=
dim
[
0
].
toUpperCase
()
+
dim
.
substr
(
1
);
var
indexKey
=
dim
+
'
Index
'
;
Entry
.
prototype
[
'
get
'
+
capitalized
]
=
function
()
{
var
getterName
=
'
get
'
+
capitalized
;
Entry
.
prototype
[
getterName
]
=
function
(
stack
)
{
var
index
=
this
[
indexKey
];
if
(
index
>=
0
)
{
return
this
.
_value
[
index
];
var
val
=
this
.
_value
[
index
];
var
stackedOn
=
this
.
stackedOn
;
// Normalize empty value
if
(
val
===
'
-
'
||
val
==
null
)
{
val
=
null
;
}
if
(
val
!=
null
// Has stack
&&
stack
&&
stackedOn
// Is getValue
&&
index
===
this
.
valueIndex
// Has same dimensions shape on stack
// PENDING If check the two stacking entries have same shape
&&
isEntrySameShape
(
this
,
stackedOn
)
)
{
var
stackValue
=
stackedOn
[
getterName
](
stack
);
if
(
// Positive stack
val
>
0
&&
stackValue
>
0
// Negative stack
||
(
val
<
0
&&
stackValue
<
0
)
)
{
val
+=
stackValue
;
}
}
return
val
;
}
};
});
function
List
()
{
function
List
(
dimensions
,
value
)
{
/**
* @readOnly
* @type {Array}
*/
this
.
elements
=
[];
/**
* @readOnly
* @type {Array.<string>}
*/
this
.
dimensions
=
dimensions
||
[
'
x
'
]
/**
* @readOnly
* @type {string}
*/
this
.
value
=
value
||
'
y
'
;
}
List
.
prototype
=
{
...
...
@@ -195,17 +228,47 @@ define(function(require) {
type
:
'
list
'
,
/**
* @type {module:echarts/data/List~Entry}
*/
at
:
function
(
idx
)
{
return
this
.
elements
[
idx
];
},
/**
* Create and add a new entry
* @param {Object} option
* @param {module:echarts/model/Series} seriesModel
* @return {module:echarts/data/List~Entry}
*/
add
:
function
(
option
,
seriesModel
)
{
var
elements
=
this
.
elements
;
var
entry
=
new
Entry
(
option
,
seriesModel
,
elements
.
length
,
this
.
dimensions
,
this
.
value
);
elements
.
push
(
entry
);
return
entry
;
},
/**
* Get elements count
* @return {number}
*/
count
:
function
()
{
return
this
.
elements
.
length
;
},
/**
* Iterate each element
* @param {Function} cb
* @param {*} context
*/
each
:
function
(
cb
,
context
)
{
zrUtil
.
each
(
this
.
elements
,
cb
,
context
||
this
);
},
/**
* Data mapping, returned array is flatten
* PENDING
* Map elemements to a new created array
* @param {Function} cb
* @param {*} context
*/
map
:
function
(
cb
,
context
)
{
var
ret
=
[];
...
...
@@ -216,6 +279,11 @@ define(function(require) {
return
ret
;
},
/**
* Filter elements in place
* @param {Function} cb
* @param {*} context
*/
filterSelf
:
function
(
cb
,
context
)
{
this
.
elements
=
zrUtil
.
filter
(
this
.
elements
,
cb
,
context
||
this
);
this
.
each
(
this
.
_setEntryDataIndex
);
...
...
@@ -229,7 +297,6 @@ define(function(require) {
* @return {module:echarts/data/List~Entry}
*/
getByName
:
function
(
name
)
{
// TODO deep hierarchy
var
elements
=
this
.
elements
;
for
(
var
i
=
0
;
i
<
elements
.
length
;
i
++
)
{
if
(
elements
[
i
].
name
===
name
)
{
...
...
@@ -250,31 +317,47 @@ define(function(require) {
return
el
;
},
/**
* Get the diff result with the old list data
* @param {module:echarts/data/List} oldList
* @return {module:echarts/data/DataDiffer}
* @example
* data.diff(this._data)
* .add(function (item) { // Add a new shape})
* .update(function (newItem, oldItem) { // Update the shape})
* .remove(function (item) { // Remove unused shape})
* .execute()
*/
diff
:
function
(
oldList
)
{
return
new
DataDiffer
(
oldList
?
oldList
.
elements
:
[],
this
.
elements
);
},
/**
* Clone a new list and all its' entries
* @return {module:echarts/data/List}
*/
clone
:
function
()
{
var
list
=
new
List
();
var
elements
=
this
.
elements
;
for
(
var
i
=
0
;
i
<
elements
.
length
;
i
++
)
{
list
.
elements
.
push
(
elements
[
i
].
clone
());
}
var
list
=
new
List
(
this
.
dimensions
,
this
.
value
);
list
.
elements
=
zrUtil
.
map
(
this
.
elements
,
function
(
el
,
i
)
{
return
el
.
clone
(
i
);
});
return
list
;
}
};
zrUtil
.
each
([
'
X
'
,
'
Y
'
,
'
Z
'
,
'
Value
'
],
function
(
name
)
{
List
.
prototype
[
'
each
'
+
name
]
=
function
(
cb
,
context
)
{
zrUtil
.
each
(
POSSIBLE_DIMENSIONS
,
function
(
dim
)
{
var
capitalized
=
dim
[
0
].
toUpperCase
()
+
dim
.
substr
(
1
);
List
.
prototype
[
'
each
'
+
capitalized
]
=
function
(
cb
,
stack
,
context
)
{
this
.
each
(
function
(
item
,
idx
)
{
cb
&&
cb
.
call
(
context
||
this
,
item
[
'
get
'
+
name
](
idx
));
cb
&&
cb
.
call
(
context
||
this
,
item
[
'
get
'
+
capitalized
](
stack
));
},
context
);
};
List
.
prototype
[
'
map
'
+
name
]
=
function
(
cb
,
context
)
{
List
.
prototype
[
'
map
'
+
capitalized
]
=
function
(
cb
,
stack
,
context
)
{
var
ret
=
[];
this
.
each
(
function
(
item
)
{
ret
.
push
(
cb
&&
cb
.
call
(
context
||
this
,
item
[
'
get
'
+
name
](
)));
ret
.
push
(
cb
&&
cb
.
call
(
context
||
this
,
item
[
'
get
'
+
capitalized
](
stack
)));
},
context
);
return
ret
;
};
...
...
@@ -340,11 +423,11 @@ define(function(require) {
}
}
var
list
=
new
List
();
var
list
=
new
List
(
independentVar
,
dependentVar
);
// Normalize data
list
.
elements
=
zrUtil
.
map
(
data
,
function
(
dataItem
,
index
)
{
var
entry
=
new
Entry
(
dataItem
,
seriesModel
,
index
,
independentVar
,
dependentVar
);
zrUtil
.
each
(
data
,
function
(
dataItem
,
index
)
{
var
entry
=
list
.
add
(
dataItem
,
seriesModel
);
// FIXME
if
(
!
dataItem
.
name
)
{
entry
.
name
=
index
;
...
...
src/echarts.js
浏览文件 @
2ff880ff
...
...
@@ -167,6 +167,8 @@ define(function (require) {
this
.
_processData
(
ecModel
);
this
.
_stackSeriesData
(
ecModel
);
this
.
_coordinateSystem
.
update
(
ecModel
,
this
.
_extensionAPI
);
this
.
_doVisualCoding
(
ecModel
);
...
...
@@ -311,6 +313,26 @@ define(function (require) {
});
},
/**
* @private
*/
_stackSeriesData
:
function
(
ecModel
)
{
var
stackedDataMap
=
{};
ecModel
.
eachSeries
(
function
(
series
)
{
var
stack
=
series
.
get
(
'
stack
'
);
var
data
=
series
.
getData
();
if
(
stack
&&
data
.
type
===
'
list
'
&&
data
.
dimensions
.
length
===
1
)
{
var
previousStack
=
stackedDataMap
[
stack
];
if
(
previousStack
)
{
data
.
each
(
function
(
dataItem
,
idx
)
{
dataItem
.
stackedOn
=
previousStack
.
at
(
idx
);
});
}
stackedDataMap
[
stack
]
=
data
;
}
});
},
/**
* Layout before each chart render there series after visual coding and data processing
*
...
...
src/layout/barGrid.js
浏览文件 @
2ff880ff
...
...
@@ -146,7 +146,7 @@ define(function(require) {
lastStackCoords
[
stackId
]
=
lastStackCoords
[
stackId
]
||
[];
data
.
each
(
function
(
dataItem
,
dataIndex
)
{
var
value
=
dataItem
.
getValue
();
var
value
=
dataItem
.
getValue
(
true
);
// 空数据
if
(
value
==
null
)
{
return
;
...
...
test/bar.html
浏览文件 @
2ff880ff
...
...
@@ -66,14 +66,17 @@
series
:
[{
name
:
'
bar
'
,
type
:
'
bar
'
,
stack
:
'
one
'
,
data
:
data1
},
{
name
:
'
bar2
'
,
type
:
'
bar
'
,
stack
:
'
one
'
,
data
:
data2
},
{
name
:
'
bar3
'
,
type
:
'
bar
'
,
stack
:
'
two
'
,
data
:
data3
}]
});
...
...
test/line.html
浏览文件 @
2ff880ff
...
...
@@ -32,7 +32,7 @@
for
(
var
i
=
0
;
i
<
20
;
i
++
)
{
xAxisData
.
push
(
'
类目
'
+
i
);
data1
.
push
(
Math
.
random
()
*
5
);
data1
.
push
(
Math
.
random
());
data2
.
push
(
Math
.
random
());
data3
.
push
(
Math
.
random
());
}
...
...
@@ -53,14 +53,17 @@
series
:
[{
name
:
'
line
'
,
type
:
'
line
'
,
stack
:
'
all
'
,
data
:
data1
},
{
name
:
'
line2
'
,
type
:
'
line
'
,
stack
:
'
all
'
,
data
:
data2
},
{
name
:
'
line3
'
,
type
:
'
line
'
,
stack
:
'
all
'
,
data
:
data3
}]
});
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录