Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
x649585723
incubator-echarts
提交
ebaeab5d
I
incubator-echarts
项目概览
x649585723
/
incubator-echarts
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
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,发现更多精彩内容 >>
提交
ebaeab5d
编写于
11月 22, 2013
作者:
K
kener
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
1.3.1 release
上级
fa78881a
变更
17
隐藏空白更改
内联
并排
Showing
17 changed file
with
2238 addition
and
1144 deletion
+2238
-1144
README.md
README.md
+3
-3
build/echarts-map.js
build/echarts-map.js
+7
-35
build/echarts-original-map.js
build/echarts-original-map.js
+549
-247
build/echarts-original.js
build/echarts-original.js
+549
-247
build/echarts.js
build/echarts.js
+7
-34
doc/asset/js/echartsExample.js
doc/asset/js/echartsExample.js
+1
-1
doc/example/bar6.html
doc/example/bar6.html
+1
-1
doc/example/www/js/echarts-map.js
doc/example/www/js/echarts-map.js
+7
-35
doc/example/www/js/echarts-original-map.js
doc/example/www/js/echarts-original-map.js
+549
-247
doc/example/www/js/echarts-original.js
doc/example/www/js/echarts-original.js
+549
-247
doc/example/www/js/echarts.js
doc/example/www/js/echarts.js
+7
-34
src/chart/bar.js
src/chart/bar.js
+0
-1
src/component/polar.js
src/component/polar.js
+0
-3
src/component/toolbox.js
src/component/toolbox.js
+1
-1
src/component/tooltip.js
src/component/tooltip.js
+1
-1
src/echarts.js
src/echarts.js
+1
-1
src/util/accMath.js
src/util/accMath.js
+6
-6
未找到文件。
README.md
浏览文件 @
ebaeab5d
ECharts
ECharts
=======
=======
http://ec
omfe.github.com/echarts
http://ec
harts.baidu.com
基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。创新的拖拽重计算、数据视图、值域漫游等特性大大增强了用户体验,赋予了用户对数据进行挖掘、整合的能力。
基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。创新的拖拽重计算、数据视图、值域漫游等特性大大增强了用户体验,赋予了用户对数据进行挖掘、整合的能力。
...
@@ -20,7 +20,7 @@ ECharts (Enterprise Charts 商业产品图表库)
...
@@ -20,7 +20,7 @@ ECharts (Enterprise Charts 商业产品图表库)
特色
特色
我们诚挚邀请你翻阅这份在线文档 《
<a
href=
"http://ec
omfe.github.io/echarts
/doc/slide/whyEcharts.html"
target=
"_blank"
>
Why ECharts ?
</a>
》 你可以从中更直观的体验到ECharts的特性以及快速浏览到所有图表类型。
我们诚挚邀请你翻阅这份在线文档 《
<a
href=
"http://ec
harts.baidu.com
/doc/slide/whyEcharts.html"
target=
"_blank"
>
Why ECharts ?
</a>
》 你可以从中更直观的体验到ECharts的特性以及快速浏览到所有图表类型。
*
文档中展现的个别特性在IE8-中并没有得到支持,所以建议使用IE9+、chrome、safari、firefox或opear等高级浏览器阅读这份文档。
*
文档中展现的个别特性在IE8-中并没有得到支持,所以建议使用IE9+、chrome、safari、firefox或opear等高级浏览器阅读这份文档。
...
@@ -100,7 +100,7 @@ ECharts提供了方便快捷的图例开关,可以随时切换到你所关心
...
@@ -100,7 +100,7 @@ ECharts提供了方便快捷的图例开关,可以随时切换到你所关心
![
ECharts 多维度堆积
](
doc/asset/img/multiStack.png
)
![
ECharts 多维度堆积
](
doc/asset/img/multiStack.png
)
### 个性化定制
### 个性化定制
近300
个可配置选项结合多级控制设计满足高度定制的个性化需求。
500+
个可配置选项结合多级控制设计满足高度定制的个性化需求。
![
ECharts 个性化定制
](
doc/asset/img/custom.png
)
![
ECharts 个性化定制
](
doc/asset/img/custom.png
)
...
...
build/echarts-map.js
浏览文件 @
ebaeab5d
因为 它太大了无法显示 source diff 。你可以改为
查看blob
。
build/echarts-original-map.js
浏览文件 @
ebaeab5d
...
@@ -152,10 +152,24 @@ define('echarts/config',[],function() {
...
@@ -152,10 +152,24 @@ define('echarts/config',[],function() {
itemSize: 16, // 工具箱图形宽度,非标准参数
itemSize: 16, // 工具箱图形宽度,非标准参数
feature : {
feature : {
//mark : true,
//mark : true,
//dataZoom : true,
//dataView : {readOnly: false},
//dataView : {readOnly: false},
//magicType: ['line', 'bar'],
//magicType: ['line', 'bar'],
//restore : true,
//restore : true,
//saveAsImage : true
//saveAsImage : true
},
showTitle : true,
featureTitle : {
mark : '辅助线开关',
markUndo : '删除辅助线',
markClear : '清空辅助线',
dataZoom : '区域缩放',
dataZoomReset : '区域缩放后退',
dataView : '数据视图',
lineChart : '折线图切换',
barChart : '柱形图切换',
restore : '还原',
saveAsImage : '保存为图片'
}
}
},
},
...
@@ -211,7 +225,7 @@ define('echarts/config',[],function() {
...
@@ -211,7 +225,7 @@ define('echarts/config',[],function() {
// yAxisIndex: [], // 默认控制所有横向类目
// yAxisIndex: [], // 默认控制所有横向类目
// start: 0, // 默认为0
// start: 0, // 默认为0
// end: 100, // 默认为全部 100%
// end: 100, // 默认为全部 100%
realtime:
fals
e
realtime:
tru
e
// zoomLock: false // 是否锁定选择区域大小
// zoomLock: false // 是否锁定选择区域大小
},
},
...
@@ -333,7 +347,7 @@ define('echarts/config',[],function() {
...
@@ -333,7 +347,7 @@ define('echarts/config',[],function() {
polar : {
polar : {
center : ['50%', '50%'], // 默认全局居中
center : ['50%', '50%'], // 默认全局居中
// radius: 'min(width, height) / 2 - 50
',
radius : '75%
',
startAngle : 90,
startAngle : 90,
splitNumber : 5,
splitNumber : 5,
name : {
name : {
...
@@ -385,6 +399,9 @@ define('echarts/config',[],function() {
...
@@ -385,6 +399,9 @@ define('echarts/config',[],function() {
barCategoryGap : '20%', // 类目间柱形距离,默认为类目间距的20%,可设固定值
barCategoryGap : '20%', // 类目间柱形距离,默认为类目间距的20%,可设固定值
itemStyle: {
itemStyle: {
normal: {
normal: {
borderColor: '#fff', // 柱条边线
borderRadius: 0, // 柱条边线圆角,单位px,默认为0
borderWidth: 1, // 柱条边线线宽,单位px,默认为1
label: {
label: {
show: false
show: false
// formatter: 标签文本格式器,同Tooltip.formatter,不支持回调
// formatter: 标签文本格式器,同Tooltip.formatter,不支持回调
...
@@ -394,6 +411,9 @@ define('echarts/config',[],function() {
...
@@ -394,6 +411,9 @@ define('echarts/config',[],function() {
}
}
},
},
emphasis: {
emphasis: {
borderColor: 'rgba(0,0,0,0)', // 柱条边线
borderRadius: 0, // 柱条边线圆角,单位px,默认为0
borderWidth: 1, // 柱条边线线宽,单位px,默认为1
label: {
label: {
show: false
show: false
// formatter: 标签文本格式器,同Tooltip.formatter,不支持回调
// formatter: 标签文本格式器,同Tooltip.formatter,不支持回调
...
@@ -538,7 +558,7 @@ define('echarts/config',[],function() {
...
@@ -538,7 +558,7 @@ define('echarts/config',[],function() {
// 饼图默认参数
// 饼图默认参数
pie: {
pie: {
center : ['50%', '50%'], // 默认全局居中
center : ['50%', '50%'], // 默认全局居中
// radius: [0, min(width, height) / 2 - 50
],
radius : [0, '75%'
],
startAngle: 90,
startAngle: 90,
minAngle: 0, // 最小角度改为0
minAngle: 0, // 最小角度改为0
selectedOffset: 10, // 选中是扇区偏移量
selectedOffset: 10, // 选中是扇区偏移量
...
@@ -673,7 +693,6 @@ define('echarts/config',[],function() {
...
@@ -673,7 +693,6 @@ define('echarts/config',[],function() {
chord : {
chord : {
radius : ['65%', '75%'],
radius : ['65%', '75%'],
// Source data matrix
center : ['50%', '50%'],
center : ['50%', '50%'],
padding : 2,
padding : 2,
sort : 'none', // can be 'none', 'ascending', 'descending'
sort : 'none', // can be 'none', 'ascending', 'descending'
...
@@ -712,6 +731,7 @@ define('echarts/config',[],function() {
...
@@ -712,6 +731,7 @@ define('echarts/config',[],function() {
}
}
}
}
},
},
// Source data matrix
/**
/**
* target
* target
* -1--2--3--4--5-
* -1--2--3--4--5-
...
@@ -12650,39 +12670,39 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
...
@@ -12650,39 +12670,39 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
}
}
/**
/**
* 获取
多级控制嵌套属性
的基础方法
* 获取
嵌套选项
的基础方法
* 返回
ctrList中优先级最高(最靠前)的非undefined属性,ctrList中均无定义
则返回undefined
* 返回
optionTarget中位于optionLocation上的值,如果没有定义,
则返回undefined
*/
*/
var deepQuery = (function() {
function query(optionTarget, optionLocation) {
/**
if (typeof optionTarget == 'undefined') {
* 获取嵌套选项的基础方法
return undefined;
* 返回optionTarget中位于optionLocation上的值,如果没有定义,则返回undefined
}
*/
if (!optionLocation) {
function _query(optionTarget, optionLocation) {
return optionTarget;
}
optionLocation = optionLocation.split('.');
var length = optionLocation.length;
var curIdx = 0;
while (curIdx < length) {
optionTarget = optionTarget[optionLocation[curIdx]];
if (typeof optionTarget == 'undefined') {
if (typeof optionTarget == 'undefined') {
return undefined;
return undefined;
}
}
if (!optionLocation) {
curIdx++;
return optionTarget;
}
optionLocation = optionLocation.split('.');
var length = optionLocation.length;
var curIdx = 0;
while (curIdx < length) {
optionTarget = optionTarget[optionLocation[curIdx]];
if (typeof optionTarget == 'undefined') {
return undefined;
}
curIdx++;
}
return optionTarget;
}
}
return optionTarget;
}
/**
* 获取多级控制嵌套属性的基础方法
* 返回ctrList中优先级最高(最靠前)的非undefined属性,ctrList中均无定义则返回undefined
*/
var deepQuery = (function() {
return function(ctrList, optionLocation) {
return function(ctrList, optionLocation) {
var finalOption;
var finalOption;
for (var i = 0, l = ctrList.length; i < l; i++) {
for (var i = 0, l = ctrList.length; i < l; i++) {
finalOption =
_
query(ctrList[i], optionLocation);
finalOption = query(ctrList[i], optionLocation);
if (typeof finalOption != 'undefined') {
if (typeof finalOption != 'undefined') {
return finalOption;
return finalOption;
}
}
...
@@ -12690,6 +12710,33 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
...
@@ -12690,6 +12710,33 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
return undefined;
return undefined;
};
};
})();
})();
/**
* 获取多级控制嵌套属性的基础方法
* 根据ctrList中优先级合并产出目标属性
*/
var deepMerge = (function() {
return function(ctrList, optionLocation) {
var finalOption;
var tempOption;
var len = ctrList.length;
while (len--) {
tempOption = query(ctrList[len], optionLocation);
if (typeof tempOption != 'undefined') {
if (typeof finalOption == 'undefined') {
finalOption = zrUtil.clone(tempOption);
}
else {
zrUtil.merge(
finalOption, tempOption,
{ 'overwrite': true, 'recursive': true }
);
}
}
}
return finalOption;
};
})();
/**
/**
* 获取自定义和默认配置合并后的字体设置
* 获取自定义和默认配置合并后的字体设置
...
@@ -12711,20 +12758,9 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
...
@@ -12711,20 +12758,9 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
*/
*/
function addLabel(tarShape, serie, data, name, orient) {
function addLabel(tarShape, serie, data, name, orient) {
// 多级控制
// 多级控制
var nLabel = zrUtil.merge(
var queryTarget = [data, serie];
zrUtil.clone(
var nLabel = deepMerge(queryTarget, 'itemStyle.normal.label');
self.deepQuery([serie], 'itemStyle.normal.label')
var eLabel = deepMerge(queryTarget, 'itemStyle.emphasis.label');
),
self.deepQuery([data], 'itemStyle.normal.label'),
{ 'overwrite': true, 'recursive': true }
);
var eLabel = zrUtil.merge(
zrUtil.clone(
self.deepQuery([serie], 'itemStyle.emphasis.label')
),
self.deepQuery([data], 'itemStyle.emphasis.label'),
{ 'overwrite': true, 'recursive': true }
);
var nTextStyle = nLabel.textStyle || {};
var nTextStyle = nLabel.textStyle || {};
var eTextStyle = eLabel.textStyle || {};
var eTextStyle = eLabel.textStyle || {};
...
@@ -12819,39 +12855,31 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
...
@@ -12819,39 +12855,31 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
];
];
}
}
function _trim(str) {
/**
return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
* 获取自适应半径
}
*/
function parseRadius(radius) {
// 记录自适应原始定义,resize用
// 传数组实现环形图,[内半径,外半径],传单个则默认为外半径为
function backupAdaptiveParams(series, attrs, isAll) {
if (!(radius instanceof Array)) {
for (var i = 0, l = series.length; i < l; i++) {
radius = [0, radius];
if (isAll || series[i].type == self.type) {
for (var j = 0, k = attrs.length; j < k; j++) {
series[i]['__' + attrs[i]] = zrUtil.clone(
series[i][attrs[i]]
);
}
}
}
}
var zrSize = Math.min(self.zr.getWidth(), self.zr.getHeight()) / 2;
return [
parsePercent(radius[0], zrSize),
parsePercent(radius[1], zrSize),
];
}
}
// 还原自适应原始定义,resize用
function _trim(str) {
function restoreAdaptiveParams(series, attrs, isAll) {
return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
for (var i = 0, l = series.length; i < l; i++) {
if (isAll || series[i].type == self.type) {
for (var j = 0, k = attrs.length; j < k; j++) {
series[i][attrs[i]] = zrUtil.clone(
series[i]['__' + attrs[i]]
);
}
}
}
}
}
// 亚像素优化
// 亚像素优化
function subPixelOptimize(position, lineWidth) {
function subPixelOptimize(position, lineWidth) {
position += position == Math.ceil(position) ? 0.5 : 0;
if (lineWidth % 2 == 1) {
position += position == Math.ceil(position) ? 0.5 : 0;
}
return position;
}
}
function resize() {
function resize() {
...
@@ -12885,15 +12913,17 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
...
@@ -12885,15 +12913,17 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
self.getZlevelBase = getZlevelBase;
self.getZlevelBase = getZlevelBase;
self.reformOption = reformOption;
self.reformOption = reformOption;
self.reformCssArray = reformCssArray;
self.reformCssArray = reformCssArray;
self.query = query;
self.deepQuery = deepQuery;
self.deepQuery = deepQuery;
self.deepMerge = deepMerge;
self.getFont = getFont;
self.getFont = getFont;
self.addLabel = addLabel;
self.addLabel = addLabel;
self.parsePercent = parsePercent;
self.parsePercent = parsePercent;
self.parseCenter = parseCenter;
self.parseCenter = parseCenter;
self.parseRadius = parseRadius;
self.subPixelOptimize = subPixelOptimize;
self.clear = clear;
self.clear = clear;
self.dispose = dispose;
self.dispose = dispose;
self.backupAdaptiveParams = backupAdaptiveParams;
self.restoreAdaptiveParams = restoreAdaptiveParams;
self.resize = resize;
self.resize = resize;
}
}
...
@@ -13020,6 +13050,82 @@ define('echarts/util/ecData',[],function() {
...
@@ -13020,6 +13050,82 @@ define('echarts/util/ecData',[],function() {
get : get
get : get
};
};
});
});
/**
* 高精度数学运算
*/
define('echarts/util/accMath',[],function() {
//除法函数,用来得到精确的除法结果
//说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。
//调用:accDiv(arg1,arg2)
//返回值:arg1除以arg2的精确结果
function accDiv(arg1, arg2) {
return accMul(arg1,1 / arg2);
}
//乘法函数,用来得到精确的乘法结果
//说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
//调用:accMul(arg1,arg2)
//返回值:arg1乘以arg2的精确结果
function accMul(arg1, arg2) {
var m = 0;
var s1 = arg1.toString();
var s2 = arg2.toString();
try {
m += s1.split('.')[1].length;
}
catch(e) {}
try {
m += s2.split('.')[1].length;
}
catch(e){}
return Number(s1.replace('.', ''))
* Number(s2.replace('.', ''))
/ Math.pow(10, m);
}
//加法函数,用来得到精确的加法结果
//说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
//调用:accAdd(arg1,arg2)
//返回值:arg1加上arg2的精确结果
function accAdd(arg1,arg2) {
var r1;
var r2;
var m;
try {
r1 = arg1.toString().split('.')[1].length;
}
catch(e) {
r1 = 0;
}
try {
r2=arg2.toString().split('.')[1].length;
}
catch(e) {
r2=0;
}
m = Math.pow(10, Math.max(r1, r2));
return (Math.round(arg1 * m) + Math.round(arg2 * m)) / m;
}
//减法函数,用来得到精确的减法结果
//说明:javascript的减法结果会有误差,在两个浮点数减法的时候会比较明显。这个函数返回较为精确的减法结果。
//调用:accSub(arg1,arg2)
//返回值:arg1减法arg2的精确结果
function accSub(arg1,arg2) {
return accAdd(arg1, -arg2);
}
return {
accDiv : accDiv,
accMul : accMul,
accAdd : accAdd,
accSub : accSub
};
});
/**
/**
* echarts组件基类
* echarts组件基类
*
*
...
@@ -13027,9 +13133,10 @@ define('echarts/util/ecData',[],function() {
...
@@ -13027,9 +13133,10 @@ define('echarts/util/ecData',[],function() {
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
*
*
*/
*/
define('echarts/chart/calculableBase',['require','../util/ecData','zrender/tool/util'],function(require) {
define('echarts/chart/calculableBase',['require','../util/ecData','
../util/accMath','
zrender/tool/util'],function(require) {
function Base(zr, option){
function Base(zr, option){
var ecData = require('../util/ecData');
var ecData = require('../util/ecData');
var accMath = require('../util/accMath');
var zrUtil = require('zrender/tool/util');
var zrUtil = require('zrender/tool/util');
var self = this;
var self = this;
...
@@ -13087,12 +13194,15 @@ define('echarts/chart/calculableBase',['require','../util/ecData','zrender/tool/
...
@@ -13087,12 +13194,15 @@ define('echarts/chart/calculableBase',['require','../util/ecData','zrender/tool/
var seriesIndex = ecData.get(target, 'seriesIndex');
var seriesIndex = ecData.get(target, 'seriesIndex');
var dataIndex = ecData.get(target, 'dataIndex');
var dataIndex = ecData.get(target, 'dataIndex');
// 落到
bar
上,数据被拖拽到某个数据项上,数据修改
// 落到
数据item
上,数据被拖拽到某个数据项上,数据修改
var data = option.series[seriesIndex].data[dataIndex] || '-';
var data = option.series[seriesIndex].data[dataIndex] || '-';
if (data.value) {
if (data.value) {
if (data.value != '-') {
if (data.value != '-') {
option.series[seriesIndex].data[dataIndex].value +=
option.series[seriesIndex].data[dataIndex].value =
ecData.get(dragged, 'value');
accMath.accAdd(
option.series[seriesIndex].data[dataIndex].value,
ecData.get(dragged, 'value')
);
}
}
else {
else {
option.series[seriesIndex].data[dataIndex].value =
option.series[seriesIndex].data[dataIndex].value =
...
@@ -13101,8 +13211,11 @@ define('echarts/chart/calculableBase',['require','../util/ecData','zrender/tool/
...
@@ -13101,8 +13211,11 @@ define('echarts/chart/calculableBase',['require','../util/ecData','zrender/tool/
}
}
else {
else {
if (data != '-') {
if (data != '-') {
option.series[seriesIndex].data[dataIndex] +=
option.series[seriesIndex].data[dataIndex] =
ecData.get(dragged, 'value');
accMath.accAdd(
option.series[seriesIndex].data[dataIndex],
ecData.get(dragged, 'value')
);
}
}
else {
else {
option.series[seriesIndex].data[dataIndex] =
option.series[seriesIndex].data[dataIndex] =
...
@@ -13178,7 +13291,7 @@ define('echarts/chart/calculableBase',['require','../util/ecData','zrender/tool/
...
@@ -13178,7 +13291,7 @@ define('echarts/chart/calculableBase',['require','../util/ecData','zrender/tool/
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
*
*
*/
*/
define('echarts/chart/island',['require','../component/base','./calculableBase','../config','../util/ecData','zrender/tool/event','zrender/tool/color','../chart'],function (require) {
define('echarts/chart/island',['require','../component/base','./calculableBase','../config','../util/ecData','zrender/tool/event','zrender/tool/color','../
util/accMath','../
chart'],function (require) {
/**
/**
* 构造函数
* 构造函数
* @param {Object} messageCenter echart消息中心
* @param {Object} messageCenter echart消息中心
...
@@ -13216,8 +13329,11 @@ define('echarts/chart/island',['require','../component/base','./calculableBase',
...
@@ -13216,8 +13329,11 @@ define('echarts/chart/island',['require','../component/base','./calculableBase',
*/
*/
function _combine(tarShape, srcShape) {
function _combine(tarShape, srcShape) {
var zrColor = require('zrender/tool/color');
var zrColor = require('zrender/tool/color');
var value = ecData.get(tarShape, 'value')
var accMath = require('../util/accMath');
+ ecData.get(srcShape, 'value');
var value = accMath.accAdd(
ecData.get(tarShape, 'value'),
ecData.get(srcShape, 'value')
);
var name = ecData.get(tarShape, 'name')
var name = ecData.get(tarShape, 'name')
+ _nameConnector
+ _nameConnector
+ ecData.get(srcShape, 'name');
+ ecData.get(srcShape, 'name');
...
@@ -13956,7 +14072,23 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
...
@@ -13956,7 +14072,23 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
}
}
axShape.style.strokeColor = option.axisLine.lineStyle.color;
axShape.style.strokeColor = option.axisLine.lineStyle.color;
axShape.style.lineWidth = option.axisLine.lineStyle.width;
var lineWidth = option.axisLine.lineStyle.width;
axShape.style.lineWidth = lineWidth;
// 亚像素优化
if (option.position == 'left' || option.position == 'right') {
// 纵向布局,优化x
axShape.style.xStart
= axShape.style.xEnd
= self.subPixelOptimize(axShape.style.xEnd, lineWidth);
}
else {
// 横向布局,优化y
axShape.style.yStart
= axShape.style.yEnd
= self.subPixelOptimize(axShape.style.yEnd, lineWidth);
}
axShape.style.lineType = option.axisLine.lineStyle.type;
axShape.style.lineType = option.axisLine.lineStyle.type;
self.shapeList.push(axShape);
self.shapeList.push(axShape);
...
@@ -14124,6 +14256,8 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
...
@@ -14124,6 +14256,8 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
var axShape;
var axShape;
var data = option.data;
var data = option.data;
var dataLength = option.data.length;
var dataLength = option.data.length;
var lineType = option.splitLine.lineStyle.type;
var lineWidth = option.splitLine.lineStyle.width;
var color = option.splitLine.lineStyle.color;
var color = option.splitLine.lineStyle.color;
color = color instanceof Array ? color : [color];
color = color instanceof Array ? color : [color];
var colorLength = color.length;
var colorLength = color.length;
...
@@ -14135,7 +14269,10 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
...
@@ -14135,7 +14269,10 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
var x;
var x;
for (var i = 0; i < dataLength; i += _interval) {
for (var i = 0; i < dataLength; i += _interval) {
x = getCoord(data[i].value || data[i]);
// 亚像素优化
x = self.subPixelOptimize(
getCoord(data[i].value || data[i]), lineWidth
);
axShape = {
axShape = {
shape : 'line',
shape : 'line',
zlevel : _zlevelBase,
zlevel : _zlevelBase,
...
@@ -14146,8 +14283,8 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
...
@@ -14146,8 +14283,8 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
xEnd : x,
xEnd : x,
yEnd : ey,
yEnd : ey,
strokeColor : color[(i / _interval) % colorLength],
strokeColor : color[(i / _interval) % colorLength],
lineType :
option.splitLine.lineStyle.t
ype,
lineType :
lineT
ype,
lineWidth :
option.splitLine.lineStyle.w
idth
lineWidth :
lineW
idth
}
}
};
};
self.shapeList.push(axShape);
self.shapeList.push(axShape);
...
@@ -14161,7 +14298,10 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
...
@@ -14161,7 +14298,10 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
var y;
var y;
for (var i = 0; i < dataLength; i += _interval) {
for (var i = 0; i < dataLength; i += _interval) {
y = getCoord(data[i].value || data[i]);
// 亚像素优化
y = self.subPixelOptimize(
getCoord(data[i].value || data[i]), lineWidth
);
axShape = {
axShape = {
shape : 'line',
shape : 'line',
zlevel : _zlevelBase,
zlevel : _zlevelBase,
...
@@ -14172,8 +14312,8 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
...
@@ -14172,8 +14312,8 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
xEnd : ex,
xEnd : ex,
yEnd : y,
yEnd : y,
strokeColor : color[(i / _interval) % colorLength],
strokeColor : color[(i / _interval) % colorLength],
linetype :
option.splitLine.lineStyle.t
ype,
linetype :
lineT
ype,
lineWidth :
option.splitLine.lineStyle.w
idth
lineWidth :
lineW
idth
}
}
};
};
self.shapeList.push(axShape);
self.shapeList.push(axShape);
...
@@ -14515,7 +14655,23 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
...
@@ -14515,7 +14655,23 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
axShape.style.textPosition = option.nameLocation;
axShape.style.textPosition = option.nameLocation;
}
}
axShape.style.strokeColor = option.axisLine.lineStyle.color;
axShape.style.strokeColor = option.axisLine.lineStyle.color;
axShape.style.lineWidth = option.axisLine.lineStyle.width;
var lineWidth = option.axisLine.lineStyle.width;
axShape.style.lineWidth = lineWidth;
// 亚像素优化
if (option.position == 'left' || option.position == 'right') {
// 纵向布局,优化x
axShape.style.xStart
= axShape.style.xEnd
= self.subPixelOptimize(axShape.style.xEnd, lineWidth);
}
else {
// 横向布局,优化y
axShape.style.yStart
= axShape.style.yEnd
= self.subPixelOptimize(axShape.style.yEnd, lineWidth);
}
axShape.style.lineType = option.axisLine.lineStyle.type;
axShape.style.lineType = option.axisLine.lineStyle.type;
self.shapeList.push(axShape);
self.shapeList.push(axShape);
...
@@ -14683,6 +14839,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
...
@@ -14683,6 +14839,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
var axShape;
var axShape;
var data = _valueList;
var data = _valueList;
var dataLength = _valueList.length;
var dataLength = _valueList.length;
var lineType = option.splitLine.lineStyle.type;
var lineWidth = option.splitLine.lineStyle.width;
var color = option.splitLine.lineStyle.color;
var color = option.splitLine.lineStyle.color;
color = color instanceof Array ? color : [color];
color = color instanceof Array ? color : [color];
var colorLength = color.length;
var colorLength = color.length;
...
@@ -14694,7 +14852,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
...
@@ -14694,7 +14852,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
var x;
var x;
for (var i = 0; i < dataLength; i++) {
for (var i = 0; i < dataLength; i++) {
x = getCoord(data[i]);
// 亚像素优化
x = self.subPixelOptimize(getCoord(data[i]), lineWidth);
axShape = {
axShape = {
shape : 'line',
shape : 'line',
zlevel : _zlevelBase,
zlevel : _zlevelBase,
...
@@ -14705,8 +14864,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
...
@@ -14705,8 +14864,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
xEnd : x,
xEnd : x,
yEnd : ey,
yEnd : ey,
strokeColor : color[i % colorLength],
strokeColor : color[i % colorLength],
lineType :
option.splitLine.lineStyle.t
ype,
lineType :
lineT
ype,
lineWidth :
option.splitLine.lineStyle.w
idth
lineWidth :
lineW
idth
}
}
};
};
self.shapeList.push(axShape);
self.shapeList.push(axShape);
...
@@ -14720,7 +14879,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
...
@@ -14720,7 +14879,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
var y;
var y;
for (var i = 0; i < dataLength; i++) {
for (var i = 0; i < dataLength; i++) {
y = getCoord(data[i]);
// 亚像素优化
y = self.subPixelOptimize(getCoord(data[i]), lineWidth);
axShape = {
axShape = {
shape : 'line',
shape : 'line',
zlevel : _zlevelBase,
zlevel : _zlevelBase,
...
@@ -14731,8 +14891,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
...
@@ -14731,8 +14891,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
xEnd : ex,
xEnd : ex,
yEnd : y,
yEnd : y,
strokeColor : color[i % colorLength],
strokeColor : color[i % colorLength],
lineType :
option.splitLine.lineStyle.t
ype,
lineType :
lineT
ype,
lineWidth :
option.splitLine.lineStyle.w
idth
lineWidth :
lineW
idth
}
}
};
};
self.shapeList.push(axShape);
self.shapeList.push(axShape);
...
@@ -15553,11 +15713,8 @@ define('echarts/component/grid',['require','./base','../config','../component'],
...
@@ -15553,11 +15713,8 @@ define('echarts/component/grid',['require','./base','../config','../component'],
_height = gridOption.height;
_height = gridOption.height;
}
}
if (gridOption.borderWidth % 2 == 1) {
_x = self.subPixelOptimize(_x, gridOption.borderWidth);
// 亚像素优化
_y = self.subPixelOptimize(_y, gridOption.borderWidth);
_x += _x == Math.ceil(_x) ? 0.5 : 0;
_y += _y == Math.ceil(_y) ? 0.5 : 0;
}
self.shapeList.push({
self.shapeList.push({
shape : 'rectangle',
shape : 'rectangle',
...
@@ -17370,7 +17527,28 @@ define('echarts/component/legend',['require','./base','../config','zrender/tool/
...
@@ -17370,7 +17527,28 @@ define('echarts/component/legend',['require','./base','../config','zrender/tool/
});
});
},
},
bar : function (ctx, style) {
bar : function (ctx, style) {
ctx.rect(style.x, style.y + 1, style.width, style.height - 2);
//ctx.rect(style.x, style.y + 1, style.width, style.height - 2);
var x = style.x;
var y = style.y +1;
var width = style.width;
var height = style.height - 2;
var r = 3;
ctx.moveTo(x + r, y);
ctx.lineTo(x + width - r, y);
ctx.quadraticCurveTo(
x + width, y, x + width, y + r
);
ctx.lineTo(x + width, y + height - r);
ctx.quadraticCurveTo(
x + width, y + height, x + width - r, y + height
);
ctx.lineTo(x + r, y + height);
ctx.quadraticCurveTo(
x, y + height, x, y + height - r
);
ctx.lineTo(x, y + r);
ctx.quadraticCurveTo(x, y, x + r, y);
},
},
force : function(ctx, style) {
force : function(ctx, style) {
require('zrender/shape').get('icon').get('circle')(ctx, style);
require('zrender/shape').get('icon').get('circle')(ctx, style);
...
@@ -18680,7 +18858,7 @@ define('echarts/component/tooltip',['require','./base','../config','../util/ecDa
...
@@ -18680,7 +18858,7 @@ define('echarts/component/tooltip',['require','./base','../config','../util/ecDa
if (!opt) {
if (!opt) {
return '';
return '';
}
}
cssText = [];
var
cssText = [];
if (opt.transitionDuration) {
if (opt.transitionDuration) {
var transitionText = 'left ' + opt.transitionDuration + 's,'
var transitionText = 'left ' + opt.transitionDuration + 's,'
+ 'top ' + opt.transitionDuration + 's';
+ 'top ' + opt.transitionDuration + 's';
...
@@ -19884,14 +20062,14 @@ define('echarts/component/tooltip',['require','./base','../config','../util/ecDa
...
@@ -19884,14 +20062,14 @@ define('echarts/component/tooltip',['require','./base','../config','../util/ecDa
/**
/**
* html转码的方法
* html转码的方法
*/
*/
_encodeHTML = function
(source) {
function _encodeHTML
(source) {
return String(source)
return String(source)
.replace(/&/g, '&')
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/"/g, '"')
.replace(/'/g, ''');
.replace(/'/g, ''');
}
;
}
zr.on(zrConfig.EVENT.MOUSEMOVE, _onmousemove);
zr.on(zrConfig.EVENT.MOUSEMOVE, _onmousemove);
zr.on(zrConfig.EVENT.GLOBALOUT, _onglobalout);
zr.on(zrConfig.EVENT.GLOBALOUT, _onglobalout);
...
@@ -20026,17 +20204,29 @@ define('echarts/component/toolbox',['require','./base','../config','zrender/conf
...
@@ -20026,17 +20204,29 @@ define('echarts/component/toolbox',['require','./base','../config','zrender/conf
var color = toolboxOption.color instanceof Array
var color = toolboxOption.color instanceof Array
? toolboxOption.color : [toolboxOption.color];
? toolboxOption.color : [toolboxOption.color];
/*
var textFont = self.getFont(toolboxOption.textStyle);
var textPosition;
var textPosition;
var textAlign;
var textBaseLine;
if (toolboxOption.orient == 'horizontal') {
if (toolboxOption.orient == 'horizontal') {
textPosition =
toolboxOption.y != 'bottom'
textPosition =
_itemGroupLocation.y / zr.getHeight() < 0.5
? 'bottom' : 'top';
? 'bottom' : 'top';
textAlign = _itemGroupLocation.x / zr.getWidth() < 0.5
? 'left' : 'right';
textBaseLine = _itemGroupLocation.y / zr.getHeight() < 0.5
? 'top' : 'bottom';
}
}
else {
else {
textPosition = toolboxOption.x != 'left'
textPosition = _itemGroupLocation.x / zr.getWidth() < 0.5
? 'left' : 'right';
? 'right' : 'left';
/*
textAlign = _itemGroupLocation.x / zr.getWidth() < 0.5
? 'right' : 'left';
textBaseLine = 'top';
*/
}
}
*/
_iconShapeMap = {};
_iconShapeMap = {};
for (var i = 0; i < iconLength; i++) {
for (var i = 0; i < iconLength; i++) {
...
@@ -20060,11 +20250,38 @@ define('echarts/component/toolbox',['require','./base','../config','zrender/conf
...
@@ -20060,11 +20250,38 @@ define('echarts/component/toolbox',['require','./base','../config','zrender/conf
highlightStyle : {
highlightStyle : {
lineWidth : 2,
lineWidth : 2,
shadowBlur: 5,
shadowBlur: 5,
text : toolboxOption.showTitle
? toolboxOption.featureTitle[_iconList[i]]
: false,
textFont : textFont,
textPosition : textPosition,
strokeColor : color[i % color.length]
strokeColor : color[i % color.length]
},
},
hoverable : true,
hoverable : true,
clickable : true
clickable : true
};
};
if (toolboxOption.orient == 'horizontal') {
// 修正左对齐第一个或右对齐最后一个
if (i === 0 && textAlign == 'left') {
itemShape.highlightStyle.textPosition = 'specific';
itemShape.highlightStyle.textAlign = textAlign;
itemShape.highlightStyle.textBaseLine = textBaseLine;
itemShape.highlightStyle.textX = lastX;
itemShape.highlightStyle.textY = textBaseLine == 'top'
? lastY + itemSize + 10
: lastY - 10;
}
if (i == iconLength - 1 && textAlign == 'right') {
itemShape.highlightStyle.textPosition = 'specific';
itemShape.highlightStyle.textAlign = textAlign;
itemShape.highlightStyle.textBaseLine = textBaseLine;
itemShape.highlightStyle.textX = lastX + itemSize;
itemShape.highlightStyle.textY = textBaseLine == 'top'
? lastY + itemSize + 10
: lastY - 10;
}
}
switch(_iconList[i]) {
switch(_iconList[i]) {
case 'mark':
case 'mark':
...
@@ -21375,9 +21592,6 @@ define(
...
@@ -21375,9 +21592,6 @@ define(
var polar;
var polar;
var _width = zr.getWidth();
var _height = zr.getHeight();
var series;
var series;
var _queryTarget;
var _queryTarget;
...
@@ -21420,16 +21634,13 @@ define(
...
@@ -21420,16 +21634,13 @@ define(
var length = indicator.length;
var length = indicator.length;
var startAngle = item.startAngle ;
var startAngle = item.startAngle ;
var dStep = 2 * Math.PI / length;
var dStep = 2 * Math.PI / length;
var radius = item.radius;
var radius = self.parsePercent(
item.radius,
Math.min(zr.getWidth(), zr.getHeight()) / 2
);
var __ecIndicator = item.__ecIndicator = [];
var __ecIndicator = item.__ecIndicator = [];
var vector;
var vector;
if (typeof radius != 'number') {
radius = Math.floor(
Math.min(_width, _height) / 2 - 50
);
}
for (var i = 0 ;i < length ; i ++) {
for (var i = 0 ;i < length ; i ++) {
vector = ecCoordinates.polar2cartesian(
vector = ecCoordinates.polar2cartesian(
radius, startAngle * Math.PI / 180 + dStep * i
radius, startAngle * Math.PI / 180 + dStep * i
...
@@ -21451,7 +21662,7 @@ define(
...
@@ -21451,7 +21662,7 @@ define(
var splitArea = item.splitArea;
var splitArea = item.splitArea;
var splitLine = item.splitLine;
var splitLine = item.splitLine;
var center =
item.center
;
var center =
getCenter(index)
;
var splitNumber = item.splitNumber;
var splitNumber = item.splitNumber;
var strokeColor = splitLine.lineStyle.color;
var strokeColor = splitLine.lineStyle.color;
...
@@ -21482,7 +21693,7 @@ define(
...
@@ -21482,7 +21693,7 @@ define(
var style;
var style;
var newStyle;
var newStyle;
var splitNumber = self.deepQuery(_queryTarget, 'splitNumber');
var splitNumber = self.deepQuery(_queryTarget, 'splitNumber');
var center =
item.center
;
var center =
getCenter(index)
;
var vector;
var vector;
var value;
var value;
var text;
var text;
...
@@ -21542,7 +21753,7 @@ define(
...
@@ -21542,7 +21753,7 @@ define(
var __ecIndicator = item.__ecIndicator;
var __ecIndicator = item.__ecIndicator;
var vector;
var vector;
var indicator = self.deepQuery(_queryTarget, 'indicator');
var indicator = self.deepQuery(_queryTarget, 'indicator');
var center =
item.center
;
var center =
getCenter(index)
;
var style;
var style;
var textAlign;
var textAlign;
var name;
var name;
...
@@ -21635,7 +21846,7 @@ define(
...
@@ -21635,7 +21846,7 @@ define(
function _addDropBox(index) {
function _addDropBox(index) {
var index = index || 0;
var index = index || 0;
var item = polar[index];
var item = polar[index];
var center =
item.center
;
var center =
getCenter(index)
;
var __ecIndicator = item.__ecIndicator;
var __ecIndicator = item.__ecIndicator;
var len = __ecIndicator.length;
var len = __ecIndicator.length;
var pointList = [];
var pointList = [];
...
@@ -21805,7 +22016,7 @@ define(
...
@@ -21805,7 +22016,7 @@ define(
*/
*/
function getCenter(index) {
function getCenter(index) {
var index = index || 0;
var index = index || 0;
return
polar[index].center
;
return
self.parseCenter(polar[index].center)
;
}
}
/**
/**
...
@@ -22113,29 +22324,6 @@ define(
...
@@ -22113,29 +22324,6 @@ define(
}
}
}
}
function reformOption(opt) {
// 常用方法快捷方式
var _merge = zrUtil.merge;
opt = _merge(
opt || {},
ecConfig.polar,
{
'overwrite' : false,
'recursive' : true
}
);
opt.center = self.parseCenter(opt.center);
if (!opt.radius) {
opt.radius = Math.floor(
Math.min(_width, _height) / 2 - 50
);
}
return opt;
}
/**
/**
* 获取每个指标上某个value对应的坐标
* 获取每个指标上某个value对应的坐标
* @param {number} polarIndex
* @param {number} polarIndex
...
@@ -22153,7 +22341,7 @@ define(
...
@@ -22153,7 +22341,7 @@ define(
}
}
var indicator = polar[polarIndex].__ecIndicator[indicatorIndex];
var indicator = polar[polarIndex].__ecIndicator[indicatorIndex];
var center =
polar[polarIndex].center
;
var center =
getCenter(polarIndex)
;
var vector = indicator.vector;
var vector = indicator.vector;
var max = indicator.value.max;
var max = indicator.value.max;
var min = indicator.value.min;
var min = indicator.value.min;
...
@@ -22205,6 +22393,7 @@ define(
...
@@ -22205,6 +22393,7 @@ define(
var len;
var len;
var angle;
var angle;
var finalAngle;
var finalAngle;
var zrSize = Math.min(zr.getWidth(), zr.getHeight()) / 2;
for (var i = 0 ; i < polar.length; i ++) {
for (var i = 0 ; i < polar.length; i ++) {
item = polar[i];
item = polar[i];
center = getCenter(i);
center = getCenter(i);
...
@@ -22214,7 +22403,7 @@ define(
...
@@ -22214,7 +22403,7 @@ define(
valueIndex : 0
valueIndex : 0
};
};
}
}
radius = self.
deepQuery([item, option], 'radius'
);
radius = self.
parsePercent(item.radius, zrSize
);
startAngle = item.startAngle;
startAngle = item.startAngle;
indicator = item.indicator;
indicator = item.indicator;
len = indicator.length;
len = indicator.length;
...
@@ -22266,21 +22455,12 @@ define(
...
@@ -22266,21 +22455,12 @@ define(
option = newOption;
option = newOption;
polar = option.polar;
polar = option.polar;
series = option.series;
series = option.series;
self.backupAdaptiveParams(polar,['center', 'radius'],true);
}
}
self.clear();
self.clear();
_buildShape();
_buildShape();
}
}
function resize() {
// 复位录原始定义
self.restoreAdaptiveParams(polar, ['center', 'radius'], true);
refresh();
}
self.refresh = refresh;
self.refresh = refresh;
self.resize = resize;
self.reformOption = reformOption;
self.getVector = getVector;
self.getVector = getVector;
self.getDropBox = _addDropBox;
self.getDropBox = _addDropBox;
...
@@ -22339,10 +22519,10 @@ define(
...
@@ -22339,10 +22519,10 @@ define(
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
*
*
*/
*/
define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zrender/tool/event','zrender/config','./util/shape/icon','./chart','./chart/island','./component','./component/title','./component/axis','./component/categoryAxis','./component/valueAxis','./component/grid','./component/dataZoom','./component/legend','./component/dataRange','./component/tooltip','./component/toolbox','./component/dataView','./component/polar','./util/ecData','./chart','./component','zrender/tool/util','zrender/tool/util','zrender/tool/util','zrender/tool/color','zrender/tool/util','zrender/tool/util'],function(require) {
define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zrender/tool/event','zrender/config','./util/shape/icon','./chart','./chart/island','./component','./component/title','./component/axis','./component/categoryAxis','./component/valueAxis','./component/grid','./component/dataZoom','./component/legend','./component/dataRange','./component/tooltip','./component/toolbox','./component/dataView','./component/polar','./util/ecData','./chart','./component','zrender/tool/util','zrender/tool/util','zrender/tool/util','zrender/tool/color','zrender/tool/util','zrender/tool/util'
,'zrender/tool/util'
],function(require) {
var self = {};
var self = {};
var echarts = self; // 提供内部反向使用静态方法;
var echarts = self; // 提供内部反向使用静态方法;
self.version = '1.3.
0
';
self.version = '1.3.
1
';
self.dependencies = {
self.dependencies = {
zrender : '1.0.5'
zrender : '1.0.5'
};
};
...
@@ -22368,6 +22548,7 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -22368,6 +22548,7 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
var ecConfig = require('./config');
var ecConfig = require('./config');
var self = this;
var self = this;
var _id = '__ECharts__' + new Date() - 0;
var _zr;
var _zr;
var _option;
var _option;
var _optionBackup; // for各种change和zoom
var _optionBackup; // for各种change和zoom
...
@@ -22762,7 +22943,6 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -22762,7 +22943,6 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
while (len--) {
while (len--) {
magicOption.series[len].data = _optionBackup.series[len].data;
magicOption.series[len].data = _optionBackup.series[len].data;
}
}
return magicOption;
return magicOption;
}
}
...
@@ -22966,7 +23146,7 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -22966,7 +23146,7 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
_toolbox.render(magicOption, {dataZoom: dataZoom});
_toolbox.render(magicOption, {dataZoom: dataZoom});
if (magicOption.animation) {
if (magicOption.animation
&& !magicOption.renderAsImage
) {
var len = _chartList.length;
var len = _chartList.length;
while (len--) {
while (len--) {
_chartList[len]
_chartList[len]
...
@@ -22976,6 +23156,34 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -22976,6 +23156,34 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
}
}
_zr.render();
_zr.render();
var imgId = 'IMG' + _id;
var img = document.getElementById(imgId);
if (magicOption.renderAsImage && !G_vmlCanvasManager) {
// IE8- 不支持图片渲染形式
if (img) {
// 已经渲染过则更新显示
img.src = getDataURL(magicOption.renderAsImage);
}
else {
// 没有渲染过插入img dom
img = getImage(magicOption.renderAsImage);
img.id = imgId;
img.style.position = 'absolute';
img.style.left = 0;
img.style.top = 0;
dom.firstChild.appendChild(img);
}
un();
_zr.un();
_disposeChartList();
_zr.clear();
}
else if (img) {
// 删除可能存在的img
img.parentNode.removeChild(img);
}
img = null;
}
}
/**
/**
...
@@ -23138,6 +23346,23 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -23138,6 +23346,23 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
return self;
return self;
}
}
/**
* 返回内部持有的当前显示option克隆
*/
function getOption() {
var zrUtil = require('zrender/tool/util');
if (_optionBackup.toolbox
&& _optionBackup.toolbox.show
&& _optionBackup.toolbox.feature.magicType
&& _optionBackup.toolbox.feature.magicType.length > 0
) {
return zrUtil.clone(_getMagicOption());
}
else {
return zrUtil.clone(_getMagicOption(_island.getOption()));
}
}
/**
/**
* 数据设置快捷接口
* 数据设置快捷接口
* @param {Array} series
* @param {Array} series
...
@@ -23152,9 +23377,15 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -23152,9 +23377,15 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
_option.series = series;
_option.series = series;
self.setOption(_option, notMerge);
self.setOption(_option, notMerge);
}
}
return self;
return self;
}
}
/**
* 返回内部持有的当前显示series克隆
*/
function getSeries() {
return getOption().series;
}
/**
/**
* 动态数据添加
* 动态数据添加
...
@@ -23344,6 +23575,43 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -23344,6 +23575,43 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
return _zr;
return _zr;
}
}
/**
* 获取Base64图片dataURL
* @param {string} imgType 图片类型,支持png|jpeg,默认为png
* @return imgDataURL
*/
function getDataURL(imgType) {
if (G_vmlCanvasManager) {
return '';
}
if (_chartList.length === 0) {
// 渲染为图片
var imgId = 'IMG' + _id;
var img = document.getElementById(imgId);
if (img) {
return img.src;
}
}
imgType = imgType || 'png';
if (imgType != 'png' && imgType != 'jpeg') {
imgType = 'png';
}
return _zr.toDataURL('image/' + imgType);
}
/**
* 获取img
* @param {string} imgType 图片类型,支持png|jpeg,默认为png
* @return img dom
*/
function getImage(imgType) {
var imgDom = document.createElement('img');
imgDom.src = getDataURL(imgType);
imgDom.title = (_optionRestore.title && _optionRestore.title.text)
|| 'ECharts';
return imgDom;
}
/**
/**
* 绑定事件
* 绑定事件
* @param {Object} eventName 事件名称
* @param {Object} eventName 事件名称
...
@@ -23412,6 +23680,11 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -23412,6 +23680,11 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
*/
*/
function resize() {
function resize() {
_zr.resize();
_zr.resize();
if (_option.renderAsImage && !G_vmlCanvasManager) {
// 渲染为图片从走render模式
_render(_option);
return self;
}
// 先来后到,不能仅刷新自己,也不能在上一个循环中刷新,如坐标系数据改变会影响其他图表的大小
// 先来后到,不能仅刷新自己,也不能在上一个循环中刷新,如坐标系数据改变会影响其他图表的大小
// 所以安顺序刷新各种图表,图表内部refresh优化无需更新则不更新~
// 所以安顺序刷新各种图表,图表内部refresh优化无需更新则不更新~
for (var i = 0, l = _chartList.length; i < l; i++) {
for (var i = 0, l = _chartList.length; i < l; i++) {
...
@@ -23448,7 +23721,11 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -23448,7 +23721,11 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
self.setOption = setOption;
self.setOption = setOption;
self.setSeries = setSeries;
self.setSeries = setSeries;
self.addData = addData;
self.addData = addData;
self.getOption = getOption;
self.getSeries = getSeries;
self.getZrender = getZrender;
self.getZrender = getZrender;
self.getDataURL = getDataURL;
self.getImage = getImage;
self.on = on;
self.on = on;
self.un = un;
self.un = un;
self.showLoading = showLoading;
self.showLoading = showLoading;
...
@@ -24823,7 +25100,7 @@ define('echarts/chart/k',['require','../component/base','./calculableBase','../c
...
@@ -24823,7 +25100,7 @@ define('echarts/chart/k',['require','../component/base','./calculableBase','../c
*
*
*/
*/
define('echarts/chart/radar',['require','../component/base','./calculableBase','../config','../util/ecData','zrender/tool/color','../chart'],function(require) {
define('echarts/chart/radar',['require','../component/base','./calculableBase','../config','../util/ecData','zrender/tool/color','../
util/accMath','../
chart'],function(require) {
/**
/**
* 构造函数
* 构造函数
* @param {Object} messageCenter echart消息中心
* @param {Object} messageCenter echart消息中心
...
@@ -25194,7 +25471,6 @@ define('echarts/chart/k',['require','../component/base','./calculableBase','../c
...
@@ -25194,7 +25471,6 @@ define('echarts/chart/k',['require','../component/base','./calculableBase','../c
var value;
var value;
if (dataIndex == -1) {
if (dataIndex == -1) {
data = {
data = {
value : ecData.get(dragged, 'value'),
value : ecData.get(dragged, 'value'),
name : ecData.get(dragged, 'name')
name : ecData.get(dragged, 'name')
...
@@ -25208,13 +25484,15 @@ define('echarts/chart/k',['require','../component/base','./calculableBase','../c
...
@@ -25208,13 +25484,15 @@ define('echarts/chart/k',['require','../component/base','./calculableBase','../c
);
);
}
}
else {
else {
// 数据被拖拽到某个数据项上,数据修改
var accMath = require('../util/accMath');
data = series[seriesIndex].data[dataIndex];
data = series[seriesIndex].data[dataIndex];
legend && legend.del(data.name);
legend && legend.del(data.name);
data.name += option.nameConnector
data.name += option.nameConnector
+ ecData.get(dragged, 'name');
+ ecData.get(dragged, 'name');
value = ecData.get(dragged, 'value');
value = ecData.get(dragged, 'value');
for (var i = 0 ; i < value.length; i ++) {
for (var i = 0 ; i < value.length; i ++) {
data.value[i]
+= value[i]
;
data.value[i]
= accMath.accAdd(data.value[i], value[i])
;
}
}
legend && legend.add(
legend && legend.add(
...
@@ -28315,7 +28593,7 @@ define('echarts/chart/chord',['require','../util/shape/chord','../component/base
...
@@ -28315,7 +28593,7 @@ define('echarts/chart/chord',['require','../util/shape/chord','../component/base
[group, chordSerieSample],
[group, chordSerieSample],
'itemStyle.normal.label.textStyle.color'
'itemStyle.normal.label.textStyle.color'
) || '#fff';
) || '#fff';
sector
.style.textFont = self.getFont(self.deepQuery(
labelShape
.style.textFont = self.getFont(self.deepQuery(
[group, chordSerieSample],
[group, chordSerieSample],
'itemStyle.normal.label.textStyle'
'itemStyle.normal.label.textStyle'
));
));
...
@@ -31534,7 +31812,7 @@ define('echarts/chart/line',['require','../component/base','./calculableBase','.
...
@@ -31534,7 +31812,7 @@ define('echarts/chart/line',['require','../component/base','./calculableBase','.
style : {
style : {
pointList : singlePL,
pointList : singlePL,
strokeColor : lineColor
strokeColor : lineColor
|| normalColor
|| normalColor
|| defaultColor,
|| defaultColor,
lineWidth : lineWidth,
lineWidth : lineWidth,
lineType : lineType,
lineType : lineType,
...
@@ -31755,8 +32033,15 @@ define('echarts/chart/line',['require','../component/base','./calculableBase','.
...
@@ -31755,8 +32033,15 @@ define('echarts/chart/line',['require','../component/base','./calculableBase','.
var seriesIndex = param.seriesIndex;
var seriesIndex = param.seriesIndex;
var dataIndex = param.dataIndex;
var dataIndex = param.dataIndex;
var seriesPL;
var seriesPL;
var singlePL;
var serie;
var serie;
var queryTarget;
var queryTarget;
var lineWidth;
var normalColor;
var emphasisColor;
var defaultColor;
var len = seriesIndex.length;
var len = seriesIndex.length;
while (len--) {
while (len--) {
seriesPL = finalPLMap[seriesIndex[len]];
seriesPL = finalPLMap[seriesIndex[len]];
...
@@ -31766,21 +32051,16 @@ define('echarts/chart/line',['require','../component/base','./calculableBase','.
...
@@ -31766,21 +32051,16 @@ define('echarts/chart/line',['require','../component/base','./calculableBase','.
defaultColor = _sIndex2ColorMap[seriesIndex[len]];
defaultColor = _sIndex2ColorMap[seriesIndex[len]];
// 多级控制
// 多级控制
lineWidth = self.deepQuery(
lineWidth = self.deepQuery(
[serie], 'itemStyle.normal.lineStyle.width'
queryTarget, 'itemStyle.normal.lineStyle.width'
);
lineType = self.deepQuery(
[serie], 'itemStyle.normal.lineStyle.type'
);
lineColor = self.deepQuery(
[serie], 'itemStyle.normal.lineStyle.color'
);
);
normalColor = self.deepQuery(
normalColor = self.deepQuery(
[serie]
, 'itemStyle.normal.color'
queryTarget
, 'itemStyle.normal.color'
);
);
emphasisColor = self.deepQuery(
emphasisColor = self.deepQuery(
[serie]
, 'itemStyle.emphasis.color'
queryTarget
, 'itemStyle.emphasis.color'
);
);
var shape;
var shape;
var data;
for (var i = 0, l = seriesPL.length; i < l; i++) {
for (var i = 0, l = seriesPL.length; i < l; i++) {
singlePL = seriesPL[i];
singlePL = seriesPL[i];
for (var j = 0, k = singlePL.length; j < k; j++) {
for (var j = 0, k = singlePL.length; j < k; j++) {
...
@@ -32148,6 +32428,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -32148,6 +32428,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
var legend = component.legend;
var legend = component.legend;
var locationMap = []; // 需要返回的东西:数组位置映射到系列索引
var locationMap = []; // 需要返回的东西:数组位置映射到系列索引
var maxDataLength = 0; // 需要返回的东西:最大数据长度
var maxDataLength = 0; // 需要返回的东西:最大数据长度
var iconShape;
// 计算需要显示的个数和分配位置并记在下面这个结构里
// 计算需要显示的个数和分配位置并记在下面这个结构里
for (var i = 0, l = seriesArray.length; i < l; i++) {
for (var i = 0, l = seriesArray.length; i < l; i++) {
serie = series[seriesArray[i]];
serie = series[seriesArray[i]];
...
@@ -32156,6 +32437,15 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -32156,6 +32437,15 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
self.selectedMap[serieName] = legend.isSelected(serieName);
self.selectedMap[serieName] = legend.isSelected(serieName);
_sIndex2colorMap[seriesArray[i]] =
_sIndex2colorMap[seriesArray[i]] =
legend.getColor(serieName);
legend.getColor(serieName);
iconShape = legend.getItemShape(serieName);
if (iconShape) {
// 回调legend,换一个更形象的icon
iconShape.style.strokeColor =
serie.itemStyle.normal.borderColor;
iconShape.style.brushType = 'both';
legend.setItemShape(serieName, iconShape);
}
} else {
} else {
self.selectedMap[serieName] = true;
self.selectedMap[serieName] = true;
_sIndex2colorMap[seriesArray[i]] =
_sIndex2colorMap[seriesArray[i]] =
...
@@ -32269,7 +32559,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -32269,7 +32559,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
}
}
lastYP -= barHeight;
lastYP -= barHeight;
y = lastYP;
y = lastYP;
lastYP -= 0.5; //白色视觉分隔线宽修正
//
lastYP -= 0.5; //白色视觉分隔线宽修正
}
}
else if (value < 0){
else if (value < 0){
// 负向堆叠
// 负向堆叠
...
@@ -32282,7 +32572,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -32282,7 +32572,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
}
}
y = lastYN;
y = lastYN;
lastYN += barHeight;
lastYN += barHeight;
lastYN += 0.5; //白色视觉分隔线宽修正
//
lastYN += 0.5; //白色视觉分隔线宽修正
}
}
else {
else {
// 0值
// 0值
...
@@ -32290,7 +32580,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -32290,7 +32580,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
// 最小高度无效
// 最小高度无效
lastYP -= barHeight;
lastYP -= barHeight;
y = lastYP;
y = lastYP;
lastYP -= 0.5; //白色视觉分隔线宽修正
//
lastYP -= 0.5; //白色视觉分隔线宽修正
}
}
barShape = _getBarItem(
barShape = _getBarItem(
...
@@ -32417,7 +32707,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -32417,7 +32707,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
}
}
x = lastXP;
x = lastXP;
lastXP += barHeight;
lastXP += barHeight;
lastXP += 0.5; //白色视觉分隔线宽修正
//
lastXP += 0.5; //白色视觉分隔线宽修正
}
}
else if (value < 0){
else if (value < 0){
// 负向堆叠
// 负向堆叠
...
@@ -32430,7 +32720,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -32430,7 +32720,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
}
}
lastXN -= barHeight;
lastXN -= barHeight;
x = lastXN;
x = lastXN;
lastXN -= 0.5; //白色视觉分隔线宽修正
//
lastXN -= 0.5; //白色视觉分隔线宽修正
}
}
else {
else {
// 0值
// 0值
...
@@ -32438,7 +32728,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -32438,7 +32728,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
// 最小高度无效
// 最小高度无效
x = lastXP;
x = lastXP;
lastXP += barHeight;
lastXP += barHeight;
lastXP += 0.5; //白色视觉分隔线宽修正
//
lastXP += 0.5; //白色视觉分隔线宽修正
}
}
barShape = _getBarItem(
barShape = _getBarItem(
...
@@ -32511,7 +32801,6 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -32511,7 +32801,6 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
var sBarWidth;
var sBarWidth;
var sBarWidthCounter = 0;
var sBarWidthCounter = 0;
var sBarWidthTotal = 0;
var sBarWidthTotal = 0;
var sBarMinHeight;
var barGap;
var barGap;
var barCategoryGap;
var barCategoryGap;
var hasFound;
var hasFound;
...
@@ -32521,10 +32810,10 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -32521,10 +32810,10 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
hasFound = false; // 同一堆叠第一个barWidth生效
hasFound = false; // 同一堆叠第一个barWidth生效
for (var m = 0, n = locationMap[j].length; m < n; m++) {
for (var m = 0, n = locationMap[j].length; m < n; m++) {
seriesIndex = locationMap[j][m];
seriesIndex = locationMap[j][m];
queryTarget =
[series[seriesIndex]
];
queryTarget =
series[seriesIndex
];
if (!ignoreUserDefined) {
if (!ignoreUserDefined) {
if (!hasFound) {
if (!hasFound) {
sBarWidth = self.
deepQ
uery(
sBarWidth = self.
q
uery(
queryTarget,
queryTarget,
'barWidth'
'barWidth'
);
);
...
@@ -32539,19 +32828,19 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -32539,19 +32828,19 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
}
}
}
}
barMinHeightMap[seriesIndex] = self.
deepQ
uery(
barMinHeightMap[seriesIndex] = self.
q
uery(
queryTarget,
queryTarget,
'barMinHeight'
'barMinHeight'
);
);
barGap = typeof barGap != 'undefined'
barGap = typeof barGap != 'undefined'
? barGap
? barGap
: self.
deepQ
uery(
: self.
q
uery(
queryTarget,
queryTarget,
'barGap'
'barGap'
);
);
barCategoryGap = typeof barCategoryGap != 'undefined'
barCategoryGap = typeof barCategoryGap != 'undefined'
? barCategoryGap
? barCategoryGap
: self.
deepQ
uery(
: self.
q
uery(
queryTarget,
queryTarget,
'barCategoryGap'
'barCategoryGap'
);
);
...
@@ -32656,14 +32945,24 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -32656,14 +32945,24 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
var data = serie.data[dataIndex];
var data = serie.data[dataIndex];
// 多级控制
// 多级控制
var defaultColor = _sIndex2colorMap[seriesIndex];
var defaultColor = _sIndex2colorMap[seriesIndex];
var queryTarget = [data, serie];
var normalColor = self.deepQuery(
var normalColor = self.deepQuery(
[data, serie]
,
queryTarget
,
'itemStyle.normal.color'
'itemStyle.normal.color'
) || defaultColor;
) || defaultColor;
var emphasisColor = self.deepQuery(
var emphasisColor = self.deepQuery(
[data, serie]
,
queryTarget
,
'itemStyle.emphasis.color'
'itemStyle.emphasis.color'
);
);
var normal = self.deepMerge(
queryTarget,
'itemStyle.normal'
);
var normalBorderWidth = normal.borderWidth;
var emphasis = self.deepMerge(
queryTarget,
'itemStyle.emphasis'
);
barShape = {
barShape = {
shape : 'rectangle',
shape : 'rectangle',
zlevel : _zlevelBase,
zlevel : _zlevelBase,
...
@@ -32675,7 +32974,9 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -32675,7 +32974,9 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
height : height,
height : height,
brushType : 'both',
brushType : 'both',
color : normalColor,
color : normalColor,
strokeColor : '#fff'
radius : normal.borderRadius,
lineWidth : normalBorderWidth,
strokeColor : normal.borderColor
},
},
highlightStyle : {
highlightStyle : {
color : emphasisColor
color : emphasisColor
...
@@ -32683,19 +32984,31 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -32683,19 +32984,31 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
? zrColor.lift(normalColor, -0.2)
? zrColor.lift(normalColor, -0.2)
: normalColor
: normalColor
),
),
strokeColor : 'rgba(0,0,0,0)'
radius : emphasis.borderRadius,
lineWidth : emphasis.borderWidth,
strokeColor : emphasis.borderColor
},
},
_orient : orient
_orient : orient
};
};
// 考虑线宽的显示优化
if (barShape.style.height > normalBorderWidth
&& barShape.style.width > normalBorderWidth
) {
barShape.style.y += normalBorderWidth / 2;
barShape.style.height -= normalBorderWidth;
barShape.style.x += normalBorderWidth / 2;
barShape.style.width -= normalBorderWidth;
}
else {
// 太小了,废了边线
barShape.style.brushType = 'fill';
}
barShape.highlightStyle.textColor = barShape.highlightStyle.color;
barShape.highlightStyle.textColor = barShape.highlightStyle.color;
barShape = self.addLabel(barShape, serie, data, name, orient);
barShape = self.addLabel(barShape, serie, data, name, orient);
if (self.deepQuery(
if (self.deepQuery([data, serie, option],'calculable')) {
[data, serie, option],
'calculable'
)
) {
self.setCalculable(barShape);
self.setCalculable(barShape);
barShape.draggable = true;
barShape.draggable = true;
}
}
...
@@ -32929,7 +33242,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -32929,7 +33242,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
*
*
*/
*/
define('echarts/chart/pie',['require','../component/base','./calculableBase','../config','../util/ecData','zrender/tool/math','zrender/tool/util','zrender/tool/color','../chart'],function(require) {
define('echarts/chart/pie',['require','../component/base','./calculableBase','../config','../util/ecData','zrender/tool/math','zrender/tool/util','zrender/tool/color','../
util/accMath','../
chart'],function(require) {
/**
/**
* 构造函数
* 构造函数
* @param {Object} messageCenter echart消息中心
* @param {Object} messageCenter echart消息中心
...
@@ -32965,26 +33278,29 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -32965,26 +33278,29 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
function _buildShape() {
function _buildShape() {
self.selectedMap = {};
self.selectedMap = {};
_selected = {};
_selected = {};
var center;
var radius;
var pieCase; // 饼图箱子
var pieCase; // 饼图箱子
_selectedMode = false;
_selectedMode = false;
for (var i = 0, l = series.length; i < l; i++) {
for (var i = 0, l = series.length; i < l; i++) {
if (series[i].type == ecConfig.CHART_TYPE_PIE) {
if (series[i].type == ecConfig.CHART_TYPE_PIE) {
series[i] = self.reformOption(series[i]);
series[i] = self.reformOption(series[i]);
center = self.parseCenter(series[i].center);
radius = self.parseRadius(series[i].radius);
_selectedMode = _selectedMode || series[i].selectedMode;
_selectedMode = _selectedMode || series[i].selectedMode;
_selected[i] = [];
_selected[i] = [];
if (self.deepQuery([series[i], option], 'calculable')) {
if (self.deepQuery([series[i], option], 'calculable')) {
pieCase = {
pieCase = {
shape : series[i].radius[0] <= 10
shape : radius[0] <= 10 ? 'circle' : 'ring',
? 'circle' : 'ring',
zlevel : _zlevelBase,
zlevel : _zlevelBase,
hoverable : false,
hoverable : false,
style : {
style : {
x :
series[i].
center[0], // 圆心横坐标
x : center[0], // 圆心横坐标
y :
series[i].
center[1], // 圆心纵坐标
y : center[1], // 圆心纵坐标
r0 : series[i].radius[0] <= 10 // 圆环内
半径
// 圆环内外
半径
? 0 : series[i].
radius[0] - 10,
r0 : radius[0] <= 10 ? 0 :
radius[0] - 10,
r :
series[i].radius[1] + 10, // 圆环外半径
r :
radius[1] + 10,
brushType : 'stroke',
brushType : 'stroke',
strokeColor : series[i].calculableHolderColor
strokeColor : series[i].calculableHolderColor
|| ecConfig.calculableHolderColor
|| ecConfig.calculableHolderColor
...
@@ -33040,6 +33356,7 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -33040,6 +33356,7 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
var totalAngle = 360 - (minAngle * totalSelected);
var totalAngle = 360 - (minAngle * totalSelected);
var defaultColor;
var defaultColor;
var roseType = serie.roseType;
var roseType = serie.roseType;
var radius;
var r0; // 扇形内半径
var r0; // 扇形内半径
var r1; // 扇形外半径
var r1; // 扇形外半径
...
@@ -33069,8 +33386,9 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -33069,8 +33386,9 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
}
}
percent = (percent * 100).toFixed(2);
percent = (percent * 100).toFixed(2);
r0 = +serie.radius[0];
radius = self.parseRadius(serie.radius);
r1 = +serie.radius[1];
r0 = +radius[0];
r1 = +radius[1];
if (roseType == 'radius') {
if (roseType == 'radius') {
r1 = data[i].value / maxValue * (r1 - r0) * 0.8
r1 = data[i].value / maxValue * (r1 - r0) * 0.8
...
@@ -33148,6 +33466,7 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -33148,6 +33466,7 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
) {
) {
var serie = series[seriesIndex];
var serie = series[seriesIndex];
var data = serie.data[dataIndex];
var data = serie.data[dataIndex];
var center = self.parseCenter(serie.center);
// 多级控制
// 多级控制
var normalColor = self.deepQuery(
var normalColor = self.deepQuery(
...
@@ -33165,8 +33484,8 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -33165,8 +33484,8 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
zlevel : _zlevelBase,
zlevel : _zlevelBase,
clickable : true,
clickable : true,
style : {
style : {
x :
serie.
center[0], // 圆心横坐标
x : center[0], // 圆心横坐标
y :
serie.
center[1], // 圆心纵坐标
y : center[1], // 圆心纵坐标
r0 : r0, // 圆环内半径
r0 : r0, // 圆环内半径
r : r1, // 圆环外半径
r : r1, // 圆环外半径
startAngle : startAngle,
startAngle : startAngle,
...
@@ -33239,12 +33558,12 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -33239,12 +33558,12 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
'itemStyle.normal.label.textStyle.baseline'
'itemStyle.normal.label.textStyle.baseline'
) || 'middle';
) || 'middle';
sector.style.textX = Math.round(
sector.style.textX = Math.round(
serie.
center[0]
center[0]
+ (r1 + r0) / 2
+ (r1 + r0) / 2
* zrMath.cos((startAngle + endAngle) / 2, true)
* zrMath.cos((startAngle + endAngle) / 2, true)
);
);
sector.style.textY = Math.round(
sector.style.textY = Math.round(
serie.
center[1]
center[1]
- (r1 + r0) / 2
- (r1 + r0) / 2
* zrMath.sin((startAngle + endAngle) / 2, true)
* zrMath.sin((startAngle + endAngle) / 2, true)
);
);
...
@@ -33277,12 +33596,12 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -33277,12 +33596,12 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
'itemStyle.normal.label.textStyle.baseline'
'itemStyle.normal.label.textStyle.baseline'
) || 'middle';
) || 'middle';
sector.highlightStyle.textX = Math.round(
sector.highlightStyle.textX = Math.round(
serie.
center[0]
center[0]
+ (r1 + r0) / 2
+ (r1 + r0) / 2
* zrMath.cos((startAngle + endAngle) / 2, true)
* zrMath.cos((startAngle + endAngle) / 2, true)
);
);
sector.highlightStyle.textY = Math.round(
sector.highlightStyle.textY = Math.round(
serie.
center[1]
center[1]
- (r1 + r0) / 2
- (r1 + r0) / 2
* zrMath.sin((startAngle + endAngle) / 2, true)
* zrMath.sin((startAngle + endAngle) / 2, true)
);
);
...
@@ -33311,6 +33630,7 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -33311,6 +33630,7 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
) {
) {
var serie = series[seriesIndex];
var serie = series[seriesIndex];
var data = serie.data[dataIndex];
var data = serie.data[dataIndex];
// 特定状态下是否需要显示文本标签
// 特定状态下是否需要显示文本标签
if (_needLabel(serie, data, isEmphasis)) {
if (_needLabel(serie, data, isEmphasis)) {
var status = isEmphasis ? 'emphasis' : 'normal';
var status = isEmphasis ? 'emphasis' : 'normal';
...
@@ -33328,14 +33648,15 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -33328,14 +33648,15 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
var labelControl = itemStyle[status].label;
var labelControl = itemStyle[status].label;
var textStyle = labelControl.textStyle || {};
var textStyle = labelControl.textStyle || {};
var centerX = serie.center[0]; // 圆心横坐标
var center = self.parseCenter(serie.center);
var centerY = serie.center[1]; // 圆心纵坐标
var centerX = center[0]; // 圆心横坐标
var centerY = center[1]; // 圆心纵坐标
var midAngle = ((endAngle + startAngle) / 2) % 360; // 角度中值
var midAngle = ((endAngle + startAngle) / 2) % 360; // 角度中值
var radius
;
// 标签位置半径
var radius
= self.parseRadius(serie.radius);
// 标签位置半径
var textAlign;
var textAlign;
if (labelControl.position == 'outer') {
if (labelControl.position == 'outer') {
// 外部显示,默认
// 外部显示,默认
radius =
serie.
radius[1]
radius = radius[1]
- (-itemStyle[status].labelLine.length)
- (-itemStyle[status].labelLine.length)
- (-textStyle.fontSize);
- (-textStyle.fontSize);
textAlign = (midAngle >= 150 && midAngle <= 210)
textAlign = (midAngle >= 150 && midAngle <= 210)
...
@@ -33394,11 +33715,6 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -33394,11 +33715,6 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
else {
else {
// 内部显示由sector自带,不返回即可
// 内部显示由sector自带,不返回即可
return;
return;
/*
radius = (serie.radius[0] + serie.radius[1]) / 2;
textAlign = 'center';
defaultColor = '#fff';
*/
}
}
}
}
else {
else {
...
@@ -33473,12 +33789,14 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -33473,12 +33789,14 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
var labelLineControl = itemStyle[status].labelLine;
var labelLineControl = itemStyle[status].labelLine;
var lineStyle = labelLineControl.lineStyle || {};
var lineStyle = labelLineControl.lineStyle || {};
var centerX = serie.center[0]; // 圆心横坐标
var center = self.parseCenter(serie.center);
var centerY = serie.center[1]; // 圆心纵坐标
var centerX = center[0]; // 圆心横坐标
var centerY = center[1]; // 圆心纵坐标
// 视觉引导线起点半径
// 视觉引导线起点半径
var midRadius = r1;
var midRadius = r1;
// 视觉引导线终点半径
// 视觉引导线终点半径
var maxRadius = serie.radius[1] - (-labelLineControl.length);
var maxRadius = self.parseRadius(serie.radius)[1]
- (-labelLineControl.length);
var midAngle = ((endAngle + startAngle) / 2) % 360; // 角度中值
var midAngle = ((endAngle + startAngle) / 2) % 360; // 角度中值
var cosValue = zrMath.cos(midAngle, true);
var cosValue = zrMath.cos(midAngle, true);
var sinValue = zrMath.sin(midAngle, true);
var sinValue = zrMath.sin(midAngle, true);
...
@@ -33549,18 +33867,6 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -33549,18 +33867,6 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
'recursive' : true
'recursive' : true
}
}
);
);
//console.log(opt)
opt.center = self.parseCenter(opt.center);
// 传数组实现环形图,[内半径,外半径],传单个则默认为外半径为
if (typeof opt.radius == 'undefined') {
opt.radius = [
0,
Math.round(Math.min(zr.getWidth(), zr.getHeight()) / 2 - 50)
];
} else if (!(opt.radius instanceof Array)) {
opt.radius = [0, opt.radius];
}
// 通用字体设置
// 通用字体设置
opt.itemStyle.normal.label.textStyle = _merge(
opt.itemStyle.normal.label.textStyle = _merge(
...
@@ -33600,18 +33906,11 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -33600,18 +33906,11 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
if (newOption) {
if (newOption) {
option = newOption;
option = newOption;
series = option.series;
series = option.series;
self.backupAdaptiveParams(series, ['center', 'radius']);
}
}
self.clear();
self.clear();
_buildShape();
_buildShape();
}
}
function resize() {
// 复位录原始定义
self.restoreAdaptiveParams(series, ['center', 'radius']);
refresh();
}
/**
/**
* 动态数据增加动画
* 动态数据增加动画
* 心跳效果
* 心跳效果
...
@@ -33981,11 +34280,15 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -33981,11 +34280,15 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
}
}
else {
else {
// 落到sector上,数据被拖拽到某个数据项上,数据修改
// 落到sector上,数据被拖拽到某个数据项上,数据修改
var accMath = require('../util/accMath');
data = series[seriesIndex].data[dataIndex];
data = series[seriesIndex].data[dataIndex];
legend && legend.del(data.name);
legend && legend.del(data.name);
data.name += option.nameConnector
data.name += option.nameConnector
+ ecData.get(dragged, 'name');
+ ecData.get(dragged, 'name');
data.value += ecData.get(dragged, 'value');
data.value = accMath.accAdd(
data.value,
ecData.get(dragged, 'value')
);
legend && legend.add(
legend && legend.add(
data.name,
data.name,
dragged.style.color || dragged.style.strokeColor
dragged.style.color || dragged.style.strokeColor
...
@@ -34070,7 +34373,6 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -34070,7 +34373,6 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
// 接口方法
// 接口方法
self.init = init;
self.init = init;
self.refresh = refresh;
self.refresh = refresh;
self.resize = resize;
self.addDataAnimation = addDataAnimation;
self.addDataAnimation = addDataAnimation;
self.animation = animation;
self.animation = animation;
self.onclick = onclick;
self.onclick = onclick;
build/echarts-original.js
浏览文件 @
ebaeab5d
...
@@ -152,10 +152,24 @@ define('echarts/config',[],function() {
...
@@ -152,10 +152,24 @@ define('echarts/config',[],function() {
itemSize: 16, // 工具箱图形宽度,非标准参数
itemSize: 16, // 工具箱图形宽度,非标准参数
feature : {
feature : {
//mark : true,
//mark : true,
//dataZoom : true,
//dataView : {readOnly: false},
//dataView : {readOnly: false},
//magicType: ['line', 'bar'],
//magicType: ['line', 'bar'],
//restore : true,
//restore : true,
//saveAsImage : true
//saveAsImage : true
},
showTitle : true,
featureTitle : {
mark : '辅助线开关',
markUndo : '删除辅助线',
markClear : '清空辅助线',
dataZoom : '区域缩放',
dataZoomReset : '区域缩放后退',
dataView : '数据视图',
lineChart : '折线图切换',
barChart : '柱形图切换',
restore : '还原',
saveAsImage : '保存为图片'
}
}
},
},
...
@@ -211,7 +225,7 @@ define('echarts/config',[],function() {
...
@@ -211,7 +225,7 @@ define('echarts/config',[],function() {
// yAxisIndex: [], // 默认控制所有横向类目
// yAxisIndex: [], // 默认控制所有横向类目
// start: 0, // 默认为0
// start: 0, // 默认为0
// end: 100, // 默认为全部 100%
// end: 100, // 默认为全部 100%
realtime:
fals
e
realtime:
tru
e
// zoomLock: false // 是否锁定选择区域大小
// zoomLock: false // 是否锁定选择区域大小
},
},
...
@@ -333,7 +347,7 @@ define('echarts/config',[],function() {
...
@@ -333,7 +347,7 @@ define('echarts/config',[],function() {
polar : {
polar : {
center : ['50%', '50%'], // 默认全局居中
center : ['50%', '50%'], // 默认全局居中
// radius: 'min(width, height) / 2 - 50
',
radius : '75%
',
startAngle : 90,
startAngle : 90,
splitNumber : 5,
splitNumber : 5,
name : {
name : {
...
@@ -385,6 +399,9 @@ define('echarts/config',[],function() {
...
@@ -385,6 +399,9 @@ define('echarts/config',[],function() {
barCategoryGap : '20%', // 类目间柱形距离,默认为类目间距的20%,可设固定值
barCategoryGap : '20%', // 类目间柱形距离,默认为类目间距的20%,可设固定值
itemStyle: {
itemStyle: {
normal: {
normal: {
borderColor: '#fff', // 柱条边线
borderRadius: 0, // 柱条边线圆角,单位px,默认为0
borderWidth: 1, // 柱条边线线宽,单位px,默认为1
label: {
label: {
show: false
show: false
// formatter: 标签文本格式器,同Tooltip.formatter,不支持回调
// formatter: 标签文本格式器,同Tooltip.formatter,不支持回调
...
@@ -394,6 +411,9 @@ define('echarts/config',[],function() {
...
@@ -394,6 +411,9 @@ define('echarts/config',[],function() {
}
}
},
},
emphasis: {
emphasis: {
borderColor: 'rgba(0,0,0,0)', // 柱条边线
borderRadius: 0, // 柱条边线圆角,单位px,默认为0
borderWidth: 1, // 柱条边线线宽,单位px,默认为1
label: {
label: {
show: false
show: false
// formatter: 标签文本格式器,同Tooltip.formatter,不支持回调
// formatter: 标签文本格式器,同Tooltip.formatter,不支持回调
...
@@ -538,7 +558,7 @@ define('echarts/config',[],function() {
...
@@ -538,7 +558,7 @@ define('echarts/config',[],function() {
// 饼图默认参数
// 饼图默认参数
pie: {
pie: {
center : ['50%', '50%'], // 默认全局居中
center : ['50%', '50%'], // 默认全局居中
// radius: [0, min(width, height) / 2 - 50
],
radius : [0, '75%'
],
startAngle: 90,
startAngle: 90,
minAngle: 0, // 最小角度改为0
minAngle: 0, // 最小角度改为0
selectedOffset: 10, // 选中是扇区偏移量
selectedOffset: 10, // 选中是扇区偏移量
...
@@ -673,7 +693,6 @@ define('echarts/config',[],function() {
...
@@ -673,7 +693,6 @@ define('echarts/config',[],function() {
chord : {
chord : {
radius : ['65%', '75%'],
radius : ['65%', '75%'],
// Source data matrix
center : ['50%', '50%'],
center : ['50%', '50%'],
padding : 2,
padding : 2,
sort : 'none', // can be 'none', 'ascending', 'descending'
sort : 'none', // can be 'none', 'ascending', 'descending'
...
@@ -712,6 +731,7 @@ define('echarts/config',[],function() {
...
@@ -712,6 +731,7 @@ define('echarts/config',[],function() {
}
}
}
}
},
},
// Source data matrix
/**
/**
* target
* target
* -1--2--3--4--5-
* -1--2--3--4--5-
...
@@ -12650,39 +12670,39 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
...
@@ -12650,39 +12670,39 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
}
}
/**
/**
* 获取
多级控制嵌套属性
的基础方法
* 获取
嵌套选项
的基础方法
* 返回
ctrList中优先级最高(最靠前)的非undefined属性,ctrList中均无定义
则返回undefined
* 返回
optionTarget中位于optionLocation上的值,如果没有定义,
则返回undefined
*/
*/
var deepQuery = (function() {
function query(optionTarget, optionLocation) {
/**
if (typeof optionTarget == 'undefined') {
* 获取嵌套选项的基础方法
return undefined;
* 返回optionTarget中位于optionLocation上的值,如果没有定义,则返回undefined
}
*/
if (!optionLocation) {
function _query(optionTarget, optionLocation) {
return optionTarget;
}
optionLocation = optionLocation.split('.');
var length = optionLocation.length;
var curIdx = 0;
while (curIdx < length) {
optionTarget = optionTarget[optionLocation[curIdx]];
if (typeof optionTarget == 'undefined') {
if (typeof optionTarget == 'undefined') {
return undefined;
return undefined;
}
}
if (!optionLocation) {
curIdx++;
return optionTarget;
}
optionLocation = optionLocation.split('.');
var length = optionLocation.length;
var curIdx = 0;
while (curIdx < length) {
optionTarget = optionTarget[optionLocation[curIdx]];
if (typeof optionTarget == 'undefined') {
return undefined;
}
curIdx++;
}
return optionTarget;
}
}
return optionTarget;
}
/**
* 获取多级控制嵌套属性的基础方法
* 返回ctrList中优先级最高(最靠前)的非undefined属性,ctrList中均无定义则返回undefined
*/
var deepQuery = (function() {
return function(ctrList, optionLocation) {
return function(ctrList, optionLocation) {
var finalOption;
var finalOption;
for (var i = 0, l = ctrList.length; i < l; i++) {
for (var i = 0, l = ctrList.length; i < l; i++) {
finalOption =
_
query(ctrList[i], optionLocation);
finalOption = query(ctrList[i], optionLocation);
if (typeof finalOption != 'undefined') {
if (typeof finalOption != 'undefined') {
return finalOption;
return finalOption;
}
}
...
@@ -12690,6 +12710,33 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
...
@@ -12690,6 +12710,33 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
return undefined;
return undefined;
};
};
})();
})();
/**
* 获取多级控制嵌套属性的基础方法
* 根据ctrList中优先级合并产出目标属性
*/
var deepMerge = (function() {
return function(ctrList, optionLocation) {
var finalOption;
var tempOption;
var len = ctrList.length;
while (len--) {
tempOption = query(ctrList[len], optionLocation);
if (typeof tempOption != 'undefined') {
if (typeof finalOption == 'undefined') {
finalOption = zrUtil.clone(tempOption);
}
else {
zrUtil.merge(
finalOption, tempOption,
{ 'overwrite': true, 'recursive': true }
);
}
}
}
return finalOption;
};
})();
/**
/**
* 获取自定义和默认配置合并后的字体设置
* 获取自定义和默认配置合并后的字体设置
...
@@ -12711,20 +12758,9 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
...
@@ -12711,20 +12758,9 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
*/
*/
function addLabel(tarShape, serie, data, name, orient) {
function addLabel(tarShape, serie, data, name, orient) {
// 多级控制
// 多级控制
var nLabel = zrUtil.merge(
var queryTarget = [data, serie];
zrUtil.clone(
var nLabel = deepMerge(queryTarget, 'itemStyle.normal.label');
self.deepQuery([serie], 'itemStyle.normal.label')
var eLabel = deepMerge(queryTarget, 'itemStyle.emphasis.label');
),
self.deepQuery([data], 'itemStyle.normal.label'),
{ 'overwrite': true, 'recursive': true }
);
var eLabel = zrUtil.merge(
zrUtil.clone(
self.deepQuery([serie], 'itemStyle.emphasis.label')
),
self.deepQuery([data], 'itemStyle.emphasis.label'),
{ 'overwrite': true, 'recursive': true }
);
var nTextStyle = nLabel.textStyle || {};
var nTextStyle = nLabel.textStyle || {};
var eTextStyle = eLabel.textStyle || {};
var eTextStyle = eLabel.textStyle || {};
...
@@ -12819,39 +12855,31 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
...
@@ -12819,39 +12855,31 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
];
];
}
}
function _trim(str) {
/**
return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
* 获取自适应半径
}
*/
function parseRadius(radius) {
// 记录自适应原始定义,resize用
// 传数组实现环形图,[内半径,外半径],传单个则默认为外半径为
function backupAdaptiveParams(series, attrs, isAll) {
if (!(radius instanceof Array)) {
for (var i = 0, l = series.length; i < l; i++) {
radius = [0, radius];
if (isAll || series[i].type == self.type) {
for (var j = 0, k = attrs.length; j < k; j++) {
series[i]['__' + attrs[i]] = zrUtil.clone(
series[i][attrs[i]]
);
}
}
}
}
var zrSize = Math.min(self.zr.getWidth(), self.zr.getHeight()) / 2;
return [
parsePercent(radius[0], zrSize),
parsePercent(radius[1], zrSize),
];
}
}
// 还原自适应原始定义,resize用
function _trim(str) {
function restoreAdaptiveParams(series, attrs, isAll) {
return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
for (var i = 0, l = series.length; i < l; i++) {
if (isAll || series[i].type == self.type) {
for (var j = 0, k = attrs.length; j < k; j++) {
series[i][attrs[i]] = zrUtil.clone(
series[i]['__' + attrs[i]]
);
}
}
}
}
}
// 亚像素优化
// 亚像素优化
function subPixelOptimize(position, lineWidth) {
function subPixelOptimize(position, lineWidth) {
position += position == Math.ceil(position) ? 0.5 : 0;
if (lineWidth % 2 == 1) {
position += position == Math.ceil(position) ? 0.5 : 0;
}
return position;
}
}
function resize() {
function resize() {
...
@@ -12885,15 +12913,17 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
...
@@ -12885,15 +12913,17 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
self.getZlevelBase = getZlevelBase;
self.getZlevelBase = getZlevelBase;
self.reformOption = reformOption;
self.reformOption = reformOption;
self.reformCssArray = reformCssArray;
self.reformCssArray = reformCssArray;
self.query = query;
self.deepQuery = deepQuery;
self.deepQuery = deepQuery;
self.deepMerge = deepMerge;
self.getFont = getFont;
self.getFont = getFont;
self.addLabel = addLabel;
self.addLabel = addLabel;
self.parsePercent = parsePercent;
self.parsePercent = parsePercent;
self.parseCenter = parseCenter;
self.parseCenter = parseCenter;
self.parseRadius = parseRadius;
self.subPixelOptimize = subPixelOptimize;
self.clear = clear;
self.clear = clear;
self.dispose = dispose;
self.dispose = dispose;
self.backupAdaptiveParams = backupAdaptiveParams;
self.restoreAdaptiveParams = restoreAdaptiveParams;
self.resize = resize;
self.resize = resize;
}
}
...
@@ -13020,6 +13050,82 @@ define('echarts/util/ecData',[],function() {
...
@@ -13020,6 +13050,82 @@ define('echarts/util/ecData',[],function() {
get : get
get : get
};
};
});
});
/**
* 高精度数学运算
*/
define('echarts/util/accMath',[],function() {
//除法函数,用来得到精确的除法结果
//说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。
//调用:accDiv(arg1,arg2)
//返回值:arg1除以arg2的精确结果
function accDiv(arg1, arg2) {
return accMul(arg1,1 / arg2);
}
//乘法函数,用来得到精确的乘法结果
//说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
//调用:accMul(arg1,arg2)
//返回值:arg1乘以arg2的精确结果
function accMul(arg1, arg2) {
var m = 0;
var s1 = arg1.toString();
var s2 = arg2.toString();
try {
m += s1.split('.')[1].length;
}
catch(e) {}
try {
m += s2.split('.')[1].length;
}
catch(e){}
return Number(s1.replace('.', ''))
* Number(s2.replace('.', ''))
/ Math.pow(10, m);
}
//加法函数,用来得到精确的加法结果
//说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
//调用:accAdd(arg1,arg2)
//返回值:arg1加上arg2的精确结果
function accAdd(arg1,arg2) {
var r1;
var r2;
var m;
try {
r1 = arg1.toString().split('.')[1].length;
}
catch(e) {
r1 = 0;
}
try {
r2=arg2.toString().split('.')[1].length;
}
catch(e) {
r2=0;
}
m = Math.pow(10, Math.max(r1, r2));
return (Math.round(arg1 * m) + Math.round(arg2 * m)) / m;
}
//减法函数,用来得到精确的减法结果
//说明:javascript的减法结果会有误差,在两个浮点数减法的时候会比较明显。这个函数返回较为精确的减法结果。
//调用:accSub(arg1,arg2)
//返回值:arg1减法arg2的精确结果
function accSub(arg1,arg2) {
return accAdd(arg1, -arg2);
}
return {
accDiv : accDiv,
accMul : accMul,
accAdd : accAdd,
accSub : accSub
};
});
/**
/**
* echarts组件基类
* echarts组件基类
*
*
...
@@ -13027,9 +13133,10 @@ define('echarts/util/ecData',[],function() {
...
@@ -13027,9 +13133,10 @@ define('echarts/util/ecData',[],function() {
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
*
*
*/
*/
define('echarts/chart/calculableBase',['require','../util/ecData','zrender/tool/util'],function(require) {
define('echarts/chart/calculableBase',['require','../util/ecData','
../util/accMath','
zrender/tool/util'],function(require) {
function Base(zr, option){
function Base(zr, option){
var ecData = require('../util/ecData');
var ecData = require('../util/ecData');
var accMath = require('../util/accMath');
var zrUtil = require('zrender/tool/util');
var zrUtil = require('zrender/tool/util');
var self = this;
var self = this;
...
@@ -13087,12 +13194,15 @@ define('echarts/chart/calculableBase',['require','../util/ecData','zrender/tool/
...
@@ -13087,12 +13194,15 @@ define('echarts/chart/calculableBase',['require','../util/ecData','zrender/tool/
var seriesIndex = ecData.get(target, 'seriesIndex');
var seriesIndex = ecData.get(target, 'seriesIndex');
var dataIndex = ecData.get(target, 'dataIndex');
var dataIndex = ecData.get(target, 'dataIndex');
// 落到
bar
上,数据被拖拽到某个数据项上,数据修改
// 落到
数据item
上,数据被拖拽到某个数据项上,数据修改
var data = option.series[seriesIndex].data[dataIndex] || '-';
var data = option.series[seriesIndex].data[dataIndex] || '-';
if (data.value) {
if (data.value) {
if (data.value != '-') {
if (data.value != '-') {
option.series[seriesIndex].data[dataIndex].value +=
option.series[seriesIndex].data[dataIndex].value =
ecData.get(dragged, 'value');
accMath.accAdd(
option.series[seriesIndex].data[dataIndex].value,
ecData.get(dragged, 'value')
);
}
}
else {
else {
option.series[seriesIndex].data[dataIndex].value =
option.series[seriesIndex].data[dataIndex].value =
...
@@ -13101,8 +13211,11 @@ define('echarts/chart/calculableBase',['require','../util/ecData','zrender/tool/
...
@@ -13101,8 +13211,11 @@ define('echarts/chart/calculableBase',['require','../util/ecData','zrender/tool/
}
}
else {
else {
if (data != '-') {
if (data != '-') {
option.series[seriesIndex].data[dataIndex] +=
option.series[seriesIndex].data[dataIndex] =
ecData.get(dragged, 'value');
accMath.accAdd(
option.series[seriesIndex].data[dataIndex],
ecData.get(dragged, 'value')
);
}
}
else {
else {
option.series[seriesIndex].data[dataIndex] =
option.series[seriesIndex].data[dataIndex] =
...
@@ -13178,7 +13291,7 @@ define('echarts/chart/calculableBase',['require','../util/ecData','zrender/tool/
...
@@ -13178,7 +13291,7 @@ define('echarts/chart/calculableBase',['require','../util/ecData','zrender/tool/
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
*
*
*/
*/
define('echarts/chart/island',['require','../component/base','./calculableBase','../config','../util/ecData','zrender/tool/event','zrender/tool/color','../chart'],function (require) {
define('echarts/chart/island',['require','../component/base','./calculableBase','../config','../util/ecData','zrender/tool/event','zrender/tool/color','../
util/accMath','../
chart'],function (require) {
/**
/**
* 构造函数
* 构造函数
* @param {Object} messageCenter echart消息中心
* @param {Object} messageCenter echart消息中心
...
@@ -13216,8 +13329,11 @@ define('echarts/chart/island',['require','../component/base','./calculableBase',
...
@@ -13216,8 +13329,11 @@ define('echarts/chart/island',['require','../component/base','./calculableBase',
*/
*/
function _combine(tarShape, srcShape) {
function _combine(tarShape, srcShape) {
var zrColor = require('zrender/tool/color');
var zrColor = require('zrender/tool/color');
var value = ecData.get(tarShape, 'value')
var accMath = require('../util/accMath');
+ ecData.get(srcShape, 'value');
var value = accMath.accAdd(
ecData.get(tarShape, 'value'),
ecData.get(srcShape, 'value')
);
var name = ecData.get(tarShape, 'name')
var name = ecData.get(tarShape, 'name')
+ _nameConnector
+ _nameConnector
+ ecData.get(srcShape, 'name');
+ ecData.get(srcShape, 'name');
...
@@ -13956,7 +14072,23 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
...
@@ -13956,7 +14072,23 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
}
}
axShape.style.strokeColor = option.axisLine.lineStyle.color;
axShape.style.strokeColor = option.axisLine.lineStyle.color;
axShape.style.lineWidth = option.axisLine.lineStyle.width;
var lineWidth = option.axisLine.lineStyle.width;
axShape.style.lineWidth = lineWidth;
// 亚像素优化
if (option.position == 'left' || option.position == 'right') {
// 纵向布局,优化x
axShape.style.xStart
= axShape.style.xEnd
= self.subPixelOptimize(axShape.style.xEnd, lineWidth);
}
else {
// 横向布局,优化y
axShape.style.yStart
= axShape.style.yEnd
= self.subPixelOptimize(axShape.style.yEnd, lineWidth);
}
axShape.style.lineType = option.axisLine.lineStyle.type;
axShape.style.lineType = option.axisLine.lineStyle.type;
self.shapeList.push(axShape);
self.shapeList.push(axShape);
...
@@ -14124,6 +14256,8 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
...
@@ -14124,6 +14256,8 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
var axShape;
var axShape;
var data = option.data;
var data = option.data;
var dataLength = option.data.length;
var dataLength = option.data.length;
var lineType = option.splitLine.lineStyle.type;
var lineWidth = option.splitLine.lineStyle.width;
var color = option.splitLine.lineStyle.color;
var color = option.splitLine.lineStyle.color;
color = color instanceof Array ? color : [color];
color = color instanceof Array ? color : [color];
var colorLength = color.length;
var colorLength = color.length;
...
@@ -14135,7 +14269,10 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
...
@@ -14135,7 +14269,10 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
var x;
var x;
for (var i = 0; i < dataLength; i += _interval) {
for (var i = 0; i < dataLength; i += _interval) {
x = getCoord(data[i].value || data[i]);
// 亚像素优化
x = self.subPixelOptimize(
getCoord(data[i].value || data[i]), lineWidth
);
axShape = {
axShape = {
shape : 'line',
shape : 'line',
zlevel : _zlevelBase,
zlevel : _zlevelBase,
...
@@ -14146,8 +14283,8 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
...
@@ -14146,8 +14283,8 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
xEnd : x,
xEnd : x,
yEnd : ey,
yEnd : ey,
strokeColor : color[(i / _interval) % colorLength],
strokeColor : color[(i / _interval) % colorLength],
lineType :
option.splitLine.lineStyle.t
ype,
lineType :
lineT
ype,
lineWidth :
option.splitLine.lineStyle.w
idth
lineWidth :
lineW
idth
}
}
};
};
self.shapeList.push(axShape);
self.shapeList.push(axShape);
...
@@ -14161,7 +14298,10 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
...
@@ -14161,7 +14298,10 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
var y;
var y;
for (var i = 0; i < dataLength; i += _interval) {
for (var i = 0; i < dataLength; i += _interval) {
y = getCoord(data[i].value || data[i]);
// 亚像素优化
y = self.subPixelOptimize(
getCoord(data[i].value || data[i]), lineWidth
);
axShape = {
axShape = {
shape : 'line',
shape : 'line',
zlevel : _zlevelBase,
zlevel : _zlevelBase,
...
@@ -14172,8 +14312,8 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
...
@@ -14172,8 +14312,8 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
xEnd : ex,
xEnd : ex,
yEnd : y,
yEnd : y,
strokeColor : color[(i / _interval) % colorLength],
strokeColor : color[(i / _interval) % colorLength],
linetype :
option.splitLine.lineStyle.t
ype,
linetype :
lineT
ype,
lineWidth :
option.splitLine.lineStyle.w
idth
lineWidth :
lineW
idth
}
}
};
};
self.shapeList.push(axShape);
self.shapeList.push(axShape);
...
@@ -14515,7 +14655,23 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
...
@@ -14515,7 +14655,23 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
axShape.style.textPosition = option.nameLocation;
axShape.style.textPosition = option.nameLocation;
}
}
axShape.style.strokeColor = option.axisLine.lineStyle.color;
axShape.style.strokeColor = option.axisLine.lineStyle.color;
axShape.style.lineWidth = option.axisLine.lineStyle.width;
var lineWidth = option.axisLine.lineStyle.width;
axShape.style.lineWidth = lineWidth;
// 亚像素优化
if (option.position == 'left' || option.position == 'right') {
// 纵向布局,优化x
axShape.style.xStart
= axShape.style.xEnd
= self.subPixelOptimize(axShape.style.xEnd, lineWidth);
}
else {
// 横向布局,优化y
axShape.style.yStart
= axShape.style.yEnd
= self.subPixelOptimize(axShape.style.yEnd, lineWidth);
}
axShape.style.lineType = option.axisLine.lineStyle.type;
axShape.style.lineType = option.axisLine.lineStyle.type;
self.shapeList.push(axShape);
self.shapeList.push(axShape);
...
@@ -14683,6 +14839,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
...
@@ -14683,6 +14839,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
var axShape;
var axShape;
var data = _valueList;
var data = _valueList;
var dataLength = _valueList.length;
var dataLength = _valueList.length;
var lineType = option.splitLine.lineStyle.type;
var lineWidth = option.splitLine.lineStyle.width;
var color = option.splitLine.lineStyle.color;
var color = option.splitLine.lineStyle.color;
color = color instanceof Array ? color : [color];
color = color instanceof Array ? color : [color];
var colorLength = color.length;
var colorLength = color.length;
...
@@ -14694,7 +14852,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
...
@@ -14694,7 +14852,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
var x;
var x;
for (var i = 0; i < dataLength; i++) {
for (var i = 0; i < dataLength; i++) {
x = getCoord(data[i]);
// 亚像素优化
x = self.subPixelOptimize(getCoord(data[i]), lineWidth);
axShape = {
axShape = {
shape : 'line',
shape : 'line',
zlevel : _zlevelBase,
zlevel : _zlevelBase,
...
@@ -14705,8 +14864,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
...
@@ -14705,8 +14864,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
xEnd : x,
xEnd : x,
yEnd : ey,
yEnd : ey,
strokeColor : color[i % colorLength],
strokeColor : color[i % colorLength],
lineType :
option.splitLine.lineStyle.t
ype,
lineType :
lineT
ype,
lineWidth :
option.splitLine.lineStyle.w
idth
lineWidth :
lineW
idth
}
}
};
};
self.shapeList.push(axShape);
self.shapeList.push(axShape);
...
@@ -14720,7 +14879,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
...
@@ -14720,7 +14879,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
var y;
var y;
for (var i = 0; i < dataLength; i++) {
for (var i = 0; i < dataLength; i++) {
y = getCoord(data[i]);
// 亚像素优化
y = self.subPixelOptimize(getCoord(data[i]), lineWidth);
axShape = {
axShape = {
shape : 'line',
shape : 'line',
zlevel : _zlevelBase,
zlevel : _zlevelBase,
...
@@ -14731,8 +14891,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
...
@@ -14731,8 +14891,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
xEnd : ex,
xEnd : ex,
yEnd : y,
yEnd : y,
strokeColor : color[i % colorLength],
strokeColor : color[i % colorLength],
lineType :
option.splitLine.lineStyle.t
ype,
lineType :
lineT
ype,
lineWidth :
option.splitLine.lineStyle.w
idth
lineWidth :
lineW
idth
}
}
};
};
self.shapeList.push(axShape);
self.shapeList.push(axShape);
...
@@ -15553,11 +15713,8 @@ define('echarts/component/grid',['require','./base','../config','../component'],
...
@@ -15553,11 +15713,8 @@ define('echarts/component/grid',['require','./base','../config','../component'],
_height = gridOption.height;
_height = gridOption.height;
}
}
if (gridOption.borderWidth % 2 == 1) {
_x = self.subPixelOptimize(_x, gridOption.borderWidth);
// 亚像素优化
_y = self.subPixelOptimize(_y, gridOption.borderWidth);
_x += _x == Math.ceil(_x) ? 0.5 : 0;
_y += _y == Math.ceil(_y) ? 0.5 : 0;
}
self.shapeList.push({
self.shapeList.push({
shape : 'rectangle',
shape : 'rectangle',
...
@@ -17370,7 +17527,28 @@ define('echarts/component/legend',['require','./base','../config','zrender/tool/
...
@@ -17370,7 +17527,28 @@ define('echarts/component/legend',['require','./base','../config','zrender/tool/
});
});
},
},
bar : function (ctx, style) {
bar : function (ctx, style) {
ctx.rect(style.x, style.y + 1, style.width, style.height - 2);
//ctx.rect(style.x, style.y + 1, style.width, style.height - 2);
var x = style.x;
var y = style.y +1;
var width = style.width;
var height = style.height - 2;
var r = 3;
ctx.moveTo(x + r, y);
ctx.lineTo(x + width - r, y);
ctx.quadraticCurveTo(
x + width, y, x + width, y + r
);
ctx.lineTo(x + width, y + height - r);
ctx.quadraticCurveTo(
x + width, y + height, x + width - r, y + height
);
ctx.lineTo(x + r, y + height);
ctx.quadraticCurveTo(
x, y + height, x, y + height - r
);
ctx.lineTo(x, y + r);
ctx.quadraticCurveTo(x, y, x + r, y);
},
},
force : function(ctx, style) {
force : function(ctx, style) {
require('zrender/shape').get('icon').get('circle')(ctx, style);
require('zrender/shape').get('icon').get('circle')(ctx, style);
...
@@ -18680,7 +18858,7 @@ define('echarts/component/tooltip',['require','./base','../config','../util/ecDa
...
@@ -18680,7 +18858,7 @@ define('echarts/component/tooltip',['require','./base','../config','../util/ecDa
if (!opt) {
if (!opt) {
return '';
return '';
}
}
cssText = [];
var
cssText = [];
if (opt.transitionDuration) {
if (opt.transitionDuration) {
var transitionText = 'left ' + opt.transitionDuration + 's,'
var transitionText = 'left ' + opt.transitionDuration + 's,'
+ 'top ' + opt.transitionDuration + 's';
+ 'top ' + opt.transitionDuration + 's';
...
@@ -19884,14 +20062,14 @@ define('echarts/component/tooltip',['require','./base','../config','../util/ecDa
...
@@ -19884,14 +20062,14 @@ define('echarts/component/tooltip',['require','./base','../config','../util/ecDa
/**
/**
* html转码的方法
* html转码的方法
*/
*/
_encodeHTML = function
(source) {
function _encodeHTML
(source) {
return String(source)
return String(source)
.replace(/&/g, '&')
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/"/g, '"')
.replace(/'/g, ''');
.replace(/'/g, ''');
}
;
}
zr.on(zrConfig.EVENT.MOUSEMOVE, _onmousemove);
zr.on(zrConfig.EVENT.MOUSEMOVE, _onmousemove);
zr.on(zrConfig.EVENT.GLOBALOUT, _onglobalout);
zr.on(zrConfig.EVENT.GLOBALOUT, _onglobalout);
...
@@ -20026,17 +20204,29 @@ define('echarts/component/toolbox',['require','./base','../config','zrender/conf
...
@@ -20026,17 +20204,29 @@ define('echarts/component/toolbox',['require','./base','../config','zrender/conf
var color = toolboxOption.color instanceof Array
var color = toolboxOption.color instanceof Array
? toolboxOption.color : [toolboxOption.color];
? toolboxOption.color : [toolboxOption.color];
/*
var textFont = self.getFont(toolboxOption.textStyle);
var textPosition;
var textPosition;
var textAlign;
var textBaseLine;
if (toolboxOption.orient == 'horizontal') {
if (toolboxOption.orient == 'horizontal') {
textPosition =
toolboxOption.y != 'bottom'
textPosition =
_itemGroupLocation.y / zr.getHeight() < 0.5
? 'bottom' : 'top';
? 'bottom' : 'top';
textAlign = _itemGroupLocation.x / zr.getWidth() < 0.5
? 'left' : 'right';
textBaseLine = _itemGroupLocation.y / zr.getHeight() < 0.5
? 'top' : 'bottom';
}
}
else {
else {
textPosition = toolboxOption.x != 'left'
textPosition = _itemGroupLocation.x / zr.getWidth() < 0.5
? 'left' : 'right';
? 'right' : 'left';
/*
textAlign = _itemGroupLocation.x / zr.getWidth() < 0.5
? 'right' : 'left';
textBaseLine = 'top';
*/
}
}
*/
_iconShapeMap = {};
_iconShapeMap = {};
for (var i = 0; i < iconLength; i++) {
for (var i = 0; i < iconLength; i++) {
...
@@ -20060,11 +20250,38 @@ define('echarts/component/toolbox',['require','./base','../config','zrender/conf
...
@@ -20060,11 +20250,38 @@ define('echarts/component/toolbox',['require','./base','../config','zrender/conf
highlightStyle : {
highlightStyle : {
lineWidth : 2,
lineWidth : 2,
shadowBlur: 5,
shadowBlur: 5,
text : toolboxOption.showTitle
? toolboxOption.featureTitle[_iconList[i]]
: false,
textFont : textFont,
textPosition : textPosition,
strokeColor : color[i % color.length]
strokeColor : color[i % color.length]
},
},
hoverable : true,
hoverable : true,
clickable : true
clickable : true
};
};
if (toolboxOption.orient == 'horizontal') {
// 修正左对齐第一个或右对齐最后一个
if (i === 0 && textAlign == 'left') {
itemShape.highlightStyle.textPosition = 'specific';
itemShape.highlightStyle.textAlign = textAlign;
itemShape.highlightStyle.textBaseLine = textBaseLine;
itemShape.highlightStyle.textX = lastX;
itemShape.highlightStyle.textY = textBaseLine == 'top'
? lastY + itemSize + 10
: lastY - 10;
}
if (i == iconLength - 1 && textAlign == 'right') {
itemShape.highlightStyle.textPosition = 'specific';
itemShape.highlightStyle.textAlign = textAlign;
itemShape.highlightStyle.textBaseLine = textBaseLine;
itemShape.highlightStyle.textX = lastX + itemSize;
itemShape.highlightStyle.textY = textBaseLine == 'top'
? lastY + itemSize + 10
: lastY - 10;
}
}
switch(_iconList[i]) {
switch(_iconList[i]) {
case 'mark':
case 'mark':
...
@@ -21375,9 +21592,6 @@ define(
...
@@ -21375,9 +21592,6 @@ define(
var polar;
var polar;
var _width = zr.getWidth();
var _height = zr.getHeight();
var series;
var series;
var _queryTarget;
var _queryTarget;
...
@@ -21420,16 +21634,13 @@ define(
...
@@ -21420,16 +21634,13 @@ define(
var length = indicator.length;
var length = indicator.length;
var startAngle = item.startAngle ;
var startAngle = item.startAngle ;
var dStep = 2 * Math.PI / length;
var dStep = 2 * Math.PI / length;
var radius = item.radius;
var radius = self.parsePercent(
item.radius,
Math.min(zr.getWidth(), zr.getHeight()) / 2
);
var __ecIndicator = item.__ecIndicator = [];
var __ecIndicator = item.__ecIndicator = [];
var vector;
var vector;
if (typeof radius != 'number') {
radius = Math.floor(
Math.min(_width, _height) / 2 - 50
);
}
for (var i = 0 ;i < length ; i ++) {
for (var i = 0 ;i < length ; i ++) {
vector = ecCoordinates.polar2cartesian(
vector = ecCoordinates.polar2cartesian(
radius, startAngle * Math.PI / 180 + dStep * i
radius, startAngle * Math.PI / 180 + dStep * i
...
@@ -21451,7 +21662,7 @@ define(
...
@@ -21451,7 +21662,7 @@ define(
var splitArea = item.splitArea;
var splitArea = item.splitArea;
var splitLine = item.splitLine;
var splitLine = item.splitLine;
var center =
item.center
;
var center =
getCenter(index)
;
var splitNumber = item.splitNumber;
var splitNumber = item.splitNumber;
var strokeColor = splitLine.lineStyle.color;
var strokeColor = splitLine.lineStyle.color;
...
@@ -21482,7 +21693,7 @@ define(
...
@@ -21482,7 +21693,7 @@ define(
var style;
var style;
var newStyle;
var newStyle;
var splitNumber = self.deepQuery(_queryTarget, 'splitNumber');
var splitNumber = self.deepQuery(_queryTarget, 'splitNumber');
var center =
item.center
;
var center =
getCenter(index)
;
var vector;
var vector;
var value;
var value;
var text;
var text;
...
@@ -21542,7 +21753,7 @@ define(
...
@@ -21542,7 +21753,7 @@ define(
var __ecIndicator = item.__ecIndicator;
var __ecIndicator = item.__ecIndicator;
var vector;
var vector;
var indicator = self.deepQuery(_queryTarget, 'indicator');
var indicator = self.deepQuery(_queryTarget, 'indicator');
var center =
item.center
;
var center =
getCenter(index)
;
var style;
var style;
var textAlign;
var textAlign;
var name;
var name;
...
@@ -21635,7 +21846,7 @@ define(
...
@@ -21635,7 +21846,7 @@ define(
function _addDropBox(index) {
function _addDropBox(index) {
var index = index || 0;
var index = index || 0;
var item = polar[index];
var item = polar[index];
var center =
item.center
;
var center =
getCenter(index)
;
var __ecIndicator = item.__ecIndicator;
var __ecIndicator = item.__ecIndicator;
var len = __ecIndicator.length;
var len = __ecIndicator.length;
var pointList = [];
var pointList = [];
...
@@ -21805,7 +22016,7 @@ define(
...
@@ -21805,7 +22016,7 @@ define(
*/
*/
function getCenter(index) {
function getCenter(index) {
var index = index || 0;
var index = index || 0;
return
polar[index].center
;
return
self.parseCenter(polar[index].center)
;
}
}
/**
/**
...
@@ -22113,29 +22324,6 @@ define(
...
@@ -22113,29 +22324,6 @@ define(
}
}
}
}
function reformOption(opt) {
// 常用方法快捷方式
var _merge = zrUtil.merge;
opt = _merge(
opt || {},
ecConfig.polar,
{
'overwrite' : false,
'recursive' : true
}
);
opt.center = self.parseCenter(opt.center);
if (!opt.radius) {
opt.radius = Math.floor(
Math.min(_width, _height) / 2 - 50
);
}
return opt;
}
/**
/**
* 获取每个指标上某个value对应的坐标
* 获取每个指标上某个value对应的坐标
* @param {number} polarIndex
* @param {number} polarIndex
...
@@ -22153,7 +22341,7 @@ define(
...
@@ -22153,7 +22341,7 @@ define(
}
}
var indicator = polar[polarIndex].__ecIndicator[indicatorIndex];
var indicator = polar[polarIndex].__ecIndicator[indicatorIndex];
var center =
polar[polarIndex].center
;
var center =
getCenter(polarIndex)
;
var vector = indicator.vector;
var vector = indicator.vector;
var max = indicator.value.max;
var max = indicator.value.max;
var min = indicator.value.min;
var min = indicator.value.min;
...
@@ -22205,6 +22393,7 @@ define(
...
@@ -22205,6 +22393,7 @@ define(
var len;
var len;
var angle;
var angle;
var finalAngle;
var finalAngle;
var zrSize = Math.min(zr.getWidth(), zr.getHeight()) / 2;
for (var i = 0 ; i < polar.length; i ++) {
for (var i = 0 ; i < polar.length; i ++) {
item = polar[i];
item = polar[i];
center = getCenter(i);
center = getCenter(i);
...
@@ -22214,7 +22403,7 @@ define(
...
@@ -22214,7 +22403,7 @@ define(
valueIndex : 0
valueIndex : 0
};
};
}
}
radius = self.
deepQuery([item, option], 'radius'
);
radius = self.
parsePercent(item.radius, zrSize
);
startAngle = item.startAngle;
startAngle = item.startAngle;
indicator = item.indicator;
indicator = item.indicator;
len = indicator.length;
len = indicator.length;
...
@@ -22266,21 +22455,12 @@ define(
...
@@ -22266,21 +22455,12 @@ define(
option = newOption;
option = newOption;
polar = option.polar;
polar = option.polar;
series = option.series;
series = option.series;
self.backupAdaptiveParams(polar,['center', 'radius'],true);
}
}
self.clear();
self.clear();
_buildShape();
_buildShape();
}
}
function resize() {
// 复位录原始定义
self.restoreAdaptiveParams(polar, ['center', 'radius'], true);
refresh();
}
self.refresh = refresh;
self.refresh = refresh;
self.resize = resize;
self.reformOption = reformOption;
self.getVector = getVector;
self.getVector = getVector;
self.getDropBox = _addDropBox;
self.getDropBox = _addDropBox;
...
@@ -22339,10 +22519,10 @@ define(
...
@@ -22339,10 +22519,10 @@ define(
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
*
*
*/
*/
define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zrender/tool/event','zrender/config','./util/shape/icon','./chart','./chart/island','./component','./component/title','./component/axis','./component/categoryAxis','./component/valueAxis','./component/grid','./component/dataZoom','./component/legend','./component/dataRange','./component/tooltip','./component/toolbox','./component/dataView','./component/polar','./util/ecData','./chart','./component','zrender/tool/util','zrender/tool/util','zrender/tool/util','zrender/tool/color','zrender/tool/util','zrender/tool/util'],function(require) {
define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zrender/tool/event','zrender/config','./util/shape/icon','./chart','./chart/island','./component','./component/title','./component/axis','./component/categoryAxis','./component/valueAxis','./component/grid','./component/dataZoom','./component/legend','./component/dataRange','./component/tooltip','./component/toolbox','./component/dataView','./component/polar','./util/ecData','./chart','./component','zrender/tool/util','zrender/tool/util','zrender/tool/util','zrender/tool/color','zrender/tool/util','zrender/tool/util'
,'zrender/tool/util'
],function(require) {
var self = {};
var self = {};
var echarts = self; // 提供内部反向使用静态方法;
var echarts = self; // 提供内部反向使用静态方法;
self.version = '1.3.
0
';
self.version = '1.3.
1
';
self.dependencies = {
self.dependencies = {
zrender : '1.0.5'
zrender : '1.0.5'
};
};
...
@@ -22368,6 +22548,7 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -22368,6 +22548,7 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
var ecConfig = require('./config');
var ecConfig = require('./config');
var self = this;
var self = this;
var _id = '__ECharts__' + new Date() - 0;
var _zr;
var _zr;
var _option;
var _option;
var _optionBackup; // for各种change和zoom
var _optionBackup; // for各种change和zoom
...
@@ -22762,7 +22943,6 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -22762,7 +22943,6 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
while (len--) {
while (len--) {
magicOption.series[len].data = _optionBackup.series[len].data;
magicOption.series[len].data = _optionBackup.series[len].data;
}
}
return magicOption;
return magicOption;
}
}
...
@@ -22966,7 +23146,7 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -22966,7 +23146,7 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
_toolbox.render(magicOption, {dataZoom: dataZoom});
_toolbox.render(magicOption, {dataZoom: dataZoom});
if (magicOption.animation) {
if (magicOption.animation
&& !magicOption.renderAsImage
) {
var len = _chartList.length;
var len = _chartList.length;
while (len--) {
while (len--) {
_chartList[len]
_chartList[len]
...
@@ -22976,6 +23156,34 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -22976,6 +23156,34 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
}
}
_zr.render();
_zr.render();
var imgId = 'IMG' + _id;
var img = document.getElementById(imgId);
if (magicOption.renderAsImage && !G_vmlCanvasManager) {
// IE8- 不支持图片渲染形式
if (img) {
// 已经渲染过则更新显示
img.src = getDataURL(magicOption.renderAsImage);
}
else {
// 没有渲染过插入img dom
img = getImage(magicOption.renderAsImage);
img.id = imgId;
img.style.position = 'absolute';
img.style.left = 0;
img.style.top = 0;
dom.firstChild.appendChild(img);
}
un();
_zr.un();
_disposeChartList();
_zr.clear();
}
else if (img) {
// 删除可能存在的img
img.parentNode.removeChild(img);
}
img = null;
}
}
/**
/**
...
@@ -23138,6 +23346,23 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -23138,6 +23346,23 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
return self;
return self;
}
}
/**
* 返回内部持有的当前显示option克隆
*/
function getOption() {
var zrUtil = require('zrender/tool/util');
if (_optionBackup.toolbox
&& _optionBackup.toolbox.show
&& _optionBackup.toolbox.feature.magicType
&& _optionBackup.toolbox.feature.magicType.length > 0
) {
return zrUtil.clone(_getMagicOption());
}
else {
return zrUtil.clone(_getMagicOption(_island.getOption()));
}
}
/**
/**
* 数据设置快捷接口
* 数据设置快捷接口
* @param {Array} series
* @param {Array} series
...
@@ -23152,9 +23377,15 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -23152,9 +23377,15 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
_option.series = series;
_option.series = series;
self.setOption(_option, notMerge);
self.setOption(_option, notMerge);
}
}
return self;
return self;
}
}
/**
* 返回内部持有的当前显示series克隆
*/
function getSeries() {
return getOption().series;
}
/**
/**
* 动态数据添加
* 动态数据添加
...
@@ -23344,6 +23575,43 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -23344,6 +23575,43 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
return _zr;
return _zr;
}
}
/**
* 获取Base64图片dataURL
* @param {string} imgType 图片类型,支持png|jpeg,默认为png
* @return imgDataURL
*/
function getDataURL(imgType) {
if (G_vmlCanvasManager) {
return '';
}
if (_chartList.length === 0) {
// 渲染为图片
var imgId = 'IMG' + _id;
var img = document.getElementById(imgId);
if (img) {
return img.src;
}
}
imgType = imgType || 'png';
if (imgType != 'png' && imgType != 'jpeg') {
imgType = 'png';
}
return _zr.toDataURL('image/' + imgType);
}
/**
* 获取img
* @param {string} imgType 图片类型,支持png|jpeg,默认为png
* @return img dom
*/
function getImage(imgType) {
var imgDom = document.createElement('img');
imgDom.src = getDataURL(imgType);
imgDom.title = (_optionRestore.title && _optionRestore.title.text)
|| 'ECharts';
return imgDom;
}
/**
/**
* 绑定事件
* 绑定事件
* @param {Object} eventName 事件名称
* @param {Object} eventName 事件名称
...
@@ -23412,6 +23680,11 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -23412,6 +23680,11 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
*/
*/
function resize() {
function resize() {
_zr.resize();
_zr.resize();
if (_option.renderAsImage && !G_vmlCanvasManager) {
// 渲染为图片从走render模式
_render(_option);
return self;
}
// 先来后到,不能仅刷新自己,也不能在上一个循环中刷新,如坐标系数据改变会影响其他图表的大小
// 先来后到,不能仅刷新自己,也不能在上一个循环中刷新,如坐标系数据改变会影响其他图表的大小
// 所以安顺序刷新各种图表,图表内部refresh优化无需更新则不更新~
// 所以安顺序刷新各种图表,图表内部refresh优化无需更新则不更新~
for (var i = 0, l = _chartList.length; i < l; i++) {
for (var i = 0, l = _chartList.length; i < l; i++) {
...
@@ -23448,7 +23721,11 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -23448,7 +23721,11 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
self.setOption = setOption;
self.setOption = setOption;
self.setSeries = setSeries;
self.setSeries = setSeries;
self.addData = addData;
self.addData = addData;
self.getOption = getOption;
self.getSeries = getSeries;
self.getZrender = getZrender;
self.getZrender = getZrender;
self.getDataURL = getDataURL;
self.getImage = getImage;
self.on = on;
self.on = on;
self.un = un;
self.un = un;
self.showLoading = showLoading;
self.showLoading = showLoading;
...
@@ -24823,7 +25100,7 @@ define('echarts/chart/k',['require','../component/base','./calculableBase','../c
...
@@ -24823,7 +25100,7 @@ define('echarts/chart/k',['require','../component/base','./calculableBase','../c
*
*
*/
*/
define('echarts/chart/radar',['require','../component/base','./calculableBase','../config','../util/ecData','zrender/tool/color','../chart'],function(require) {
define('echarts/chart/radar',['require','../component/base','./calculableBase','../config','../util/ecData','zrender/tool/color','../
util/accMath','../
chart'],function(require) {
/**
/**
* 构造函数
* 构造函数
* @param {Object} messageCenter echart消息中心
* @param {Object} messageCenter echart消息中心
...
@@ -25194,7 +25471,6 @@ define('echarts/chart/k',['require','../component/base','./calculableBase','../c
...
@@ -25194,7 +25471,6 @@ define('echarts/chart/k',['require','../component/base','./calculableBase','../c
var value;
var value;
if (dataIndex == -1) {
if (dataIndex == -1) {
data = {
data = {
value : ecData.get(dragged, 'value'),
value : ecData.get(dragged, 'value'),
name : ecData.get(dragged, 'name')
name : ecData.get(dragged, 'name')
...
@@ -25208,13 +25484,15 @@ define('echarts/chart/k',['require','../component/base','./calculableBase','../c
...
@@ -25208,13 +25484,15 @@ define('echarts/chart/k',['require','../component/base','./calculableBase','../c
);
);
}
}
else {
else {
// 数据被拖拽到某个数据项上,数据修改
var accMath = require('../util/accMath');
data = series[seriesIndex].data[dataIndex];
data = series[seriesIndex].data[dataIndex];
legend && legend.del(data.name);
legend && legend.del(data.name);
data.name += option.nameConnector
data.name += option.nameConnector
+ ecData.get(dragged, 'name');
+ ecData.get(dragged, 'name');
value = ecData.get(dragged, 'value');
value = ecData.get(dragged, 'value');
for (var i = 0 ; i < value.length; i ++) {
for (var i = 0 ; i < value.length; i ++) {
data.value[i]
+= value[i]
;
data.value[i]
= accMath.accAdd(data.value[i], value[i])
;
}
}
legend && legend.add(
legend && legend.add(
...
@@ -28315,7 +28593,7 @@ define('echarts/chart/chord',['require','../util/shape/chord','../component/base
...
@@ -28315,7 +28593,7 @@ define('echarts/chart/chord',['require','../util/shape/chord','../component/base
[group, chordSerieSample],
[group, chordSerieSample],
'itemStyle.normal.label.textStyle.color'
'itemStyle.normal.label.textStyle.color'
) || '#fff';
) || '#fff';
sector
.style.textFont = self.getFont(self.deepQuery(
labelShape
.style.textFont = self.getFont(self.deepQuery(
[group, chordSerieSample],
[group, chordSerieSample],
'itemStyle.normal.label.textStyle'
'itemStyle.normal.label.textStyle'
));
));
...
@@ -30001,7 +30279,7 @@ define('echarts/chart/line',['require','../component/base','./calculableBase','.
...
@@ -30001,7 +30279,7 @@ define('echarts/chart/line',['require','../component/base','./calculableBase','.
style : {
style : {
pointList : singlePL,
pointList : singlePL,
strokeColor : lineColor
strokeColor : lineColor
|| normalColor
|| normalColor
|| defaultColor,
|| defaultColor,
lineWidth : lineWidth,
lineWidth : lineWidth,
lineType : lineType,
lineType : lineType,
...
@@ -30222,8 +30500,15 @@ define('echarts/chart/line',['require','../component/base','./calculableBase','.
...
@@ -30222,8 +30500,15 @@ define('echarts/chart/line',['require','../component/base','./calculableBase','.
var seriesIndex = param.seriesIndex;
var seriesIndex = param.seriesIndex;
var dataIndex = param.dataIndex;
var dataIndex = param.dataIndex;
var seriesPL;
var seriesPL;
var singlePL;
var serie;
var serie;
var queryTarget;
var queryTarget;
var lineWidth;
var normalColor;
var emphasisColor;
var defaultColor;
var len = seriesIndex.length;
var len = seriesIndex.length;
while (len--) {
while (len--) {
seriesPL = finalPLMap[seriesIndex[len]];
seriesPL = finalPLMap[seriesIndex[len]];
...
@@ -30233,21 +30518,16 @@ define('echarts/chart/line',['require','../component/base','./calculableBase','.
...
@@ -30233,21 +30518,16 @@ define('echarts/chart/line',['require','../component/base','./calculableBase','.
defaultColor = _sIndex2ColorMap[seriesIndex[len]];
defaultColor = _sIndex2ColorMap[seriesIndex[len]];
// 多级控制
// 多级控制
lineWidth = self.deepQuery(
lineWidth = self.deepQuery(
[serie], 'itemStyle.normal.lineStyle.width'
queryTarget, 'itemStyle.normal.lineStyle.width'
);
lineType = self.deepQuery(
[serie], 'itemStyle.normal.lineStyle.type'
);
lineColor = self.deepQuery(
[serie], 'itemStyle.normal.lineStyle.color'
);
);
normalColor = self.deepQuery(
normalColor = self.deepQuery(
[serie]
, 'itemStyle.normal.color'
queryTarget
, 'itemStyle.normal.color'
);
);
emphasisColor = self.deepQuery(
emphasisColor = self.deepQuery(
[serie]
, 'itemStyle.emphasis.color'
queryTarget
, 'itemStyle.emphasis.color'
);
);
var shape;
var shape;
var data;
for (var i = 0, l = seriesPL.length; i < l; i++) {
for (var i = 0, l = seriesPL.length; i < l; i++) {
singlePL = seriesPL[i];
singlePL = seriesPL[i];
for (var j = 0, k = singlePL.length; j < k; j++) {
for (var j = 0, k = singlePL.length; j < k; j++) {
...
@@ -30615,6 +30895,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -30615,6 +30895,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
var legend = component.legend;
var legend = component.legend;
var locationMap = []; // 需要返回的东西:数组位置映射到系列索引
var locationMap = []; // 需要返回的东西:数组位置映射到系列索引
var maxDataLength = 0; // 需要返回的东西:最大数据长度
var maxDataLength = 0; // 需要返回的东西:最大数据长度
var iconShape;
// 计算需要显示的个数和分配位置并记在下面这个结构里
// 计算需要显示的个数和分配位置并记在下面这个结构里
for (var i = 0, l = seriesArray.length; i < l; i++) {
for (var i = 0, l = seriesArray.length; i < l; i++) {
serie = series[seriesArray[i]];
serie = series[seriesArray[i]];
...
@@ -30623,6 +30904,15 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -30623,6 +30904,15 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
self.selectedMap[serieName] = legend.isSelected(serieName);
self.selectedMap[serieName] = legend.isSelected(serieName);
_sIndex2colorMap[seriesArray[i]] =
_sIndex2colorMap[seriesArray[i]] =
legend.getColor(serieName);
legend.getColor(serieName);
iconShape = legend.getItemShape(serieName);
if (iconShape) {
// 回调legend,换一个更形象的icon
iconShape.style.strokeColor =
serie.itemStyle.normal.borderColor;
iconShape.style.brushType = 'both';
legend.setItemShape(serieName, iconShape);
}
} else {
} else {
self.selectedMap[serieName] = true;
self.selectedMap[serieName] = true;
_sIndex2colorMap[seriesArray[i]] =
_sIndex2colorMap[seriesArray[i]] =
...
@@ -30736,7 +31026,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -30736,7 +31026,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
}
}
lastYP -= barHeight;
lastYP -= barHeight;
y = lastYP;
y = lastYP;
lastYP -= 0.5; //白色视觉分隔线宽修正
//
lastYP -= 0.5; //白色视觉分隔线宽修正
}
}
else if (value < 0){
else if (value < 0){
// 负向堆叠
// 负向堆叠
...
@@ -30749,7 +31039,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -30749,7 +31039,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
}
}
y = lastYN;
y = lastYN;
lastYN += barHeight;
lastYN += barHeight;
lastYN += 0.5; //白色视觉分隔线宽修正
//
lastYN += 0.5; //白色视觉分隔线宽修正
}
}
else {
else {
// 0值
// 0值
...
@@ -30757,7 +31047,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -30757,7 +31047,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
// 最小高度无效
// 最小高度无效
lastYP -= barHeight;
lastYP -= barHeight;
y = lastYP;
y = lastYP;
lastYP -= 0.5; //白色视觉分隔线宽修正
//
lastYP -= 0.5; //白色视觉分隔线宽修正
}
}
barShape = _getBarItem(
barShape = _getBarItem(
...
@@ -30884,7 +31174,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -30884,7 +31174,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
}
}
x = lastXP;
x = lastXP;
lastXP += barHeight;
lastXP += barHeight;
lastXP += 0.5; //白色视觉分隔线宽修正
//
lastXP += 0.5; //白色视觉分隔线宽修正
}
}
else if (value < 0){
else if (value < 0){
// 负向堆叠
// 负向堆叠
...
@@ -30897,7 +31187,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -30897,7 +31187,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
}
}
lastXN -= barHeight;
lastXN -= barHeight;
x = lastXN;
x = lastXN;
lastXN -= 0.5; //白色视觉分隔线宽修正
//
lastXN -= 0.5; //白色视觉分隔线宽修正
}
}
else {
else {
// 0值
// 0值
...
@@ -30905,7 +31195,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -30905,7 +31195,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
// 最小高度无效
// 最小高度无效
x = lastXP;
x = lastXP;
lastXP += barHeight;
lastXP += barHeight;
lastXP += 0.5; //白色视觉分隔线宽修正
//
lastXP += 0.5; //白色视觉分隔线宽修正
}
}
barShape = _getBarItem(
barShape = _getBarItem(
...
@@ -30978,7 +31268,6 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -30978,7 +31268,6 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
var sBarWidth;
var sBarWidth;
var sBarWidthCounter = 0;
var sBarWidthCounter = 0;
var sBarWidthTotal = 0;
var sBarWidthTotal = 0;
var sBarMinHeight;
var barGap;
var barGap;
var barCategoryGap;
var barCategoryGap;
var hasFound;
var hasFound;
...
@@ -30988,10 +31277,10 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -30988,10 +31277,10 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
hasFound = false; // 同一堆叠第一个barWidth生效
hasFound = false; // 同一堆叠第一个barWidth生效
for (var m = 0, n = locationMap[j].length; m < n; m++) {
for (var m = 0, n = locationMap[j].length; m < n; m++) {
seriesIndex = locationMap[j][m];
seriesIndex = locationMap[j][m];
queryTarget =
[series[seriesIndex]
];
queryTarget =
series[seriesIndex
];
if (!ignoreUserDefined) {
if (!ignoreUserDefined) {
if (!hasFound) {
if (!hasFound) {
sBarWidth = self.
deepQ
uery(
sBarWidth = self.
q
uery(
queryTarget,
queryTarget,
'barWidth'
'barWidth'
);
);
...
@@ -31006,19 +31295,19 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -31006,19 +31295,19 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
}
}
}
}
barMinHeightMap[seriesIndex] = self.
deepQ
uery(
barMinHeightMap[seriesIndex] = self.
q
uery(
queryTarget,
queryTarget,
'barMinHeight'
'barMinHeight'
);
);
barGap = typeof barGap != 'undefined'
barGap = typeof barGap != 'undefined'
? barGap
? barGap
: self.
deepQ
uery(
: self.
q
uery(
queryTarget,
queryTarget,
'barGap'
'barGap'
);
);
barCategoryGap = typeof barCategoryGap != 'undefined'
barCategoryGap = typeof barCategoryGap != 'undefined'
? barCategoryGap
? barCategoryGap
: self.
deepQ
uery(
: self.
q
uery(
queryTarget,
queryTarget,
'barCategoryGap'
'barCategoryGap'
);
);
...
@@ -31123,14 +31412,24 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -31123,14 +31412,24 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
var data = serie.data[dataIndex];
var data = serie.data[dataIndex];
// 多级控制
// 多级控制
var defaultColor = _sIndex2colorMap[seriesIndex];
var defaultColor = _sIndex2colorMap[seriesIndex];
var queryTarget = [data, serie];
var normalColor = self.deepQuery(
var normalColor = self.deepQuery(
[data, serie]
,
queryTarget
,
'itemStyle.normal.color'
'itemStyle.normal.color'
) || defaultColor;
) || defaultColor;
var emphasisColor = self.deepQuery(
var emphasisColor = self.deepQuery(
[data, serie]
,
queryTarget
,
'itemStyle.emphasis.color'
'itemStyle.emphasis.color'
);
);
var normal = self.deepMerge(
queryTarget,
'itemStyle.normal'
);
var normalBorderWidth = normal.borderWidth;
var emphasis = self.deepMerge(
queryTarget,
'itemStyle.emphasis'
);
barShape = {
barShape = {
shape : 'rectangle',
shape : 'rectangle',
zlevel : _zlevelBase,
zlevel : _zlevelBase,
...
@@ -31142,7 +31441,9 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -31142,7 +31441,9 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
height : height,
height : height,
brushType : 'both',
brushType : 'both',
color : normalColor,
color : normalColor,
strokeColor : '#fff'
radius : normal.borderRadius,
lineWidth : normalBorderWidth,
strokeColor : normal.borderColor
},
},
highlightStyle : {
highlightStyle : {
color : emphasisColor
color : emphasisColor
...
@@ -31150,19 +31451,31 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -31150,19 +31451,31 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
? zrColor.lift(normalColor, -0.2)
? zrColor.lift(normalColor, -0.2)
: normalColor
: normalColor
),
),
strokeColor : 'rgba(0,0,0,0)'
radius : emphasis.borderRadius,
lineWidth : emphasis.borderWidth,
strokeColor : emphasis.borderColor
},
},
_orient : orient
_orient : orient
};
};
// 考虑线宽的显示优化
if (barShape.style.height > normalBorderWidth
&& barShape.style.width > normalBorderWidth
) {
barShape.style.y += normalBorderWidth / 2;
barShape.style.height -= normalBorderWidth;
barShape.style.x += normalBorderWidth / 2;
barShape.style.width -= normalBorderWidth;
}
else {
// 太小了,废了边线
barShape.style.brushType = 'fill';
}
barShape.highlightStyle.textColor = barShape.highlightStyle.color;
barShape.highlightStyle.textColor = barShape.highlightStyle.color;
barShape = self.addLabel(barShape, serie, data, name, orient);
barShape = self.addLabel(barShape, serie, data, name, orient);
if (self.deepQuery(
if (self.deepQuery([data, serie, option],'calculable')) {
[data, serie, option],
'calculable'
)
) {
self.setCalculable(barShape);
self.setCalculable(barShape);
barShape.draggable = true;
barShape.draggable = true;
}
}
...
@@ -31396,7 +31709,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -31396,7 +31709,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
*
*
*/
*/
define('echarts/chart/pie',['require','../component/base','./calculableBase','../config','../util/ecData','zrender/tool/math','zrender/tool/util','zrender/tool/color','../chart'],function(require) {
define('echarts/chart/pie',['require','../component/base','./calculableBase','../config','../util/ecData','zrender/tool/math','zrender/tool/util','zrender/tool/color','../
util/accMath','../
chart'],function(require) {
/**
/**
* 构造函数
* 构造函数
* @param {Object} messageCenter echart消息中心
* @param {Object} messageCenter echart消息中心
...
@@ -31432,26 +31745,29 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -31432,26 +31745,29 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
function _buildShape() {
function _buildShape() {
self.selectedMap = {};
self.selectedMap = {};
_selected = {};
_selected = {};
var center;
var radius;
var pieCase; // 饼图箱子
var pieCase; // 饼图箱子
_selectedMode = false;
_selectedMode = false;
for (var i = 0, l = series.length; i < l; i++) {
for (var i = 0, l = series.length; i < l; i++) {
if (series[i].type == ecConfig.CHART_TYPE_PIE) {
if (series[i].type == ecConfig.CHART_TYPE_PIE) {
series[i] = self.reformOption(series[i]);
series[i] = self.reformOption(series[i]);
center = self.parseCenter(series[i].center);
radius = self.parseRadius(series[i].radius);
_selectedMode = _selectedMode || series[i].selectedMode;
_selectedMode = _selectedMode || series[i].selectedMode;
_selected[i] = [];
_selected[i] = [];
if (self.deepQuery([series[i], option], 'calculable')) {
if (self.deepQuery([series[i], option], 'calculable')) {
pieCase = {
pieCase = {
shape : series[i].radius[0] <= 10
shape : radius[0] <= 10 ? 'circle' : 'ring',
? 'circle' : 'ring',
zlevel : _zlevelBase,
zlevel : _zlevelBase,
hoverable : false,
hoverable : false,
style : {
style : {
x :
series[i].
center[0], // 圆心横坐标
x : center[0], // 圆心横坐标
y :
series[i].
center[1], // 圆心纵坐标
y : center[1], // 圆心纵坐标
r0 : series[i].radius[0] <= 10 // 圆环内
半径
// 圆环内外
半径
? 0 : series[i].
radius[0] - 10,
r0 : radius[0] <= 10 ? 0 :
radius[0] - 10,
r :
series[i].radius[1] + 10, // 圆环外半径
r :
radius[1] + 10,
brushType : 'stroke',
brushType : 'stroke',
strokeColor : series[i].calculableHolderColor
strokeColor : series[i].calculableHolderColor
|| ecConfig.calculableHolderColor
|| ecConfig.calculableHolderColor
...
@@ -31507,6 +31823,7 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -31507,6 +31823,7 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
var totalAngle = 360 - (minAngle * totalSelected);
var totalAngle = 360 - (minAngle * totalSelected);
var defaultColor;
var defaultColor;
var roseType = serie.roseType;
var roseType = serie.roseType;
var radius;
var r0; // 扇形内半径
var r0; // 扇形内半径
var r1; // 扇形外半径
var r1; // 扇形外半径
...
@@ -31536,8 +31853,9 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -31536,8 +31853,9 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
}
}
percent = (percent * 100).toFixed(2);
percent = (percent * 100).toFixed(2);
r0 = +serie.radius[0];
radius = self.parseRadius(serie.radius);
r1 = +serie.radius[1];
r0 = +radius[0];
r1 = +radius[1];
if (roseType == 'radius') {
if (roseType == 'radius') {
r1 = data[i].value / maxValue * (r1 - r0) * 0.8
r1 = data[i].value / maxValue * (r1 - r0) * 0.8
...
@@ -31615,6 +31933,7 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -31615,6 +31933,7 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
) {
) {
var serie = series[seriesIndex];
var serie = series[seriesIndex];
var data = serie.data[dataIndex];
var data = serie.data[dataIndex];
var center = self.parseCenter(serie.center);
// 多级控制
// 多级控制
var normalColor = self.deepQuery(
var normalColor = self.deepQuery(
...
@@ -31632,8 +31951,8 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -31632,8 +31951,8 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
zlevel : _zlevelBase,
zlevel : _zlevelBase,
clickable : true,
clickable : true,
style : {
style : {
x :
serie.
center[0], // 圆心横坐标
x : center[0], // 圆心横坐标
y :
serie.
center[1], // 圆心纵坐标
y : center[1], // 圆心纵坐标
r0 : r0, // 圆环内半径
r0 : r0, // 圆环内半径
r : r1, // 圆环外半径
r : r1, // 圆环外半径
startAngle : startAngle,
startAngle : startAngle,
...
@@ -31706,12 +32025,12 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -31706,12 +32025,12 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
'itemStyle.normal.label.textStyle.baseline'
'itemStyle.normal.label.textStyle.baseline'
) || 'middle';
) || 'middle';
sector.style.textX = Math.round(
sector.style.textX = Math.round(
serie.
center[0]
center[0]
+ (r1 + r0) / 2
+ (r1 + r0) / 2
* zrMath.cos((startAngle + endAngle) / 2, true)
* zrMath.cos((startAngle + endAngle) / 2, true)
);
);
sector.style.textY = Math.round(
sector.style.textY = Math.round(
serie.
center[1]
center[1]
- (r1 + r0) / 2
- (r1 + r0) / 2
* zrMath.sin((startAngle + endAngle) / 2, true)
* zrMath.sin((startAngle + endAngle) / 2, true)
);
);
...
@@ -31744,12 +32063,12 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -31744,12 +32063,12 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
'itemStyle.normal.label.textStyle.baseline'
'itemStyle.normal.label.textStyle.baseline'
) || 'middle';
) || 'middle';
sector.highlightStyle.textX = Math.round(
sector.highlightStyle.textX = Math.round(
serie.
center[0]
center[0]
+ (r1 + r0) / 2
+ (r1 + r0) / 2
* zrMath.cos((startAngle + endAngle) / 2, true)
* zrMath.cos((startAngle + endAngle) / 2, true)
);
);
sector.highlightStyle.textY = Math.round(
sector.highlightStyle.textY = Math.round(
serie.
center[1]
center[1]
- (r1 + r0) / 2
- (r1 + r0) / 2
* zrMath.sin((startAngle + endAngle) / 2, true)
* zrMath.sin((startAngle + endAngle) / 2, true)
);
);
...
@@ -31778,6 +32097,7 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -31778,6 +32097,7 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
) {
) {
var serie = series[seriesIndex];
var serie = series[seriesIndex];
var data = serie.data[dataIndex];
var data = serie.data[dataIndex];
// 特定状态下是否需要显示文本标签
// 特定状态下是否需要显示文本标签
if (_needLabel(serie, data, isEmphasis)) {
if (_needLabel(serie, data, isEmphasis)) {
var status = isEmphasis ? 'emphasis' : 'normal';
var status = isEmphasis ? 'emphasis' : 'normal';
...
@@ -31795,14 +32115,15 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -31795,14 +32115,15 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
var labelControl = itemStyle[status].label;
var labelControl = itemStyle[status].label;
var textStyle = labelControl.textStyle || {};
var textStyle = labelControl.textStyle || {};
var centerX = serie.center[0]; // 圆心横坐标
var center = self.parseCenter(serie.center);
var centerY = serie.center[1]; // 圆心纵坐标
var centerX = center[0]; // 圆心横坐标
var centerY = center[1]; // 圆心纵坐标
var midAngle = ((endAngle + startAngle) / 2) % 360; // 角度中值
var midAngle = ((endAngle + startAngle) / 2) % 360; // 角度中值
var radius
;
// 标签位置半径
var radius
= self.parseRadius(serie.radius);
// 标签位置半径
var textAlign;
var textAlign;
if (labelControl.position == 'outer') {
if (labelControl.position == 'outer') {
// 外部显示,默认
// 外部显示,默认
radius =
serie.
radius[1]
radius = radius[1]
- (-itemStyle[status].labelLine.length)
- (-itemStyle[status].labelLine.length)
- (-textStyle.fontSize);
- (-textStyle.fontSize);
textAlign = (midAngle >= 150 && midAngle <= 210)
textAlign = (midAngle >= 150 && midAngle <= 210)
...
@@ -31861,11 +32182,6 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -31861,11 +32182,6 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
else {
else {
// 内部显示由sector自带,不返回即可
// 内部显示由sector自带,不返回即可
return;
return;
/*
radius = (serie.radius[0] + serie.radius[1]) / 2;
textAlign = 'center';
defaultColor = '#fff';
*/
}
}
}
}
else {
else {
...
@@ -31940,12 +32256,14 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -31940,12 +32256,14 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
var labelLineControl = itemStyle[status].labelLine;
var labelLineControl = itemStyle[status].labelLine;
var lineStyle = labelLineControl.lineStyle || {};
var lineStyle = labelLineControl.lineStyle || {};
var centerX = serie.center[0]; // 圆心横坐标
var center = self.parseCenter(serie.center);
var centerY = serie.center[1]; // 圆心纵坐标
var centerX = center[0]; // 圆心横坐标
var centerY = center[1]; // 圆心纵坐标
// 视觉引导线起点半径
// 视觉引导线起点半径
var midRadius = r1;
var midRadius = r1;
// 视觉引导线终点半径
// 视觉引导线终点半径
var maxRadius = serie.radius[1] - (-labelLineControl.length);
var maxRadius = self.parseRadius(serie.radius)[1]
- (-labelLineControl.length);
var midAngle = ((endAngle + startAngle) / 2) % 360; // 角度中值
var midAngle = ((endAngle + startAngle) / 2) % 360; // 角度中值
var cosValue = zrMath.cos(midAngle, true);
var cosValue = zrMath.cos(midAngle, true);
var sinValue = zrMath.sin(midAngle, true);
var sinValue = zrMath.sin(midAngle, true);
...
@@ -32016,18 +32334,6 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -32016,18 +32334,6 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
'recursive' : true
'recursive' : true
}
}
);
);
//console.log(opt)
opt.center = self.parseCenter(opt.center);
// 传数组实现环形图,[内半径,外半径],传单个则默认为外半径为
if (typeof opt.radius == 'undefined') {
opt.radius = [
0,
Math.round(Math.min(zr.getWidth(), zr.getHeight()) / 2 - 50)
];
} else if (!(opt.radius instanceof Array)) {
opt.radius = [0, opt.radius];
}
// 通用字体设置
// 通用字体设置
opt.itemStyle.normal.label.textStyle = _merge(
opt.itemStyle.normal.label.textStyle = _merge(
...
@@ -32067,18 +32373,11 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -32067,18 +32373,11 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
if (newOption) {
if (newOption) {
option = newOption;
option = newOption;
series = option.series;
series = option.series;
self.backupAdaptiveParams(series, ['center', 'radius']);
}
}
self.clear();
self.clear();
_buildShape();
_buildShape();
}
}
function resize() {
// 复位录原始定义
self.restoreAdaptiveParams(series, ['center', 'radius']);
refresh();
}
/**
/**
* 动态数据增加动画
* 动态数据增加动画
* 心跳效果
* 心跳效果
...
@@ -32448,11 +32747,15 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -32448,11 +32747,15 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
}
}
else {
else {
// 落到sector上,数据被拖拽到某个数据项上,数据修改
// 落到sector上,数据被拖拽到某个数据项上,数据修改
var accMath = require('../util/accMath');
data = series[seriesIndex].data[dataIndex];
data = series[seriesIndex].data[dataIndex];
legend && legend.del(data.name);
legend && legend.del(data.name);
data.name += option.nameConnector
data.name += option.nameConnector
+ ecData.get(dragged, 'name');
+ ecData.get(dragged, 'name');
data.value += ecData.get(dragged, 'value');
data.value = accMath.accAdd(
data.value,
ecData.get(dragged, 'value')
);
legend && legend.add(
legend && legend.add(
data.name,
data.name,
dragged.style.color || dragged.style.strokeColor
dragged.style.color || dragged.style.strokeColor
...
@@ -32537,7 +32840,6 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -32537,7 +32840,6 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
// 接口方法
// 接口方法
self.init = init;
self.init = init;
self.refresh = refresh;
self.refresh = refresh;
self.resize = resize;
self.addDataAnimation = addDataAnimation;
self.addDataAnimation = addDataAnimation;
self.animation = animation;
self.animation = animation;
self.onclick = onclick;
self.onclick = onclick;
build/echarts.js
浏览文件 @
ebaeab5d
因为 它太大了无法显示 source diff 。你可以改为
查看blob
。
doc/asset/js/echartsExample.js
浏览文件 @
ebaeab5d
...
@@ -61,7 +61,7 @@ function needMap() {
...
@@ -61,7 +61,7 @@ function needMap() {
}
}
var
echarts
;
var
echarts
;
var
developMode
=
tru
e
;
var
developMode
=
fals
e
;
if
(
developMode
)
{
if
(
developMode
)
{
// for develop
// for develop
...
...
doc/example/bar6.html
浏览文件 @
ebaeab5d
...
@@ -142,7 +142,7 @@ option = {
...
@@ -142,7 +142,7 @@ option = {
type:
'
bar
',
type:
'
bar
',
stack:
'
总量
',
stack:
'
总量
',
itemStyle
:
{
normal:
{
label
:
{
show:
true
,
position:
'
inside
'}}},
itemStyle
:
{
normal:
{
label
:
{
show:
true
,
position:
'
inside
'}}},
data:
[900,
345,
393,
'
-
',
'
-
',
135,
178,
286,
'
-
',
'
-
',
'
-
'
,
]
data:
[900,
345,
393,
'
-
',
'
-
',
135,
178,
286,
'
-
',
'
-
',
'
-
']
},
},
{
{
name:
'
支出
',
name:
'
支出
',
...
...
doc/example/www/js/echarts-map.js
浏览文件 @
ebaeab5d
因为 它太大了无法显示 source diff 。你可以改为
查看blob
。
doc/example/www/js/echarts-original-map.js
浏览文件 @
ebaeab5d
...
@@ -152,10 +152,24 @@ define('echarts/config',[],function() {
...
@@ -152,10 +152,24 @@ define('echarts/config',[],function() {
itemSize: 16, // 工具箱图形宽度,非标准参数
itemSize: 16, // 工具箱图形宽度,非标准参数
feature : {
feature : {
//mark : true,
//mark : true,
//dataZoom : true,
//dataView : {readOnly: false},
//dataView : {readOnly: false},
//magicType: ['line', 'bar'],
//magicType: ['line', 'bar'],
//restore : true,
//restore : true,
//saveAsImage : true
//saveAsImage : true
},
showTitle : true,
featureTitle : {
mark : '辅助线开关',
markUndo : '删除辅助线',
markClear : '清空辅助线',
dataZoom : '区域缩放',
dataZoomReset : '区域缩放后退',
dataView : '数据视图',
lineChart : '折线图切换',
barChart : '柱形图切换',
restore : '还原',
saveAsImage : '保存为图片'
}
}
},
},
...
@@ -211,7 +225,7 @@ define('echarts/config',[],function() {
...
@@ -211,7 +225,7 @@ define('echarts/config',[],function() {
// yAxisIndex: [], // 默认控制所有横向类目
// yAxisIndex: [], // 默认控制所有横向类目
// start: 0, // 默认为0
// start: 0, // 默认为0
// end: 100, // 默认为全部 100%
// end: 100, // 默认为全部 100%
realtime:
fals
e
realtime:
tru
e
// zoomLock: false // 是否锁定选择区域大小
// zoomLock: false // 是否锁定选择区域大小
},
},
...
@@ -333,7 +347,7 @@ define('echarts/config',[],function() {
...
@@ -333,7 +347,7 @@ define('echarts/config',[],function() {
polar : {
polar : {
center : ['50%', '50%'], // 默认全局居中
center : ['50%', '50%'], // 默认全局居中
// radius: 'min(width, height) / 2 - 50
',
radius : '75%
',
startAngle : 90,
startAngle : 90,
splitNumber : 5,
splitNumber : 5,
name : {
name : {
...
@@ -385,6 +399,9 @@ define('echarts/config',[],function() {
...
@@ -385,6 +399,9 @@ define('echarts/config',[],function() {
barCategoryGap : '20%', // 类目间柱形距离,默认为类目间距的20%,可设固定值
barCategoryGap : '20%', // 类目间柱形距离,默认为类目间距的20%,可设固定值
itemStyle: {
itemStyle: {
normal: {
normal: {
borderColor: '#fff', // 柱条边线
borderRadius: 0, // 柱条边线圆角,单位px,默认为0
borderWidth: 1, // 柱条边线线宽,单位px,默认为1
label: {
label: {
show: false
show: false
// formatter: 标签文本格式器,同Tooltip.formatter,不支持回调
// formatter: 标签文本格式器,同Tooltip.formatter,不支持回调
...
@@ -394,6 +411,9 @@ define('echarts/config',[],function() {
...
@@ -394,6 +411,9 @@ define('echarts/config',[],function() {
}
}
},
},
emphasis: {
emphasis: {
borderColor: 'rgba(0,0,0,0)', // 柱条边线
borderRadius: 0, // 柱条边线圆角,单位px,默认为0
borderWidth: 1, // 柱条边线线宽,单位px,默认为1
label: {
label: {
show: false
show: false
// formatter: 标签文本格式器,同Tooltip.formatter,不支持回调
// formatter: 标签文本格式器,同Tooltip.formatter,不支持回调
...
@@ -538,7 +558,7 @@ define('echarts/config',[],function() {
...
@@ -538,7 +558,7 @@ define('echarts/config',[],function() {
// 饼图默认参数
// 饼图默认参数
pie: {
pie: {
center : ['50%', '50%'], // 默认全局居中
center : ['50%', '50%'], // 默认全局居中
// radius: [0, min(width, height) / 2 - 50
],
radius : [0, '75%'
],
startAngle: 90,
startAngle: 90,
minAngle: 0, // 最小角度改为0
minAngle: 0, // 最小角度改为0
selectedOffset: 10, // 选中是扇区偏移量
selectedOffset: 10, // 选中是扇区偏移量
...
@@ -673,7 +693,6 @@ define('echarts/config',[],function() {
...
@@ -673,7 +693,6 @@ define('echarts/config',[],function() {
chord : {
chord : {
radius : ['65%', '75%'],
radius : ['65%', '75%'],
// Source data matrix
center : ['50%', '50%'],
center : ['50%', '50%'],
padding : 2,
padding : 2,
sort : 'none', // can be 'none', 'ascending', 'descending'
sort : 'none', // can be 'none', 'ascending', 'descending'
...
@@ -712,6 +731,7 @@ define('echarts/config',[],function() {
...
@@ -712,6 +731,7 @@ define('echarts/config',[],function() {
}
}
}
}
},
},
// Source data matrix
/**
/**
* target
* target
* -1--2--3--4--5-
* -1--2--3--4--5-
...
@@ -12650,39 +12670,39 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
...
@@ -12650,39 +12670,39 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
}
}
/**
/**
* 获取
多级控制嵌套属性
的基础方法
* 获取
嵌套选项
的基础方法
* 返回
ctrList中优先级最高(最靠前)的非undefined属性,ctrList中均无定义
则返回undefined
* 返回
optionTarget中位于optionLocation上的值,如果没有定义,
则返回undefined
*/
*/
var deepQuery = (function() {
function query(optionTarget, optionLocation) {
/**
if (typeof optionTarget == 'undefined') {
* 获取嵌套选项的基础方法
return undefined;
* 返回optionTarget中位于optionLocation上的值,如果没有定义,则返回undefined
}
*/
if (!optionLocation) {
function _query(optionTarget, optionLocation) {
return optionTarget;
}
optionLocation = optionLocation.split('.');
var length = optionLocation.length;
var curIdx = 0;
while (curIdx < length) {
optionTarget = optionTarget[optionLocation[curIdx]];
if (typeof optionTarget == 'undefined') {
if (typeof optionTarget == 'undefined') {
return undefined;
return undefined;
}
}
if (!optionLocation) {
curIdx++;
return optionTarget;
}
optionLocation = optionLocation.split('.');
var length = optionLocation.length;
var curIdx = 0;
while (curIdx < length) {
optionTarget = optionTarget[optionLocation[curIdx]];
if (typeof optionTarget == 'undefined') {
return undefined;
}
curIdx++;
}
return optionTarget;
}
}
return optionTarget;
}
/**
* 获取多级控制嵌套属性的基础方法
* 返回ctrList中优先级最高(最靠前)的非undefined属性,ctrList中均无定义则返回undefined
*/
var deepQuery = (function() {
return function(ctrList, optionLocation) {
return function(ctrList, optionLocation) {
var finalOption;
var finalOption;
for (var i = 0, l = ctrList.length; i < l; i++) {
for (var i = 0, l = ctrList.length; i < l; i++) {
finalOption =
_
query(ctrList[i], optionLocation);
finalOption = query(ctrList[i], optionLocation);
if (typeof finalOption != 'undefined') {
if (typeof finalOption != 'undefined') {
return finalOption;
return finalOption;
}
}
...
@@ -12690,6 +12710,33 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
...
@@ -12690,6 +12710,33 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
return undefined;
return undefined;
};
};
})();
})();
/**
* 获取多级控制嵌套属性的基础方法
* 根据ctrList中优先级合并产出目标属性
*/
var deepMerge = (function() {
return function(ctrList, optionLocation) {
var finalOption;
var tempOption;
var len = ctrList.length;
while (len--) {
tempOption = query(ctrList[len], optionLocation);
if (typeof tempOption != 'undefined') {
if (typeof finalOption == 'undefined') {
finalOption = zrUtil.clone(tempOption);
}
else {
zrUtil.merge(
finalOption, tempOption,
{ 'overwrite': true, 'recursive': true }
);
}
}
}
return finalOption;
};
})();
/**
/**
* 获取自定义和默认配置合并后的字体设置
* 获取自定义和默认配置合并后的字体设置
...
@@ -12711,20 +12758,9 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
...
@@ -12711,20 +12758,9 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
*/
*/
function addLabel(tarShape, serie, data, name, orient) {
function addLabel(tarShape, serie, data, name, orient) {
// 多级控制
// 多级控制
var nLabel = zrUtil.merge(
var queryTarget = [data, serie];
zrUtil.clone(
var nLabel = deepMerge(queryTarget, 'itemStyle.normal.label');
self.deepQuery([serie], 'itemStyle.normal.label')
var eLabel = deepMerge(queryTarget, 'itemStyle.emphasis.label');
),
self.deepQuery([data], 'itemStyle.normal.label'),
{ 'overwrite': true, 'recursive': true }
);
var eLabel = zrUtil.merge(
zrUtil.clone(
self.deepQuery([serie], 'itemStyle.emphasis.label')
),
self.deepQuery([data], 'itemStyle.emphasis.label'),
{ 'overwrite': true, 'recursive': true }
);
var nTextStyle = nLabel.textStyle || {};
var nTextStyle = nLabel.textStyle || {};
var eTextStyle = eLabel.textStyle || {};
var eTextStyle = eLabel.textStyle || {};
...
@@ -12819,39 +12855,31 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
...
@@ -12819,39 +12855,31 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
];
];
}
}
function _trim(str) {
/**
return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
* 获取自适应半径
}
*/
function parseRadius(radius) {
// 记录自适应原始定义,resize用
// 传数组实现环形图,[内半径,外半径],传单个则默认为外半径为
function backupAdaptiveParams(series, attrs, isAll) {
if (!(radius instanceof Array)) {
for (var i = 0, l = series.length; i < l; i++) {
radius = [0, radius];
if (isAll || series[i].type == self.type) {
for (var j = 0, k = attrs.length; j < k; j++) {
series[i]['__' + attrs[i]] = zrUtil.clone(
series[i][attrs[i]]
);
}
}
}
}
var zrSize = Math.min(self.zr.getWidth(), self.zr.getHeight()) / 2;
return [
parsePercent(radius[0], zrSize),
parsePercent(radius[1], zrSize),
];
}
}
// 还原自适应原始定义,resize用
function _trim(str) {
function restoreAdaptiveParams(series, attrs, isAll) {
return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
for (var i = 0, l = series.length; i < l; i++) {
if (isAll || series[i].type == self.type) {
for (var j = 0, k = attrs.length; j < k; j++) {
series[i][attrs[i]] = zrUtil.clone(
series[i]['__' + attrs[i]]
);
}
}
}
}
}
// 亚像素优化
// 亚像素优化
function subPixelOptimize(position, lineWidth) {
function subPixelOptimize(position, lineWidth) {
position += position == Math.ceil(position) ? 0.5 : 0;
if (lineWidth % 2 == 1) {
position += position == Math.ceil(position) ? 0.5 : 0;
}
return position;
}
}
function resize() {
function resize() {
...
@@ -12885,15 +12913,17 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
...
@@ -12885,15 +12913,17 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
self.getZlevelBase = getZlevelBase;
self.getZlevelBase = getZlevelBase;
self.reformOption = reformOption;
self.reformOption = reformOption;
self.reformCssArray = reformCssArray;
self.reformCssArray = reformCssArray;
self.query = query;
self.deepQuery = deepQuery;
self.deepQuery = deepQuery;
self.deepMerge = deepMerge;
self.getFont = getFont;
self.getFont = getFont;
self.addLabel = addLabel;
self.addLabel = addLabel;
self.parsePercent = parsePercent;
self.parsePercent = parsePercent;
self.parseCenter = parseCenter;
self.parseCenter = parseCenter;
self.parseRadius = parseRadius;
self.subPixelOptimize = subPixelOptimize;
self.clear = clear;
self.clear = clear;
self.dispose = dispose;
self.dispose = dispose;
self.backupAdaptiveParams = backupAdaptiveParams;
self.restoreAdaptiveParams = restoreAdaptiveParams;
self.resize = resize;
self.resize = resize;
}
}
...
@@ -13020,6 +13050,82 @@ define('echarts/util/ecData',[],function() {
...
@@ -13020,6 +13050,82 @@ define('echarts/util/ecData',[],function() {
get : get
get : get
};
};
});
});
/**
* 高精度数学运算
*/
define('echarts/util/accMath',[],function() {
//除法函数,用来得到精确的除法结果
//说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。
//调用:accDiv(arg1,arg2)
//返回值:arg1除以arg2的精确结果
function accDiv(arg1, arg2) {
return accMul(arg1,1 / arg2);
}
//乘法函数,用来得到精确的乘法结果
//说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
//调用:accMul(arg1,arg2)
//返回值:arg1乘以arg2的精确结果
function accMul(arg1, arg2) {
var m = 0;
var s1 = arg1.toString();
var s2 = arg2.toString();
try {
m += s1.split('.')[1].length;
}
catch(e) {}
try {
m += s2.split('.')[1].length;
}
catch(e){}
return Number(s1.replace('.', ''))
* Number(s2.replace('.', ''))
/ Math.pow(10, m);
}
//加法函数,用来得到精确的加法结果
//说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
//调用:accAdd(arg1,arg2)
//返回值:arg1加上arg2的精确结果
function accAdd(arg1,arg2) {
var r1;
var r2;
var m;
try {
r1 = arg1.toString().split('.')[1].length;
}
catch(e) {
r1 = 0;
}
try {
r2=arg2.toString().split('.')[1].length;
}
catch(e) {
r2=0;
}
m = Math.pow(10, Math.max(r1, r2));
return (Math.round(arg1 * m) + Math.round(arg2 * m)) / m;
}
//减法函数,用来得到精确的减法结果
//说明:javascript的减法结果会有误差,在两个浮点数减法的时候会比较明显。这个函数返回较为精确的减法结果。
//调用:accSub(arg1,arg2)
//返回值:arg1减法arg2的精确结果
function accSub(arg1,arg2) {
return accAdd(arg1, -arg2);
}
return {
accDiv : accDiv,
accMul : accMul,
accAdd : accAdd,
accSub : accSub
};
});
/**
/**
* echarts组件基类
* echarts组件基类
*
*
...
@@ -13027,9 +13133,10 @@ define('echarts/util/ecData',[],function() {
...
@@ -13027,9 +13133,10 @@ define('echarts/util/ecData',[],function() {
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
*
*
*/
*/
define('echarts/chart/calculableBase',['require','../util/ecData','zrender/tool/util'],function(require) {
define('echarts/chart/calculableBase',['require','../util/ecData','
../util/accMath','
zrender/tool/util'],function(require) {
function Base(zr, option){
function Base(zr, option){
var ecData = require('../util/ecData');
var ecData = require('../util/ecData');
var accMath = require('../util/accMath');
var zrUtil = require('zrender/tool/util');
var zrUtil = require('zrender/tool/util');
var self = this;
var self = this;
...
@@ -13087,12 +13194,15 @@ define('echarts/chart/calculableBase',['require','../util/ecData','zrender/tool/
...
@@ -13087,12 +13194,15 @@ define('echarts/chart/calculableBase',['require','../util/ecData','zrender/tool/
var seriesIndex = ecData.get(target, 'seriesIndex');
var seriesIndex = ecData.get(target, 'seriesIndex');
var dataIndex = ecData.get(target, 'dataIndex');
var dataIndex = ecData.get(target, 'dataIndex');
// 落到
bar
上,数据被拖拽到某个数据项上,数据修改
// 落到
数据item
上,数据被拖拽到某个数据项上,数据修改
var data = option.series[seriesIndex].data[dataIndex] || '-';
var data = option.series[seriesIndex].data[dataIndex] || '-';
if (data.value) {
if (data.value) {
if (data.value != '-') {
if (data.value != '-') {
option.series[seriesIndex].data[dataIndex].value +=
option.series[seriesIndex].data[dataIndex].value =
ecData.get(dragged, 'value');
accMath.accAdd(
option.series[seriesIndex].data[dataIndex].value,
ecData.get(dragged, 'value')
);
}
}
else {
else {
option.series[seriesIndex].data[dataIndex].value =
option.series[seriesIndex].data[dataIndex].value =
...
@@ -13101,8 +13211,11 @@ define('echarts/chart/calculableBase',['require','../util/ecData','zrender/tool/
...
@@ -13101,8 +13211,11 @@ define('echarts/chart/calculableBase',['require','../util/ecData','zrender/tool/
}
}
else {
else {
if (data != '-') {
if (data != '-') {
option.series[seriesIndex].data[dataIndex] +=
option.series[seriesIndex].data[dataIndex] =
ecData.get(dragged, 'value');
accMath.accAdd(
option.series[seriesIndex].data[dataIndex],
ecData.get(dragged, 'value')
);
}
}
else {
else {
option.series[seriesIndex].data[dataIndex] =
option.series[seriesIndex].data[dataIndex] =
...
@@ -13178,7 +13291,7 @@ define('echarts/chart/calculableBase',['require','../util/ecData','zrender/tool/
...
@@ -13178,7 +13291,7 @@ define('echarts/chart/calculableBase',['require','../util/ecData','zrender/tool/
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
*
*
*/
*/
define('echarts/chart/island',['require','../component/base','./calculableBase','../config','../util/ecData','zrender/tool/event','zrender/tool/color','../chart'],function (require) {
define('echarts/chart/island',['require','../component/base','./calculableBase','../config','../util/ecData','zrender/tool/event','zrender/tool/color','../
util/accMath','../
chart'],function (require) {
/**
/**
* 构造函数
* 构造函数
* @param {Object} messageCenter echart消息中心
* @param {Object} messageCenter echart消息中心
...
@@ -13216,8 +13329,11 @@ define('echarts/chart/island',['require','../component/base','./calculableBase',
...
@@ -13216,8 +13329,11 @@ define('echarts/chart/island',['require','../component/base','./calculableBase',
*/
*/
function _combine(tarShape, srcShape) {
function _combine(tarShape, srcShape) {
var zrColor = require('zrender/tool/color');
var zrColor = require('zrender/tool/color');
var value = ecData.get(tarShape, 'value')
var accMath = require('../util/accMath');
+ ecData.get(srcShape, 'value');
var value = accMath.accAdd(
ecData.get(tarShape, 'value'),
ecData.get(srcShape, 'value')
);
var name = ecData.get(tarShape, 'name')
var name = ecData.get(tarShape, 'name')
+ _nameConnector
+ _nameConnector
+ ecData.get(srcShape, 'name');
+ ecData.get(srcShape, 'name');
...
@@ -13956,7 +14072,23 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
...
@@ -13956,7 +14072,23 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
}
}
axShape.style.strokeColor = option.axisLine.lineStyle.color;
axShape.style.strokeColor = option.axisLine.lineStyle.color;
axShape.style.lineWidth = option.axisLine.lineStyle.width;
var lineWidth = option.axisLine.lineStyle.width;
axShape.style.lineWidth = lineWidth;
// 亚像素优化
if (option.position == 'left' || option.position == 'right') {
// 纵向布局,优化x
axShape.style.xStart
= axShape.style.xEnd
= self.subPixelOptimize(axShape.style.xEnd, lineWidth);
}
else {
// 横向布局,优化y
axShape.style.yStart
= axShape.style.yEnd
= self.subPixelOptimize(axShape.style.yEnd, lineWidth);
}
axShape.style.lineType = option.axisLine.lineStyle.type;
axShape.style.lineType = option.axisLine.lineStyle.type;
self.shapeList.push(axShape);
self.shapeList.push(axShape);
...
@@ -14124,6 +14256,8 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
...
@@ -14124,6 +14256,8 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
var axShape;
var axShape;
var data = option.data;
var data = option.data;
var dataLength = option.data.length;
var dataLength = option.data.length;
var lineType = option.splitLine.lineStyle.type;
var lineWidth = option.splitLine.lineStyle.width;
var color = option.splitLine.lineStyle.color;
var color = option.splitLine.lineStyle.color;
color = color instanceof Array ? color : [color];
color = color instanceof Array ? color : [color];
var colorLength = color.length;
var colorLength = color.length;
...
@@ -14135,7 +14269,10 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
...
@@ -14135,7 +14269,10 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
var x;
var x;
for (var i = 0; i < dataLength; i += _interval) {
for (var i = 0; i < dataLength; i += _interval) {
x = getCoord(data[i].value || data[i]);
// 亚像素优化
x = self.subPixelOptimize(
getCoord(data[i].value || data[i]), lineWidth
);
axShape = {
axShape = {
shape : 'line',
shape : 'line',
zlevel : _zlevelBase,
zlevel : _zlevelBase,
...
@@ -14146,8 +14283,8 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
...
@@ -14146,8 +14283,8 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
xEnd : x,
xEnd : x,
yEnd : ey,
yEnd : ey,
strokeColor : color[(i / _interval) % colorLength],
strokeColor : color[(i / _interval) % colorLength],
lineType :
option.splitLine.lineStyle.t
ype,
lineType :
lineT
ype,
lineWidth :
option.splitLine.lineStyle.w
idth
lineWidth :
lineW
idth
}
}
};
};
self.shapeList.push(axShape);
self.shapeList.push(axShape);
...
@@ -14161,7 +14298,10 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
...
@@ -14161,7 +14298,10 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
var y;
var y;
for (var i = 0; i < dataLength; i += _interval) {
for (var i = 0; i < dataLength; i += _interval) {
y = getCoord(data[i].value || data[i]);
// 亚像素优化
y = self.subPixelOptimize(
getCoord(data[i].value || data[i]), lineWidth
);
axShape = {
axShape = {
shape : 'line',
shape : 'line',
zlevel : _zlevelBase,
zlevel : _zlevelBase,
...
@@ -14172,8 +14312,8 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
...
@@ -14172,8 +14312,8 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
xEnd : ex,
xEnd : ex,
yEnd : y,
yEnd : y,
strokeColor : color[(i / _interval) % colorLength],
strokeColor : color[(i / _interval) % colorLength],
linetype :
option.splitLine.lineStyle.t
ype,
linetype :
lineT
ype,
lineWidth :
option.splitLine.lineStyle.w
idth
lineWidth :
lineW
idth
}
}
};
};
self.shapeList.push(axShape);
self.shapeList.push(axShape);
...
@@ -14515,7 +14655,23 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
...
@@ -14515,7 +14655,23 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
axShape.style.textPosition = option.nameLocation;
axShape.style.textPosition = option.nameLocation;
}
}
axShape.style.strokeColor = option.axisLine.lineStyle.color;
axShape.style.strokeColor = option.axisLine.lineStyle.color;
axShape.style.lineWidth = option.axisLine.lineStyle.width;
var lineWidth = option.axisLine.lineStyle.width;
axShape.style.lineWidth = lineWidth;
// 亚像素优化
if (option.position == 'left' || option.position == 'right') {
// 纵向布局,优化x
axShape.style.xStart
= axShape.style.xEnd
= self.subPixelOptimize(axShape.style.xEnd, lineWidth);
}
else {
// 横向布局,优化y
axShape.style.yStart
= axShape.style.yEnd
= self.subPixelOptimize(axShape.style.yEnd, lineWidth);
}
axShape.style.lineType = option.axisLine.lineStyle.type;
axShape.style.lineType = option.axisLine.lineStyle.type;
self.shapeList.push(axShape);
self.shapeList.push(axShape);
...
@@ -14683,6 +14839,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
...
@@ -14683,6 +14839,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
var axShape;
var axShape;
var data = _valueList;
var data = _valueList;
var dataLength = _valueList.length;
var dataLength = _valueList.length;
var lineType = option.splitLine.lineStyle.type;
var lineWidth = option.splitLine.lineStyle.width;
var color = option.splitLine.lineStyle.color;
var color = option.splitLine.lineStyle.color;
color = color instanceof Array ? color : [color];
color = color instanceof Array ? color : [color];
var colorLength = color.length;
var colorLength = color.length;
...
@@ -14694,7 +14852,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
...
@@ -14694,7 +14852,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
var x;
var x;
for (var i = 0; i < dataLength; i++) {
for (var i = 0; i < dataLength; i++) {
x = getCoord(data[i]);
// 亚像素优化
x = self.subPixelOptimize(getCoord(data[i]), lineWidth);
axShape = {
axShape = {
shape : 'line',
shape : 'line',
zlevel : _zlevelBase,
zlevel : _zlevelBase,
...
@@ -14705,8 +14864,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
...
@@ -14705,8 +14864,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
xEnd : x,
xEnd : x,
yEnd : ey,
yEnd : ey,
strokeColor : color[i % colorLength],
strokeColor : color[i % colorLength],
lineType :
option.splitLine.lineStyle.t
ype,
lineType :
lineT
ype,
lineWidth :
option.splitLine.lineStyle.w
idth
lineWidth :
lineW
idth
}
}
};
};
self.shapeList.push(axShape);
self.shapeList.push(axShape);
...
@@ -14720,7 +14879,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
...
@@ -14720,7 +14879,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
var y;
var y;
for (var i = 0; i < dataLength; i++) {
for (var i = 0; i < dataLength; i++) {
y = getCoord(data[i]);
// 亚像素优化
y = self.subPixelOptimize(getCoord(data[i]), lineWidth);
axShape = {
axShape = {
shape : 'line',
shape : 'line',
zlevel : _zlevelBase,
zlevel : _zlevelBase,
...
@@ -14731,8 +14891,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
...
@@ -14731,8 +14891,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
xEnd : ex,
xEnd : ex,
yEnd : y,
yEnd : y,
strokeColor : color[i % colorLength],
strokeColor : color[i % colorLength],
lineType :
option.splitLine.lineStyle.t
ype,
lineType :
lineT
ype,
lineWidth :
option.splitLine.lineStyle.w
idth
lineWidth :
lineW
idth
}
}
};
};
self.shapeList.push(axShape);
self.shapeList.push(axShape);
...
@@ -15553,11 +15713,8 @@ define('echarts/component/grid',['require','./base','../config','../component'],
...
@@ -15553,11 +15713,8 @@ define('echarts/component/grid',['require','./base','../config','../component'],
_height = gridOption.height;
_height = gridOption.height;
}
}
if (gridOption.borderWidth % 2 == 1) {
_x = self.subPixelOptimize(_x, gridOption.borderWidth);
// 亚像素优化
_y = self.subPixelOptimize(_y, gridOption.borderWidth);
_x += _x == Math.ceil(_x) ? 0.5 : 0;
_y += _y == Math.ceil(_y) ? 0.5 : 0;
}
self.shapeList.push({
self.shapeList.push({
shape : 'rectangle',
shape : 'rectangle',
...
@@ -17370,7 +17527,28 @@ define('echarts/component/legend',['require','./base','../config','zrender/tool/
...
@@ -17370,7 +17527,28 @@ define('echarts/component/legend',['require','./base','../config','zrender/tool/
});
});
},
},
bar : function (ctx, style) {
bar : function (ctx, style) {
ctx.rect(style.x, style.y + 1, style.width, style.height - 2);
//ctx.rect(style.x, style.y + 1, style.width, style.height - 2);
var x = style.x;
var y = style.y +1;
var width = style.width;
var height = style.height - 2;
var r = 3;
ctx.moveTo(x + r, y);
ctx.lineTo(x + width - r, y);
ctx.quadraticCurveTo(
x + width, y, x + width, y + r
);
ctx.lineTo(x + width, y + height - r);
ctx.quadraticCurveTo(
x + width, y + height, x + width - r, y + height
);
ctx.lineTo(x + r, y + height);
ctx.quadraticCurveTo(
x, y + height, x, y + height - r
);
ctx.lineTo(x, y + r);
ctx.quadraticCurveTo(x, y, x + r, y);
},
},
force : function(ctx, style) {
force : function(ctx, style) {
require('zrender/shape').get('icon').get('circle')(ctx, style);
require('zrender/shape').get('icon').get('circle')(ctx, style);
...
@@ -18680,7 +18858,7 @@ define('echarts/component/tooltip',['require','./base','../config','../util/ecDa
...
@@ -18680,7 +18858,7 @@ define('echarts/component/tooltip',['require','./base','../config','../util/ecDa
if (!opt) {
if (!opt) {
return '';
return '';
}
}
cssText = [];
var
cssText = [];
if (opt.transitionDuration) {
if (opt.transitionDuration) {
var transitionText = 'left ' + opt.transitionDuration + 's,'
var transitionText = 'left ' + opt.transitionDuration + 's,'
+ 'top ' + opt.transitionDuration + 's';
+ 'top ' + opt.transitionDuration + 's';
...
@@ -19884,14 +20062,14 @@ define('echarts/component/tooltip',['require','./base','../config','../util/ecDa
...
@@ -19884,14 +20062,14 @@ define('echarts/component/tooltip',['require','./base','../config','../util/ecDa
/**
/**
* html转码的方法
* html转码的方法
*/
*/
_encodeHTML = function
(source) {
function _encodeHTML
(source) {
return String(source)
return String(source)
.replace(/&/g, '&')
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/"/g, '"')
.replace(/'/g, ''');
.replace(/'/g, ''');
}
;
}
zr.on(zrConfig.EVENT.MOUSEMOVE, _onmousemove);
zr.on(zrConfig.EVENT.MOUSEMOVE, _onmousemove);
zr.on(zrConfig.EVENT.GLOBALOUT, _onglobalout);
zr.on(zrConfig.EVENT.GLOBALOUT, _onglobalout);
...
@@ -20026,17 +20204,29 @@ define('echarts/component/toolbox',['require','./base','../config','zrender/conf
...
@@ -20026,17 +20204,29 @@ define('echarts/component/toolbox',['require','./base','../config','zrender/conf
var color = toolboxOption.color instanceof Array
var color = toolboxOption.color instanceof Array
? toolboxOption.color : [toolboxOption.color];
? toolboxOption.color : [toolboxOption.color];
/*
var textFont = self.getFont(toolboxOption.textStyle);
var textPosition;
var textPosition;
var textAlign;
var textBaseLine;
if (toolboxOption.orient == 'horizontal') {
if (toolboxOption.orient == 'horizontal') {
textPosition =
toolboxOption.y != 'bottom'
textPosition =
_itemGroupLocation.y / zr.getHeight() < 0.5
? 'bottom' : 'top';
? 'bottom' : 'top';
textAlign = _itemGroupLocation.x / zr.getWidth() < 0.5
? 'left' : 'right';
textBaseLine = _itemGroupLocation.y / zr.getHeight() < 0.5
? 'top' : 'bottom';
}
}
else {
else {
textPosition = toolboxOption.x != 'left'
textPosition = _itemGroupLocation.x / zr.getWidth() < 0.5
? 'left' : 'right';
? 'right' : 'left';
/*
textAlign = _itemGroupLocation.x / zr.getWidth() < 0.5
? 'right' : 'left';
textBaseLine = 'top';
*/
}
}
*/
_iconShapeMap = {};
_iconShapeMap = {};
for (var i = 0; i < iconLength; i++) {
for (var i = 0; i < iconLength; i++) {
...
@@ -20060,11 +20250,38 @@ define('echarts/component/toolbox',['require','./base','../config','zrender/conf
...
@@ -20060,11 +20250,38 @@ define('echarts/component/toolbox',['require','./base','../config','zrender/conf
highlightStyle : {
highlightStyle : {
lineWidth : 2,
lineWidth : 2,
shadowBlur: 5,
shadowBlur: 5,
text : toolboxOption.showTitle
? toolboxOption.featureTitle[_iconList[i]]
: false,
textFont : textFont,
textPosition : textPosition,
strokeColor : color[i % color.length]
strokeColor : color[i % color.length]
},
},
hoverable : true,
hoverable : true,
clickable : true
clickable : true
};
};
if (toolboxOption.orient == 'horizontal') {
// 修正左对齐第一个或右对齐最后一个
if (i === 0 && textAlign == 'left') {
itemShape.highlightStyle.textPosition = 'specific';
itemShape.highlightStyle.textAlign = textAlign;
itemShape.highlightStyle.textBaseLine = textBaseLine;
itemShape.highlightStyle.textX = lastX;
itemShape.highlightStyle.textY = textBaseLine == 'top'
? lastY + itemSize + 10
: lastY - 10;
}
if (i == iconLength - 1 && textAlign == 'right') {
itemShape.highlightStyle.textPosition = 'specific';
itemShape.highlightStyle.textAlign = textAlign;
itemShape.highlightStyle.textBaseLine = textBaseLine;
itemShape.highlightStyle.textX = lastX + itemSize;
itemShape.highlightStyle.textY = textBaseLine == 'top'
? lastY + itemSize + 10
: lastY - 10;
}
}
switch(_iconList[i]) {
switch(_iconList[i]) {
case 'mark':
case 'mark':
...
@@ -21375,9 +21592,6 @@ define(
...
@@ -21375,9 +21592,6 @@ define(
var polar;
var polar;
var _width = zr.getWidth();
var _height = zr.getHeight();
var series;
var series;
var _queryTarget;
var _queryTarget;
...
@@ -21420,16 +21634,13 @@ define(
...
@@ -21420,16 +21634,13 @@ define(
var length = indicator.length;
var length = indicator.length;
var startAngle = item.startAngle ;
var startAngle = item.startAngle ;
var dStep = 2 * Math.PI / length;
var dStep = 2 * Math.PI / length;
var radius = item.radius;
var radius = self.parsePercent(
item.radius,
Math.min(zr.getWidth(), zr.getHeight()) / 2
);
var __ecIndicator = item.__ecIndicator = [];
var __ecIndicator = item.__ecIndicator = [];
var vector;
var vector;
if (typeof radius != 'number') {
radius = Math.floor(
Math.min(_width, _height) / 2 - 50
);
}
for (var i = 0 ;i < length ; i ++) {
for (var i = 0 ;i < length ; i ++) {
vector = ecCoordinates.polar2cartesian(
vector = ecCoordinates.polar2cartesian(
radius, startAngle * Math.PI / 180 + dStep * i
radius, startAngle * Math.PI / 180 + dStep * i
...
@@ -21451,7 +21662,7 @@ define(
...
@@ -21451,7 +21662,7 @@ define(
var splitArea = item.splitArea;
var splitArea = item.splitArea;
var splitLine = item.splitLine;
var splitLine = item.splitLine;
var center =
item.center
;
var center =
getCenter(index)
;
var splitNumber = item.splitNumber;
var splitNumber = item.splitNumber;
var strokeColor = splitLine.lineStyle.color;
var strokeColor = splitLine.lineStyle.color;
...
@@ -21482,7 +21693,7 @@ define(
...
@@ -21482,7 +21693,7 @@ define(
var style;
var style;
var newStyle;
var newStyle;
var splitNumber = self.deepQuery(_queryTarget, 'splitNumber');
var splitNumber = self.deepQuery(_queryTarget, 'splitNumber');
var center =
item.center
;
var center =
getCenter(index)
;
var vector;
var vector;
var value;
var value;
var text;
var text;
...
@@ -21542,7 +21753,7 @@ define(
...
@@ -21542,7 +21753,7 @@ define(
var __ecIndicator = item.__ecIndicator;
var __ecIndicator = item.__ecIndicator;
var vector;
var vector;
var indicator = self.deepQuery(_queryTarget, 'indicator');
var indicator = self.deepQuery(_queryTarget, 'indicator');
var center =
item.center
;
var center =
getCenter(index)
;
var style;
var style;
var textAlign;
var textAlign;
var name;
var name;
...
@@ -21635,7 +21846,7 @@ define(
...
@@ -21635,7 +21846,7 @@ define(
function _addDropBox(index) {
function _addDropBox(index) {
var index = index || 0;
var index = index || 0;
var item = polar[index];
var item = polar[index];
var center =
item.center
;
var center =
getCenter(index)
;
var __ecIndicator = item.__ecIndicator;
var __ecIndicator = item.__ecIndicator;
var len = __ecIndicator.length;
var len = __ecIndicator.length;
var pointList = [];
var pointList = [];
...
@@ -21805,7 +22016,7 @@ define(
...
@@ -21805,7 +22016,7 @@ define(
*/
*/
function getCenter(index) {
function getCenter(index) {
var index = index || 0;
var index = index || 0;
return
polar[index].center
;
return
self.parseCenter(polar[index].center)
;
}
}
/**
/**
...
@@ -22113,29 +22324,6 @@ define(
...
@@ -22113,29 +22324,6 @@ define(
}
}
}
}
function reformOption(opt) {
// 常用方法快捷方式
var _merge = zrUtil.merge;
opt = _merge(
opt || {},
ecConfig.polar,
{
'overwrite' : false,
'recursive' : true
}
);
opt.center = self.parseCenter(opt.center);
if (!opt.radius) {
opt.radius = Math.floor(
Math.min(_width, _height) / 2 - 50
);
}
return opt;
}
/**
/**
* 获取每个指标上某个value对应的坐标
* 获取每个指标上某个value对应的坐标
* @param {number} polarIndex
* @param {number} polarIndex
...
@@ -22153,7 +22341,7 @@ define(
...
@@ -22153,7 +22341,7 @@ define(
}
}
var indicator = polar[polarIndex].__ecIndicator[indicatorIndex];
var indicator = polar[polarIndex].__ecIndicator[indicatorIndex];
var center =
polar[polarIndex].center
;
var center =
getCenter(polarIndex)
;
var vector = indicator.vector;
var vector = indicator.vector;
var max = indicator.value.max;
var max = indicator.value.max;
var min = indicator.value.min;
var min = indicator.value.min;
...
@@ -22205,6 +22393,7 @@ define(
...
@@ -22205,6 +22393,7 @@ define(
var len;
var len;
var angle;
var angle;
var finalAngle;
var finalAngle;
var zrSize = Math.min(zr.getWidth(), zr.getHeight()) / 2;
for (var i = 0 ; i < polar.length; i ++) {
for (var i = 0 ; i < polar.length; i ++) {
item = polar[i];
item = polar[i];
center = getCenter(i);
center = getCenter(i);
...
@@ -22214,7 +22403,7 @@ define(
...
@@ -22214,7 +22403,7 @@ define(
valueIndex : 0
valueIndex : 0
};
};
}
}
radius = self.
deepQuery([item, option], 'radius'
);
radius = self.
parsePercent(item.radius, zrSize
);
startAngle = item.startAngle;
startAngle = item.startAngle;
indicator = item.indicator;
indicator = item.indicator;
len = indicator.length;
len = indicator.length;
...
@@ -22266,21 +22455,12 @@ define(
...
@@ -22266,21 +22455,12 @@ define(
option = newOption;
option = newOption;
polar = option.polar;
polar = option.polar;
series = option.series;
series = option.series;
self.backupAdaptiveParams(polar,['center', 'radius'],true);
}
}
self.clear();
self.clear();
_buildShape();
_buildShape();
}
}
function resize() {
// 复位录原始定义
self.restoreAdaptiveParams(polar, ['center', 'radius'], true);
refresh();
}
self.refresh = refresh;
self.refresh = refresh;
self.resize = resize;
self.reformOption = reformOption;
self.getVector = getVector;
self.getVector = getVector;
self.getDropBox = _addDropBox;
self.getDropBox = _addDropBox;
...
@@ -22339,10 +22519,10 @@ define(
...
@@ -22339,10 +22519,10 @@ define(
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
*
*
*/
*/
define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zrender/tool/event','zrender/config','./util/shape/icon','./chart','./chart/island','./component','./component/title','./component/axis','./component/categoryAxis','./component/valueAxis','./component/grid','./component/dataZoom','./component/legend','./component/dataRange','./component/tooltip','./component/toolbox','./component/dataView','./component/polar','./util/ecData','./chart','./component','zrender/tool/util','zrender/tool/util','zrender/tool/util','zrender/tool/color','zrender/tool/util','zrender/tool/util'],function(require) {
define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zrender/tool/event','zrender/config','./util/shape/icon','./chart','./chart/island','./component','./component/title','./component/axis','./component/categoryAxis','./component/valueAxis','./component/grid','./component/dataZoom','./component/legend','./component/dataRange','./component/tooltip','./component/toolbox','./component/dataView','./component/polar','./util/ecData','./chart','./component','zrender/tool/util','zrender/tool/util','zrender/tool/util','zrender/tool/color','zrender/tool/util','zrender/tool/util'
,'zrender/tool/util'
],function(require) {
var self = {};
var self = {};
var echarts = self; // 提供内部反向使用静态方法;
var echarts = self; // 提供内部反向使用静态方法;
self.version = '1.3.
0
';
self.version = '1.3.
1
';
self.dependencies = {
self.dependencies = {
zrender : '1.0.5'
zrender : '1.0.5'
};
};
...
@@ -22368,6 +22548,7 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -22368,6 +22548,7 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
var ecConfig = require('./config');
var ecConfig = require('./config');
var self = this;
var self = this;
var _id = '__ECharts__' + new Date() - 0;
var _zr;
var _zr;
var _option;
var _option;
var _optionBackup; // for各种change和zoom
var _optionBackup; // for各种change和zoom
...
@@ -22762,7 +22943,6 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -22762,7 +22943,6 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
while (len--) {
while (len--) {
magicOption.series[len].data = _optionBackup.series[len].data;
magicOption.series[len].data = _optionBackup.series[len].data;
}
}
return magicOption;
return magicOption;
}
}
...
@@ -22966,7 +23146,7 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -22966,7 +23146,7 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
_toolbox.render(magicOption, {dataZoom: dataZoom});
_toolbox.render(magicOption, {dataZoom: dataZoom});
if (magicOption.animation) {
if (magicOption.animation
&& !magicOption.renderAsImage
) {
var len = _chartList.length;
var len = _chartList.length;
while (len--) {
while (len--) {
_chartList[len]
_chartList[len]
...
@@ -22976,6 +23156,34 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -22976,6 +23156,34 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
}
}
_zr.render();
_zr.render();
var imgId = 'IMG' + _id;
var img = document.getElementById(imgId);
if (magicOption.renderAsImage && !G_vmlCanvasManager) {
// IE8- 不支持图片渲染形式
if (img) {
// 已经渲染过则更新显示
img.src = getDataURL(magicOption.renderAsImage);
}
else {
// 没有渲染过插入img dom
img = getImage(magicOption.renderAsImage);
img.id = imgId;
img.style.position = 'absolute';
img.style.left = 0;
img.style.top = 0;
dom.firstChild.appendChild(img);
}
un();
_zr.un();
_disposeChartList();
_zr.clear();
}
else if (img) {
// 删除可能存在的img
img.parentNode.removeChild(img);
}
img = null;
}
}
/**
/**
...
@@ -23138,6 +23346,23 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -23138,6 +23346,23 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
return self;
return self;
}
}
/**
* 返回内部持有的当前显示option克隆
*/
function getOption() {
var zrUtil = require('zrender/tool/util');
if (_optionBackup.toolbox
&& _optionBackup.toolbox.show
&& _optionBackup.toolbox.feature.magicType
&& _optionBackup.toolbox.feature.magicType.length > 0
) {
return zrUtil.clone(_getMagicOption());
}
else {
return zrUtil.clone(_getMagicOption(_island.getOption()));
}
}
/**
/**
* 数据设置快捷接口
* 数据设置快捷接口
* @param {Array} series
* @param {Array} series
...
@@ -23152,9 +23377,15 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -23152,9 +23377,15 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
_option.series = series;
_option.series = series;
self.setOption(_option, notMerge);
self.setOption(_option, notMerge);
}
}
return self;
return self;
}
}
/**
* 返回内部持有的当前显示series克隆
*/
function getSeries() {
return getOption().series;
}
/**
/**
* 动态数据添加
* 动态数据添加
...
@@ -23344,6 +23575,43 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -23344,6 +23575,43 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
return _zr;
return _zr;
}
}
/**
* 获取Base64图片dataURL
* @param {string} imgType 图片类型,支持png|jpeg,默认为png
* @return imgDataURL
*/
function getDataURL(imgType) {
if (G_vmlCanvasManager) {
return '';
}
if (_chartList.length === 0) {
// 渲染为图片
var imgId = 'IMG' + _id;
var img = document.getElementById(imgId);
if (img) {
return img.src;
}
}
imgType = imgType || 'png';
if (imgType != 'png' && imgType != 'jpeg') {
imgType = 'png';
}
return _zr.toDataURL('image/' + imgType);
}
/**
* 获取img
* @param {string} imgType 图片类型,支持png|jpeg,默认为png
* @return img dom
*/
function getImage(imgType) {
var imgDom = document.createElement('img');
imgDom.src = getDataURL(imgType);
imgDom.title = (_optionRestore.title && _optionRestore.title.text)
|| 'ECharts';
return imgDom;
}
/**
/**
* 绑定事件
* 绑定事件
* @param {Object} eventName 事件名称
* @param {Object} eventName 事件名称
...
@@ -23412,6 +23680,11 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -23412,6 +23680,11 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
*/
*/
function resize() {
function resize() {
_zr.resize();
_zr.resize();
if (_option.renderAsImage && !G_vmlCanvasManager) {
// 渲染为图片从走render模式
_render(_option);
return self;
}
// 先来后到,不能仅刷新自己,也不能在上一个循环中刷新,如坐标系数据改变会影响其他图表的大小
// 先来后到,不能仅刷新自己,也不能在上一个循环中刷新,如坐标系数据改变会影响其他图表的大小
// 所以安顺序刷新各种图表,图表内部refresh优化无需更新则不更新~
// 所以安顺序刷新各种图表,图表内部refresh优化无需更新则不更新~
for (var i = 0, l = _chartList.length; i < l; i++) {
for (var i = 0, l = _chartList.length; i < l; i++) {
...
@@ -23448,7 +23721,11 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -23448,7 +23721,11 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
self.setOption = setOption;
self.setOption = setOption;
self.setSeries = setSeries;
self.setSeries = setSeries;
self.addData = addData;
self.addData = addData;
self.getOption = getOption;
self.getSeries = getSeries;
self.getZrender = getZrender;
self.getZrender = getZrender;
self.getDataURL = getDataURL;
self.getImage = getImage;
self.on = on;
self.on = on;
self.un = un;
self.un = un;
self.showLoading = showLoading;
self.showLoading = showLoading;
...
@@ -24823,7 +25100,7 @@ define('echarts/chart/k',['require','../component/base','./calculableBase','../c
...
@@ -24823,7 +25100,7 @@ define('echarts/chart/k',['require','../component/base','./calculableBase','../c
*
*
*/
*/
define('echarts/chart/radar',['require','../component/base','./calculableBase','../config','../util/ecData','zrender/tool/color','../chart'],function(require) {
define('echarts/chart/radar',['require','../component/base','./calculableBase','../config','../util/ecData','zrender/tool/color','../
util/accMath','../
chart'],function(require) {
/**
/**
* 构造函数
* 构造函数
* @param {Object} messageCenter echart消息中心
* @param {Object} messageCenter echart消息中心
...
@@ -25194,7 +25471,6 @@ define('echarts/chart/k',['require','../component/base','./calculableBase','../c
...
@@ -25194,7 +25471,6 @@ define('echarts/chart/k',['require','../component/base','./calculableBase','../c
var value;
var value;
if (dataIndex == -1) {
if (dataIndex == -1) {
data = {
data = {
value : ecData.get(dragged, 'value'),
value : ecData.get(dragged, 'value'),
name : ecData.get(dragged, 'name')
name : ecData.get(dragged, 'name')
...
@@ -25208,13 +25484,15 @@ define('echarts/chart/k',['require','../component/base','./calculableBase','../c
...
@@ -25208,13 +25484,15 @@ define('echarts/chart/k',['require','../component/base','./calculableBase','../c
);
);
}
}
else {
else {
// 数据被拖拽到某个数据项上,数据修改
var accMath = require('../util/accMath');
data = series[seriesIndex].data[dataIndex];
data = series[seriesIndex].data[dataIndex];
legend && legend.del(data.name);
legend && legend.del(data.name);
data.name += option.nameConnector
data.name += option.nameConnector
+ ecData.get(dragged, 'name');
+ ecData.get(dragged, 'name');
value = ecData.get(dragged, 'value');
value = ecData.get(dragged, 'value');
for (var i = 0 ; i < value.length; i ++) {
for (var i = 0 ; i < value.length; i ++) {
data.value[i]
+= value[i]
;
data.value[i]
= accMath.accAdd(data.value[i], value[i])
;
}
}
legend && legend.add(
legend && legend.add(
...
@@ -28315,7 +28593,7 @@ define('echarts/chart/chord',['require','../util/shape/chord','../component/base
...
@@ -28315,7 +28593,7 @@ define('echarts/chart/chord',['require','../util/shape/chord','../component/base
[group, chordSerieSample],
[group, chordSerieSample],
'itemStyle.normal.label.textStyle.color'
'itemStyle.normal.label.textStyle.color'
) || '#fff';
) || '#fff';
sector
.style.textFont = self.getFont(self.deepQuery(
labelShape
.style.textFont = self.getFont(self.deepQuery(
[group, chordSerieSample],
[group, chordSerieSample],
'itemStyle.normal.label.textStyle'
'itemStyle.normal.label.textStyle'
));
));
...
@@ -31534,7 +31812,7 @@ define('echarts/chart/line',['require','../component/base','./calculableBase','.
...
@@ -31534,7 +31812,7 @@ define('echarts/chart/line',['require','../component/base','./calculableBase','.
style : {
style : {
pointList : singlePL,
pointList : singlePL,
strokeColor : lineColor
strokeColor : lineColor
|| normalColor
|| normalColor
|| defaultColor,
|| defaultColor,
lineWidth : lineWidth,
lineWidth : lineWidth,
lineType : lineType,
lineType : lineType,
...
@@ -31755,8 +32033,15 @@ define('echarts/chart/line',['require','../component/base','./calculableBase','.
...
@@ -31755,8 +32033,15 @@ define('echarts/chart/line',['require','../component/base','./calculableBase','.
var seriesIndex = param.seriesIndex;
var seriesIndex = param.seriesIndex;
var dataIndex = param.dataIndex;
var dataIndex = param.dataIndex;
var seriesPL;
var seriesPL;
var singlePL;
var serie;
var serie;
var queryTarget;
var queryTarget;
var lineWidth;
var normalColor;
var emphasisColor;
var defaultColor;
var len = seriesIndex.length;
var len = seriesIndex.length;
while (len--) {
while (len--) {
seriesPL = finalPLMap[seriesIndex[len]];
seriesPL = finalPLMap[seriesIndex[len]];
...
@@ -31766,21 +32051,16 @@ define('echarts/chart/line',['require','../component/base','./calculableBase','.
...
@@ -31766,21 +32051,16 @@ define('echarts/chart/line',['require','../component/base','./calculableBase','.
defaultColor = _sIndex2ColorMap[seriesIndex[len]];
defaultColor = _sIndex2ColorMap[seriesIndex[len]];
// 多级控制
// 多级控制
lineWidth = self.deepQuery(
lineWidth = self.deepQuery(
[serie], 'itemStyle.normal.lineStyle.width'
queryTarget, 'itemStyle.normal.lineStyle.width'
);
lineType = self.deepQuery(
[serie], 'itemStyle.normal.lineStyle.type'
);
lineColor = self.deepQuery(
[serie], 'itemStyle.normal.lineStyle.color'
);
);
normalColor = self.deepQuery(
normalColor = self.deepQuery(
[serie]
, 'itemStyle.normal.color'
queryTarget
, 'itemStyle.normal.color'
);
);
emphasisColor = self.deepQuery(
emphasisColor = self.deepQuery(
[serie]
, 'itemStyle.emphasis.color'
queryTarget
, 'itemStyle.emphasis.color'
);
);
var shape;
var shape;
var data;
for (var i = 0, l = seriesPL.length; i < l; i++) {
for (var i = 0, l = seriesPL.length; i < l; i++) {
singlePL = seriesPL[i];
singlePL = seriesPL[i];
for (var j = 0, k = singlePL.length; j < k; j++) {
for (var j = 0, k = singlePL.length; j < k; j++) {
...
@@ -32148,6 +32428,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -32148,6 +32428,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
var legend = component.legend;
var legend = component.legend;
var locationMap = []; // 需要返回的东西:数组位置映射到系列索引
var locationMap = []; // 需要返回的东西:数组位置映射到系列索引
var maxDataLength = 0; // 需要返回的东西:最大数据长度
var maxDataLength = 0; // 需要返回的东西:最大数据长度
var iconShape;
// 计算需要显示的个数和分配位置并记在下面这个结构里
// 计算需要显示的个数和分配位置并记在下面这个结构里
for (var i = 0, l = seriesArray.length; i < l; i++) {
for (var i = 0, l = seriesArray.length; i < l; i++) {
serie = series[seriesArray[i]];
serie = series[seriesArray[i]];
...
@@ -32156,6 +32437,15 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -32156,6 +32437,15 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
self.selectedMap[serieName] = legend.isSelected(serieName);
self.selectedMap[serieName] = legend.isSelected(serieName);
_sIndex2colorMap[seriesArray[i]] =
_sIndex2colorMap[seriesArray[i]] =
legend.getColor(serieName);
legend.getColor(serieName);
iconShape = legend.getItemShape(serieName);
if (iconShape) {
// 回调legend,换一个更形象的icon
iconShape.style.strokeColor =
serie.itemStyle.normal.borderColor;
iconShape.style.brushType = 'both';
legend.setItemShape(serieName, iconShape);
}
} else {
} else {
self.selectedMap[serieName] = true;
self.selectedMap[serieName] = true;
_sIndex2colorMap[seriesArray[i]] =
_sIndex2colorMap[seriesArray[i]] =
...
@@ -32269,7 +32559,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -32269,7 +32559,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
}
}
lastYP -= barHeight;
lastYP -= barHeight;
y = lastYP;
y = lastYP;
lastYP -= 0.5; //白色视觉分隔线宽修正
//
lastYP -= 0.5; //白色视觉分隔线宽修正
}
}
else if (value < 0){
else if (value < 0){
// 负向堆叠
// 负向堆叠
...
@@ -32282,7 +32572,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -32282,7 +32572,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
}
}
y = lastYN;
y = lastYN;
lastYN += barHeight;
lastYN += barHeight;
lastYN += 0.5; //白色视觉分隔线宽修正
//
lastYN += 0.5; //白色视觉分隔线宽修正
}
}
else {
else {
// 0值
// 0值
...
@@ -32290,7 +32580,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -32290,7 +32580,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
// 最小高度无效
// 最小高度无效
lastYP -= barHeight;
lastYP -= barHeight;
y = lastYP;
y = lastYP;
lastYP -= 0.5; //白色视觉分隔线宽修正
//
lastYP -= 0.5; //白色视觉分隔线宽修正
}
}
barShape = _getBarItem(
barShape = _getBarItem(
...
@@ -32417,7 +32707,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -32417,7 +32707,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
}
}
x = lastXP;
x = lastXP;
lastXP += barHeight;
lastXP += barHeight;
lastXP += 0.5; //白色视觉分隔线宽修正
//
lastXP += 0.5; //白色视觉分隔线宽修正
}
}
else if (value < 0){
else if (value < 0){
// 负向堆叠
// 负向堆叠
...
@@ -32430,7 +32720,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -32430,7 +32720,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
}
}
lastXN -= barHeight;
lastXN -= barHeight;
x = lastXN;
x = lastXN;
lastXN -= 0.5; //白色视觉分隔线宽修正
//
lastXN -= 0.5; //白色视觉分隔线宽修正
}
}
else {
else {
// 0值
// 0值
...
@@ -32438,7 +32728,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -32438,7 +32728,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
// 最小高度无效
// 最小高度无效
x = lastXP;
x = lastXP;
lastXP += barHeight;
lastXP += barHeight;
lastXP += 0.5; //白色视觉分隔线宽修正
//
lastXP += 0.5; //白色视觉分隔线宽修正
}
}
barShape = _getBarItem(
barShape = _getBarItem(
...
@@ -32511,7 +32801,6 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -32511,7 +32801,6 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
var sBarWidth;
var sBarWidth;
var sBarWidthCounter = 0;
var sBarWidthCounter = 0;
var sBarWidthTotal = 0;
var sBarWidthTotal = 0;
var sBarMinHeight;
var barGap;
var barGap;
var barCategoryGap;
var barCategoryGap;
var hasFound;
var hasFound;
...
@@ -32521,10 +32810,10 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -32521,10 +32810,10 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
hasFound = false; // 同一堆叠第一个barWidth生效
hasFound = false; // 同一堆叠第一个barWidth生效
for (var m = 0, n = locationMap[j].length; m < n; m++) {
for (var m = 0, n = locationMap[j].length; m < n; m++) {
seriesIndex = locationMap[j][m];
seriesIndex = locationMap[j][m];
queryTarget =
[series[seriesIndex]
];
queryTarget =
series[seriesIndex
];
if (!ignoreUserDefined) {
if (!ignoreUserDefined) {
if (!hasFound) {
if (!hasFound) {
sBarWidth = self.
deepQ
uery(
sBarWidth = self.
q
uery(
queryTarget,
queryTarget,
'barWidth'
'barWidth'
);
);
...
@@ -32539,19 +32828,19 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -32539,19 +32828,19 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
}
}
}
}
barMinHeightMap[seriesIndex] = self.
deepQ
uery(
barMinHeightMap[seriesIndex] = self.
q
uery(
queryTarget,
queryTarget,
'barMinHeight'
'barMinHeight'
);
);
barGap = typeof barGap != 'undefined'
barGap = typeof barGap != 'undefined'
? barGap
? barGap
: self.
deepQ
uery(
: self.
q
uery(
queryTarget,
queryTarget,
'barGap'
'barGap'
);
);
barCategoryGap = typeof barCategoryGap != 'undefined'
barCategoryGap = typeof barCategoryGap != 'undefined'
? barCategoryGap
? barCategoryGap
: self.
deepQ
uery(
: self.
q
uery(
queryTarget,
queryTarget,
'barCategoryGap'
'barCategoryGap'
);
);
...
@@ -32656,14 +32945,24 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -32656,14 +32945,24 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
var data = serie.data[dataIndex];
var data = serie.data[dataIndex];
// 多级控制
// 多级控制
var defaultColor = _sIndex2colorMap[seriesIndex];
var defaultColor = _sIndex2colorMap[seriesIndex];
var queryTarget = [data, serie];
var normalColor = self.deepQuery(
var normalColor = self.deepQuery(
[data, serie]
,
queryTarget
,
'itemStyle.normal.color'
'itemStyle.normal.color'
) || defaultColor;
) || defaultColor;
var emphasisColor = self.deepQuery(
var emphasisColor = self.deepQuery(
[data, serie]
,
queryTarget
,
'itemStyle.emphasis.color'
'itemStyle.emphasis.color'
);
);
var normal = self.deepMerge(
queryTarget,
'itemStyle.normal'
);
var normalBorderWidth = normal.borderWidth;
var emphasis = self.deepMerge(
queryTarget,
'itemStyle.emphasis'
);
barShape = {
barShape = {
shape : 'rectangle',
shape : 'rectangle',
zlevel : _zlevelBase,
zlevel : _zlevelBase,
...
@@ -32675,7 +32974,9 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -32675,7 +32974,9 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
height : height,
height : height,
brushType : 'both',
brushType : 'both',
color : normalColor,
color : normalColor,
strokeColor : '#fff'
radius : normal.borderRadius,
lineWidth : normalBorderWidth,
strokeColor : normal.borderColor
},
},
highlightStyle : {
highlightStyle : {
color : emphasisColor
color : emphasisColor
...
@@ -32683,19 +32984,31 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -32683,19 +32984,31 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
? zrColor.lift(normalColor, -0.2)
? zrColor.lift(normalColor, -0.2)
: normalColor
: normalColor
),
),
strokeColor : 'rgba(0,0,0,0)'
radius : emphasis.borderRadius,
lineWidth : emphasis.borderWidth,
strokeColor : emphasis.borderColor
},
},
_orient : orient
_orient : orient
};
};
// 考虑线宽的显示优化
if (barShape.style.height > normalBorderWidth
&& barShape.style.width > normalBorderWidth
) {
barShape.style.y += normalBorderWidth / 2;
barShape.style.height -= normalBorderWidth;
barShape.style.x += normalBorderWidth / 2;
barShape.style.width -= normalBorderWidth;
}
else {
// 太小了,废了边线
barShape.style.brushType = 'fill';
}
barShape.highlightStyle.textColor = barShape.highlightStyle.color;
barShape.highlightStyle.textColor = barShape.highlightStyle.color;
barShape = self.addLabel(barShape, serie, data, name, orient);
barShape = self.addLabel(barShape, serie, data, name, orient);
if (self.deepQuery(
if (self.deepQuery([data, serie, option],'calculable')) {
[data, serie, option],
'calculable'
)
) {
self.setCalculable(barShape);
self.setCalculable(barShape);
barShape.draggable = true;
barShape.draggable = true;
}
}
...
@@ -32929,7 +33242,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -32929,7 +33242,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
*
*
*/
*/
define('echarts/chart/pie',['require','../component/base','./calculableBase','../config','../util/ecData','zrender/tool/math','zrender/tool/util','zrender/tool/color','../chart'],function(require) {
define('echarts/chart/pie',['require','../component/base','./calculableBase','../config','../util/ecData','zrender/tool/math','zrender/tool/util','zrender/tool/color','../
util/accMath','../
chart'],function(require) {
/**
/**
* 构造函数
* 构造函数
* @param {Object} messageCenter echart消息中心
* @param {Object} messageCenter echart消息中心
...
@@ -32965,26 +33278,29 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -32965,26 +33278,29 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
function _buildShape() {
function _buildShape() {
self.selectedMap = {};
self.selectedMap = {};
_selected = {};
_selected = {};
var center;
var radius;
var pieCase; // 饼图箱子
var pieCase; // 饼图箱子
_selectedMode = false;
_selectedMode = false;
for (var i = 0, l = series.length; i < l; i++) {
for (var i = 0, l = series.length; i < l; i++) {
if (series[i].type == ecConfig.CHART_TYPE_PIE) {
if (series[i].type == ecConfig.CHART_TYPE_PIE) {
series[i] = self.reformOption(series[i]);
series[i] = self.reformOption(series[i]);
center = self.parseCenter(series[i].center);
radius = self.parseRadius(series[i].radius);
_selectedMode = _selectedMode || series[i].selectedMode;
_selectedMode = _selectedMode || series[i].selectedMode;
_selected[i] = [];
_selected[i] = [];
if (self.deepQuery([series[i], option], 'calculable')) {
if (self.deepQuery([series[i], option], 'calculable')) {
pieCase = {
pieCase = {
shape : series[i].radius[0] <= 10
shape : radius[0] <= 10 ? 'circle' : 'ring',
? 'circle' : 'ring',
zlevel : _zlevelBase,
zlevel : _zlevelBase,
hoverable : false,
hoverable : false,
style : {
style : {
x :
series[i].
center[0], // 圆心横坐标
x : center[0], // 圆心横坐标
y :
series[i].
center[1], // 圆心纵坐标
y : center[1], // 圆心纵坐标
r0 : series[i].radius[0] <= 10 // 圆环内
半径
// 圆环内外
半径
? 0 : series[i].
radius[0] - 10,
r0 : radius[0] <= 10 ? 0 :
radius[0] - 10,
r :
series[i].radius[1] + 10, // 圆环外半径
r :
radius[1] + 10,
brushType : 'stroke',
brushType : 'stroke',
strokeColor : series[i].calculableHolderColor
strokeColor : series[i].calculableHolderColor
|| ecConfig.calculableHolderColor
|| ecConfig.calculableHolderColor
...
@@ -33040,6 +33356,7 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -33040,6 +33356,7 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
var totalAngle = 360 - (minAngle * totalSelected);
var totalAngle = 360 - (minAngle * totalSelected);
var defaultColor;
var defaultColor;
var roseType = serie.roseType;
var roseType = serie.roseType;
var radius;
var r0; // 扇形内半径
var r0; // 扇形内半径
var r1; // 扇形外半径
var r1; // 扇形外半径
...
@@ -33069,8 +33386,9 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -33069,8 +33386,9 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
}
}
percent = (percent * 100).toFixed(2);
percent = (percent * 100).toFixed(2);
r0 = +serie.radius[0];
radius = self.parseRadius(serie.radius);
r1 = +serie.radius[1];
r0 = +radius[0];
r1 = +radius[1];
if (roseType == 'radius') {
if (roseType == 'radius') {
r1 = data[i].value / maxValue * (r1 - r0) * 0.8
r1 = data[i].value / maxValue * (r1 - r0) * 0.8
...
@@ -33148,6 +33466,7 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -33148,6 +33466,7 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
) {
) {
var serie = series[seriesIndex];
var serie = series[seriesIndex];
var data = serie.data[dataIndex];
var data = serie.data[dataIndex];
var center = self.parseCenter(serie.center);
// 多级控制
// 多级控制
var normalColor = self.deepQuery(
var normalColor = self.deepQuery(
...
@@ -33165,8 +33484,8 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -33165,8 +33484,8 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
zlevel : _zlevelBase,
zlevel : _zlevelBase,
clickable : true,
clickable : true,
style : {
style : {
x :
serie.
center[0], // 圆心横坐标
x : center[0], // 圆心横坐标
y :
serie.
center[1], // 圆心纵坐标
y : center[1], // 圆心纵坐标
r0 : r0, // 圆环内半径
r0 : r0, // 圆环内半径
r : r1, // 圆环外半径
r : r1, // 圆环外半径
startAngle : startAngle,
startAngle : startAngle,
...
@@ -33239,12 +33558,12 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -33239,12 +33558,12 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
'itemStyle.normal.label.textStyle.baseline'
'itemStyle.normal.label.textStyle.baseline'
) || 'middle';
) || 'middle';
sector.style.textX = Math.round(
sector.style.textX = Math.round(
serie.
center[0]
center[0]
+ (r1 + r0) / 2
+ (r1 + r0) / 2
* zrMath.cos((startAngle + endAngle) / 2, true)
* zrMath.cos((startAngle + endAngle) / 2, true)
);
);
sector.style.textY = Math.round(
sector.style.textY = Math.round(
serie.
center[1]
center[1]
- (r1 + r0) / 2
- (r1 + r0) / 2
* zrMath.sin((startAngle + endAngle) / 2, true)
* zrMath.sin((startAngle + endAngle) / 2, true)
);
);
...
@@ -33277,12 +33596,12 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -33277,12 +33596,12 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
'itemStyle.normal.label.textStyle.baseline'
'itemStyle.normal.label.textStyle.baseline'
) || 'middle';
) || 'middle';
sector.highlightStyle.textX = Math.round(
sector.highlightStyle.textX = Math.round(
serie.
center[0]
center[0]
+ (r1 + r0) / 2
+ (r1 + r0) / 2
* zrMath.cos((startAngle + endAngle) / 2, true)
* zrMath.cos((startAngle + endAngle) / 2, true)
);
);
sector.highlightStyle.textY = Math.round(
sector.highlightStyle.textY = Math.round(
serie.
center[1]
center[1]
- (r1 + r0) / 2
- (r1 + r0) / 2
* zrMath.sin((startAngle + endAngle) / 2, true)
* zrMath.sin((startAngle + endAngle) / 2, true)
);
);
...
@@ -33311,6 +33630,7 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -33311,6 +33630,7 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
) {
) {
var serie = series[seriesIndex];
var serie = series[seriesIndex];
var data = serie.data[dataIndex];
var data = serie.data[dataIndex];
// 特定状态下是否需要显示文本标签
// 特定状态下是否需要显示文本标签
if (_needLabel(serie, data, isEmphasis)) {
if (_needLabel(serie, data, isEmphasis)) {
var status = isEmphasis ? 'emphasis' : 'normal';
var status = isEmphasis ? 'emphasis' : 'normal';
...
@@ -33328,14 +33648,15 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -33328,14 +33648,15 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
var labelControl = itemStyle[status].label;
var labelControl = itemStyle[status].label;
var textStyle = labelControl.textStyle || {};
var textStyle = labelControl.textStyle || {};
var centerX = serie.center[0]; // 圆心横坐标
var center = self.parseCenter(serie.center);
var centerY = serie.center[1]; // 圆心纵坐标
var centerX = center[0]; // 圆心横坐标
var centerY = center[1]; // 圆心纵坐标
var midAngle = ((endAngle + startAngle) / 2) % 360; // 角度中值
var midAngle = ((endAngle + startAngle) / 2) % 360; // 角度中值
var radius
;
// 标签位置半径
var radius
= self.parseRadius(serie.radius);
// 标签位置半径
var textAlign;
var textAlign;
if (labelControl.position == 'outer') {
if (labelControl.position == 'outer') {
// 外部显示,默认
// 外部显示,默认
radius =
serie.
radius[1]
radius = radius[1]
- (-itemStyle[status].labelLine.length)
- (-itemStyle[status].labelLine.length)
- (-textStyle.fontSize);
- (-textStyle.fontSize);
textAlign = (midAngle >= 150 && midAngle <= 210)
textAlign = (midAngle >= 150 && midAngle <= 210)
...
@@ -33394,11 +33715,6 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -33394,11 +33715,6 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
else {
else {
// 内部显示由sector自带,不返回即可
// 内部显示由sector自带,不返回即可
return;
return;
/*
radius = (serie.radius[0] + serie.radius[1]) / 2;
textAlign = 'center';
defaultColor = '#fff';
*/
}
}
}
}
else {
else {
...
@@ -33473,12 +33789,14 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -33473,12 +33789,14 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
var labelLineControl = itemStyle[status].labelLine;
var labelLineControl = itemStyle[status].labelLine;
var lineStyle = labelLineControl.lineStyle || {};
var lineStyle = labelLineControl.lineStyle || {};
var centerX = serie.center[0]; // 圆心横坐标
var center = self.parseCenter(serie.center);
var centerY = serie.center[1]; // 圆心纵坐标
var centerX = center[0]; // 圆心横坐标
var centerY = center[1]; // 圆心纵坐标
// 视觉引导线起点半径
// 视觉引导线起点半径
var midRadius = r1;
var midRadius = r1;
// 视觉引导线终点半径
// 视觉引导线终点半径
var maxRadius = serie.radius[1] - (-labelLineControl.length);
var maxRadius = self.parseRadius(serie.radius)[1]
- (-labelLineControl.length);
var midAngle = ((endAngle + startAngle) / 2) % 360; // 角度中值
var midAngle = ((endAngle + startAngle) / 2) % 360; // 角度中值
var cosValue = zrMath.cos(midAngle, true);
var cosValue = zrMath.cos(midAngle, true);
var sinValue = zrMath.sin(midAngle, true);
var sinValue = zrMath.sin(midAngle, true);
...
@@ -33549,18 +33867,6 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -33549,18 +33867,6 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
'recursive' : true
'recursive' : true
}
}
);
);
//console.log(opt)
opt.center = self.parseCenter(opt.center);
// 传数组实现环形图,[内半径,外半径],传单个则默认为外半径为
if (typeof opt.radius == 'undefined') {
opt.radius = [
0,
Math.round(Math.min(zr.getWidth(), zr.getHeight()) / 2 - 50)
];
} else if (!(opt.radius instanceof Array)) {
opt.radius = [0, opt.radius];
}
// 通用字体设置
// 通用字体设置
opt.itemStyle.normal.label.textStyle = _merge(
opt.itemStyle.normal.label.textStyle = _merge(
...
@@ -33600,18 +33906,11 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -33600,18 +33906,11 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
if (newOption) {
if (newOption) {
option = newOption;
option = newOption;
series = option.series;
series = option.series;
self.backupAdaptiveParams(series, ['center', 'radius']);
}
}
self.clear();
self.clear();
_buildShape();
_buildShape();
}
}
function resize() {
// 复位录原始定义
self.restoreAdaptiveParams(series, ['center', 'radius']);
refresh();
}
/**
/**
* 动态数据增加动画
* 动态数据增加动画
* 心跳效果
* 心跳效果
...
@@ -33981,11 +34280,15 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -33981,11 +34280,15 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
}
}
else {
else {
// 落到sector上,数据被拖拽到某个数据项上,数据修改
// 落到sector上,数据被拖拽到某个数据项上,数据修改
var accMath = require('../util/accMath');
data = series[seriesIndex].data[dataIndex];
data = series[seriesIndex].data[dataIndex];
legend && legend.del(data.name);
legend && legend.del(data.name);
data.name += option.nameConnector
data.name += option.nameConnector
+ ecData.get(dragged, 'name');
+ ecData.get(dragged, 'name');
data.value += ecData.get(dragged, 'value');
data.value = accMath.accAdd(
data.value,
ecData.get(dragged, 'value')
);
legend && legend.add(
legend && legend.add(
data.name,
data.name,
dragged.style.color || dragged.style.strokeColor
dragged.style.color || dragged.style.strokeColor
...
@@ -34070,7 +34373,6 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -34070,7 +34373,6 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
// 接口方法
// 接口方法
self.init = init;
self.init = init;
self.refresh = refresh;
self.refresh = refresh;
self.resize = resize;
self.addDataAnimation = addDataAnimation;
self.addDataAnimation = addDataAnimation;
self.animation = animation;
self.animation = animation;
self.onclick = onclick;
self.onclick = onclick;
doc/example/www/js/echarts-original.js
浏览文件 @
ebaeab5d
...
@@ -152,10 +152,24 @@ define('echarts/config',[],function() {
...
@@ -152,10 +152,24 @@ define('echarts/config',[],function() {
itemSize: 16, // 工具箱图形宽度,非标准参数
itemSize: 16, // 工具箱图形宽度,非标准参数
feature : {
feature : {
//mark : true,
//mark : true,
//dataZoom : true,
//dataView : {readOnly: false},
//dataView : {readOnly: false},
//magicType: ['line', 'bar'],
//magicType: ['line', 'bar'],
//restore : true,
//restore : true,
//saveAsImage : true
//saveAsImage : true
},
showTitle : true,
featureTitle : {
mark : '辅助线开关',
markUndo : '删除辅助线',
markClear : '清空辅助线',
dataZoom : '区域缩放',
dataZoomReset : '区域缩放后退',
dataView : '数据视图',
lineChart : '折线图切换',
barChart : '柱形图切换',
restore : '还原',
saveAsImage : '保存为图片'
}
}
},
},
...
@@ -211,7 +225,7 @@ define('echarts/config',[],function() {
...
@@ -211,7 +225,7 @@ define('echarts/config',[],function() {
// yAxisIndex: [], // 默认控制所有横向类目
// yAxisIndex: [], // 默认控制所有横向类目
// start: 0, // 默认为0
// start: 0, // 默认为0
// end: 100, // 默认为全部 100%
// end: 100, // 默认为全部 100%
realtime:
fals
e
realtime:
tru
e
// zoomLock: false // 是否锁定选择区域大小
// zoomLock: false // 是否锁定选择区域大小
},
},
...
@@ -333,7 +347,7 @@ define('echarts/config',[],function() {
...
@@ -333,7 +347,7 @@ define('echarts/config',[],function() {
polar : {
polar : {
center : ['50%', '50%'], // 默认全局居中
center : ['50%', '50%'], // 默认全局居中
// radius: 'min(width, height) / 2 - 50
',
radius : '75%
',
startAngle : 90,
startAngle : 90,
splitNumber : 5,
splitNumber : 5,
name : {
name : {
...
@@ -385,6 +399,9 @@ define('echarts/config',[],function() {
...
@@ -385,6 +399,9 @@ define('echarts/config',[],function() {
barCategoryGap : '20%', // 类目间柱形距离,默认为类目间距的20%,可设固定值
barCategoryGap : '20%', // 类目间柱形距离,默认为类目间距的20%,可设固定值
itemStyle: {
itemStyle: {
normal: {
normal: {
borderColor: '#fff', // 柱条边线
borderRadius: 0, // 柱条边线圆角,单位px,默认为0
borderWidth: 1, // 柱条边线线宽,单位px,默认为1
label: {
label: {
show: false
show: false
// formatter: 标签文本格式器,同Tooltip.formatter,不支持回调
// formatter: 标签文本格式器,同Tooltip.formatter,不支持回调
...
@@ -394,6 +411,9 @@ define('echarts/config',[],function() {
...
@@ -394,6 +411,9 @@ define('echarts/config',[],function() {
}
}
},
},
emphasis: {
emphasis: {
borderColor: 'rgba(0,0,0,0)', // 柱条边线
borderRadius: 0, // 柱条边线圆角,单位px,默认为0
borderWidth: 1, // 柱条边线线宽,单位px,默认为1
label: {
label: {
show: false
show: false
// formatter: 标签文本格式器,同Tooltip.formatter,不支持回调
// formatter: 标签文本格式器,同Tooltip.formatter,不支持回调
...
@@ -538,7 +558,7 @@ define('echarts/config',[],function() {
...
@@ -538,7 +558,7 @@ define('echarts/config',[],function() {
// 饼图默认参数
// 饼图默认参数
pie: {
pie: {
center : ['50%', '50%'], // 默认全局居中
center : ['50%', '50%'], // 默认全局居中
// radius: [0, min(width, height) / 2 - 50
],
radius : [0, '75%'
],
startAngle: 90,
startAngle: 90,
minAngle: 0, // 最小角度改为0
minAngle: 0, // 最小角度改为0
selectedOffset: 10, // 选中是扇区偏移量
selectedOffset: 10, // 选中是扇区偏移量
...
@@ -673,7 +693,6 @@ define('echarts/config',[],function() {
...
@@ -673,7 +693,6 @@ define('echarts/config',[],function() {
chord : {
chord : {
radius : ['65%', '75%'],
radius : ['65%', '75%'],
// Source data matrix
center : ['50%', '50%'],
center : ['50%', '50%'],
padding : 2,
padding : 2,
sort : 'none', // can be 'none', 'ascending', 'descending'
sort : 'none', // can be 'none', 'ascending', 'descending'
...
@@ -712,6 +731,7 @@ define('echarts/config',[],function() {
...
@@ -712,6 +731,7 @@ define('echarts/config',[],function() {
}
}
}
}
},
},
// Source data matrix
/**
/**
* target
* target
* -1--2--3--4--5-
* -1--2--3--4--5-
...
@@ -12650,39 +12670,39 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
...
@@ -12650,39 +12670,39 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
}
}
/**
/**
* 获取
多级控制嵌套属性
的基础方法
* 获取
嵌套选项
的基础方法
* 返回
ctrList中优先级最高(最靠前)的非undefined属性,ctrList中均无定义
则返回undefined
* 返回
optionTarget中位于optionLocation上的值,如果没有定义,
则返回undefined
*/
*/
var deepQuery = (function() {
function query(optionTarget, optionLocation) {
/**
if (typeof optionTarget == 'undefined') {
* 获取嵌套选项的基础方法
return undefined;
* 返回optionTarget中位于optionLocation上的值,如果没有定义,则返回undefined
}
*/
if (!optionLocation) {
function _query(optionTarget, optionLocation) {
return optionTarget;
}
optionLocation = optionLocation.split('.');
var length = optionLocation.length;
var curIdx = 0;
while (curIdx < length) {
optionTarget = optionTarget[optionLocation[curIdx]];
if (typeof optionTarget == 'undefined') {
if (typeof optionTarget == 'undefined') {
return undefined;
return undefined;
}
}
if (!optionLocation) {
curIdx++;
return optionTarget;
}
optionLocation = optionLocation.split('.');
var length = optionLocation.length;
var curIdx = 0;
while (curIdx < length) {
optionTarget = optionTarget[optionLocation[curIdx]];
if (typeof optionTarget == 'undefined') {
return undefined;
}
curIdx++;
}
return optionTarget;
}
}
return optionTarget;
}
/**
* 获取多级控制嵌套属性的基础方法
* 返回ctrList中优先级最高(最靠前)的非undefined属性,ctrList中均无定义则返回undefined
*/
var deepQuery = (function() {
return function(ctrList, optionLocation) {
return function(ctrList, optionLocation) {
var finalOption;
var finalOption;
for (var i = 0, l = ctrList.length; i < l; i++) {
for (var i = 0, l = ctrList.length; i < l; i++) {
finalOption =
_
query(ctrList[i], optionLocation);
finalOption = query(ctrList[i], optionLocation);
if (typeof finalOption != 'undefined') {
if (typeof finalOption != 'undefined') {
return finalOption;
return finalOption;
}
}
...
@@ -12690,6 +12710,33 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
...
@@ -12690,6 +12710,33 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
return undefined;
return undefined;
};
};
})();
})();
/**
* 获取多级控制嵌套属性的基础方法
* 根据ctrList中优先级合并产出目标属性
*/
var deepMerge = (function() {
return function(ctrList, optionLocation) {
var finalOption;
var tempOption;
var len = ctrList.length;
while (len--) {
tempOption = query(ctrList[len], optionLocation);
if (typeof tempOption != 'undefined') {
if (typeof finalOption == 'undefined') {
finalOption = zrUtil.clone(tempOption);
}
else {
zrUtil.merge(
finalOption, tempOption,
{ 'overwrite': true, 'recursive': true }
);
}
}
}
return finalOption;
};
})();
/**
/**
* 获取自定义和默认配置合并后的字体设置
* 获取自定义和默认配置合并后的字体设置
...
@@ -12711,20 +12758,9 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
...
@@ -12711,20 +12758,9 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
*/
*/
function addLabel(tarShape, serie, data, name, orient) {
function addLabel(tarShape, serie, data, name, orient) {
// 多级控制
// 多级控制
var nLabel = zrUtil.merge(
var queryTarget = [data, serie];
zrUtil.clone(
var nLabel = deepMerge(queryTarget, 'itemStyle.normal.label');
self.deepQuery([serie], 'itemStyle.normal.label')
var eLabel = deepMerge(queryTarget, 'itemStyle.emphasis.label');
),
self.deepQuery([data], 'itemStyle.normal.label'),
{ 'overwrite': true, 'recursive': true }
);
var eLabel = zrUtil.merge(
zrUtil.clone(
self.deepQuery([serie], 'itemStyle.emphasis.label')
),
self.deepQuery([data], 'itemStyle.emphasis.label'),
{ 'overwrite': true, 'recursive': true }
);
var nTextStyle = nLabel.textStyle || {};
var nTextStyle = nLabel.textStyle || {};
var eTextStyle = eLabel.textStyle || {};
var eTextStyle = eLabel.textStyle || {};
...
@@ -12819,39 +12855,31 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
...
@@ -12819,39 +12855,31 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
];
];
}
}
function _trim(str) {
/**
return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
* 获取自适应半径
}
*/
function parseRadius(radius) {
// 记录自适应原始定义,resize用
// 传数组实现环形图,[内半径,外半径],传单个则默认为外半径为
function backupAdaptiveParams(series, attrs, isAll) {
if (!(radius instanceof Array)) {
for (var i = 0, l = series.length; i < l; i++) {
radius = [0, radius];
if (isAll || series[i].type == self.type) {
for (var j = 0, k = attrs.length; j < k; j++) {
series[i]['__' + attrs[i]] = zrUtil.clone(
series[i][attrs[i]]
);
}
}
}
}
var zrSize = Math.min(self.zr.getWidth(), self.zr.getHeight()) / 2;
return [
parsePercent(radius[0], zrSize),
parsePercent(radius[1], zrSize),
];
}
}
// 还原自适应原始定义,resize用
function _trim(str) {
function restoreAdaptiveParams(series, attrs, isAll) {
return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
for (var i = 0, l = series.length; i < l; i++) {
if (isAll || series[i].type == self.type) {
for (var j = 0, k = attrs.length; j < k; j++) {
series[i][attrs[i]] = zrUtil.clone(
series[i]['__' + attrs[i]]
);
}
}
}
}
}
// 亚像素优化
// 亚像素优化
function subPixelOptimize(position, lineWidth) {
function subPixelOptimize(position, lineWidth) {
position += position == Math.ceil(position) ? 0.5 : 0;
if (lineWidth % 2 == 1) {
position += position == Math.ceil(position) ? 0.5 : 0;
}
return position;
}
}
function resize() {
function resize() {
...
@@ -12885,15 +12913,17 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
...
@@ -12885,15 +12913,17 @@ define('echarts/component/base',['require','../config','zrender/tool/util'],func
self.getZlevelBase = getZlevelBase;
self.getZlevelBase = getZlevelBase;
self.reformOption = reformOption;
self.reformOption = reformOption;
self.reformCssArray = reformCssArray;
self.reformCssArray = reformCssArray;
self.query = query;
self.deepQuery = deepQuery;
self.deepQuery = deepQuery;
self.deepMerge = deepMerge;
self.getFont = getFont;
self.getFont = getFont;
self.addLabel = addLabel;
self.addLabel = addLabel;
self.parsePercent = parsePercent;
self.parsePercent = parsePercent;
self.parseCenter = parseCenter;
self.parseCenter = parseCenter;
self.parseRadius = parseRadius;
self.subPixelOptimize = subPixelOptimize;
self.clear = clear;
self.clear = clear;
self.dispose = dispose;
self.dispose = dispose;
self.backupAdaptiveParams = backupAdaptiveParams;
self.restoreAdaptiveParams = restoreAdaptiveParams;
self.resize = resize;
self.resize = resize;
}
}
...
@@ -13020,6 +13050,82 @@ define('echarts/util/ecData',[],function() {
...
@@ -13020,6 +13050,82 @@ define('echarts/util/ecData',[],function() {
get : get
get : get
};
};
});
});
/**
* 高精度数学运算
*/
define('echarts/util/accMath',[],function() {
//除法函数,用来得到精确的除法结果
//说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。
//调用:accDiv(arg1,arg2)
//返回值:arg1除以arg2的精确结果
function accDiv(arg1, arg2) {
return accMul(arg1,1 / arg2);
}
//乘法函数,用来得到精确的乘法结果
//说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
//调用:accMul(arg1,arg2)
//返回值:arg1乘以arg2的精确结果
function accMul(arg1, arg2) {
var m = 0;
var s1 = arg1.toString();
var s2 = arg2.toString();
try {
m += s1.split('.')[1].length;
}
catch(e) {}
try {
m += s2.split('.')[1].length;
}
catch(e){}
return Number(s1.replace('.', ''))
* Number(s2.replace('.', ''))
/ Math.pow(10, m);
}
//加法函数,用来得到精确的加法结果
//说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
//调用:accAdd(arg1,arg2)
//返回值:arg1加上arg2的精确结果
function accAdd(arg1,arg2) {
var r1;
var r2;
var m;
try {
r1 = arg1.toString().split('.')[1].length;
}
catch(e) {
r1 = 0;
}
try {
r2=arg2.toString().split('.')[1].length;
}
catch(e) {
r2=0;
}
m = Math.pow(10, Math.max(r1, r2));
return (Math.round(arg1 * m) + Math.round(arg2 * m)) / m;
}
//减法函数,用来得到精确的减法结果
//说明:javascript的减法结果会有误差,在两个浮点数减法的时候会比较明显。这个函数返回较为精确的减法结果。
//调用:accSub(arg1,arg2)
//返回值:arg1减法arg2的精确结果
function accSub(arg1,arg2) {
return accAdd(arg1, -arg2);
}
return {
accDiv : accDiv,
accMul : accMul,
accAdd : accAdd,
accSub : accSub
};
});
/**
/**
* echarts组件基类
* echarts组件基类
*
*
...
@@ -13027,9 +13133,10 @@ define('echarts/util/ecData',[],function() {
...
@@ -13027,9 +13133,10 @@ define('echarts/util/ecData',[],function() {
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
*
*
*/
*/
define('echarts/chart/calculableBase',['require','../util/ecData','zrender/tool/util'],function(require) {
define('echarts/chart/calculableBase',['require','../util/ecData','
../util/accMath','
zrender/tool/util'],function(require) {
function Base(zr, option){
function Base(zr, option){
var ecData = require('../util/ecData');
var ecData = require('../util/ecData');
var accMath = require('../util/accMath');
var zrUtil = require('zrender/tool/util');
var zrUtil = require('zrender/tool/util');
var self = this;
var self = this;
...
@@ -13087,12 +13194,15 @@ define('echarts/chart/calculableBase',['require','../util/ecData','zrender/tool/
...
@@ -13087,12 +13194,15 @@ define('echarts/chart/calculableBase',['require','../util/ecData','zrender/tool/
var seriesIndex = ecData.get(target, 'seriesIndex');
var seriesIndex = ecData.get(target, 'seriesIndex');
var dataIndex = ecData.get(target, 'dataIndex');
var dataIndex = ecData.get(target, 'dataIndex');
// 落到
bar
上,数据被拖拽到某个数据项上,数据修改
// 落到
数据item
上,数据被拖拽到某个数据项上,数据修改
var data = option.series[seriesIndex].data[dataIndex] || '-';
var data = option.series[seriesIndex].data[dataIndex] || '-';
if (data.value) {
if (data.value) {
if (data.value != '-') {
if (data.value != '-') {
option.series[seriesIndex].data[dataIndex].value +=
option.series[seriesIndex].data[dataIndex].value =
ecData.get(dragged, 'value');
accMath.accAdd(
option.series[seriesIndex].data[dataIndex].value,
ecData.get(dragged, 'value')
);
}
}
else {
else {
option.series[seriesIndex].data[dataIndex].value =
option.series[seriesIndex].data[dataIndex].value =
...
@@ -13101,8 +13211,11 @@ define('echarts/chart/calculableBase',['require','../util/ecData','zrender/tool/
...
@@ -13101,8 +13211,11 @@ define('echarts/chart/calculableBase',['require','../util/ecData','zrender/tool/
}
}
else {
else {
if (data != '-') {
if (data != '-') {
option.series[seriesIndex].data[dataIndex] +=
option.series[seriesIndex].data[dataIndex] =
ecData.get(dragged, 'value');
accMath.accAdd(
option.series[seriesIndex].data[dataIndex],
ecData.get(dragged, 'value')
);
}
}
else {
else {
option.series[seriesIndex].data[dataIndex] =
option.series[seriesIndex].data[dataIndex] =
...
@@ -13178,7 +13291,7 @@ define('echarts/chart/calculableBase',['require','../util/ecData','zrender/tool/
...
@@ -13178,7 +13291,7 @@ define('echarts/chart/calculableBase',['require','../util/ecData','zrender/tool/
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
*
*
*/
*/
define('echarts/chart/island',['require','../component/base','./calculableBase','../config','../util/ecData','zrender/tool/event','zrender/tool/color','../chart'],function (require) {
define('echarts/chart/island',['require','../component/base','./calculableBase','../config','../util/ecData','zrender/tool/event','zrender/tool/color','../
util/accMath','../
chart'],function (require) {
/**
/**
* 构造函数
* 构造函数
* @param {Object} messageCenter echart消息中心
* @param {Object} messageCenter echart消息中心
...
@@ -13216,8 +13329,11 @@ define('echarts/chart/island',['require','../component/base','./calculableBase',
...
@@ -13216,8 +13329,11 @@ define('echarts/chart/island',['require','../component/base','./calculableBase',
*/
*/
function _combine(tarShape, srcShape) {
function _combine(tarShape, srcShape) {
var zrColor = require('zrender/tool/color');
var zrColor = require('zrender/tool/color');
var value = ecData.get(tarShape, 'value')
var accMath = require('../util/accMath');
+ ecData.get(srcShape, 'value');
var value = accMath.accAdd(
ecData.get(tarShape, 'value'),
ecData.get(srcShape, 'value')
);
var name = ecData.get(tarShape, 'name')
var name = ecData.get(tarShape, 'name')
+ _nameConnector
+ _nameConnector
+ ecData.get(srcShape, 'name');
+ ecData.get(srcShape, 'name');
...
@@ -13956,7 +14072,23 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
...
@@ -13956,7 +14072,23 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
}
}
axShape.style.strokeColor = option.axisLine.lineStyle.color;
axShape.style.strokeColor = option.axisLine.lineStyle.color;
axShape.style.lineWidth = option.axisLine.lineStyle.width;
var lineWidth = option.axisLine.lineStyle.width;
axShape.style.lineWidth = lineWidth;
// 亚像素优化
if (option.position == 'left' || option.position == 'right') {
// 纵向布局,优化x
axShape.style.xStart
= axShape.style.xEnd
= self.subPixelOptimize(axShape.style.xEnd, lineWidth);
}
else {
// 横向布局,优化y
axShape.style.yStart
= axShape.style.yEnd
= self.subPixelOptimize(axShape.style.yEnd, lineWidth);
}
axShape.style.lineType = option.axisLine.lineStyle.type;
axShape.style.lineType = option.axisLine.lineStyle.type;
self.shapeList.push(axShape);
self.shapeList.push(axShape);
...
@@ -14124,6 +14256,8 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
...
@@ -14124,6 +14256,8 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
var axShape;
var axShape;
var data = option.data;
var data = option.data;
var dataLength = option.data.length;
var dataLength = option.data.length;
var lineType = option.splitLine.lineStyle.type;
var lineWidth = option.splitLine.lineStyle.width;
var color = option.splitLine.lineStyle.color;
var color = option.splitLine.lineStyle.color;
color = color instanceof Array ? color : [color];
color = color instanceof Array ? color : [color];
var colorLength = color.length;
var colorLength = color.length;
...
@@ -14135,7 +14269,10 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
...
@@ -14135,7 +14269,10 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
var x;
var x;
for (var i = 0; i < dataLength; i += _interval) {
for (var i = 0; i < dataLength; i += _interval) {
x = getCoord(data[i].value || data[i]);
// 亚像素优化
x = self.subPixelOptimize(
getCoord(data[i].value || data[i]), lineWidth
);
axShape = {
axShape = {
shape : 'line',
shape : 'line',
zlevel : _zlevelBase,
zlevel : _zlevelBase,
...
@@ -14146,8 +14283,8 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
...
@@ -14146,8 +14283,8 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
xEnd : x,
xEnd : x,
yEnd : ey,
yEnd : ey,
strokeColor : color[(i / _interval) % colorLength],
strokeColor : color[(i / _interval) % colorLength],
lineType :
option.splitLine.lineStyle.t
ype,
lineType :
lineT
ype,
lineWidth :
option.splitLine.lineStyle.w
idth
lineWidth :
lineW
idth
}
}
};
};
self.shapeList.push(axShape);
self.shapeList.push(axShape);
...
@@ -14161,7 +14298,10 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
...
@@ -14161,7 +14298,10 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
var y;
var y;
for (var i = 0; i < dataLength; i += _interval) {
for (var i = 0; i < dataLength; i += _interval) {
y = getCoord(data[i].value || data[i]);
// 亚像素优化
y = self.subPixelOptimize(
getCoord(data[i].value || data[i]), lineWidth
);
axShape = {
axShape = {
shape : 'line',
shape : 'line',
zlevel : _zlevelBase,
zlevel : _zlevelBase,
...
@@ -14172,8 +14312,8 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
...
@@ -14172,8 +14312,8 @@ define('echarts/component/categoryAxis',['require','./base','../config','zrender
xEnd : ex,
xEnd : ex,
yEnd : y,
yEnd : y,
strokeColor : color[(i / _interval) % colorLength],
strokeColor : color[(i / _interval) % colorLength],
linetype :
option.splitLine.lineStyle.t
ype,
linetype :
lineT
ype,
lineWidth :
option.splitLine.lineStyle.w
idth
lineWidth :
lineW
idth
}
}
};
};
self.shapeList.push(axShape);
self.shapeList.push(axShape);
...
@@ -14515,7 +14655,23 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
...
@@ -14515,7 +14655,23 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
axShape.style.textPosition = option.nameLocation;
axShape.style.textPosition = option.nameLocation;
}
}
axShape.style.strokeColor = option.axisLine.lineStyle.color;
axShape.style.strokeColor = option.axisLine.lineStyle.color;
axShape.style.lineWidth = option.axisLine.lineStyle.width;
var lineWidth = option.axisLine.lineStyle.width;
axShape.style.lineWidth = lineWidth;
// 亚像素优化
if (option.position == 'left' || option.position == 'right') {
// 纵向布局,优化x
axShape.style.xStart
= axShape.style.xEnd
= self.subPixelOptimize(axShape.style.xEnd, lineWidth);
}
else {
// 横向布局,优化y
axShape.style.yStart
= axShape.style.yEnd
= self.subPixelOptimize(axShape.style.yEnd, lineWidth);
}
axShape.style.lineType = option.axisLine.lineStyle.type;
axShape.style.lineType = option.axisLine.lineStyle.type;
self.shapeList.push(axShape);
self.shapeList.push(axShape);
...
@@ -14683,6 +14839,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
...
@@ -14683,6 +14839,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
var axShape;
var axShape;
var data = _valueList;
var data = _valueList;
var dataLength = _valueList.length;
var dataLength = _valueList.length;
var lineType = option.splitLine.lineStyle.type;
var lineWidth = option.splitLine.lineStyle.width;
var color = option.splitLine.lineStyle.color;
var color = option.splitLine.lineStyle.color;
color = color instanceof Array ? color : [color];
color = color instanceof Array ? color : [color];
var colorLength = color.length;
var colorLength = color.length;
...
@@ -14694,7 +14852,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
...
@@ -14694,7 +14852,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
var x;
var x;
for (var i = 0; i < dataLength; i++) {
for (var i = 0; i < dataLength; i++) {
x = getCoord(data[i]);
// 亚像素优化
x = self.subPixelOptimize(getCoord(data[i]), lineWidth);
axShape = {
axShape = {
shape : 'line',
shape : 'line',
zlevel : _zlevelBase,
zlevel : _zlevelBase,
...
@@ -14705,8 +14864,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
...
@@ -14705,8 +14864,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
xEnd : x,
xEnd : x,
yEnd : ey,
yEnd : ey,
strokeColor : color[i % colorLength],
strokeColor : color[i % colorLength],
lineType :
option.splitLine.lineStyle.t
ype,
lineType :
lineT
ype,
lineWidth :
option.splitLine.lineStyle.w
idth
lineWidth :
lineW
idth
}
}
};
};
self.shapeList.push(axShape);
self.shapeList.push(axShape);
...
@@ -14720,7 +14879,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
...
@@ -14720,7 +14879,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
var y;
var y;
for (var i = 0; i < dataLength; i++) {
for (var i = 0; i < dataLength; i++) {
y = getCoord(data[i]);
// 亚像素优化
y = self.subPixelOptimize(getCoord(data[i]), lineWidth);
axShape = {
axShape = {
shape : 'line',
shape : 'line',
zlevel : _zlevelBase,
zlevel : _zlevelBase,
...
@@ -14731,8 +14891,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
...
@@ -14731,8 +14891,8 @@ define('echarts/component/valueAxis',['require','./base','../config','zrender/to
xEnd : ex,
xEnd : ex,
yEnd : y,
yEnd : y,
strokeColor : color[i % colorLength],
strokeColor : color[i % colorLength],
lineType :
option.splitLine.lineStyle.t
ype,
lineType :
lineT
ype,
lineWidth :
option.splitLine.lineStyle.w
idth
lineWidth :
lineW
idth
}
}
};
};
self.shapeList.push(axShape);
self.shapeList.push(axShape);
...
@@ -15553,11 +15713,8 @@ define('echarts/component/grid',['require','./base','../config','../component'],
...
@@ -15553,11 +15713,8 @@ define('echarts/component/grid',['require','./base','../config','../component'],
_height = gridOption.height;
_height = gridOption.height;
}
}
if (gridOption.borderWidth % 2 == 1) {
_x = self.subPixelOptimize(_x, gridOption.borderWidth);
// 亚像素优化
_y = self.subPixelOptimize(_y, gridOption.borderWidth);
_x += _x == Math.ceil(_x) ? 0.5 : 0;
_y += _y == Math.ceil(_y) ? 0.5 : 0;
}
self.shapeList.push({
self.shapeList.push({
shape : 'rectangle',
shape : 'rectangle',
...
@@ -17370,7 +17527,28 @@ define('echarts/component/legend',['require','./base','../config','zrender/tool/
...
@@ -17370,7 +17527,28 @@ define('echarts/component/legend',['require','./base','../config','zrender/tool/
});
});
},
},
bar : function (ctx, style) {
bar : function (ctx, style) {
ctx.rect(style.x, style.y + 1, style.width, style.height - 2);
//ctx.rect(style.x, style.y + 1, style.width, style.height - 2);
var x = style.x;
var y = style.y +1;
var width = style.width;
var height = style.height - 2;
var r = 3;
ctx.moveTo(x + r, y);
ctx.lineTo(x + width - r, y);
ctx.quadraticCurveTo(
x + width, y, x + width, y + r
);
ctx.lineTo(x + width, y + height - r);
ctx.quadraticCurveTo(
x + width, y + height, x + width - r, y + height
);
ctx.lineTo(x + r, y + height);
ctx.quadraticCurveTo(
x, y + height, x, y + height - r
);
ctx.lineTo(x, y + r);
ctx.quadraticCurveTo(x, y, x + r, y);
},
},
force : function(ctx, style) {
force : function(ctx, style) {
require('zrender/shape').get('icon').get('circle')(ctx, style);
require('zrender/shape').get('icon').get('circle')(ctx, style);
...
@@ -18680,7 +18858,7 @@ define('echarts/component/tooltip',['require','./base','../config','../util/ecDa
...
@@ -18680,7 +18858,7 @@ define('echarts/component/tooltip',['require','./base','../config','../util/ecDa
if (!opt) {
if (!opt) {
return '';
return '';
}
}
cssText = [];
var
cssText = [];
if (opt.transitionDuration) {
if (opt.transitionDuration) {
var transitionText = 'left ' + opt.transitionDuration + 's,'
var transitionText = 'left ' + opt.transitionDuration + 's,'
+ 'top ' + opt.transitionDuration + 's';
+ 'top ' + opt.transitionDuration + 's';
...
@@ -19884,14 +20062,14 @@ define('echarts/component/tooltip',['require','./base','../config','../util/ecDa
...
@@ -19884,14 +20062,14 @@ define('echarts/component/tooltip',['require','./base','../config','../util/ecDa
/**
/**
* html转码的方法
* html转码的方法
*/
*/
_encodeHTML = function
(source) {
function _encodeHTML
(source) {
return String(source)
return String(source)
.replace(/&/g, '&')
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/"/g, '"')
.replace(/'/g, ''');
.replace(/'/g, ''');
}
;
}
zr.on(zrConfig.EVENT.MOUSEMOVE, _onmousemove);
zr.on(zrConfig.EVENT.MOUSEMOVE, _onmousemove);
zr.on(zrConfig.EVENT.GLOBALOUT, _onglobalout);
zr.on(zrConfig.EVENT.GLOBALOUT, _onglobalout);
...
@@ -20026,17 +20204,29 @@ define('echarts/component/toolbox',['require','./base','../config','zrender/conf
...
@@ -20026,17 +20204,29 @@ define('echarts/component/toolbox',['require','./base','../config','zrender/conf
var color = toolboxOption.color instanceof Array
var color = toolboxOption.color instanceof Array
? toolboxOption.color : [toolboxOption.color];
? toolboxOption.color : [toolboxOption.color];
/*
var textFont = self.getFont(toolboxOption.textStyle);
var textPosition;
var textPosition;
var textAlign;
var textBaseLine;
if (toolboxOption.orient == 'horizontal') {
if (toolboxOption.orient == 'horizontal') {
textPosition =
toolboxOption.y != 'bottom'
textPosition =
_itemGroupLocation.y / zr.getHeight() < 0.5
? 'bottom' : 'top';
? 'bottom' : 'top';
textAlign = _itemGroupLocation.x / zr.getWidth() < 0.5
? 'left' : 'right';
textBaseLine = _itemGroupLocation.y / zr.getHeight() < 0.5
? 'top' : 'bottom';
}
}
else {
else {
textPosition = toolboxOption.x != 'left'
textPosition = _itemGroupLocation.x / zr.getWidth() < 0.5
? 'left' : 'right';
? 'right' : 'left';
/*
textAlign = _itemGroupLocation.x / zr.getWidth() < 0.5
? 'right' : 'left';
textBaseLine = 'top';
*/
}
}
*/
_iconShapeMap = {};
_iconShapeMap = {};
for (var i = 0; i < iconLength; i++) {
for (var i = 0; i < iconLength; i++) {
...
@@ -20060,11 +20250,38 @@ define('echarts/component/toolbox',['require','./base','../config','zrender/conf
...
@@ -20060,11 +20250,38 @@ define('echarts/component/toolbox',['require','./base','../config','zrender/conf
highlightStyle : {
highlightStyle : {
lineWidth : 2,
lineWidth : 2,
shadowBlur: 5,
shadowBlur: 5,
text : toolboxOption.showTitle
? toolboxOption.featureTitle[_iconList[i]]
: false,
textFont : textFont,
textPosition : textPosition,
strokeColor : color[i % color.length]
strokeColor : color[i % color.length]
},
},
hoverable : true,
hoverable : true,
clickable : true
clickable : true
};
};
if (toolboxOption.orient == 'horizontal') {
// 修正左对齐第一个或右对齐最后一个
if (i === 0 && textAlign == 'left') {
itemShape.highlightStyle.textPosition = 'specific';
itemShape.highlightStyle.textAlign = textAlign;
itemShape.highlightStyle.textBaseLine = textBaseLine;
itemShape.highlightStyle.textX = lastX;
itemShape.highlightStyle.textY = textBaseLine == 'top'
? lastY + itemSize + 10
: lastY - 10;
}
if (i == iconLength - 1 && textAlign == 'right') {
itemShape.highlightStyle.textPosition = 'specific';
itemShape.highlightStyle.textAlign = textAlign;
itemShape.highlightStyle.textBaseLine = textBaseLine;
itemShape.highlightStyle.textX = lastX + itemSize;
itemShape.highlightStyle.textY = textBaseLine == 'top'
? lastY + itemSize + 10
: lastY - 10;
}
}
switch(_iconList[i]) {
switch(_iconList[i]) {
case 'mark':
case 'mark':
...
@@ -21375,9 +21592,6 @@ define(
...
@@ -21375,9 +21592,6 @@ define(
var polar;
var polar;
var _width = zr.getWidth();
var _height = zr.getHeight();
var series;
var series;
var _queryTarget;
var _queryTarget;
...
@@ -21420,16 +21634,13 @@ define(
...
@@ -21420,16 +21634,13 @@ define(
var length = indicator.length;
var length = indicator.length;
var startAngle = item.startAngle ;
var startAngle = item.startAngle ;
var dStep = 2 * Math.PI / length;
var dStep = 2 * Math.PI / length;
var radius = item.radius;
var radius = self.parsePercent(
item.radius,
Math.min(zr.getWidth(), zr.getHeight()) / 2
);
var __ecIndicator = item.__ecIndicator = [];
var __ecIndicator = item.__ecIndicator = [];
var vector;
var vector;
if (typeof radius != 'number') {
radius = Math.floor(
Math.min(_width, _height) / 2 - 50
);
}
for (var i = 0 ;i < length ; i ++) {
for (var i = 0 ;i < length ; i ++) {
vector = ecCoordinates.polar2cartesian(
vector = ecCoordinates.polar2cartesian(
radius, startAngle * Math.PI / 180 + dStep * i
radius, startAngle * Math.PI / 180 + dStep * i
...
@@ -21451,7 +21662,7 @@ define(
...
@@ -21451,7 +21662,7 @@ define(
var splitArea = item.splitArea;
var splitArea = item.splitArea;
var splitLine = item.splitLine;
var splitLine = item.splitLine;
var center =
item.center
;
var center =
getCenter(index)
;
var splitNumber = item.splitNumber;
var splitNumber = item.splitNumber;
var strokeColor = splitLine.lineStyle.color;
var strokeColor = splitLine.lineStyle.color;
...
@@ -21482,7 +21693,7 @@ define(
...
@@ -21482,7 +21693,7 @@ define(
var style;
var style;
var newStyle;
var newStyle;
var splitNumber = self.deepQuery(_queryTarget, 'splitNumber');
var splitNumber = self.deepQuery(_queryTarget, 'splitNumber');
var center =
item.center
;
var center =
getCenter(index)
;
var vector;
var vector;
var value;
var value;
var text;
var text;
...
@@ -21542,7 +21753,7 @@ define(
...
@@ -21542,7 +21753,7 @@ define(
var __ecIndicator = item.__ecIndicator;
var __ecIndicator = item.__ecIndicator;
var vector;
var vector;
var indicator = self.deepQuery(_queryTarget, 'indicator');
var indicator = self.deepQuery(_queryTarget, 'indicator');
var center =
item.center
;
var center =
getCenter(index)
;
var style;
var style;
var textAlign;
var textAlign;
var name;
var name;
...
@@ -21635,7 +21846,7 @@ define(
...
@@ -21635,7 +21846,7 @@ define(
function _addDropBox(index) {
function _addDropBox(index) {
var index = index || 0;
var index = index || 0;
var item = polar[index];
var item = polar[index];
var center =
item.center
;
var center =
getCenter(index)
;
var __ecIndicator = item.__ecIndicator;
var __ecIndicator = item.__ecIndicator;
var len = __ecIndicator.length;
var len = __ecIndicator.length;
var pointList = [];
var pointList = [];
...
@@ -21805,7 +22016,7 @@ define(
...
@@ -21805,7 +22016,7 @@ define(
*/
*/
function getCenter(index) {
function getCenter(index) {
var index = index || 0;
var index = index || 0;
return
polar[index].center
;
return
self.parseCenter(polar[index].center)
;
}
}
/**
/**
...
@@ -22113,29 +22324,6 @@ define(
...
@@ -22113,29 +22324,6 @@ define(
}
}
}
}
function reformOption(opt) {
// 常用方法快捷方式
var _merge = zrUtil.merge;
opt = _merge(
opt || {},
ecConfig.polar,
{
'overwrite' : false,
'recursive' : true
}
);
opt.center = self.parseCenter(opt.center);
if (!opt.radius) {
opt.radius = Math.floor(
Math.min(_width, _height) / 2 - 50
);
}
return opt;
}
/**
/**
* 获取每个指标上某个value对应的坐标
* 获取每个指标上某个value对应的坐标
* @param {number} polarIndex
* @param {number} polarIndex
...
@@ -22153,7 +22341,7 @@ define(
...
@@ -22153,7 +22341,7 @@ define(
}
}
var indicator = polar[polarIndex].__ecIndicator[indicatorIndex];
var indicator = polar[polarIndex].__ecIndicator[indicatorIndex];
var center =
polar[polarIndex].center
;
var center =
getCenter(polarIndex)
;
var vector = indicator.vector;
var vector = indicator.vector;
var max = indicator.value.max;
var max = indicator.value.max;
var min = indicator.value.min;
var min = indicator.value.min;
...
@@ -22205,6 +22393,7 @@ define(
...
@@ -22205,6 +22393,7 @@ define(
var len;
var len;
var angle;
var angle;
var finalAngle;
var finalAngle;
var zrSize = Math.min(zr.getWidth(), zr.getHeight()) / 2;
for (var i = 0 ; i < polar.length; i ++) {
for (var i = 0 ; i < polar.length; i ++) {
item = polar[i];
item = polar[i];
center = getCenter(i);
center = getCenter(i);
...
@@ -22214,7 +22403,7 @@ define(
...
@@ -22214,7 +22403,7 @@ define(
valueIndex : 0
valueIndex : 0
};
};
}
}
radius = self.
deepQuery([item, option], 'radius'
);
radius = self.
parsePercent(item.radius, zrSize
);
startAngle = item.startAngle;
startAngle = item.startAngle;
indicator = item.indicator;
indicator = item.indicator;
len = indicator.length;
len = indicator.length;
...
@@ -22266,21 +22455,12 @@ define(
...
@@ -22266,21 +22455,12 @@ define(
option = newOption;
option = newOption;
polar = option.polar;
polar = option.polar;
series = option.series;
series = option.series;
self.backupAdaptiveParams(polar,['center', 'radius'],true);
}
}
self.clear();
self.clear();
_buildShape();
_buildShape();
}
}
function resize() {
// 复位录原始定义
self.restoreAdaptiveParams(polar, ['center', 'radius'], true);
refresh();
}
self.refresh = refresh;
self.refresh = refresh;
self.resize = resize;
self.reformOption = reformOption;
self.getVector = getVector;
self.getVector = getVector;
self.getDropBox = _addDropBox;
self.getDropBox = _addDropBox;
...
@@ -22339,10 +22519,10 @@ define(
...
@@ -22339,10 +22519,10 @@ define(
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
*
*
*/
*/
define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zrender/tool/event','zrender/config','./util/shape/icon','./chart','./chart/island','./component','./component/title','./component/axis','./component/categoryAxis','./component/valueAxis','./component/grid','./component/dataZoom','./component/legend','./component/dataRange','./component/tooltip','./component/toolbox','./component/dataView','./component/polar','./util/ecData','./chart','./component','zrender/tool/util','zrender/tool/util','zrender/tool/util','zrender/tool/color','zrender/tool/util','zrender/tool/util'],function(require) {
define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zrender/tool/event','zrender/config','./util/shape/icon','./chart','./chart/island','./component','./component/title','./component/axis','./component/categoryAxis','./component/valueAxis','./component/grid','./component/dataZoom','./component/legend','./component/dataRange','./component/tooltip','./component/toolbox','./component/dataView','./component/polar','./util/ecData','./chart','./component','zrender/tool/util','zrender/tool/util','zrender/tool/util','zrender/tool/color','zrender/tool/util','zrender/tool/util'
,'zrender/tool/util'
],function(require) {
var self = {};
var self = {};
var echarts = self; // 提供内部反向使用静态方法;
var echarts = self; // 提供内部反向使用静态方法;
self.version = '1.3.
0
';
self.version = '1.3.
1
';
self.dependencies = {
self.dependencies = {
zrender : '1.0.5'
zrender : '1.0.5'
};
};
...
@@ -22368,6 +22548,7 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -22368,6 +22548,7 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
var ecConfig = require('./config');
var ecConfig = require('./config');
var self = this;
var self = this;
var _id = '__ECharts__' + new Date() - 0;
var _zr;
var _zr;
var _option;
var _option;
var _optionBackup; // for各种change和zoom
var _optionBackup; // for各种change和zoom
...
@@ -22762,7 +22943,6 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -22762,7 +22943,6 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
while (len--) {
while (len--) {
magicOption.series[len].data = _optionBackup.series[len].data;
magicOption.series[len].data = _optionBackup.series[len].data;
}
}
return magicOption;
return magicOption;
}
}
...
@@ -22966,7 +23146,7 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -22966,7 +23146,7 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
_toolbox.render(magicOption, {dataZoom: dataZoom});
_toolbox.render(magicOption, {dataZoom: dataZoom});
if (magicOption.animation) {
if (magicOption.animation
&& !magicOption.renderAsImage
) {
var len = _chartList.length;
var len = _chartList.length;
while (len--) {
while (len--) {
_chartList[len]
_chartList[len]
...
@@ -22976,6 +23156,34 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -22976,6 +23156,34 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
}
}
_zr.render();
_zr.render();
var imgId = 'IMG' + _id;
var img = document.getElementById(imgId);
if (magicOption.renderAsImage && !G_vmlCanvasManager) {
// IE8- 不支持图片渲染形式
if (img) {
// 已经渲染过则更新显示
img.src = getDataURL(magicOption.renderAsImage);
}
else {
// 没有渲染过插入img dom
img = getImage(magicOption.renderAsImage);
img.id = imgId;
img.style.position = 'absolute';
img.style.left = 0;
img.style.top = 0;
dom.firstChild.appendChild(img);
}
un();
_zr.un();
_disposeChartList();
_zr.clear();
}
else if (img) {
// 删除可能存在的img
img.parentNode.removeChild(img);
}
img = null;
}
}
/**
/**
...
@@ -23138,6 +23346,23 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -23138,6 +23346,23 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
return self;
return self;
}
}
/**
* 返回内部持有的当前显示option克隆
*/
function getOption() {
var zrUtil = require('zrender/tool/util');
if (_optionBackup.toolbox
&& _optionBackup.toolbox.show
&& _optionBackup.toolbox.feature.magicType
&& _optionBackup.toolbox.feature.magicType.length > 0
) {
return zrUtil.clone(_getMagicOption());
}
else {
return zrUtil.clone(_getMagicOption(_island.getOption()));
}
}
/**
/**
* 数据设置快捷接口
* 数据设置快捷接口
* @param {Array} series
* @param {Array} series
...
@@ -23152,9 +23377,15 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -23152,9 +23377,15 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
_option.series = series;
_option.series = series;
self.setOption(_option, notMerge);
self.setOption(_option, notMerge);
}
}
return self;
return self;
}
}
/**
* 返回内部持有的当前显示series克隆
*/
function getSeries() {
return getOption().series;
}
/**
/**
* 动态数据添加
* 动态数据添加
...
@@ -23344,6 +23575,43 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -23344,6 +23575,43 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
return _zr;
return _zr;
}
}
/**
* 获取Base64图片dataURL
* @param {string} imgType 图片类型,支持png|jpeg,默认为png
* @return imgDataURL
*/
function getDataURL(imgType) {
if (G_vmlCanvasManager) {
return '';
}
if (_chartList.length === 0) {
// 渲染为图片
var imgId = 'IMG' + _id;
var img = document.getElementById(imgId);
if (img) {
return img.src;
}
}
imgType = imgType || 'png';
if (imgType != 'png' && imgType != 'jpeg') {
imgType = 'png';
}
return _zr.toDataURL('image/' + imgType);
}
/**
* 获取img
* @param {string} imgType 图片类型,支持png|jpeg,默认为png
* @return img dom
*/
function getImage(imgType) {
var imgDom = document.createElement('img');
imgDom.src = getDataURL(imgType);
imgDom.title = (_optionRestore.title && _optionRestore.title.text)
|| 'ECharts';
return imgDom;
}
/**
/**
* 绑定事件
* 绑定事件
* @param {Object} eventName 事件名称
* @param {Object} eventName 事件名称
...
@@ -23412,6 +23680,11 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -23412,6 +23680,11 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
*/
*/
function resize() {
function resize() {
_zr.resize();
_zr.resize();
if (_option.renderAsImage && !G_vmlCanvasManager) {
// 渲染为图片从走render模式
_render(_option);
return self;
}
// 先来后到,不能仅刷新自己,也不能在上一个循环中刷新,如坐标系数据改变会影响其他图表的大小
// 先来后到,不能仅刷新自己,也不能在上一个循环中刷新,如坐标系数据改变会影响其他图表的大小
// 所以安顺序刷新各种图表,图表内部refresh优化无需更新则不更新~
// 所以安顺序刷新各种图表,图表内部refresh优化无需更新则不更新~
for (var i = 0, l = _chartList.length; i < l; i++) {
for (var i = 0, l = _chartList.length; i < l; i++) {
...
@@ -23448,7 +23721,11 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
...
@@ -23448,7 +23721,11 @@ define('echarts/echarts',['require','./config','zrender','zrender/tool/util','zr
self.setOption = setOption;
self.setOption = setOption;
self.setSeries = setSeries;
self.setSeries = setSeries;
self.addData = addData;
self.addData = addData;
self.getOption = getOption;
self.getSeries = getSeries;
self.getZrender = getZrender;
self.getZrender = getZrender;
self.getDataURL = getDataURL;
self.getImage = getImage;
self.on = on;
self.on = on;
self.un = un;
self.un = un;
self.showLoading = showLoading;
self.showLoading = showLoading;
...
@@ -24823,7 +25100,7 @@ define('echarts/chart/k',['require','../component/base','./calculableBase','../c
...
@@ -24823,7 +25100,7 @@ define('echarts/chart/k',['require','../component/base','./calculableBase','../c
*
*
*/
*/
define('echarts/chart/radar',['require','../component/base','./calculableBase','../config','../util/ecData','zrender/tool/color','../chart'],function(require) {
define('echarts/chart/radar',['require','../component/base','./calculableBase','../config','../util/ecData','zrender/tool/color','../
util/accMath','../
chart'],function(require) {
/**
/**
* 构造函数
* 构造函数
* @param {Object} messageCenter echart消息中心
* @param {Object} messageCenter echart消息中心
...
@@ -25194,7 +25471,6 @@ define('echarts/chart/k',['require','../component/base','./calculableBase','../c
...
@@ -25194,7 +25471,6 @@ define('echarts/chart/k',['require','../component/base','./calculableBase','../c
var value;
var value;
if (dataIndex == -1) {
if (dataIndex == -1) {
data = {
data = {
value : ecData.get(dragged, 'value'),
value : ecData.get(dragged, 'value'),
name : ecData.get(dragged, 'name')
name : ecData.get(dragged, 'name')
...
@@ -25208,13 +25484,15 @@ define('echarts/chart/k',['require','../component/base','./calculableBase','../c
...
@@ -25208,13 +25484,15 @@ define('echarts/chart/k',['require','../component/base','./calculableBase','../c
);
);
}
}
else {
else {
// 数据被拖拽到某个数据项上,数据修改
var accMath = require('../util/accMath');
data = series[seriesIndex].data[dataIndex];
data = series[seriesIndex].data[dataIndex];
legend && legend.del(data.name);
legend && legend.del(data.name);
data.name += option.nameConnector
data.name += option.nameConnector
+ ecData.get(dragged, 'name');
+ ecData.get(dragged, 'name');
value = ecData.get(dragged, 'value');
value = ecData.get(dragged, 'value');
for (var i = 0 ; i < value.length; i ++) {
for (var i = 0 ; i < value.length; i ++) {
data.value[i]
+= value[i]
;
data.value[i]
= accMath.accAdd(data.value[i], value[i])
;
}
}
legend && legend.add(
legend && legend.add(
...
@@ -28315,7 +28593,7 @@ define('echarts/chart/chord',['require','../util/shape/chord','../component/base
...
@@ -28315,7 +28593,7 @@ define('echarts/chart/chord',['require','../util/shape/chord','../component/base
[group, chordSerieSample],
[group, chordSerieSample],
'itemStyle.normal.label.textStyle.color'
'itemStyle.normal.label.textStyle.color'
) || '#fff';
) || '#fff';
sector
.style.textFont = self.getFont(self.deepQuery(
labelShape
.style.textFont = self.getFont(self.deepQuery(
[group, chordSerieSample],
[group, chordSerieSample],
'itemStyle.normal.label.textStyle'
'itemStyle.normal.label.textStyle'
));
));
...
@@ -30001,7 +30279,7 @@ define('echarts/chart/line',['require','../component/base','./calculableBase','.
...
@@ -30001,7 +30279,7 @@ define('echarts/chart/line',['require','../component/base','./calculableBase','.
style : {
style : {
pointList : singlePL,
pointList : singlePL,
strokeColor : lineColor
strokeColor : lineColor
|| normalColor
|| normalColor
|| defaultColor,
|| defaultColor,
lineWidth : lineWidth,
lineWidth : lineWidth,
lineType : lineType,
lineType : lineType,
...
@@ -30222,8 +30500,15 @@ define('echarts/chart/line',['require','../component/base','./calculableBase','.
...
@@ -30222,8 +30500,15 @@ define('echarts/chart/line',['require','../component/base','./calculableBase','.
var seriesIndex = param.seriesIndex;
var seriesIndex = param.seriesIndex;
var dataIndex = param.dataIndex;
var dataIndex = param.dataIndex;
var seriesPL;
var seriesPL;
var singlePL;
var serie;
var serie;
var queryTarget;
var queryTarget;
var lineWidth;
var normalColor;
var emphasisColor;
var defaultColor;
var len = seriesIndex.length;
var len = seriesIndex.length;
while (len--) {
while (len--) {
seriesPL = finalPLMap[seriesIndex[len]];
seriesPL = finalPLMap[seriesIndex[len]];
...
@@ -30233,21 +30518,16 @@ define('echarts/chart/line',['require','../component/base','./calculableBase','.
...
@@ -30233,21 +30518,16 @@ define('echarts/chart/line',['require','../component/base','./calculableBase','.
defaultColor = _sIndex2ColorMap[seriesIndex[len]];
defaultColor = _sIndex2ColorMap[seriesIndex[len]];
// 多级控制
// 多级控制
lineWidth = self.deepQuery(
lineWidth = self.deepQuery(
[serie], 'itemStyle.normal.lineStyle.width'
queryTarget, 'itemStyle.normal.lineStyle.width'
);
lineType = self.deepQuery(
[serie], 'itemStyle.normal.lineStyle.type'
);
lineColor = self.deepQuery(
[serie], 'itemStyle.normal.lineStyle.color'
);
);
normalColor = self.deepQuery(
normalColor = self.deepQuery(
[serie]
, 'itemStyle.normal.color'
queryTarget
, 'itemStyle.normal.color'
);
);
emphasisColor = self.deepQuery(
emphasisColor = self.deepQuery(
[serie]
, 'itemStyle.emphasis.color'
queryTarget
, 'itemStyle.emphasis.color'
);
);
var shape;
var shape;
var data;
for (var i = 0, l = seriesPL.length; i < l; i++) {
for (var i = 0, l = seriesPL.length; i < l; i++) {
singlePL = seriesPL[i];
singlePL = seriesPL[i];
for (var j = 0, k = singlePL.length; j < k; j++) {
for (var j = 0, k = singlePL.length; j < k; j++) {
...
@@ -30615,6 +30895,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -30615,6 +30895,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
var legend = component.legend;
var legend = component.legend;
var locationMap = []; // 需要返回的东西:数组位置映射到系列索引
var locationMap = []; // 需要返回的东西:数组位置映射到系列索引
var maxDataLength = 0; // 需要返回的东西:最大数据长度
var maxDataLength = 0; // 需要返回的东西:最大数据长度
var iconShape;
// 计算需要显示的个数和分配位置并记在下面这个结构里
// 计算需要显示的个数和分配位置并记在下面这个结构里
for (var i = 0, l = seriesArray.length; i < l; i++) {
for (var i = 0, l = seriesArray.length; i < l; i++) {
serie = series[seriesArray[i]];
serie = series[seriesArray[i]];
...
@@ -30623,6 +30904,15 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -30623,6 +30904,15 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
self.selectedMap[serieName] = legend.isSelected(serieName);
self.selectedMap[serieName] = legend.isSelected(serieName);
_sIndex2colorMap[seriesArray[i]] =
_sIndex2colorMap[seriesArray[i]] =
legend.getColor(serieName);
legend.getColor(serieName);
iconShape = legend.getItemShape(serieName);
if (iconShape) {
// 回调legend,换一个更形象的icon
iconShape.style.strokeColor =
serie.itemStyle.normal.borderColor;
iconShape.style.brushType = 'both';
legend.setItemShape(serieName, iconShape);
}
} else {
} else {
self.selectedMap[serieName] = true;
self.selectedMap[serieName] = true;
_sIndex2colorMap[seriesArray[i]] =
_sIndex2colorMap[seriesArray[i]] =
...
@@ -30736,7 +31026,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -30736,7 +31026,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
}
}
lastYP -= barHeight;
lastYP -= barHeight;
y = lastYP;
y = lastYP;
lastYP -= 0.5; //白色视觉分隔线宽修正
//
lastYP -= 0.5; //白色视觉分隔线宽修正
}
}
else if (value < 0){
else if (value < 0){
// 负向堆叠
// 负向堆叠
...
@@ -30749,7 +31039,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -30749,7 +31039,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
}
}
y = lastYN;
y = lastYN;
lastYN += barHeight;
lastYN += barHeight;
lastYN += 0.5; //白色视觉分隔线宽修正
//
lastYN += 0.5; //白色视觉分隔线宽修正
}
}
else {
else {
// 0值
// 0值
...
@@ -30757,7 +31047,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -30757,7 +31047,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
// 最小高度无效
// 最小高度无效
lastYP -= barHeight;
lastYP -= barHeight;
y = lastYP;
y = lastYP;
lastYP -= 0.5; //白色视觉分隔线宽修正
//
lastYP -= 0.5; //白色视觉分隔线宽修正
}
}
barShape = _getBarItem(
barShape = _getBarItem(
...
@@ -30884,7 +31174,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -30884,7 +31174,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
}
}
x = lastXP;
x = lastXP;
lastXP += barHeight;
lastXP += barHeight;
lastXP += 0.5; //白色视觉分隔线宽修正
//
lastXP += 0.5; //白色视觉分隔线宽修正
}
}
else if (value < 0){
else if (value < 0){
// 负向堆叠
// 负向堆叠
...
@@ -30897,7 +31187,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -30897,7 +31187,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
}
}
lastXN -= barHeight;
lastXN -= barHeight;
x = lastXN;
x = lastXN;
lastXN -= 0.5; //白色视觉分隔线宽修正
//
lastXN -= 0.5; //白色视觉分隔线宽修正
}
}
else {
else {
// 0值
// 0值
...
@@ -30905,7 +31195,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -30905,7 +31195,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
// 最小高度无效
// 最小高度无效
x = lastXP;
x = lastXP;
lastXP += barHeight;
lastXP += barHeight;
lastXP += 0.5; //白色视觉分隔线宽修正
//
lastXP += 0.5; //白色视觉分隔线宽修正
}
}
barShape = _getBarItem(
barShape = _getBarItem(
...
@@ -30978,7 +31268,6 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -30978,7 +31268,6 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
var sBarWidth;
var sBarWidth;
var sBarWidthCounter = 0;
var sBarWidthCounter = 0;
var sBarWidthTotal = 0;
var sBarWidthTotal = 0;
var sBarMinHeight;
var barGap;
var barGap;
var barCategoryGap;
var barCategoryGap;
var hasFound;
var hasFound;
...
@@ -30988,10 +31277,10 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -30988,10 +31277,10 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
hasFound = false; // 同一堆叠第一个barWidth生效
hasFound = false; // 同一堆叠第一个barWidth生效
for (var m = 0, n = locationMap[j].length; m < n; m++) {
for (var m = 0, n = locationMap[j].length; m < n; m++) {
seriesIndex = locationMap[j][m];
seriesIndex = locationMap[j][m];
queryTarget =
[series[seriesIndex]
];
queryTarget =
series[seriesIndex
];
if (!ignoreUserDefined) {
if (!ignoreUserDefined) {
if (!hasFound) {
if (!hasFound) {
sBarWidth = self.
deepQ
uery(
sBarWidth = self.
q
uery(
queryTarget,
queryTarget,
'barWidth'
'barWidth'
);
);
...
@@ -31006,19 +31295,19 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -31006,19 +31295,19 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
}
}
}
}
barMinHeightMap[seriesIndex] = self.
deepQ
uery(
barMinHeightMap[seriesIndex] = self.
q
uery(
queryTarget,
queryTarget,
'barMinHeight'
'barMinHeight'
);
);
barGap = typeof barGap != 'undefined'
barGap = typeof barGap != 'undefined'
? barGap
? barGap
: self.
deepQ
uery(
: self.
q
uery(
queryTarget,
queryTarget,
'barGap'
'barGap'
);
);
barCategoryGap = typeof barCategoryGap != 'undefined'
barCategoryGap = typeof barCategoryGap != 'undefined'
? barCategoryGap
? barCategoryGap
: self.
deepQ
uery(
: self.
q
uery(
queryTarget,
queryTarget,
'barCategoryGap'
'barCategoryGap'
);
);
...
@@ -31123,14 +31412,24 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -31123,14 +31412,24 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
var data = serie.data[dataIndex];
var data = serie.data[dataIndex];
// 多级控制
// 多级控制
var defaultColor = _sIndex2colorMap[seriesIndex];
var defaultColor = _sIndex2colorMap[seriesIndex];
var queryTarget = [data, serie];
var normalColor = self.deepQuery(
var normalColor = self.deepQuery(
[data, serie]
,
queryTarget
,
'itemStyle.normal.color'
'itemStyle.normal.color'
) || defaultColor;
) || defaultColor;
var emphasisColor = self.deepQuery(
var emphasisColor = self.deepQuery(
[data, serie]
,
queryTarget
,
'itemStyle.emphasis.color'
'itemStyle.emphasis.color'
);
);
var normal = self.deepMerge(
queryTarget,
'itemStyle.normal'
);
var normalBorderWidth = normal.borderWidth;
var emphasis = self.deepMerge(
queryTarget,
'itemStyle.emphasis'
);
barShape = {
barShape = {
shape : 'rectangle',
shape : 'rectangle',
zlevel : _zlevelBase,
zlevel : _zlevelBase,
...
@@ -31142,7 +31441,9 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -31142,7 +31441,9 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
height : height,
height : height,
brushType : 'both',
brushType : 'both',
color : normalColor,
color : normalColor,
strokeColor : '#fff'
radius : normal.borderRadius,
lineWidth : normalBorderWidth,
strokeColor : normal.borderColor
},
},
highlightStyle : {
highlightStyle : {
color : emphasisColor
color : emphasisColor
...
@@ -31150,19 +31451,31 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -31150,19 +31451,31 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
? zrColor.lift(normalColor, -0.2)
? zrColor.lift(normalColor, -0.2)
: normalColor
: normalColor
),
),
strokeColor : 'rgba(0,0,0,0)'
radius : emphasis.borderRadius,
lineWidth : emphasis.borderWidth,
strokeColor : emphasis.borderColor
},
},
_orient : orient
_orient : orient
};
};
// 考虑线宽的显示优化
if (barShape.style.height > normalBorderWidth
&& barShape.style.width > normalBorderWidth
) {
barShape.style.y += normalBorderWidth / 2;
barShape.style.height -= normalBorderWidth;
barShape.style.x += normalBorderWidth / 2;
barShape.style.width -= normalBorderWidth;
}
else {
// 太小了,废了边线
barShape.style.brushType = 'fill';
}
barShape.highlightStyle.textColor = barShape.highlightStyle.color;
barShape.highlightStyle.textColor = barShape.highlightStyle.color;
barShape = self.addLabel(barShape, serie, data, name, orient);
barShape = self.addLabel(barShape, serie, data, name, orient);
if (self.deepQuery(
if (self.deepQuery([data, serie, option],'calculable')) {
[data, serie, option],
'calculable'
)
) {
self.setCalculable(barShape);
self.setCalculable(barShape);
barShape.draggable = true;
barShape.draggable = true;
}
}
...
@@ -31396,7 +31709,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
...
@@ -31396,7 +31709,7 @@ define('echarts/chart/bar',['require','../component/base','./calculableBase','..
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
* @author Kener (@Kener-林峰, linzhifeng@baidu.com)
*
*
*/
*/
define('echarts/chart/pie',['require','../component/base','./calculableBase','../config','../util/ecData','zrender/tool/math','zrender/tool/util','zrender/tool/color','../chart'],function(require) {
define('echarts/chart/pie',['require','../component/base','./calculableBase','../config','../util/ecData','zrender/tool/math','zrender/tool/util','zrender/tool/color','../
util/accMath','../
chart'],function(require) {
/**
/**
* 构造函数
* 构造函数
* @param {Object} messageCenter echart消息中心
* @param {Object} messageCenter echart消息中心
...
@@ -31432,26 +31745,29 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -31432,26 +31745,29 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
function _buildShape() {
function _buildShape() {
self.selectedMap = {};
self.selectedMap = {};
_selected = {};
_selected = {};
var center;
var radius;
var pieCase; // 饼图箱子
var pieCase; // 饼图箱子
_selectedMode = false;
_selectedMode = false;
for (var i = 0, l = series.length; i < l; i++) {
for (var i = 0, l = series.length; i < l; i++) {
if (series[i].type == ecConfig.CHART_TYPE_PIE) {
if (series[i].type == ecConfig.CHART_TYPE_PIE) {
series[i] = self.reformOption(series[i]);
series[i] = self.reformOption(series[i]);
center = self.parseCenter(series[i].center);
radius = self.parseRadius(series[i].radius);
_selectedMode = _selectedMode || series[i].selectedMode;
_selectedMode = _selectedMode || series[i].selectedMode;
_selected[i] = [];
_selected[i] = [];
if (self.deepQuery([series[i], option], 'calculable')) {
if (self.deepQuery([series[i], option], 'calculable')) {
pieCase = {
pieCase = {
shape : series[i].radius[0] <= 10
shape : radius[0] <= 10 ? 'circle' : 'ring',
? 'circle' : 'ring',
zlevel : _zlevelBase,
zlevel : _zlevelBase,
hoverable : false,
hoverable : false,
style : {
style : {
x :
series[i].
center[0], // 圆心横坐标
x : center[0], // 圆心横坐标
y :
series[i].
center[1], // 圆心纵坐标
y : center[1], // 圆心纵坐标
r0 : series[i].radius[0] <= 10 // 圆环内
半径
// 圆环内外
半径
? 0 : series[i].
radius[0] - 10,
r0 : radius[0] <= 10 ? 0 :
radius[0] - 10,
r :
series[i].radius[1] + 10, // 圆环外半径
r :
radius[1] + 10,
brushType : 'stroke',
brushType : 'stroke',
strokeColor : series[i].calculableHolderColor
strokeColor : series[i].calculableHolderColor
|| ecConfig.calculableHolderColor
|| ecConfig.calculableHolderColor
...
@@ -31507,6 +31823,7 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -31507,6 +31823,7 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
var totalAngle = 360 - (minAngle * totalSelected);
var totalAngle = 360 - (minAngle * totalSelected);
var defaultColor;
var defaultColor;
var roseType = serie.roseType;
var roseType = serie.roseType;
var radius;
var r0; // 扇形内半径
var r0; // 扇形内半径
var r1; // 扇形外半径
var r1; // 扇形外半径
...
@@ -31536,8 +31853,9 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -31536,8 +31853,9 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
}
}
percent = (percent * 100).toFixed(2);
percent = (percent * 100).toFixed(2);
r0 = +serie.radius[0];
radius = self.parseRadius(serie.radius);
r1 = +serie.radius[1];
r0 = +radius[0];
r1 = +radius[1];
if (roseType == 'radius') {
if (roseType == 'radius') {
r1 = data[i].value / maxValue * (r1 - r0) * 0.8
r1 = data[i].value / maxValue * (r1 - r0) * 0.8
...
@@ -31615,6 +31933,7 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -31615,6 +31933,7 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
) {
) {
var serie = series[seriesIndex];
var serie = series[seriesIndex];
var data = serie.data[dataIndex];
var data = serie.data[dataIndex];
var center = self.parseCenter(serie.center);
// 多级控制
// 多级控制
var normalColor = self.deepQuery(
var normalColor = self.deepQuery(
...
@@ -31632,8 +31951,8 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -31632,8 +31951,8 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
zlevel : _zlevelBase,
zlevel : _zlevelBase,
clickable : true,
clickable : true,
style : {
style : {
x :
serie.
center[0], // 圆心横坐标
x : center[0], // 圆心横坐标
y :
serie.
center[1], // 圆心纵坐标
y : center[1], // 圆心纵坐标
r0 : r0, // 圆环内半径
r0 : r0, // 圆环内半径
r : r1, // 圆环外半径
r : r1, // 圆环外半径
startAngle : startAngle,
startAngle : startAngle,
...
@@ -31706,12 +32025,12 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -31706,12 +32025,12 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
'itemStyle.normal.label.textStyle.baseline'
'itemStyle.normal.label.textStyle.baseline'
) || 'middle';
) || 'middle';
sector.style.textX = Math.round(
sector.style.textX = Math.round(
serie.
center[0]
center[0]
+ (r1 + r0) / 2
+ (r1 + r0) / 2
* zrMath.cos((startAngle + endAngle) / 2, true)
* zrMath.cos((startAngle + endAngle) / 2, true)
);
);
sector.style.textY = Math.round(
sector.style.textY = Math.round(
serie.
center[1]
center[1]
- (r1 + r0) / 2
- (r1 + r0) / 2
* zrMath.sin((startAngle + endAngle) / 2, true)
* zrMath.sin((startAngle + endAngle) / 2, true)
);
);
...
@@ -31744,12 +32063,12 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -31744,12 +32063,12 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
'itemStyle.normal.label.textStyle.baseline'
'itemStyle.normal.label.textStyle.baseline'
) || 'middle';
) || 'middle';
sector.highlightStyle.textX = Math.round(
sector.highlightStyle.textX = Math.round(
serie.
center[0]
center[0]
+ (r1 + r0) / 2
+ (r1 + r0) / 2
* zrMath.cos((startAngle + endAngle) / 2, true)
* zrMath.cos((startAngle + endAngle) / 2, true)
);
);
sector.highlightStyle.textY = Math.round(
sector.highlightStyle.textY = Math.round(
serie.
center[1]
center[1]
- (r1 + r0) / 2
- (r1 + r0) / 2
* zrMath.sin((startAngle + endAngle) / 2, true)
* zrMath.sin((startAngle + endAngle) / 2, true)
);
);
...
@@ -31778,6 +32097,7 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -31778,6 +32097,7 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
) {
) {
var serie = series[seriesIndex];
var serie = series[seriesIndex];
var data = serie.data[dataIndex];
var data = serie.data[dataIndex];
// 特定状态下是否需要显示文本标签
// 特定状态下是否需要显示文本标签
if (_needLabel(serie, data, isEmphasis)) {
if (_needLabel(serie, data, isEmphasis)) {
var status = isEmphasis ? 'emphasis' : 'normal';
var status = isEmphasis ? 'emphasis' : 'normal';
...
@@ -31795,14 +32115,15 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -31795,14 +32115,15 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
var labelControl = itemStyle[status].label;
var labelControl = itemStyle[status].label;
var textStyle = labelControl.textStyle || {};
var textStyle = labelControl.textStyle || {};
var centerX = serie.center[0]; // 圆心横坐标
var center = self.parseCenter(serie.center);
var centerY = serie.center[1]; // 圆心纵坐标
var centerX = center[0]; // 圆心横坐标
var centerY = center[1]; // 圆心纵坐标
var midAngle = ((endAngle + startAngle) / 2) % 360; // 角度中值
var midAngle = ((endAngle + startAngle) / 2) % 360; // 角度中值
var radius
;
// 标签位置半径
var radius
= self.parseRadius(serie.radius);
// 标签位置半径
var textAlign;
var textAlign;
if (labelControl.position == 'outer') {
if (labelControl.position == 'outer') {
// 外部显示,默认
// 外部显示,默认
radius =
serie.
radius[1]
radius = radius[1]
- (-itemStyle[status].labelLine.length)
- (-itemStyle[status].labelLine.length)
- (-textStyle.fontSize);
- (-textStyle.fontSize);
textAlign = (midAngle >= 150 && midAngle <= 210)
textAlign = (midAngle >= 150 && midAngle <= 210)
...
@@ -31861,11 +32182,6 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -31861,11 +32182,6 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
else {
else {
// 内部显示由sector自带,不返回即可
// 内部显示由sector自带,不返回即可
return;
return;
/*
radius = (serie.radius[0] + serie.radius[1]) / 2;
textAlign = 'center';
defaultColor = '#fff';
*/
}
}
}
}
else {
else {
...
@@ -31940,12 +32256,14 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -31940,12 +32256,14 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
var labelLineControl = itemStyle[status].labelLine;
var labelLineControl = itemStyle[status].labelLine;
var lineStyle = labelLineControl.lineStyle || {};
var lineStyle = labelLineControl.lineStyle || {};
var centerX = serie.center[0]; // 圆心横坐标
var center = self.parseCenter(serie.center);
var centerY = serie.center[1]; // 圆心纵坐标
var centerX = center[0]; // 圆心横坐标
var centerY = center[1]; // 圆心纵坐标
// 视觉引导线起点半径
// 视觉引导线起点半径
var midRadius = r1;
var midRadius = r1;
// 视觉引导线终点半径
// 视觉引导线终点半径
var maxRadius = serie.radius[1] - (-labelLineControl.length);
var maxRadius = self.parseRadius(serie.radius)[1]
- (-labelLineControl.length);
var midAngle = ((endAngle + startAngle) / 2) % 360; // 角度中值
var midAngle = ((endAngle + startAngle) / 2) % 360; // 角度中值
var cosValue = zrMath.cos(midAngle, true);
var cosValue = zrMath.cos(midAngle, true);
var sinValue = zrMath.sin(midAngle, true);
var sinValue = zrMath.sin(midAngle, true);
...
@@ -32016,18 +32334,6 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -32016,18 +32334,6 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
'recursive' : true
'recursive' : true
}
}
);
);
//console.log(opt)
opt.center = self.parseCenter(opt.center);
// 传数组实现环形图,[内半径,外半径],传单个则默认为外半径为
if (typeof opt.radius == 'undefined') {
opt.radius = [
0,
Math.round(Math.min(zr.getWidth(), zr.getHeight()) / 2 - 50)
];
} else if (!(opt.radius instanceof Array)) {
opt.radius = [0, opt.radius];
}
// 通用字体设置
// 通用字体设置
opt.itemStyle.normal.label.textStyle = _merge(
opt.itemStyle.normal.label.textStyle = _merge(
...
@@ -32067,18 +32373,11 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -32067,18 +32373,11 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
if (newOption) {
if (newOption) {
option = newOption;
option = newOption;
series = option.series;
series = option.series;
self.backupAdaptiveParams(series, ['center', 'radius']);
}
}
self.clear();
self.clear();
_buildShape();
_buildShape();
}
}
function resize() {
// 复位录原始定义
self.restoreAdaptiveParams(series, ['center', 'radius']);
refresh();
}
/**
/**
* 动态数据增加动画
* 动态数据增加动画
* 心跳效果
* 心跳效果
...
@@ -32448,11 +32747,15 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -32448,11 +32747,15 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
}
}
else {
else {
// 落到sector上,数据被拖拽到某个数据项上,数据修改
// 落到sector上,数据被拖拽到某个数据项上,数据修改
var accMath = require('../util/accMath');
data = series[seriesIndex].data[dataIndex];
data = series[seriesIndex].data[dataIndex];
legend && legend.del(data.name);
legend && legend.del(data.name);
data.name += option.nameConnector
data.name += option.nameConnector
+ ecData.get(dragged, 'name');
+ ecData.get(dragged, 'name');
data.value += ecData.get(dragged, 'value');
data.value = accMath.accAdd(
data.value,
ecData.get(dragged, 'value')
);
legend && legend.add(
legend && legend.add(
data.name,
data.name,
dragged.style.color || dragged.style.strokeColor
dragged.style.color || dragged.style.strokeColor
...
@@ -32537,7 +32840,6 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
...
@@ -32537,7 +32840,6 @@ define('echarts/chart/pie',['require','../component/base','./calculableBase','..
// 接口方法
// 接口方法
self.init = init;
self.init = init;
self.refresh = refresh;
self.refresh = refresh;
self.resize = resize;
self.addDataAnimation = addDataAnimation;
self.addDataAnimation = addDataAnimation;
self.animation = animation;
self.animation = animation;
self.onclick = onclick;
self.onclick = onclick;
doc/example/www/js/echarts.js
浏览文件 @
ebaeab5d
因为 它太大了无法显示 source diff 。你可以改为
查看blob
。
src/chart/bar.js
浏览文件 @
ebaeab5d
...
@@ -495,7 +495,6 @@ define(function(require) {
...
@@ -495,7 +495,6 @@ define(function(require) {
var
sBarWidth
;
var
sBarWidth
;
var
sBarWidthCounter
=
0
;
var
sBarWidthCounter
=
0
;
var
sBarWidthTotal
=
0
;
var
sBarWidthTotal
=
0
;
var
sBarMinHeight
;
var
barGap
;
var
barGap
;
var
barCategoryGap
;
var
barCategoryGap
;
var
hasFound
;
var
hasFound
;
...
...
src/component/polar.js
浏览文件 @
ebaeab5d
...
@@ -22,9 +22,6 @@ define(
...
@@ -22,9 +22,6 @@ define(
var
polar
;
var
polar
;
var
_width
=
zr
.
getWidth
();
var
_height
=
zr
.
getHeight
();
var
series
;
var
series
;
var
_queryTarget
;
var
_queryTarget
;
...
...
src/component/toolbox.js
浏览文件 @
ebaeab5d
...
@@ -171,7 +171,7 @@ define(function (require) {
...
@@ -171,7 +171,7 @@ define(function (require) {
if
(
toolboxOption
.
orient
==
'
horizontal
'
)
{
if
(
toolboxOption
.
orient
==
'
horizontal
'
)
{
// 修正左对齐第一个或右对齐最后一个
// 修正左对齐第一个或右对齐最后一个
if
(
i
==
0
&&
textAlign
==
'
left
'
)
{
if
(
i
==
=
0
&&
textAlign
==
'
left
'
)
{
itemShape
.
highlightStyle
.
textPosition
=
'
specific
'
;
itemShape
.
highlightStyle
.
textPosition
=
'
specific
'
;
itemShape
.
highlightStyle
.
textAlign
=
textAlign
;
itemShape
.
highlightStyle
.
textAlign
=
textAlign
;
itemShape
.
highlightStyle
.
textBaseLine
=
textBaseLine
;
itemShape
.
highlightStyle
.
textBaseLine
=
textBaseLine
;
...
...
src/component/tooltip.js
浏览文件 @
ebaeab5d
...
@@ -1308,7 +1308,7 @@ define(function (require) {
...
@@ -1308,7 +1308,7 @@ define(function (require) {
.
replace
(
/>/g
,
'
>
'
)
.
replace
(
/>/g
,
'
>
'
)
.
replace
(
/"/g
,
'
"
'
)
.
replace
(
/"/g
,
'
"
'
)
.
replace
(
/'/g
,
'
'
'
);
.
replace
(
/'/g
,
'
'
'
);
}
;
}
zr
.
on
(
zrConfig
.
EVENT
.
MOUSEMOVE
,
_onmousemove
);
zr
.
on
(
zrConfig
.
EVENT
.
MOUSEMOVE
,
_onmousemove
);
zr
.
on
(
zrConfig
.
EVENT
.
GLOBALOUT
,
_onglobalout
);
zr
.
on
(
zrConfig
.
EVENT
.
GLOBALOUT
,
_onglobalout
);
...
...
src/echarts.js
浏览文件 @
ebaeab5d
...
@@ -1104,7 +1104,7 @@ define(function(require) {
...
@@ -1104,7 +1104,7 @@ define(function(require) {
if
(
G_vmlCanvasManager
)
{
if
(
G_vmlCanvasManager
)
{
return
''
;
return
''
;
}
}
if
(
_chartList
.
length
==
0
)
{
if
(
_chartList
.
length
==
=
0
)
{
// 渲染为图片
// 渲染为图片
var
imgId
=
'
IMG
'
+
_id
;
var
imgId
=
'
IMG
'
+
_id
;
var
img
=
document
.
getElementById
(
imgId
);
var
img
=
document
.
getElementById
(
imgId
);
...
...
src/util/accMath.js
浏览文件 @
ebaeab5d
...
@@ -19,17 +19,17 @@ define(function() {
...
@@ -19,17 +19,17 @@ define(function() {
var
s1
=
arg1
.
toString
();
var
s1
=
arg1
.
toString
();
var
s2
=
arg2
.
toString
();
var
s2
=
arg2
.
toString
();
try
{
try
{
m
+=
s1
.
split
(
"
.
"
)[
1
].
length
;
m
+=
s1
.
split
(
'
.
'
)[
1
].
length
;
}
}
catch
(
e
)
{}
catch
(
e
)
{}
try
{
try
{
m
+=
s2
.
split
(
"
.
"
)[
1
].
length
;
m
+=
s2
.
split
(
'
.
'
)[
1
].
length
;
}
}
catch
(
e
){}
catch
(
e
){}
return
Number
(
s1
.
replace
(
"
.
"
,
""
))
return
Number
(
s1
.
replace
(
'
.
'
,
''
))
*
Number
(
s2
.
replace
(
"
.
"
,
""
))
*
Number
(
s2
.
replace
(
'
.
'
,
''
))
/
Math
.
pow
(
10
,
m
);
/
Math
.
pow
(
10
,
m
);
}
}
...
@@ -42,14 +42,14 @@ define(function() {
...
@@ -42,14 +42,14 @@ define(function() {
var
r2
;
var
r2
;
var
m
;
var
m
;
try
{
try
{
r1
=
arg1
.
toString
().
split
(
"
.
"
)[
1
].
length
;
r1
=
arg1
.
toString
().
split
(
'
.
'
)[
1
].
length
;
}
}
catch
(
e
)
{
catch
(
e
)
{
r1
=
0
;
r1
=
0
;
}
}
try
{
try
{
r2
=
arg2
.
toString
().
split
(
"
.
"
)[
1
].
length
;
r2
=
arg2
.
toString
().
split
(
'
.
'
)[
1
].
length
;
}
}
catch
(
e
)
{
catch
(
e
)
{
r2
=
0
;
r2
=
0
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录