提交 c203e054 编写于 作者: P pah100

Merge branch 'master' of https://github.com/pissang/echarts-next

define(function (require) {
var echarts = require('../../echarts');
var actionInfo = {
type: 'geoRoam',
event: 'geoRoam',
update: 'updateLayout'
};
/**
* @payload
* @property {string} [component=series]
* @property {string} name Component name
* @property {number} [dx]
* @property {number} [dy]
* @property {number} [zoom]
* @property {number} [originX]
* @property {number} [originY]
*/
echarts.registerAction(actionInfo, function (payload, ecModel) {
var componentType = payload.component || 'series';
ecModel.eachComponent(componentType, function (componentModel) {
if (componentModel.name === payload.name) {
var dx = payload.dx;
var dy = payload.dy;
var zoom = payload.zoom;
var geo = componentModel.coordinateSystem;
if (geo.type !== 'geo') {
return;
}
var roamDetailModel = componentModel.getModel('roamDetail');
var panX = roamDetailModel.get('x') || 0;
var panY = roamDetailModel.get('y') || 0;
if (dx != null && dy != null) {
// FIXME Must divide mapScale ?
panX += dx;
panY += dy;
componentModel.setRoamPan
&& componentModel.setRoamPan(panX, panY);
geo && geo.setPan(panX, panY);
}
if (zoom != null && componentModel.setRoamZoom) {
var previousZoom = roamDetailModel.get('zoom') || 1;
var fixX = (payload.originX - panX) * (zoom - 1);
var fixY = (payload.originY - panY) * (zoom - 1);
panX -= fixX;
panY -= fixY;
geo && geo.setPan(panX, panY);
componentModel.setRoamPan
&& componentModel.setRoamPan(panX, panY);
geo && geo.setZoom(zoom * previousZoom);
componentModel.setRoamZoom(zoom * previousZoom);
}
}
});
});
});
\ No newline at end of file
...@@ -38,6 +38,26 @@ define(function(require) { ...@@ -38,6 +38,26 @@ define(function(require) {
barGap: '30%', barGap: '30%',
// 类目间柱形距离,默认为类目间距的20%,可设固定值 // 类目间柱形距离,默认为类目间距的20%,可设固定值
barCategoryGap: '20%', barCategoryGap: '20%',
label: {
normal: {
show: false
// formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调
// 默认自适应,水平布局为'top',垂直布局为'right',可选为
// 'inside' | 'insideleft' | 'insideTop' | 'insideRight' | 'insideBottom' |
// 'outside' |'left' | 'right'|'top'|'bottom'
// position:
// textStyle: null // 默认使用全局文本样式,详见TEXTSTYLE
},
emphasis: {
show: false
// formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调
// position: 默认自适应,水平布局为'top',垂直布局为'right',可选为
// 'inside'|'left'|'right'|'top'|'bottom'
// textStyle: null // 默认使用全局文本样式,详见TEXTSTYLE
}
},
itemStyle: { itemStyle: {
normal: { normal: {
// color: '各异', // color: '各异',
...@@ -46,31 +66,16 @@ define(function(require) { ...@@ -46,31 +66,16 @@ define(function(require) {
// 柱条边线圆角,单位px,默认为0 // 柱条边线圆角,单位px,默认为0
barBorderRadius: 0, barBorderRadius: 0,
// 柱条边线线宽,单位px,默认为1 // 柱条边线线宽,单位px,默认为1
barBorderWidth: 0, barBorderWidth: 0
label: {
show: false
// formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调
// 默认自适应,水平布局为'top',垂直布局为'right',可选为
// 'inside' | 'insideleft' | 'insideTop' | 'insideRight' | 'insideBottom' |
// 'outside' |'left' | 'right'|'top'|'bottom'
// position:
// textStyle: null // 默认使用全局文本样式,详见TEXTSTYLE
}
}, },
emphasis: { emphasis: {
// color: '各异', // color: '各异',
barBorderColor: '#fff', // 柱条边线 // 柱条边线
barBorderRadius: 0, // 柱条边线圆角,单位px,默认为0 barBorderColor: '#fff',
barBorderWidth: 0, // 柱条边线线宽,单位px,默认为1 // 柱条边线圆角,单位px,默认为0
label: { barBorderRadius: 0,
show: false // 柱条边线线宽,单位px,默认为1
// formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调 barBorderWidth: 0,
// position: 默认自适应,水平布局为'top',垂直布局为'right',可选为
// 'inside'|'left'|'right'|'top'|'bottom'
// textStyle: null // 默认使用全局文本样式,详见TEXTSTYLE
}
} }
} }
} }
......
...@@ -99,7 +99,7 @@ define(function (require) { ...@@ -99,7 +99,7 @@ define(function (require) {
_updateStyle: function (seriesModel, data, isHorizontal) { _updateStyle: function (seriesModel, data, isHorizontal) {
data.eachItemGraphicEl(function (rect, idx) { data.eachItemGraphicEl(function (rect, idx) {
var itemModel = data.getItemModel(idx); var itemModel = data.getItemModel(idx);
var labelModel = itemModel.getModel('itemStyle.normal.label'); var labelModel = itemModel.getModel('label.normal');
var color = data.getItemVisual(idx, 'color'); var color = data.getItemVisual(idx, 'color');
var layout = data.getItemLayout(idx); var layout = data.getItemLayout(idx);
......
...@@ -151,8 +151,6 @@ define(function (require) { ...@@ -151,8 +151,6 @@ define(function (require) {
symbolSize[0], symbolSize[1] symbolSize[0], symbolSize[1]
) || {}; ) || {};
} }
var newColor = data.getItemVisual(newIdx, 'color');
el.setColor(newColor);
// TODO Merge animateTo and attr methods into one // TODO Merge animateTo and attr methods into one
newTarget.position = point; newTarget.position = point;
...@@ -163,7 +161,6 @@ define(function (require) { ...@@ -163,7 +161,6 @@ define(function (require) {
el.animateTo(newTarget, 300, 'cubicOut'); el.animateTo(newTarget, 300, 'cubicOut');
} }
else { else {
newTarget.position = point.slice();
// May still have animation. Must stop // May still have animation. Must stop
el.stopAnimation(); el.stopAnimation();
el.attr(newTarget); el.attr(newTarget);
...@@ -192,13 +189,16 @@ define(function (require) { ...@@ -192,13 +189,16 @@ define(function (require) {
.execute(); .execute();
// Update common properties // Update common properties
var itemStyleAccessPath = ['itemStyle', 'normal']; var normalStyleAccessPath = ['itemStyle', 'normal'];
var emphasisStyleAccessPath = [normalStyleAccessPath[0], 'emphasis'];
data.eachItemGraphicEl(function (el, idx) { data.eachItemGraphicEl(function (el, idx) {
var itemModel = data.getItemModel(idx); var itemModel = data.getItemModel(idx);
var normalItemStyleModel = itemModel.getModel(itemStyleAccessPath); var normalItemStyleModel = itemModel.getModel(normalStyleAccessPath);
var labelModel = normalItemStyleModel.getModel('label'); var labelModel = itemModel.getModel('label.normal');
var color = data.getItemVisual(idx, 'color'); var color = data.getItemVisual(idx, 'color');
el.setColor(color);
zrUtil.extend( zrUtil.extend(
el.style, el.style,
normalItemStyleModel.getItemStyle(['color']) normalItemStyleModel.getItemStyle(['color'])
...@@ -221,13 +221,23 @@ define(function (require) { ...@@ -221,13 +221,23 @@ define(function (require) {
graphic.setHoverStyle( graphic.setHoverStyle(
el, el,
itemModel.getModel('itemStyle.emphasis').getItemStyle() itemModel.getModel(emphasisStyleAccessPath).getItemStyle()
); );
}, this); }, this);
this._data = data; this._data = data;
}, },
updateLayout: function () {
var data = this._data;
if (data) {
// Not use animation
data.eachItemGraphicEl(function (el, idx) {
el.attr('position', data.getItemLayout(idx));
});
}
},
remove: function (enableAnimation) { remove: function (enableAnimation) {
if (this._data) { if (this._data) {
var group = this.group; var group = this.group;
......
...@@ -27,36 +27,44 @@ define(function(require) { ...@@ -27,36 +27,44 @@ define(function(require) {
gridIndex: 0, gridIndex: 0,
// 'nearest', 'min', 'max', 'average' // 'nearest', 'min', 'max', 'average'
dataFilter: 'nearest', dataFilter: 'nearest',
label: {
normal: {
show: false
// formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调
// position: 默认自适应,水平布局为'top',垂直布局为'right',可选为
// 'inside'|'left'|'right'|'top'|'bottom'
// textStyle: null // 默认使用全局文本样式,详见TEXTSTYLE
},
emphasis: {
show: false
// formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调
// position: 默认自适应,水平布局为'top',垂直布局为'right',可选为
// 'inside'|'left'|'right'|'top'|'bottom'
// textStyle: null // 默认使用全局文本样式,详见TEXTSTYLE
}
},
itemStyle: { itemStyle: {
normal: { normal: {
// color: 各异, // color: 各异
label: {
show: false
// formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调
// position: 默认自适应,水平布局为'top',垂直布局为'right',可选为
// 'inside'|'left'|'right'|'top'|'bottom'
// textStyle: null // 默认使用全局文本样式,详见TEXTSTYLE
},
lineStyle: {
width: 2,
type: 'solid',
shadowColor: 'rgba(0,0,0,0)', //默认透明
shadowBlur: 0,
shadowOffsetX: 0,
shadowOffsetY: 0
}
}, },
emphasis: { emphasis: {
// color: 各异, // color: 各异,
label: {
show: false
// formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调
// position: 默认自适应,水平布局为'top',垂直布局为'right',可选为
// 'inside'|'left'|'right'|'top'|'bottom'
// textStyle: null // 默认使用全局文本样式,详见TEXTSTYLE
}
} }
}, },
lineStyle: {
normal: {
width: 2,
type: 'solid',
shadowColor: 'rgba(0,0,0,0)', //默认透明
shadowBlur: 0,
shadowOffsetX: 0,
shadowOffsetY: 0
}
},
// areaStyle: {
// },
// smooth: false, // smooth: false,
// 拐点图形类型 // 拐点图形类型
symbol: 'emptyCircle', symbol: 'emptyCircle',
......
...@@ -92,8 +92,8 @@ define(function(require) { ...@@ -92,8 +92,8 @@ define(function(require) {
var coordSys = seriesModel.coordinateSystem; var coordSys = seriesModel.coordinateSystem;
var group = this.group; var group = this.group;
var data = seriesModel.getData(); var data = seriesModel.getData();
var lineStyleModel = seriesModel.getModel('itemStyle.normal.lineStyle'); var lineStyleModel = seriesModel.getModel('lineStyle.normal');
var areaStyleModel = seriesModel.getModel('itemStyle.normal.areaStyle'); var areaStyleModel = seriesModel.getModel('areaStyle.normal');
var points = data.mapArray(data.getItemLayout, true); var points = data.mapArray(data.getItemLayout, true);
......
...@@ -6,6 +6,8 @@ define(function (require) { ...@@ -6,6 +6,8 @@ define(function (require) {
require('./map/MapView'); require('./map/MapView');
require('../action/geoRoam');
echarts.registerLayout(require('./map/mapSymbolLayout')); echarts.registerLayout(require('./map/mapSymbolLayout'));
echarts.registerVisualCoding('chart', require('./map/mapVisual')); echarts.registerVisualCoding('chart', require('./map/mapVisual'));
......
...@@ -86,35 +86,54 @@ define(function (require) { ...@@ -86,35 +86,54 @@ define(function (require) {
clickable: true, clickable: true,
// 是否开启缩放及漫游模式 // 是否开启缩放及漫游模式
// roam: false, // roam: false,
// 在 roam 开启的时候使用
roamDetail: {
x: 0,
y: 0,
zoom: 1
},
label: {
normal: {
show: false,
textStyle: {
color: '#000'
}
},
emphasis: {
show: false,
textStyle: {
color: '#000'
}
}
},
// scaleLimit: null, // scaleLimit: null,
itemStyle: { itemStyle: {
normal: { normal: {
// color: 各异, // color: 各异,
borderWidth: 0.5, borderWidth: 0.5,
borderColor: '#444', borderColor: '#444',
areaStyle: { areaColor: '#eee'
color: '#eee'
},
label: {
show: false,
textStyle: {
color: '#000'
}
}
}, },
// 也是选中样式 // 也是选中样式
emphasis: { emphasis: {
areaStyle: { areaColor: 'rgba(255,215,0,0.8)'
color: 'rgba(255,215,0,0.8)'
},
label: {
show: false,
textStyle: {
color: '#000'
}
}
} }
} }
},
setRoamZoom: function (zoom) {
var roamDetail = this.option.roamDetail;
roamDetail && (roamDetail.zoom = zoom);
},
setRoamPan: function (x, y) {
var roamDetail = this.option.roamDetail;
if (roamDetail) {
roamDetail.x = x;
roamDetail.y = y;
}
} }
}) })
}); });
\ No newline at end of file
...@@ -3,18 +3,58 @@ define(function (require) { ...@@ -3,18 +3,58 @@ define(function (require) {
var zrUtil = require('zrender/core/util'); var zrUtil = require('zrender/core/util');
var graphic = require('../../util/graphic'); var graphic = require('../../util/graphic');
var RoamController = require('../../component/helper/RoamController');
require('../../echarts').extendChartView({ require('../../echarts').extendChartView({
type: 'map', type: 'map',
init: function (ecModel, api) {
var controller = new RoamController(api.getZr(), null, null);
this._controller = controller;
},
render: function (mapModel, ecModel, api) { render: function (mapModel, ecModel, api) {
this.group.removeAll(); var group = this.group;
group.removeAll();
mapModel.needsDrawMap && mapModel.needsDrawMap &&
this._renderArea(mapModel, ecModel, api); this._renderArea(mapModel, ecModel, api);
mapModel.get('showLegendSymbol') && ecModel.getComponent('legend') mapModel.get('showLegendSymbol') && ecModel.getComponent('legend')
&& this._renderSymbols(mapModel, ecModel, api); && this._renderSymbols(mapModel, ecModel, api);
this._updateController(mapModel, ecModel, api);
},
_updateController: function (mapModel, ecModel, api) {
var geo = mapModel.coordinateSystem;
var controller = this._controller;
controller.off('pan')
.on('pan', function (dx, dy) {
api.dispatch({
type: 'geoRoam',
// component: 'series',
name: mapModel.name,
dx: dx,
dy: dy
});
});
controller.off('zoom')
.on('zoom', function (wheelDelta, mouseX, mouseY) {
api.dispatch({
type: 'geoRoam',
// component: 'series',
name: mapModel.name,
zoom: wheelDelta,
originX: mouseX,
originY: mouseY
});
// TODO Update lineWidth
});
controller.rect = geo.getViewBox();
}, },
_renderArea: function (mapModel, ecModel, api) { _renderArea: function (mapModel, ecModel, api) {
...@@ -47,7 +87,7 @@ define(function (require) { ...@@ -47,7 +87,7 @@ define(function (require) {
// Competitable with 2.0 // Competitable with 2.0
var areaStylePath = 'areaStyle.color'; var areaStylePath = 'areaStyle.color';
itemStyle.fill = itemStyleModel.get(areaStylePath); itemStyle.fill = itemStyleModel.get(areaStylePath);
hoverItemStyle.fill = hoverItemStyleModel.get(areaStylePath); hoverItemStyle.fill = hoverItemStyleModel.get('areaColor');
var styleObj = zrUtil.defaults( var styleObj = zrUtil.defaults(
{ {
...@@ -90,7 +130,7 @@ define(function (require) { ...@@ -90,7 +130,7 @@ define(function (require) {
return; return;
} }
var itemModel = data.getItemModel(idx); var itemModel = data.getItemModel(idx);
var labelModel = itemModel.getModel('itemStyle.normal.label'); var labelModel = itemModel.getModel('label.normal');
var textStyleModel = labelModel.getModel('textStyle'); var textStyleModel = labelModel.getModel('textStyle');
var layout = data.getItemLayout(idx); var layout = data.getItemLayout(idx);
......
...@@ -4,7 +4,7 @@ define(function (require) { ...@@ -4,7 +4,7 @@ define(function (require) {
var colorList = ecModel.get('color'); var colorList = ecModel.get('color');
var itemStyleModel = seriesModel.getModel('itemStyle.normal'); var itemStyleModel = seriesModel.getModel('itemStyle.normal');
var areaColor = itemStyleModel.get('areaStyle.color'); var areaColor = itemStyleModel.get('areaColor');
var color = itemStyleModel.get('color') var color = itemStyleModel.get('color')
|| colorList[seriesModel.seriesIndex % colorList.length]; || colorList[seriesModel.seriesIndex % colorList.length];
......
...@@ -104,52 +104,41 @@ define(function(require) { ...@@ -104,52 +104,41 @@ define(function(require) {
// selectedMode: false, // selectedMode: false,
// 南丁格尔玫瑰图模式,'radius'(半径) | 'area'(面积) // 南丁格尔玫瑰图模式,'radius'(半径) | 'area'(面积)
// roseType: null, // roseType: null,
label: {
normal: {
show: true,
// 'outer', 'inside', 'center'
position: 'outer'
// formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调
// textStyle: null // 默认使用全局文本样式,详见TEXTSTYLE
// distance: 当position为inner时有效,为label位置到圆心的距离与圆半径(环状图为内外半径和)的比例系数
},
emphasis: {}
},
// Enabled when label.normal.position is 'outer'
labelLine: {
show: true,
// 引导线两段中的第一段长度
length: 20,
// 引导线两段中的第二段长度
length2: 5,
lineStyle: {
// color: 各异,
width: 1,
type: 'solid'
}
},
itemStyle: { itemStyle: {
normal: { normal: {
// color: 各异, // color: 各异,
borderColor: 'rgba(0,0,0,0)', borderColor: 'rgba(0,0,0,0)',
borderWidth: 1, borderWidth: 1
label: {
show: true,
// 'outer', 'inside', 'center'
position: 'outer'
// formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调
// textStyle: null // 默认使用全局文本样式,详见TEXTSTYLE
// distance: 当position为inner时有效,为label位置到圆心的距离与圆半径(环状图为内外半径和)的比例系数
},
labelLine: {
show: true,
// 引导线两段中的第一段长度
length: 20,
// 引导线两段中的第二段长度
length2: 5,
lineStyle: {
// color: 各异,
width: 1,
type: 'solid'
}
}
}, },
emphasis: { emphasis: {
// color: 各异, // color: 各异,
borderColor: 'rgba(0,0,0,0)', borderColor: 'rgba(0,0,0,0)',
borderWidth: 1, borderWidth: 1
label: {
show: false
// position: 'outer'
// formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调
// textStyle: null // 默认使用全局文本样式,详见TEXTSTYLE
// distance: 当position为inner时有效,为label位置到圆心的距离与圆半径(环状图为内外半径和)的比例系数
},
labelLine: {
show: false,
length: 20,
lineStyle: {
// color: 各异,
width: 1,
type: 'solid'
}
}
} }
} }
} }
......
// FIXME emphasis label position is not same with normal label position
define(function (require) { define(function (require) {
'use strict'; 'use strict';
...@@ -6,9 +7,7 @@ define(function (require) { ...@@ -6,9 +7,7 @@ define(function (require) {
return function (seriesModel) { return function (seriesModel) {
var data = seriesModel.getData(); var data = seriesModel.getData();
var itemStyleModel = seriesModel.getModel('itemStyle.normal'); var labelLineModel = seriesModel.getModel('labelLine');
var labelLineModel = itemStyleModel.getModel('labelLine');
var labelModel = itemStyleModel.getModel('label')
var labelLineLen = labelLineModel.get('length'); var labelLineLen = labelLineModel.get('length');
var labelLineLen2 = labelLineModel.get('length2'); var labelLineLen2 = labelLineModel.get('length2');
...@@ -18,7 +17,7 @@ define(function (require) { ...@@ -18,7 +17,7 @@ define(function (require) {
data.each(function (idx) { data.each(function (idx) {
var layout = data.getItemLayout(idx); var layout = data.getItemLayout(idx);
var itemModel = data.getItemModel(idx); var itemModel = data.getItemModel(idx);
var labelModel = itemModel.getModel('itemStyle.normal.label'); var labelModel = itemModel.getModel('label.normal');
var font = labelModel.getModel('textStyle').getFont(); var font = labelModel.getModel('textStyle').getFont();
var labelPosition = labelModel.get('position'); var labelPosition = labelModel.get('position');
......
...@@ -37,27 +37,23 @@ define(function (require) { ...@@ -37,27 +37,23 @@ define(function (require) {
// symbol: null, // 图形类型 // symbol: null, // 图形类型
symbolSize: 4, // 图形大小,半宽(半径)参数,当图形为方向或菱形则总宽度为symbolSize * 2 symbolSize: 4, // 图形大小,半宽(半径)参数,当图形为方向或菱形则总宽度为symbolSize * 2
// symbolRotate: null, // 图形旋转控制 // symbolRotate: null, // 图形旋转控制
itemStyle: {
label: {
normal: { normal: {
opacity: 0.8, show: false
// color: 各异, // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调
label: { // position: 默认自适应,水平布局为'top',垂直布局为'right',可选为
show: false // 'inside'|'left'|'right'|'top'|'bottom'
// formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调 // textStyle: null // 默认使用全局文本样式,详见TEXTSTYLE
// position: 默认自适应,水平布局为'top',垂直布局为'right',可选为
// 'inside'|'left'|'right'|'top'|'bottom'
// textStyle: null // 默认使用全局文本样式,详见TEXTSTYLE
}
}, },
emphasis: { emphasis: {
// color: '各异' show: false
label: { }
show: false },
// formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调 itemStyle: {
// position: 默认自适应,水平布局为'top',垂直布局为'right',可选为 normal: {
// 'inside'|'left'|'right'|'top'|'bottom' opacity: 0.8,
// textStyle: null // 默认使用全局文本样式,详见TEXTSTYLE // color: 各异
}
} }
} }
} }
......
...@@ -17,6 +17,10 @@ define(function (require) { ...@@ -17,6 +17,10 @@ define(function (require) {
); );
}, },
updateLayout: function () {
this._dataSymbol.updateLayout();
},
remove: function (ecModel) { remove: function (ecModel) {
this._dataSymbol.remove(ecModel.get('animation')); this._dataSymbol.remove(ecModel.get('animation'));
} }
......
...@@ -61,7 +61,7 @@ define(function(require) { ...@@ -61,7 +61,7 @@ define(function(require) {
inverse: false, inverse: false,
seriesIndex: null, // 所控制的series indices,默认所有有value的series. seriesIndex: null, // 所控制的series indices,默认所有有value的series.
splitNumber: 5, // 分割段数,默认为5,为0时为线性渐变 (contimous) splitNumber: 5, // 分割段数,默认为5,为0时为线性渐变 (continous)
backgroundColor: 'rgba(0,0,0,0)', backgroundColor: 'rgba(0,0,0,0)',
borderColor: '#ccc', // 值域边框颜色 borderColor: '#ccc', // 值域边框颜色
contentColor: '#5793f3', contentColor: '#5793f3',
......
...@@ -13,11 +13,11 @@ define(function(require) { ...@@ -13,11 +13,11 @@ define(function(require) {
update: 'updateView' update: 'updateView'
}; };
echarts.registerAction(actionInfo, function (event, ecModel) { echarts.registerAction(actionInfo, function (payload, ecModel) {
var fromDataRangeModel = ecModel.getComponentById(event.dataRangeModelId); var fromDataRangeModel = ecModel.getComponentById(payload.dataRangeModelId);
fromDataRangeModel && fromDataRangeModel.setSelected(event.selected); fromDataRangeModel && fromDataRangeModel.setSelected(payload.selected);
// Find all dataRangeModel that has the same visualType and controls the same series. // Find all dataRangeModel that has the same visualType and controls the same series.
// var linkedNodesFinder = modelUtil.createLinkedNodesFinder( // var linkedNodesFinder = modelUtil.createLinkedNodesFinder(
...@@ -40,7 +40,7 @@ define(function(require) { ...@@ -40,7 +40,7 @@ define(function(require) {
// var effectedModels = linkedNodesFinder(fromDataRangeModel).nodes; // var effectedModels = linkedNodesFinder(fromDataRangeModel).nodes;
// zrUtil.each(effectedModels, function (dataRangeModel) { // zrUtil.each(effectedModels, function (dataRangeModel) {
// fromDataRangeModel.setSelected(event.selected); // fromDataRangeModel.setSelected(payload.selected);
// }); // });
}); });
......
...@@ -3,4 +3,6 @@ define(function (require) { ...@@ -3,4 +3,6 @@ define(function (require) {
require('../coord/geo/geoCreator'); require('../coord/geo/geoCreator');
require('./geo/GeoView'); require('./geo/GeoView');
require('../action/geoRoam');
}); });
\ No newline at end of file
...@@ -5,11 +5,31 @@ define(function (require) { ...@@ -5,11 +5,31 @@ define(function (require) {
var zrUtil = require('zrender/core/util'); var zrUtil = require('zrender/core/util');
var graphic = require('../../util/graphic'); var graphic = require('../../util/graphic');
var RoamController = require('../helper/RoamController');
return require('../../echarts').extendComponentView({ return require('../../echarts').extendComponentView({
type: 'geo', type: 'geo',
init: function (ecModel, api) {
var mapGroup = new graphic.Group();
var controller = new RoamController(api.getZr(), mapGroup, null);
this._controller = controller;
this._mapGroup = mapGroup;
},
render: function (geoModel, ecModel, api) { render: function (geoModel, ecModel, api) {
var group = this.group;
var mapGroup = this._mapGroup;
group.removeAll();
group.add(mapGroup);
mapGroup.removeAll();
var geo = geoModel.coordinateSystem; var geo = geoModel.coordinateSystem;
var itemStyleModel = geoModel.getModel('itemStyle.normal'); var itemStyleModel = geoModel.getModel('itemStyle.normal');
...@@ -19,15 +39,12 @@ define(function (require) { ...@@ -19,15 +39,12 @@ define(function (require) {
var itemStyle = itemStyleModel.getItemStyle(); var itemStyle = itemStyleModel.getItemStyle();
var hoverItemStyle = hoverItemStyleModel.getItemStyle(); var hoverItemStyle = hoverItemStyleModel.getItemStyle();
var mapGroup = new graphic.Group();
var group = this.group;
var scale = geo.scale; var scale = geo.scale;
group.add(mapGroup); mapGroup.attr({
position: geo.position,
mapGroup.position = geo.position.slice(); scale: scale
mapGroup.scale = scale.slice(); });
itemStyle.lineWidth && (itemStyle.lineWidth /= scale[0]); itemStyle.lineWidth && (itemStyle.lineWidth /= scale[0]);
hoverItemStyle.lineWidth && (hoverItemStyle.lineWidth /= scale[0]); hoverItemStyle.lineWidth && (hoverItemStyle.lineWidth /= scale[0]);
...@@ -53,6 +70,39 @@ define(function (require) { ...@@ -53,6 +70,39 @@ define(function (require) {
mapGroup.add(regionGroup); mapGroup.add(regionGroup);
}); });
}
this._updateController(geoModel, ecModel, api);
},
_updateController: function (geoModel, ecModel, api) {
var geo = geoModel.coordinateSystem;
var controller = this._controller;
controller.off('pan')
.off('zoom')
.on('pan', function (dx, dy) {
api.dispatch({
type: 'geoRoam',
component: 'geo',
name: geoModel.name,
dx: dx,
dy: dy
});
})
.on('zoom', function (wheelDelta, mouseX, mouseY) {
api.dispatch({
type: 'geoRoam',
component: 'geo',
name: geoModel.name,
zoom: wheelDelta,
originX: mouseX,
originY: mouseY
});
// TODO Update lineWidth
});
controller.rect = geo.getViewBox();
},
}); });
}); });
\ No newline at end of file
define(function (require) {
var Eventful = require('zrender/mixin/Eventful');
var zrUtil = require('zrender/core/util');
function mousedown(e) {
var x = e.offsetX;
var y = e.offsetY;
var rect = this.rect;
if (rect && rect.contain(x, y)) {
this._x = x;
this._y = y;
this._dragging = true;
}
}
function mousemove(e) {
if (this._dragging) {
var x = e.offsetX;
var y = e.offsetY;
var dx = x - this._x;
var dy = y - this._y;
this._x = x;
this._y = y;
var target = this.target;
if (target) {
var pos = target.position;
pos[0] += dx;
pos[1] += dy;
target.dirty();
}
this.trigger('pan', dx, dy);
}
}
function mouseup(e) {
this._dragging =false;
}
function mousewheel(e) {
var mouseX = e.offsetX;
var mouseY = e.offsetY;
var rect = this.rect;
var wheelDelta = e.wheelDelta > 0 ? 1.1 : 1 / 1.1;
// console.log(wheelDelta, e.wheelDelta);
if (rect && rect.contain(mouseX, mouseY)) {
var target = this.target;
if (target) {
var pos = target.position;
var scale = target.scale;
var newZoom = this._zoom = this._zoom || 1;
newZoom *= wheelDelta;
// newZoom = Math.max(
// Math.min(target.maxZoom, newZoom),
// target.minZoom
// );
var zoomScale = newZoom / this._zoom;
this._zoom = newZoom;
// Keep the mouse center when scaling
pos[0] -= (mouseX - pos[0]) * (zoomScale - 1);
pos[1] -= (mouseY - pos[1]) * (zoomScale - 1);
scale[0] *= zoomScale;
scale[1] *= zoomScale;
target.dirty();
}
this.trigger('zoom', wheelDelta, mouseX, mouseY);
}
}
/**
* @param {module:zrender/zrender~ZRender} zr
* @param {module:zrender/Element} target
* @param {module:zrender/core/BoundingRect} rect
*/
function RoamController(zr, target, rect) {
/**
* @type {module:zrender/Element}
*/
this.target = target;
/**
* @type {module:zrender/core/BoundingRect}
*/
this.rect = rect;
zr.on('mousedown', mousedown, this);
zr.on('mousemove', mousemove, this);
zr.on('mouseup', mouseup, this);
zr.on('mousewheel', mousewheel, this);
Eventful.call(this);
}
zrUtil.mixin(RoamController, Eventful);
return RoamController;
});
\ No newline at end of file
...@@ -2,12 +2,22 @@ define(function (require) { ...@@ -2,12 +2,22 @@ define(function (require) {
var parseGeoJson = require('./parseGeoJson'); var parseGeoJson = require('./parseGeoJson');
var vector = require('zrender/core/vector'); var vector = require('zrender/core/vector');
var matrix = require('zrender/core/matrix');
var Transformable = require('zrender/mixin/Transformable'); var Transformable = require('zrender/mixin/Transformable');
var zrUtil = require('zrender/core/util'); var zrUtil = require('zrender/core/util');
var BoundingRect = require('zrender/core/BoundingRect'); var BoundingRect = require('zrender/core/BoundingRect');
var v2Copy = vector.copy;
// Dummy transform node
function TransformDummy() {
Transformable.call(this);
}
zrUtil.mixin(TransformDummy, Transformable);
function Geo(name, geoJson) { function Geo(name, geoJson) {
this.name = name; this.name = name;
...@@ -22,6 +32,21 @@ define(function (require) { ...@@ -22,6 +32,21 @@ define(function (require) {
Transformable.call(this); Transformable.call(this);
this._nameCoordMap = {}; this._nameCoordMap = {};
/**
* @param Array.<number>
*/
this.mapPosition = [0, 0];
/**
* @param Array.<number>
*/
this.mapScale = [1, 1];
this._roamTransform = new TransformDummy();
this._mapTransform = new TransformDummy();
}; };
Geo.prototype = { Geo.prototype = {
...@@ -80,12 +105,12 @@ define(function (require) { ...@@ -80,12 +105,12 @@ define(function (require) {
/** /**
* Transformed to particular position and size * Transformed to particular position and size
* @param {number} cx * @param {number} x
* @param {number} cy * @param {number} y
* @param {number} width * @param {number} width
* @param {number} height * @param {number} height
*/ */
transformTo: function (cx, cy, width, height) { transformTo: function (x, y, width, height) {
var rect = this.getBoundingRect(); var rect = this.getBoundingRect();
rect = rect.clone(); rect = rect.clone();
...@@ -93,17 +118,79 @@ define(function (require) { ...@@ -93,17 +118,79 @@ define(function (require) {
rect.y = -rect.y - rect.height; rect.y = -rect.y - rect.height;
this.transform = rect.calculateTransform( this.transform = rect.calculateTransform(
new BoundingRect(cx - width / 2, cy - height / 2, width, height) new BoundingRect(x, y, width, height)
); );
this.decomposeTransform(); this.decomposeTransform();
var scale = this.scale; var scale = this.scale;
var mapTransform = this._mapTransform
scale[1] = -scale[1];
v2Copy(mapTransform.position, this.position);
v2Copy(mapTransform.scale, scale);
this._updateTransform();
},
/**
* @param {number} x
* @param {number} y
* @param {number} width
* @param {number} height
*/
setViewBox: function (x, y, width, height) {
this._viewBox = new BoundingRect(x, y, width, height);
},
/**
* @param {number} x
* @param {number} y
*/
setPan: function (x, y) {
this._roamTransform.position = [x, y];
this._updateTransform();
},
/**
* @param {number} zoom
*/
setZoom: function (zoom) {
this._roamTransform.scale = [zoom, zoom];
this._updateTransform();
},
/**
* Update transform from roam and mapLocation
* @private
*/
_updateTransform: function () {
var roamTransform = this._roamTransform;
var mapTransform = this._mapTransform;
var scale = this.scale;
mapTransform.parent = roamTransform;
roamTransform.updateTransform();
mapTransform.updateTransform();
mapTransform.transform && matrix.copy(this.transform, mapTransform.transform);
this.decomposeTransform();
scale[1] = -scale[1]; scale[1] = -scale[1];
// Update transform position
this.updateTransform(); this.updateTransform();
}, },
/**
* @return {module:zrender/core/BoundingRect}
*/
getBoundingRect: function () { getBoundingRect: function () {
if (this._rect) { if (this._rect) {
return this._rect; return this._rect;
...@@ -120,6 +207,13 @@ define(function (require) { ...@@ -120,6 +207,13 @@ define(function (require) {
return this._rect = rect || new BoundingRect(0, 0, 0, 0); return this._rect = rect || new BoundingRect(0, 0, 0, 0);
}, },
/**
* @return {module:zrender/core/BoundingRect}
*/
getViewBox: function () {
return this._viewBox;
},
/** /**
* If contain point * If contain point
* @param {Array.<number>} point * @param {Array.<number>} point
...@@ -134,7 +228,6 @@ define(function (require) { ...@@ -134,7 +228,6 @@ define(function (require) {
* @return {boolean} * @return {boolean}
*/ */
containData: function (data) { containData: function (data) {
}, },
/** /**
......
...@@ -29,6 +29,13 @@ define(function (require) { ...@@ -29,6 +29,13 @@ define(function (require) {
// Map type // Map type
map: '', map: '',
// 在 roam 开启的时候使用
roamDetail: {
x: 0,
y: 0,
zoom: 1
},
itemStyle: { itemStyle: {
normal: { normal: {
// color: 各异, // color: 各异,
...@@ -52,6 +59,19 @@ define(function (require) { ...@@ -52,6 +59,19 @@ define(function (require) {
} }
} }
} }
},
setRoamZoom: function (zoom) {
var roamDetail = this.option.roamDetail;
roamDetail && (roamDetail.zoom = zoom);
},
setRoamPan: function (x, y) {
var roamDetail = this.option.roamDetail;
if (roamDetail) {
roamDetail.x = x;
roamDetail.y = y;
}
} }
}); });
}); });
\ No newline at end of file
...@@ -10,12 +10,13 @@ define(function (require) { ...@@ -10,12 +10,13 @@ define(function (require) {
/** /**
* Resize method bound to the geo * Resize method bound to the geo
* @param {module:echarts/coord/geo/GeoModel|module:echarts/chart/map/MapModel} locModel * @param {module:echarts/coord/geo/GeoModel|module:echarts/chart/map/MapModel} geoModel
* @param {module:echarts/ExtensionAPI} api * @param {module:echarts/ExtensionAPI} api
*/ */
var resizeGeo = function (locModel, api) { var resizeGeo = function (geoModel, api) {
if (locModel.type === 'series.map') { var locModel = geoModel;
locModel = locModel.getModel('mapLocation'); if (geoModel.type === 'series.map') {
locModel = geoModel.getModel('mapLocation');
} }
var x = locModel.get('x'); var x = locModel.get('x');
...@@ -66,7 +67,19 @@ define(function (require) { ...@@ -66,7 +67,19 @@ define(function (require) {
break; break;
} }
this.transformTo(cx, cy, width, height); x = cx - width / 2;
y = cy - height / 2;
this.transformTo(x, y, width, height);
this.setViewBox(x, y, width, height);
var roamDetailModel = geoModel.getModel('roamDetail');
var panX = roamDetailModel.get('x') || 0;
var panY = roamDetailModel.get('y') || 0;
var zoom = roamDetailModel.get('zoom') || 1;
this.setPan(panX, panY);
this.setZoom(zoom);
} }
var geoCreator = { var geoCreator = {
......
...@@ -20,6 +20,8 @@ define(function (require) { ...@@ -20,6 +20,8 @@ define(function (require) {
var zrender = require('zrender'); var zrender = require('zrender');
var zrUtil = require('zrender/core/util'); var zrUtil = require('zrender/core/util');
var each = zrUtil.each;
var VISUAL_CODING_STAGES = ['echarts', 'chart', 'component']; var VISUAL_CODING_STAGES = ['echarts', 'chart', 'component'];
// TODO Transform first or filter first // TODO Transform first or filter first
...@@ -110,6 +112,10 @@ define(function (require) { ...@@ -110,6 +112,10 @@ define(function (require) {
// PENDING // PENDING
option = zrUtil.clone(option, true); option = zrUtil.clone(option, true);
each(optionPreprocessorFuncs, function (preProcess) {
preProcess(option);
})
var ecModel = this._model; var ecModel = this._model;
if (!ecModel || notMerge) { if (!ecModel || notMerge) {
ecModel = new GlobalModel(option, null, this._theme); ecModel = new GlobalModel(option, null, this._theme);
...@@ -145,6 +151,9 @@ define(function (require) { ...@@ -145,6 +151,9 @@ define(function (require) {
return this._zr.getHeight(); return this._zr.getHeight();
}, },
/**
* @param {Object} payload
*/
update: function (payload) { update: function (payload) {
console.time('update'); console.time('update');
...@@ -162,7 +171,7 @@ define(function (require) { ...@@ -162,7 +171,7 @@ define(function (require) {
this._coordinateSystem.update(ecModel, this._extensionAPI); this._coordinateSystem.update(ecModel, this._extensionAPI);
this._doLayout(ecModel, payload); this._doLayout(ecModel);
this._doVisualCoding(ecModel); this._doVisualCoding(ecModel);
...@@ -174,14 +183,40 @@ define(function (require) { ...@@ -174,14 +183,40 @@ define(function (require) {
console.timeEnd('update'); console.timeEnd('update');
}, },
// PENDING
/**
* @param {Object} payload
*/
updateView: function (payload) { updateView: function (payload) {
var ecModel = this._model; var ecModel = this._model;
this._doLayout(ecModel, payload); this._doLayout(ecModel);
this._doVisualCoding(ecModel); this._doVisualCoding(ecModel);
this._doRender(ecModel, payload); this._invokeUpdateMethod('updateView', ecModel, payload);
},
/**
* @param {Object} payload
*/
updateVisual: function (payload) {
var ecModel = this._model;
this._doVisualCoding(ecModel);
this._invokeUpdateMethod('updateVisual', ecModel, payload);
},
/**
* @param {Object} payload
*/
updateLayout: function (payload) {
var ecModel = this._model;
this._doLayout(ecModel);
this._invokeUpdateMethod('updateLayout', ecModel, payload);
}, },
resize: function () { resize: function () {
...@@ -208,10 +243,32 @@ define(function (require) { ...@@ -208,10 +243,32 @@ define(function (require) {
var actionWrap = actions[payload.type]; var actionWrap = actions[payload.type];
if (actionWrap) { if (actionWrap) {
actionWrap.action(payload, this._model); actionWrap.action(payload, this._model);
this[actionWrap.update || 'update'](payload); this[actionWrap.actionInfo.update || 'update'](payload);
} }
}, },
/**
* @param {string} methodName
* @private
*/
_invokeUpdateMethod: function (methodName, ecModel, payload) {
var api = this._extensionAPI;
// Render all components
// each(this._componentsList, function (component) {
// var componentModel = component.__model;
// component[methodName](componentModel, ecModel, api, payload);
// }, this);
// Upate all charts
ecModel.eachSeries(function (seriesModel, idx) {
var id = seriesModel.uid;
var chart = this._chartsMap[id];
chart[methodName](seriesModel, ecModel, api, payload);
}, this);
},
_prepareCharts: function (ecModel) { _prepareCharts: function (ecModel) {
var chartsList = this._chartsList; var chartsList = this._chartsList;
...@@ -318,8 +375,8 @@ define(function (require) { ...@@ -318,8 +375,8 @@ define(function (require) {
* @private * @private
*/ */
_processData: function (ecModel) { _processData: function (ecModel) {
zrUtil.each(PROCESSOR_STAGES, function (stage) { each(PROCESSOR_STAGES, function (stage) {
zrUtil.each(dataProcessorFuncs[stage] || [], function (process) { each(dataProcessorFuncs[stage] || [], function (process) {
process(ecModel); process(ecModel);
}); });
}); });
...@@ -351,10 +408,10 @@ define(function (require) { ...@@ -351,10 +408,10 @@ define(function (require) {
*/ */
_doLayout: function (ecModel, event) { _doLayout: function (ecModel, event) {
var api = this._extensionAPI; var api = this._extensionAPI;
zrUtil.each(this._layouts, function (layout) { each(this._layouts, function (layout) {
layout.update(ecModel, api, event); layout.update(ecModel, api, event);
}); });
zrUtil.each(layoutFuncs, function (layout) { each(layoutFuncs, function (layout) {
layout(ecModel, api, event); layout(ecModel, api, event);
}); });
}, },
...@@ -366,8 +423,8 @@ define(function (require) { ...@@ -366,8 +423,8 @@ define(function (require) {
* @private * @private
*/ */
_doVisualCoding: function (ecModel) { _doVisualCoding: function (ecModel) {
zrUtil.each(VISUAL_CODING_STAGES, function (stage) { each(VISUAL_CODING_STAGES, function (stage) {
zrUtil.each(visualCodingFuncs[stage] || [], function (visualCoding) { each(visualCodingFuncs[stage] || [], function (visualCoding) {
visualCoding(ecModel); visualCoding(ecModel);
}); });
}); });
...@@ -375,13 +432,14 @@ define(function (require) { ...@@ -375,13 +432,14 @@ define(function (require) {
/** /**
* Render each chart and component * Render each chart and component
* @private
*/ */
_doRender: function (ecModel, event) { _doRender: function (ecModel, payload) {
var api = this._extensionAPI; var api = this._extensionAPI;
// Render all components // Render all components
zrUtil.each(this._componentsList, function (component) { each(this._componentsList, function (component) {
var componentModel = component.__model; var componentModel = component.__model;
component.render(componentModel, ecModel, api, event); component.render(componentModel, ecModel, api, payload);
var z = componentModel.get('z'); var z = componentModel.get('z');
var zlevel = componentModel.get('zlevel'); var zlevel = componentModel.get('zlevel');
...@@ -392,7 +450,7 @@ define(function (require) { ...@@ -392,7 +450,7 @@ define(function (require) {
}); });
}, this); }, this);
zrUtil.each(this._chartsList, function (chart) { each(this._chartsList, function (chart) {
chart.__keepAlive = false; chart.__keepAlive = false;
}, this); }, this);
...@@ -401,7 +459,7 @@ define(function (require) { ...@@ -401,7 +459,7 @@ define(function (require) {
var id = seriesModel.uid; var id = seriesModel.uid;
var chart = this._chartsMap[id]; var chart = this._chartsMap[id];
chart.__keepAlive = true; chart.__keepAlive = true;
chart.render(seriesModel, ecModel, api, event); chart.render(seriesModel, ecModel, api, payload);
var z = seriesModel.get('z'); var z = seriesModel.get('z');
var zlevel = seriesModel.get('zlevel'); var zlevel = seriesModel.get('zlevel');
...@@ -413,7 +471,7 @@ define(function (require) { ...@@ -413,7 +471,7 @@ define(function (require) {
}, this); }, this);
// Remove groups of charts // Remove groups of charts
zrUtil.each(this._chartsList, function (chart) { each(this._chartsList, function (chart) {
if (!chart.__keepAlive) { if (!chart.__keepAlive) {
chart.remove(ecModel, api); chart.remove(ecModel, api);
} }
...@@ -421,10 +479,10 @@ define(function (require) { ...@@ -421,10 +479,10 @@ define(function (require) {
}, },
dispose: function () { dispose: function () {
zrUtil.each(this._components, function (component) { each(this._components, function (component) {
component.dispose(); component.dispose();
}); });
zrUtil.each(this._charts, function (chart) { each(this._charts, function (chart) {
chart.dispose(); chart.dispose();
}); });
...@@ -458,6 +516,12 @@ define(function (require) { ...@@ -458,6 +516,12 @@ define(function (require) {
*/ */
var dataProcessorFuncs = {}; var dataProcessorFuncs = {};
/**
* @type {Array.<Function>}
* @inner
*/
var optionPreprocessorFuncs = [];
/** /**
* Visual coding functions of each stage * Visual coding functions of each stage
* @type {Array.<Object.<string, Function>>} * @type {Array.<Object.<string, Function>>}
...@@ -479,6 +543,14 @@ define(function (require) { ...@@ -479,6 +543,14 @@ define(function (require) {
return new ECharts(dom, theme, opts); return new ECharts(dom, theme, opts);
}, },
/**
* Register option preprocessor
* @param {Function} preprocessorFunc
*/
registerPreprocessor: function (preprocessorFunc) {
optionPreprocessorFuncs.push(preprocessorFunc);
},
/** /**
* @param {string} stage * @param {string} stage
* @param {Function} processorFunc * @param {Function} processorFunc
...@@ -587,5 +659,7 @@ define(function (require) { ...@@ -587,5 +659,7 @@ define(function (require) {
echarts.registerVisualCoding('echarts', require('./visual/defaultColor')); echarts.registerVisualCoding('echarts', require('./visual/defaultColor'));
echarts.registerPreprocessor(require('./preprocessor/backwardCompat'));
return echarts; return echarts;
}); });
\ No newline at end of file
...@@ -21,6 +21,11 @@ define(function(require) { ...@@ -21,6 +21,11 @@ define(function(require) {
type: 'component', type: 'component',
/**
* @readOnly
*/
name: '',
/** /**
* @type {Object} * @type {Object}
* @protected * @protected
...@@ -47,7 +52,7 @@ define(function(require) { ...@@ -47,7 +52,7 @@ define(function(require) {
*/ */
uid: null, uid: null,
init: function () { init: function (option, parentModel, ecModel, dependentModels, index) {
this.mergeDefaultAndTheme(this.option, this.ecModel); this.mergeDefaultAndTheme(this.option, this.ecModel);
}, },
...@@ -80,10 +85,16 @@ define(function(require) { ...@@ -80,10 +85,16 @@ define(function(require) {
// Reset ComponentModel.extend, add preConstruct. // Reset ComponentModel.extend, add preConstruct.
componentUtil.enableClassExtend( componentUtil.enableClassExtend(
ComponentModel, ComponentModel,
function (option, parentModel, ecModel, dependentModels) { function (option, parentModel, ecModel, dependentModels, index) {
this.ecModel = ecModel; this.ecModel = ecModel;
this.dependentModels = dependentModels; this.dependentModels = dependentModels;
this.uid = componentUtil.getUID('componentModel'); this.uid = componentUtil.getUID('componentModel');
var componentName = option.name;
if (componentName == null) {
componentName = this.type + '' + index;
}
this.name = componentName + '';
} }
); );
......
...@@ -18,11 +18,6 @@ define(function(require) { ...@@ -18,11 +18,6 @@ define(function(require) {
*/ */
seriesIndex: 0, seriesIndex: 0,
/**
* @readOnly
*/
name: '',
// coodinateSystem will be injected in the echarts/CoordinateSystem // coodinateSystem will be injected in the echarts/CoordinateSystem
coordinateSystem: null, coordinateSystem: null,
...@@ -47,12 +42,6 @@ define(function(require) { ...@@ -47,12 +42,6 @@ define(function(require) {
this.mergeDefaultAndTheme(option, ecModel); this.mergeDefaultAndTheme(option, ecModel);
var seriesName = this.get('name');
if (seriesName == null) {
seriesName = this.get('type') + '' + seriesIndex;
}
this.name = seriesName + '';
/** /**
* @type {module:echarts/data/List|module:echarts/data/Tree|module:echarts/data/Graph} * @type {module:echarts/data/List|module:echarts/data/Tree|module:echarts/data/Graph}
* @private * @private
......
// Compatitable with 2.0
define(function (require) {
var zrUtil = require('zrender/core/util');
var POSSIBLE_STYLES = [
'areaStyle', 'lineStyle', 'nodeStyle', 'linkStyle',
'chordStyle', 'label'
];
var each = zrUtil.each;
function compatItemStyle(opt) {
var itemStyleOpt = opt.itemStyle;
if (itemStyleOpt) {
each(POSSIBLE_STYLES, function (styleName) {
var normalItemStyleOpt = itemStyleOpt.normal;
var emphasisItemStyleOpt = itemStyleOpt.emphasis;
opt[styleName] = opt[styleName] || {
};
if (normalItemStyleOpt && normalItemStyleOpt[styleName]) {
if (!opt[styleName].normal) {
opt[styleName].normal = normalItemStyleOpt[styleName];
}
else {
zrUtil.merge(opt[styleName].normal, normalItemStyleOpt[styleName]);
}
normalItemStyleOpt[styleName] = null;
}
if (emphasisItemStyleOpt && emphasisItemStyleOpt[styleName]) {
if (!opt[styleName].emphasis) {
opt[styleName].emphasis = emphasisItemStyleOpt[styleName];
}
else {
zrUtil.merge(opt[styleName].emphasis, emphasisItemStyleOpt[styleName]);
}
emphasisItemStyleOpt[styleName] = null;
}
});
}
}
function compatMapSeries(opt) {
}
return function (option) {
zrUtil.each(option.series, function (seriesOpt) {
compatItemStyle(seriesOpt);
var data = seriesOpt.data;
if (data) {
for (var i = 0; i < data.length; i++) {
compatItemStyle(data[i]);
}
}
});
}
});
\ No newline at end of file
...@@ -24,7 +24,7 @@ define(function (require) { ...@@ -24,7 +24,7 @@ define(function (require) {
init: function (ecModel, api) {}, init: function (ecModel, api) {},
render: function (seriesModel, ecModel, api) {}, render: function (seriesModel, ecModel, api, payload) {},
remove: function (ecModel, api) { remove: function (ecModel, api) {
this.group.removeAll(); this.group.removeAll();
...@@ -33,6 +33,14 @@ define(function (require) { ...@@ -33,6 +33,14 @@ define(function (require) {
dispose: function () {} dispose: function () {}
}; };
var chartProto = Chart.prototype;
chartProto.updateView
= chartProto.updateLayout
= chartProto.updateVisual
= function (seriesModel, ecModel, api, payload) {
this.render(seriesModel, ecModel, api, payload);
}
// Enable Chart.extend. // Enable Chart.extend.
componentUtil.enableClassExtend(Chart); componentUtil.enableClassExtend(Chart);
......
...@@ -23,7 +23,7 @@ define(function (require) { ...@@ -23,7 +23,7 @@ define(function (require) {
init: function (ecModel, api) {}, init: function (ecModel, api) {},
render: function (componentModel, ecModel, api) {}, render: function (componentModel, ecModel, api, payload) {},
dispose: function () {} dispose: function () {}
}; };
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册