提交 b494b002 编写于 作者: K kener

图表重构 calculableBase

上级 69a84151
/** /**
* echarts组件基类 * echarts可计算特性基类
* *
* @desc echarts基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据统计图表。 * @desc echarts基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据统计图表。
* @author Kener (@Kener-林峰, linzhifeng@baidu.com) * @author Kener (@Kener-林峰, linzhifeng@baidu.com)
* *
*/ */
define(function(require) { define(function (require) {
function Base(zr, option){ var ecData = require('../util/ecData');
var ecData = require('../util/ecData'); var accMath = require('../util/accMath');
var accMath = require('../util/accMath'); var zrUtil = require('zrender/tool/util');
var zrUtil = require('zrender/tool/util'); function Base(){
var self = this; var self = this;
this.selectedMap = {};
self.selectedMap = {}; this.shapeHandler = {
onclick : function () {
self.shapeHandler = {
onclick : function() {
self.isClick = true; self.isClick = true;
}, },
ondragover : function (param) { ondragover : function (param) {
...@@ -27,11 +25,11 @@ define(function(require) { ...@@ -27,11 +25,11 @@ define(function(require) {
text : '', text : '',
r : calculableShape.style.r + 5, r : calculableShape.style.r + 5,
brushType : 'stroke', brushType : 'stroke',
strokeColor : option.calculableColor,//self.zr.getCalculableColor(), strokeColor : self.ecTheme.calculableColor,
lineWidth : (calculableShape.style.lineWidth || 1) + 12 lineWidth : (calculableShape.style.lineWidth || 1) + 12
}; };
self.zr.addHoverShape(calculableShape); self.zr.addHoverShape(calculableShape);
setTimeout(function(){ setTimeout(function (){
calculableShape.highlightStyle = highlightStyle; calculableShape.highlightStyle = highlightStyle;
},20); },20);
}, },
...@@ -46,21 +44,29 @@ define(function(require) { ...@@ -46,21 +44,29 @@ define(function(require) {
ondragend : function () { ondragend : function () {
self.isDragend = true; self.isDragend = true;
} }
};
function setCalculable(shape) {
shape.dragEnableTime = option.DRAG_ENABLE_TIME;
shape.ondragover = self.shapeHandler.ondragover;
shape.ondragend = self.shapeHandler.ondragend;
shape.ondrop = self.shapeHandler.ondrop;
return shape;
} }
}
/**
* 基类方法
*/
Base.prototype = {
/**
* 图形拖拽特性
*/
setCalculable : function (shape) {
shape.dragEnableTime = this.ecTheme.DRAG_ENABLE_TIME;
shape.ondragover = this.shapeHandler.ondragover;
shape.ondragend = this.shapeHandler.ondragend;
shape.ondrop = this.shapeHandler.ondrop;
return shape;
},
/** /**
* 数据项被拖拽进来 * 数据项被拖拽进来
*/ */
function ondrop(param, status) { ondrop : function (param, status) {
if (!self.isDrop || !param.target) { if (!this.isDrop || !param.target) {
// 没有在当前实例上发生拖拽行为则直接返回 // 没有在当前实例上发生拖拽行为则直接返回
return; return;
} }
...@@ -72,30 +78,30 @@ define(function(require) { ...@@ -72,30 +78,30 @@ define(function(require) {
var dataIndex = ecData.get(target, 'dataIndex'); var dataIndex = ecData.get(target, 'dataIndex');
// 落到数据item上,数据被拖拽到某个数据项上,数据修改 // 落到数据item上,数据被拖拽到某个数据项上,数据修改
var data = option.series[seriesIndex].data[dataIndex] || '-'; var data = this.option.series[seriesIndex].data[dataIndex] || '-';
if (data.value) { if (data.value) {
if (data.value != '-') { if (data.value != '-') {
option.series[seriesIndex].data[dataIndex].value = this.option.series[seriesIndex].data[dataIndex].value =
accMath.accAdd( accMath.accAdd(
option.series[seriesIndex].data[dataIndex].value, this.option.series[seriesIndex].data[dataIndex].value,
ecData.get(dragged, 'value') ecData.get(dragged, 'value')
); );
} }
else { else {
option.series[seriesIndex].data[dataIndex].value = this.option.series[seriesIndex].data[dataIndex].value =
ecData.get(dragged, 'value'); ecData.get(dragged, 'value');
} }
} }
else { else {
if (data != '-') { if (data != '-') {
option.series[seriesIndex].data[dataIndex] = this.option.series[seriesIndex].data[dataIndex] =
accMath.accAdd( accMath.accAdd(
option.series[seriesIndex].data[dataIndex], this.option.series[seriesIndex].data[dataIndex],
ecData.get(dragged, 'value') ecData.get(dragged, 'value')
); );
} }
else { else {
option.series[seriesIndex].data[dataIndex] = this.option.series[seriesIndex].data[dataIndex] =
ecData.get(dragged, 'value'); ecData.get(dragged, 'value');
} }
} }
...@@ -104,16 +110,16 @@ define(function(require) { ...@@ -104,16 +110,16 @@ define(function(require) {
status.dragIn = status.dragIn || true; status.dragIn = status.dragIn || true;
// 处理完拖拽事件后复位 // 处理完拖拽事件后复位
self.isDrop = false; this.isDrop = false;
return; return;
} },
/** /**
* 数据项被拖拽出去 * 数据项被拖拽出去
*/ */
function ondragend(param, status) { ondragend : function (param, status) {
if (!self.isDragend || !param.target) { if (!this.isDragend || !param.target) {
// 没有在当前实例上发生拖拽行为则直接返回 // 没有在当前实例上发生拖拽行为则直接返回
return; return;
} }
...@@ -123,40 +129,32 @@ define(function(require) { ...@@ -123,40 +129,32 @@ define(function(require) {
var dataIndex = ecData.get(target, 'dataIndex'); var dataIndex = ecData.get(target, 'dataIndex');
// 被拖拽的图形是折线图bar,删除被拖拽走的数据 // 被拖拽的图形是折线图bar,删除被拖拽走的数据
option.series[seriesIndex].data[dataIndex] = '-'; this.option.series[seriesIndex].data[dataIndex] = '-';
// 别status = {}赋值啊!! // 别status = {}赋值啊!!
status.dragOut = true; status.dragOut = true;
status.needRefresh = true; status.needRefresh = true;
// 处理完拖拽事件后复位 // 处理完拖拽事件后复位
self.isDragend = false; this.isDragend = false;
return; return;
} },
/** /**
* 图例选择 * 图例选择
*/ */
function onlegendSelected(param, status) { onlegendSelected : function (param, status) {
var legendSelected = param.selected; var legendSelected = param.selected;
for (var itemName in self.selectedMap) { for (var itemName in this.selectedMap) {
if (self.selectedMap[itemName] != legendSelected[itemName]) { if (this.selectedMap[itemName] != legendSelected[itemName]) {
// 有一项不一致都需要重绘 // 有一项不一致都需要重绘
status.needRefresh = true; status.needRefresh = true;
} }
self.selectedMap[itemName] = legendSelected[itemName]; this.selectedMap[itemName] = legendSelected[itemName];
} }
return; return;
} }
/**
* 基类方法
*/
self.setCalculable = setCalculable;
self.ondrop = ondrop;
self.ondragend = ondragend;
self.onlegendSelected = onlegendSelected;
} }
return Base; return Base;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册