提交 c4c7278e 编写于 作者: L lang

Optimize case with two category axes

上级 839409c1
......@@ -39,24 +39,21 @@ define(function(require) {
var creator = creators[coordSysName];
var registeredCoordSys = CoordinateSystem.get(coordSysName);
// FIXME
var result = creator && creator(data, seriesModel, ecModel);
var dimensions = result && result.dimensions;
var axesInfo = creator && creator(data, seriesModel, ecModel);
var dimensions = axesInfo && axesInfo.dimensions;
if (!dimensions) {
// Get dimensions from registered coordinate system
dimensions = (registeredCoordSys && registeredCoordSys.dimensions) || ['x', 'y'];
dimensions = completeDimensions(dimensions, data, dimensions.concat(['value']));
}
var categoryAxisModel = result && result.categoryAxisModel;
var categories;
var categoryDimIndex = dimensions[0].type === 'ordinal'
? 0 : (dimensions[1].type === 'ordinal' ? 1 : -1);
var categoryIndex = axesInfo ? axesInfo.categoryIndex : -1;
var list = new List(dimensions, seriesModel);
var nameList = createNameList(result, data);
var nameList = createNameList(axesInfo, data);
var dimValueGetter = (categoryAxisModel && ifNeedCompleteOrdinalData(data))
var categories = {};
var dimValueGetter = (categoryIndex >= 0 && ifNeedCompleteOrdinalData(data))
? function (itemOpt, dimName, dataIndex, dimIndex) {
// If any dataItem is like { value: 10 }
if (modelUtil.isDataItemOption(itemOpt)) {
......@@ -64,7 +61,7 @@ define(function(require) {
}
// Use dataIndex as ordinal value in categoryAxis
return dimIndex === categoryDimIndex
return dimIndex === categoryIndex
? dataIndex
: converDataValue(getDataItemValue(itemOpt), dimensions[dimIndex]);
}
......@@ -76,15 +73,14 @@ define(function(require) {
list.hasItemOption = true;
}
// Consider case:
// (1) [["a", "b"], ...]
// (2) [[2, 4, "a"], ...]
if (dimensions[dimIndex].type === 'ordinal' && dimIndex < 2) {
var categoryAxesModels = axesInfo && axesInfo.categoryAxesModels;
if (categoryAxesModels && categoryAxesModels[dimName]) {
// If given value is a category string
if (typeof val === 'string') {
// Lazy get categories
categories = categories || categoryAxisModel.getCategories();
val = zrUtil.indexOf(categories, val);
categories[dimName] = categories[dimName]
|| categoryAxesModels[dimName].getCategories();
val = zrUtil.indexOf(categories[dimName], val);
if (val < 0 && !isNaN(val)) {
// In case some one write '1', '2' istead of 1, 2
val = +val;
......@@ -149,15 +145,21 @@ define(function(require) {
];
var isXAxisCateogry = xAxisType === 'category';
var isYAxisCategory = yAxisType === 'category';
completeDimensions(dimensions, data, ['x', 'y', 'z']);
var categoryAxesModels = {};
if (isXAxisCateogry) {
categoryAxesModels.x = xAxisModel;
}
if (isYAxisCategory) {
categoryAxesModels.y = yAxisModel;
}
return {
dimensions: dimensions,
categoryIndex: isXAxisCateogry ? 0 : 1,
categoryAxisModel: isXAxisCateogry
? xAxisModel
: (yAxisType === 'category' ? yAxisModel : null)
categoryIndex: isXAxisCateogry ? 0 : (isYAxisCategory ? 1 : -1),
categoryAxesModels: categoryAxesModels
};
},
......@@ -200,15 +202,21 @@ define(function(require) {
}
];
var isAngleAxisCateogry = angleAxisType === 'category';
var isRadiusAxisCateogry = radiusAxisType === 'category';
completeDimensions(dimensions, data, ['radius', 'angle', 'value']);
var categoryAxesModels = {};
if (isRadiusAxisCateogry) {
categoryAxesModels.radius = radiusAxisModel;
}
if (isAngleAxisCateogry) {
categoryAxesModels.angle = angleAxisModel;
}
return {
dimensions: dimensions,
categoryIndex: isAngleAxisCateogry ? 1 : 0,
categoryAxisModel: isAngleAxisCateogry
? angleAxisModel
: (radiusAxisType === 'category' ? radiusAxisModel : null)
categoryIndex: isAngleAxisCateogry ? 1 : (isRadiusAxisCateogry ? 0 : -1),
categoryAxesModels: categoryAxesModels
};
},
......
......@@ -137,7 +137,7 @@ define(function (require) {
}
];
var data = this.fixData(option.data);
var data = this.fixData(option.data || []);
var nameList = [];
var nameMap = this.nameMap = {};
var count = 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册