提交 819ebb51 编写于 作者: L lang

Axis min, max, splitNumber

上级 be02d26f
......@@ -5,8 +5,6 @@
*/
define(function(require, factory) {
'use strict';
var zrUtil = require('zrender/core/util');
var Cartesian2D = require('./Cartesian2D');
var Axis2D = require('./Axis2D');
......@@ -187,6 +185,33 @@ define(function(require, factory) {
y: 0
};
ecModel.eachComponent('xAxis', createAxisCreator('x'), this);
ecModel.eachComponent('yAxis', createAxisCreator('y'), this);
if (! axesCount.x || ! axesCount.y) {
api.log('Grid must has at least one x axis and one y axis');
// Roll back
this._axesMap = {};
this._axesList = [];
return;
}
zrUtil.each(axesMap.x, function (xAxis, xAxisIndex) {
zrUtil.each(axesMap.y, function (yAxis, yAxisIndex) {
var key = 'x' + xAxisIndex + 'y' + yAxisIndex;
var cartesian = new Cartesian2D(key);
this._coordsMap[key] = cartesian;
this._coordsList.push(cartesian);
cartesian.addAxis(xAxis);
cartesian.addAxis(yAxis);
}, this);
}, this);
this._updateCartesianFromSeries(ecModel, gridModel);
function createAxisCreator(axisType) {
return function (axisModel, idx) {
if (!isAxisUsedInTheGrid(axisModel, gridModel, ecModel)) {
......@@ -217,32 +242,6 @@ define(function(require, factory) {
axesCount[axisType]++;
}
}
ecModel.eachComponent('xAxis', createAxisCreator('x'), this);
ecModel.eachComponent('yAxis', createAxisCreator('y'), this);
if (! axesCount.x || ! axesCount.y) {
api.log('Grid must has at least one x axis and one y axis');
// Roll back
this._axesMap = {};
this._axesList = [];
return;
}
zrUtil.each(axesMap.x, function (xAxis, xAxisIndex) {
zrUtil.each(axesMap.y, function (yAxis, yAxisIndex) {
var key = 'x' + xAxisIndex + 'y' + yAxisIndex;
var cartesian = new Cartesian2D(key);
this._coordsMap[key] = cartesian;
this._coordsList.push(cartesian);
cartesian.addAxis(xAxis);
cartesian.addAxis(yAxis);
}, this);
}, this);
this._updateCartesianFromSeries(ecModel, gridModel);
},
/**
......@@ -306,23 +305,32 @@ define(function(require, factory) {
var xAxis = cartesian.getAxis('x');
var yAxis = cartesian.getAxis('y');
if (axisData.x.length) {
if (axisData.xModel.get('scale')) {
var xModel = axisData.xModel;
if (xModel.get('scale')) {
axisData.x.push(0);
}
xAxis.scale.setExtentFromData(axisData.x);
niceScaleExent(xAxis, xModel);
}
if (axisData.y.length) {
if (axisData.yModel.get('scale')) {
var yModel = axisData.yModel;
if (yModel.get('scale')) {
axisData.y.push(0);
}
yAxis.scale.setExtentFromData(axisData.y);
niceScaleExent(yAxis, yModel);
}
});
// Set axis from option
zrUtil.each(this._axesList, function (axis) {
axis.scale.niceExtent();
});
function niceScaleExent(axis, model) {
var min = model.get('min');
var max = model.get('max');
axis.scale.setExtent(min, max);
axis.scale.niceExtent(model.get('splitNumber'), !!min, !!max);
}
}
};
......
......@@ -71,11 +71,8 @@ define(function (require) {
var max = union ? extent[1] : -Infinity;
var min = union ? extent[0] : Infinity;
for (var i = 0; i < data.length; i++) {
if (data[i] == null || data[i] === '-') {
continue;
}
max = Math.max(data[i], max);
min = Math.min(data[i], min);
data[i] > max && (max = data[i]);
data[i] < min && (min = data[i]);
}
this.setExtent(min, max);
......@@ -96,8 +93,12 @@ define(function (require) {
*/
setExtent: function (start, end) {
var thisExtent = this._extent;
thisExtent[0] = isNaN(start) ? 0 : start;
thisExtent[1] = isNaN(end) ? 0 : end;
if (! isNaN(start)) {
thisExtent[0] = start;
}
if (! isNaN(end)) {
thisExtent[1] = end;
}
},
/**
......@@ -198,16 +199,22 @@ define(function (require) {
/**
* Nice extent.
* @param {number} [approxTickNum = 10] Given approx tick number
* @param {boolean} [fixMin=false]
* @param {boolean} [fixMax=false]
*/
niceExtent: function (approxTickNum) {
niceExtent: function (approxTickNum, fixMin, fixMax) {
this.niceTicks(approxTickNum);
var extent = this._extent;
var interval = this._interval;
if (! fixMin) {
extent[0] = mathFloor(extent[0] / interval) * interval;
}
if (! fixMax) {
extent[1] = mathCeil(extent[1] / interval) * interval;
}
}
};
return IntervalScale;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册