提交 ebaeab5d 编写于 作者: K kener

1.3.1 release

上级 fa78881a
ECharts ECharts
======= =======
http://ecomfe.github.com/echarts http://echarts.baidu.com
基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。创新的拖拽重计算、数据视图、值域漫游等特性大大增强了用户体验,赋予了用户对数据进行挖掘、整合的能力。 基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。创新的拖拽重计算、数据视图、值域漫游等特性大大增强了用户体验,赋予了用户对数据进行挖掘、整合的能力。
...@@ -20,7 +20,7 @@ ECharts (Enterprise Charts 商业产品图表库) ...@@ -20,7 +20,7 @@ ECharts (Enterprise Charts 商业产品图表库)
特色 特色
我们诚挚邀请你翻阅这份在线文档 《 <a href="http://ecomfe.github.io/echarts/doc/slide/whyEcharts.html" target="_blank">Why ECharts ?</a> 》 你可以从中更直观的体验到ECharts的特性以及快速浏览到所有图表类型。 我们诚挚邀请你翻阅这份在线文档 《 <a href="http://echarts.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)
......
因为 它太大了无法显示 source diff 。你可以改为 查看blob
...@@ -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: false realtime: true
// 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.type, lineType : lineType,
lineWidth : option.splitLine.lineStyle.width lineWidth : lineWidth
} }
}; };
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.type, linetype : lineType,
lineWidth : option.splitLine.lineStyle.width lineWidth : lineWidth
} }
}; };
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.type, lineType : lineType,
lineWidth : option.splitLine.lineStyle.width lineWidth : lineWidth
} }
}; };
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.type, lineType : lineType,
lineWidth : option.splitLine.lineStyle.width lineWidth : lineWidth
} }
}; };
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, '&amp;') .replace(/&/g, '&amp;')
.replace(/</g, '&lt;') .replace(/</g, '&lt;')
.replace(/>/g, '&gt;') .replace(/>/g, '&gt;')
.replace(/"/g, '&quot;') .replace(/"/g, '&quot;')
.replace(/'/g, '&#39;'); .replace(/'/g, '&#39;');
}; }
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.deepQuery( sBarWidth = self.query(
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.deepQuery( barMinHeightMap[seriesIndex] = self.query(
queryTarget, queryTarget,
'barMinHeight' 'barMinHeight'
); );
barGap = typeof barGap != 'undefined' barGap = typeof barGap != 'undefined'
? barGap ? barGap
: self.deepQuery( : self.query(
queryTarget, queryTarget,
'barGap' 'barGap'
); );
barCategoryGap = typeof barCategoryGap != 'undefined' barCategoryGap = typeof barCategoryGap != 'undefined'
? barCategoryGap ? barCategoryGap
: self.deepQuery( : self.query(
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;
...@@ -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: false realtime: true
// 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.type, lineType : lineType,
lineWidth : option.splitLine.lineStyle.width lineWidth : lineWidth
} }
}; };
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.type, linetype : lineType,
lineWidth : option.splitLine.lineStyle.width lineWidth : lineWidth
} }
}; };
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.type, lineType : lineType,
lineWidth : option.splitLine.lineStyle.width lineWidth : lineWidth
} }
}; };
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.type, lineType : lineType,
lineWidth : option.splitLine.lineStyle.width lineWidth : lineWidth
} }
}; };
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, '&amp;') .replace(/&/g, '&amp;')
.replace(/</g, '&lt;') .replace(/</g, '&lt;')
.replace(/>/g, '&gt;') .replace(/>/g, '&gt;')
.replace(/"/g, '&quot;') .replace(/"/g, '&quot;')
.replace(/'/g, '&#39;'); .replace(/'/g, '&#39;');
}; }
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.deepQuery( sBarWidth = self.query(
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.deepQuery( barMinHeightMap[seriesIndex] = self.query(
queryTarget, queryTarget,
'barMinHeight' 'barMinHeight'
); );
barGap = typeof barGap != 'undefined' barGap = typeof barGap != 'undefined'
? barGap ? barGap
: self.deepQuery( : self.query(
queryTarget, queryTarget,
'barGap' 'barGap'
); );
barCategoryGap = typeof barCategoryGap != 'undefined' barCategoryGap = typeof barCategoryGap != 'undefined'
? barCategoryGap ? barCategoryGap
: self.deepQuery( : self.query(
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;
因为 它太大了无法显示 source diff 。你可以改为 查看blob
...@@ -61,7 +61,7 @@ function needMap() { ...@@ -61,7 +61,7 @@ function needMap() {
} }
var echarts; var echarts;
var developMode = true; var developMode = false;
if (developMode) { if (developMode) {
// for develop // for develop
......
...@@ -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:'支出',
......
因为 它太大了无法显示 source diff 。你可以改为 查看blob
...@@ -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: false realtime: true
// 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.type, lineType : lineType,
lineWidth : option.splitLine.lineStyle.width lineWidth : lineWidth
} }
}; };
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.type, linetype : lineType,
lineWidth : option.splitLine.lineStyle.width lineWidth : lineWidth
} }
}; };
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.type, lineType : lineType,
lineWidth : option.splitLine.lineStyle.width lineWidth : lineWidth
} }
}; };
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.type, lineType : lineType,
lineWidth : option.splitLine.lineStyle.width lineWidth : lineWidth
} }
}; };
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, '&amp;') .replace(/&/g, '&amp;')
.replace(/</g, '&lt;') .replace(/</g, '&lt;')
.replace(/>/g, '&gt;') .replace(/>/g, '&gt;')
.replace(/"/g, '&quot;') .replace(/"/g, '&quot;')
.replace(/'/g, '&#39;'); .replace(/'/g, '&#39;');
}; }
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.deepQuery( sBarWidth = self.query(
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.deepQuery( barMinHeightMap[seriesIndex] = self.query(
queryTarget, queryTarget,
'barMinHeight' 'barMinHeight'
); );
barGap = typeof barGap != 'undefined' barGap = typeof barGap != 'undefined'
? barGap ? barGap
: self.deepQuery( : self.query(
queryTarget, queryTarget,
'barGap' 'barGap'
); );
barCategoryGap = typeof barCategoryGap != 'undefined' barCategoryGap = typeof barCategoryGap != 'undefined'
? barCategoryGap ? barCategoryGap
: self.deepQuery( : self.query(
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;
...@@ -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: false realtime: true
// 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.type, lineType : lineType,
lineWidth : option.splitLine.lineStyle.width lineWidth : lineWidth
} }
}; };
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.type, linetype : lineType,
lineWidth : option.splitLine.lineStyle.width lineWidth : lineWidth
} }
}; };
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.type, lineType : lineType,
lineWidth : option.splitLine.lineStyle.width lineWidth : lineWidth
} }
}; };
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.type, lineType : lineType,
lineWidth : option.splitLine.lineStyle.width lineWidth : lineWidth
} }
}; };
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, '&amp;') .replace(/&/g, '&amp;')
.replace(/</g, '&lt;') .replace(/</g, '&lt;')
.replace(/>/g, '&gt;') .replace(/>/g, '&gt;')
.replace(/"/g, '&quot;') .replace(/"/g, '&quot;')
.replace(/'/g, '&#39;'); .replace(/'/g, '&#39;');
}; }
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.deepQuery( sBarWidth = self.query(
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.deepQuery( barMinHeightMap[seriesIndex] = self.query(
queryTarget, queryTarget,
'barMinHeight' 'barMinHeight'
); );
barGap = typeof barGap != 'undefined' barGap = typeof barGap != 'undefined'
? barGap ? barGap
: self.deepQuery( : self.query(
queryTarget, queryTarget,
'barGap' 'barGap'
); );
barCategoryGap = typeof barCategoryGap != 'undefined' barCategoryGap = typeof barCategoryGap != 'undefined'
? barCategoryGap ? barCategoryGap
: self.deepQuery( : self.query(
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;
因为 它太大了无法显示 source diff 。你可以改为 查看blob
...@@ -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;
......
...@@ -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;
......
...@@ -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;
......
...@@ -1308,7 +1308,7 @@ define(function (require) { ...@@ -1308,7 +1308,7 @@ define(function (require) {
.replace(/>/g, '&gt;') .replace(/>/g, '&gt;')
.replace(/"/g, '&quot;') .replace(/"/g, '&quot;')
.replace(/'/g, '&#39;'); .replace(/'/g, '&#39;');
}; }
zr.on(zrConfig.EVENT.MOUSEMOVE, _onmousemove); zr.on(zrConfig.EVENT.MOUSEMOVE, _onmousemove);
zr.on(zrConfig.EVENT.GLOBALOUT, _onglobalout); zr.on(zrConfig.EVENT.GLOBALOUT, _onglobalout);
......
...@@ -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);
......
...@@ -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.
先完成此消息的编辑!
想要评论请 注册