提交 b96cc6b3 编写于 作者: L lang

Simplify List#initData

上级 fa764012
......@@ -157,7 +157,7 @@ define(function (require) {
if (labelModel.get('show')) {
setLabel(
rectStyle, labelModel, color,
seriesModel.getFormattedLabel(idx, 'normal') || data.getRawValue(idx),
seriesModel.getFormattedLabel(idx, 'normal') || seriesModel.getRawValue(idx),
labelPositionOutside
);
}
......@@ -167,7 +167,7 @@ define(function (require) {
if (hoverLabelModel.get('show')) {
setLabel(
hoverStyle, hoverLabelModel, color,
seriesModel.getFormattedLabel(idx, 'emphasis') || data.getRawValue(idx),
seriesModel.getFormattedLabel(idx, 'emphasis') || seriesModel.getRawValue(idx),
labelPositionOutside
);
}
......
......@@ -29,8 +29,12 @@ define(function (require) {
var toData = new List(['lng', 'lat'], this);
var lineData = new List(['value'], this);
fromData.initData(fromDataArr, null, 'geoCoord');
toData.initData(toDataArr, null, 'geoCoord');
function geoCoordGetter(item, dim, dataIndex, dimIndex) {
return item.geoCoord && item.geoCoord[dimIndex];
}
fromData.initData(fromDataArr, null, geoCoordGetter);
toData.initData(toDataArr, null, geoCoordGetter);
lineData.initData(lineDataArr);
this.fromData = fromData;
......
......@@ -51,7 +51,7 @@ define(function (require) {
var labelModel = itemModel.getModel('label.normal');
var hoverLabelModel = itemModel.getModel('label.emphasis');
var rawValue = data.getRawValue(idx);
var rawValue = seriesModel.getRawValue(idx);
var defaultText = '-';
if (rawValue && rawValue[2] != null) {
defaultText = rawValue[2];
......
......@@ -229,7 +229,7 @@ define(function (require) {
var labelHoverModel = itemModel.getModel('label.emphasis');
var textStyleHoverModel = labelHoverModel.getModel('textStyle');
var defaultText = numberUtil.round(seriesModel.getData().getRawValue(idx));
var defaultText = numberUtil.round(seriesModel.getRawValue(idx));
line.setStyle(zrUtil.extend(
{
stroke: lineData.getItemVisual(idx, 'color')
......
......@@ -9,7 +9,10 @@ define(function (require) {
return function (nodes, edges, hostModel, directed) {
var graph = new Graph(directed);
for (var i = 0; i < nodes.length; i++) {
graph.addNode(zrUtil.retrieve(nodes[i].id, nodes[i].name), i);
graph.addNode(zrUtil.retrieve(
// Id, name, dataIndex
nodes[i].id, nodes[i].name, i
), i);
}
var linkNameList = [];
......@@ -23,6 +26,15 @@ define(function (require) {
}
}
// If edge has sourceValue and targetValue
// graph.eachEdge(function (edge, idx) {
// var edgeRawData = edges[i];
// if (edgeRawData.sourceValue != null && edgeRawData.targetValue != null) {
// }
// });
// FIXME
var dimensionNames = completeDimensions(['value'], nodes);
......
......@@ -3,7 +3,23 @@ define(function(require) {
var List = require('../../data/List');
var completeDimensions = require('../../data/helper/completeDimensions');
var zrUtil = require('zrender/core/util');
function firstDataNotNull(data) {
var i = 0;
while (i < data.length && data[i] == null) {
i++;
}
return data[i];
}
function ifNeedCompleteOrdinalData(data) {
var sampleItem = firstDataNotNull(data);
return sampleItem != null
&& !zrUtil.isArray(getItemValue(sampleItem));
}
function getItemValue(item) {
return item && (item.value == null ? item : item.value);
}
/**
* Helper function to create a list from option data
*/
......@@ -14,12 +30,27 @@ define(function(require) {
var result = creaters[seriesModel.get('coordinateSystem')](
data, seriesModel, ecModel
);
var dimensions = result.dimensions;
var categoryAxisModel = result.categoryAxisModel;
var list = new List(result.dimensions, seriesModel);
var categoryDimIndex = dimensions[0].type === 'ordinal' ? 0
: (dimensions[1].type === 'ordinal' ? 1 : -1);
var list = new List(dimensions, seriesModel);
var nameList = createNameList(result, data);
list.initData(data, nameList);
var dimValueGetter = (categoryAxisModel && ifNeedCompleteOrdinalData(data))
? function (itemOpt, dimName, dataIndex, dimIndex) {
// Use dataIndex as ordinal value in categoryAxis
return dimIndex === categoryDimIndex ?
dataIndex : +getItemValue(itemOpt);
}
: function (itemOpt, dimName, dataIndex, dimIndex) {
var val = getItemValue(itemOpt);
return val && +val[dimIndex];
};
list.initData(data, nameList, dimValueGetter);
return list;
}
......@@ -35,45 +66,35 @@ define(function(require) {
cartesian2d: function (data, seriesModel, ecModel) {
var dimensions = [];
var categoryAxisModel;
var xAxisModel = ecModel.getComponent('xAxis', seriesModel.get('xAxisIndex'));
var yAxisModel = ecModel.getComponent('yAxis', seriesModel.get('yAxisIndex'));
var xAxisType = xAxisModel.get('type');
var yAxisType = yAxisModel.get('type');
var isYAxisCategory = yAxisType === 'category';
if (xAxisType === 'category') {
dimensions = [{
name: 'x',
type: 'ordinal'
}, {
name: 'y',
// If two category axes
type: isYAxisCategory ? 'ordinal' : 'float',
stackable: isStackable(yAxisType)
}];
categoryAxisModel = xAxisModel;
}
else if (isYAxisCategory) {
dimensions = [{
name: 'y',
type: 'ordinal'
}, {
name: 'x',
stackable: isStackable(xAxisType)
}];
categoryAxisModel = yAxisModel;
}
var isXAxisCategory = xAxisType === 'category';
dimensions = [{
name: 'x',
type: isXAxisCategory ? 'ordinal' : 'float',
stackable: isStackable(xAxisType)
}, {
name: 'y',
// If two category axes
type: isYAxisCategory ? 'ordinal' : 'float',
stackable: isStackable(yAxisType)
}];
completeDimensions(dimensions, data, ['x', 'y', 'z']);
return {dimensions: dimensions, categoryAxisModel: categoryAxisModel};
return {
dimensions: dimensions,
categoryAxisModel: isXAxisCategory ? xAxisModel
: (isYAxisCategory ? yAxisModel : null)
};
},
polar: function (data, seriesModel, ecModel) {
var dimensions = [];
var categoryAxisModel;
var polarIndex = seriesModel.get('polarIndex') || 0;
var axisFinder = function (axisModel) {
......@@ -88,34 +109,24 @@ define(function(require) {
})[0];
var isRadiusAxisCategory = radiusAxisModel.get('type') === 'category';
if (angleAxisModel.get('type') === 'category') {
dimensions = [{
name: 'angle',
type: 'ordinal'
}, {
name: 'radius',
// If two category axes
type: isRadiusAxisCategory ? 'ordinal' : 'float',
stackable: isStackable(radiusAxisModel.get('type'))
}];
categoryAxisModel = angleAxisModel;
}
else if (isRadiusAxisCategory) {
dimensions = [{
name: 'radius',
type: 'ordinal'
}, {
name: 'angle',
stackable: isStackable(angleAxisModel.get('type'))
}];
categoryAxisModel = radiusAxisModel;
}
var isAngleAxisCategory = angleAxisModel.get('type') === 'category';
var dimensions = [{
name: 'radius',
type: isRadiusAxisCategory ? 'ordinal' : 'float',
stackable: isStackable(radiusAxisModel.get('type'))
}, {
name: 'angle',
type: isAngleAxisCategory ? 'ordinal' : 'float',
stackable: isStackable(angleAxisModel.get('type'))
}];
completeDimensions(dimensions, data, ['radius', 'angle', 'value']);
return {dimensions: dimensions, categoryAxisModel: categoryAxisModel};
return {
dimensions: dimensions,
categoryAxisModel: isAngleAxisCategory ? angleAxisModel
: (isRadiusAxisCategory ? radiusAxisModel : null)
};
},
geo: function (data, seriesModel, ecModel) {
......
......@@ -2,11 +2,13 @@ define(function(require) {
'use strict';
var zrUtil = require('zrender/core/util');
var List = require('../../data/List');
var completeDimensions = require('../../data/helper/completeDimensions');
var WhiskerBoxDraw = require('../helper/WhiskerBoxDraw');
var ChartView = require('../../view/Chart');
function getItemValue(item) {
return item.value == null ? item : item.value;
}
var seriesModelMixin = {
......@@ -56,7 +58,10 @@ define(function(require) {
completeDimensions(dimensions, data);
var list = new List(dimensions, this);
list.initData(data, categories ? categories.slice() : null, null, addOrdinal);
list.initData(data, categories ? categories.slice() : null, function (dataItem, dimName, idx, dimIdx) {
var value = getItemValue(dataItem);
return addOrdinal ? (!dimIdx ? idx : value[dimIdx - 1]) : value[dimIdx];
});
return list;
},
......
......@@ -111,14 +111,13 @@ define(function (require) {
*/
formatTooltip: function (dataIndex) {
var data = this._data;
var formattedValue = addCommas(data.getRawValue(dataIndex));
var formattedValue = addCommas(this.getRawValue(dataIndex));
var name = data.getName(dataIndex);
var seriesGroup = this.seriesGroup;
var seriesNames = [];
for (var i = 0; i < seriesGroup.length; i++) {
var subData = seriesGroup[i].getData();
if (!isNaN(subData.getRawValue(dataIndex))) {
if (!isNaN(seriesGroup[i].getRawValue(dataIndex))) {
seriesNames.push(
encodeHTML(seriesGroup[i].name)
);
......
......@@ -99,7 +99,7 @@ define(function (require) {
var isLabelInside = position === 'inside' || position === 'inner';
return {
fill: textStyleModel.getTextColor()
|| isLabelInside ? '#fff' : data.getItemVisual(idx, 'color'),
|| (isLabelInside ? '#fff' : data.getItemVisual(idx, 'color')),
textFont: textStyleModel.getFont(),
text: data.hostModel.getFormattedLabel(idx, state)
|| data.getName(idx)
......
......@@ -36,8 +36,8 @@ define(function(require) {
});
// FIXME
var oldGetRawValue = data.getRawValue;
data.getRawValue = function (idx) {
var oldGetRawValue = this.getRawValue;
this.getRawValue = function (idx) {
var val = oldGetRawValue.call(this, idx);
var indicator = indicatorMap[data.getName(idx)];
if (indicator && indicator.max != null) {
......
......@@ -143,7 +143,7 @@ define(function(require) {
*/
formatTooltip: function (dataIndex) {
var data = this.getData();
var value = data.getRawValue(dataIndex);
var value = this.getRawValue(dataIndex);
var formattedValue = zrUtil.isArray(value)
? addCommas(value[0]) : addCommas(value);
var name = data.getName(dataIndex);
......@@ -170,7 +170,7 @@ define(function(require) {
treePathInfo.push({
name: node.name,
dataIndex: nodeDataIndex,
value: data.getRawValue(nodeDataIndex)
value: this.getRawValue(nodeDataIndex)
});
node = node.parentNode;
}
......
......@@ -115,6 +115,7 @@ define(function (require) {
var dataIdx;
// Use the itemStyle in data if has data
if (data) {
// FIXME If dataIdx < 0
dataIdx = data.indexOfName(region.name);
var itemModel = data.getItemModel(dataIdx);
......
......@@ -72,7 +72,7 @@ define(function (require) {
var markLineFormatMixin = {
formatTooltip: function (dataIndex) {
var data = this._data;
var value = data.getRawValue(dataIndex);
var value = this.getRawValue(dataIndex);
var formattedValue = zrUtil.isArray(value)
? zrUtil.map(value, addCommas).join(', ') : addCommas(value);
var name = data.getName(dataIndex);
......@@ -80,6 +80,11 @@ define(function (require) {
+ ((name ? encodeHTML(name) + ' : ' : '') + formattedValue);
},
getRawValue: function (idx) {
var option = this._data.getItemModel(idx).option;
return zrUtil.retrieve(option && option.__rawValue, option && option.value, '');
},
getRawDataArray: function () {
return this.option.data;
},
......@@ -93,7 +98,7 @@ define(function (require) {
}
};
zrUtil.extend(markLineFormatMixin, modelUtil.dataFormatMixin);
zrUtil.defaults(markLineFormatMixin, modelUtil.dataFormatMixin);
require('../../echarts').extendComponentView({
......@@ -146,11 +151,6 @@ define(function (require) {
var lineData = mlData.line;
// Line data for tooltip and formatter
var lineData = mlData.line;
lineData.getRawValue = function (idx) {
var option = this.getItemModel(idx).option;
return zrUtil.retrieve(option && option.__rawValue, option && option.value, '');
};
zrUtil.extend(mlModel, markLineFormatMixin);
mlModel.setData(lineData);
......
......@@ -20,7 +20,7 @@ define(function (require) {
formatTooltip: function (dataIndex) {
var data = this.getData();
var value = data.getRawValue(dataIndex);
var value = this.getRawValue(dataIndex);
var formattedValue = zrUtil.isArray(value)
? zrUtil.map(value, addCommas).join(', ') : addCommas(value);
var name = data.getName(dataIndex);
......@@ -28,6 +28,11 @@ define(function (require) {
+ ((name ? encodeHTML(name) + ' : ' : '') + formattedValue);
},
getRawValue: function (idx) {
var option = this._data.getItemModel(idx).option;
return zrUtil.retrieve(option.__rawValue, option.value, '');
},
getData: function () {
return this._data;
},
......@@ -37,7 +42,7 @@ define(function (require) {
}
};
zrUtil.extend(markPointFormatMixin, modelUtil.dataFormatMixin);
zrUtil.defaults(markPointFormatMixin, modelUtil.dataFormatMixin);
require('../../echarts').extendComponentView({
......@@ -80,13 +85,6 @@ define(function (require) {
var mpData = createList(coordSys, seriesData, mpModel);
var dims = coordSys && coordSys.dimensions;
// Overwrite getRawValue
// FIXME
mpData.getRawValue = function (idx) {
var option = this.getItemModel(idx).option;
return zrUtil.retrieve(option.__rawValue, option.value, '');
};
// FIXME
zrUtil.mixin(mpModel, markPointFormatMixin);
mpModel.setData(mpData);
......
......@@ -84,8 +84,16 @@ define(function (require) {
*/
axisHelper.ifAxisCrossZero = function (axis) {
var dataExtent = axis.scale.getExtent();
var min = Math.min(axis.model.get('min'), dataExtent[0], dataExtent[1]);
var max = Math.max(axis.model.get('max'), dataExtent[0], dataExtent[1]);
var min = dataExtent[0];
var max = dataExtent[1];
var optMin = axis.model.get('min');
var optMax = axis.model.get('max');
if (!isNaN(optMin)) {
min = Math.min(optMin, min);
}
if (!isNaN(optMax)) {
max = Math.max(optMax, max);
}
return !((min > 0 && max > 0) || (min < 0 && max < 0))
|| axisHelper.ifAxisNeedsCrossZero(axis);
};
......
......@@ -212,31 +212,34 @@ define(function(require, factory) {
this._updateCartesianFromSeries(ecModel, gridModel);
function ifAxisCanNotOnZero(otherAxisDim) {
var axes = axesMap[otherAxisDim];
return (axes[0] && (axes[0].type === 'category' || !ifAxisCrossZero(axes[0])))
|| (axes[1] && (axes[1].type === 'category' || !ifAxisCrossZero(axes[1])));
}
// Fix configuration
each(axesMap.x, function (xAxis) {
each(axesMap.y, function (yAxis) {
// onZero can not be used in these two situations
// 1. When other axis is a category axis
// 2. When other axis not across 0 point
if (xAxis.type === 'category' || !ifAxisCrossZero(xAxis)
) {
yAxis.onZero = false;
}
if (yAxis.type === 'category' || !ifAxisCrossZero(yAxis)
) {
xAxis.onZero = false;
}
if (ifAxisNeedsCrossZero(yAxis)) {
yAxis.scale.unionExtent([0, 0]);
}
if (ifAxisNeedsCrossZero(xAxis)) {
xAxis.scale.unionExtent([0, 0]);
}
niceScaleExtent(yAxis, yAxis.model);
niceScaleExtent(xAxis, xAxis.model);
// onZero can not be enabled in these two situations
// 1. When any other axis is a category axis
// 2. When any other axis not across 0 point
if (ifAxisCanNotOnZero('y')) {
xAxis.onZero = false;
}
if (ifAxisNeedsCrossZero(xAxis)) {
xAxis.scale.unionExtent([0, 0]);
}
niceScaleExtent(xAxis, xAxis.model);
}, this);
}, this);
each(axesMap.y, function (yAxis) {
if (ifAxisCanNotOnZero('x')) {
yAxis.onZero = false;
}
if (ifAxisNeedsCrossZero(yAxis)) {
yAxis.scale.unionExtent([0, 0]);
}
niceScaleExtent(yAxis, yAxis.model);
}, this);
function createAxisCreator(axisType) {
......
......@@ -81,11 +81,6 @@ define(function(require) {
graphProto.addNode = function (id, dataIndex) {
var nodesMap = this._nodesMap;
// Assign dataIndex as id if not exists
if (id == null) {
id = dataIndex;
}
if (nodesMap[id]) {
return;
}
......
......@@ -26,11 +26,7 @@ define(function (require) {
var isObject = zrUtil.isObject;
var IMMUTABLE_PROPERTIES = [
'stackedOn', '_nameList', '_idList',
'_rawData', '_valueProp', '_optionModels',
// Get raw value may be wrapped by creator
// FIXME
'getRawValue'
'stackedOn', '_nameList', '_idList', '_rawData'
];
var transferImmuProperties = function (a, b) {
......@@ -157,15 +153,10 @@ define(function (require) {
this._graphicEls = [];
/**
* Raw data
* @private
*/
this._rawData = [];
/**
* @type {Array.<Array|Object>}
* @private
*/
this._valueProp;
this._rawData;
};
var listProto = List.prototype;
......@@ -198,19 +189,14 @@ define(function (require) {
* Initialize from data
* @param {Array.<Object|number|Array>} data
* @param {Array.<string>} [nameList]
* @param {string} [valueProp='value']
* @param {boolean} [addOrdinal=false]
* @param {Function} [dimValueGetter] (dataItem, dimName, dataIndex, dimIndex) => number
*/
listProto.initData = function (data, nameList, valueProp, addOrdinal) {
listProto.initData = function (data, nameList, dimValueGetter) {
data = data || [];
valueProp = valueProp || 'value';
this._rawData = data;
this._valueProp = valueProp;
// Clear
var optionModels = this._optionModels = [];
var storage = this._storage = {};
var indices = this.indices = [];
......@@ -230,92 +216,44 @@ define(function (require) {
storage[dimensions[i]] = new DataCtor(size);
}
// Special storage of indices of option model
// It is used for indexing the model in List#_optionModels
var optionModelIndices = storage.$optionModelIndices = new Int32Array(size);
var tempValue = [];
var rawValueTo1D = false;
var value1D = dimensions.length === 1;
// Default dim value getter
dimValueGetter = dimValueGetter || function (dataItem, dimName, dataIndex, dimIndex) {
var value = (zrUtil.isObject(dataItem) && !zrUtil.isArray(dataItem))
? dataItem.value : dataItem;
if (zrUtil.isArray(value)) {
return value[dimIndex];
}
// If value is a single number or something else not array.
return value;
};
// Use the first data to indicate data type;
var isValueArray = data[0] != null && zrUtil.isArray(
data[0][valueProp] == null ? data[0] : data[0][valueProp]
);
for (var idx = 0; idx < data.length; idx++) {
var value = data[idx];
// Each data item is an option contains value or other properties
// {
// value:
// itemStyle:
// }
if (data[idx] != null && (typeof data[idx] === 'object') && !zrUtil.isArray(data[idx])) {
value = data[idx][valueProp];
var model = new Model(data[idx], this.hostModel, this.hostModel.ecModel);
var modelIdx = optionModels.length;
optionModelIndices[idx] = modelIdx;
optionModels.push(model);
}
var dataItem = data[idx];
// Each data item is value
// [1, 2]
// 2
else {
// Reference to the undefined
optionModelIndices[idx] = -1;
}
// Bar chart, line chart which uses category axis
// only gives the 'y' value. 'x' value is the indices of cateogry
// Use a tempValue to normalize the value to be a (x, y) value
if (!isValueArray) {
if (!value1D) {
tempValue[0] = idx;
tempValue[1] = value;
value = tempValue;
rawValueTo1D = true;
}
// Pie chart is 1D
else {
tempValue[0] = value;
value = tempValue;
}
}
// Store the data by dimensions
for (var k = 0; k < dimensions.length; k++) {
var dim = dimensions[k];
var dimInfo = dimensionInfoMap[dim];
var dimStorage = storage[dim];
var dimValue = addOrdinal
? (!k ? idx : value[k - 1])
: value[k];
// PENDING NULL is empty or zero
switch (dimInfo.type) {
case 'float':
case 'number':
dimValue = +dimValue;
break;
case 'int':
dimValue = dimValue | 0;
break;
}
dimStorage[idx] = dimValue;
dimStorage[idx] = dimValueGetter(dataItem, dim, idx, k);
}
indices.push(idx);
}
// Use the name in option and create id
for (var i = 0; i < optionModelIndices.length; i++) {
for (var i = 0; i < data.length; i++) {
var id = '';
if (!nameList[i]) {
var modelIdx = optionModelIndices[i];
var model = optionModels[modelIdx];
if (model && model.option) {
nameList[i] = model.option.name;
// Try using the id in option
id = model.option.id;
}
nameList[i] = data[i].name;
// Try using the id in option
id = data[i].id;
}
var name = nameList[i] || '';
if (!id && name) {
......@@ -470,24 +408,6 @@ define(function (require) {
}
return sum;
};
/**
* Get raw value
* @param {number} idx
* @return {number}
*/
listProto.getRawValue = function (idx) {
idx = this.getRawIndex(idx);
var itemOpt = this._rawData[idx];
var valueProp = this._valueProp;
// FIXME Value may not exist in data item object when data is links
// if (itemOpt && itemOpt.hasOwnProperty(valueProp)) {
// return itemOpt[valueProp];
// }
if (zrUtil.isObject(itemOpt) && !zrUtil.isArray(itemOpt)) {
return itemOpt[valueProp];
}
return itemOpt;
};
/**
* Retreive the index with given value
......@@ -769,8 +689,6 @@ define(function (require) {
}
}
storage.$optionModelIndices = thisStorage.$optionModelIndices;
var tmpRetValue = [];
this.each(dimensions, function () {
var idx = arguments[arguments.length - 1];
......@@ -796,6 +714,11 @@ define(function (require) {
};
var temporaryModel = new Model(null);
// Since temporate model is shared by all data items. So we must make sure it can't be write.
// PENDING may cause any performance problem?
// if (Object.freeze) {
// Object.freeze(temporaryModel);
// }
/**
* Get model of one data item.
* It will create a temporary model if value on idx is not an option.
......@@ -805,24 +728,20 @@ define(function (require) {
*/
// FIXME Model proxy ?
listProto.getItemModel = function (idx, createNew) {
var storage = this._storage;
var optionModelIndices = storage.$optionModelIndices;
var modelIndex = optionModelIndices && optionModelIndices[this.indices[idx]];
var model = this._optionModels[modelIndex];
var model;
var hostModel = this.hostModel;
if (!model) {
// Use a temporary model proxy if value on idx is not an option.
// FIXME Create a new one may cause memory leak
if (createNew) {
model = new Model(null, hostModel);
}
else {
model = temporaryModel;
model.parentModel = hostModel;
model.ecModel = hostModel.ecModel;
}
idx = this.indices[idx];
// Use a temporary model proxy
// FIXME Create a new one may cause memory leak
if (createNew) {
model = new Model(null, hostModel);
}
else {
model = temporaryModel;
// FIXME If return null when idx not exists
model.option = this._rawData[idx];
model.parentModel = hostModel;
model.ecModel = hostModel.ecModel;
}
return model;
};
......
......@@ -386,8 +386,11 @@ define(function (require) {
name = 'default';
}
var el = defaultLoadingEffect(this._api, cfg);
var zr = this._zr;
this._loadingFX = el;
this._zr.add(el);
zr.painter.clear();
zr.add(el);
};
/**
......
......@@ -145,7 +145,7 @@ define(function(require) {
*/
formatTooltip: function (dataIndex, mutipleSeries) {
var data = this._data;
var value = data.getRawValue(dataIndex);
var value = this.getRawValue(dataIndex);
var formattedValue = zrUtil.isArray(value)
? zrUtil.map(value, addCommas).join(', ') : addCommas(value);
var name = data.getName(dataIndex);
......
......@@ -209,8 +209,8 @@ define(function(require) {
var seriesIndex = this.seriesIndex;
var seriesName = this.name;
var rawValue = this.getRawValue(dataIndex);
var rawDataIndex = data.getRawIndex(dataIndex);
var rawValue = data.getRawValue(dataIndex);
var name = data.getName(dataIndex, true);
// Data may not exists in the option given by user
......@@ -254,6 +254,20 @@ define(function(require) {
else if (typeof formatter === 'string') {
return formatUtil.formatTpl(formatter, params);
}
},
/**
* Get raw value in option
* @param {number} idx
* @return {Object}
*/
getRawValue: function (idx) {
var itemModel = this.getData().getItemModel(idx);
if (itemModel && itemModel.option) {
var dataItem = itemModel.option;
return (zrUtil.isObject(dataItem) && !zrUtil.isArray(dataItem))
? dataItem.value : dataItem;
}
}
};
......
......@@ -134,6 +134,7 @@ define(function(require) {
ctx.lineTo(x, y + height / 4 * 3);
ctx.lineTo(x - dx, y + height);
ctx.lineTo(x, y);
ctx.closePath();
}
});
......
......@@ -23,7 +23,7 @@ define(function (require) {
if (!ecModel.isSeriesFiltered(seriesModel)) {
if (typeof symbolSize === 'function') {
data.each(function (idx) {
var rawValue = data.getRawValue(idx);
var rawValue = seriesModel.getRawValue(idx);
// FIXME
var params = seriesModel.getDataParams(idx);
data.setItemVisual(idx, 'symbolSize', symbolSize(rawValue, params));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册