提交 93eb597e 编写于 作者: P pah100

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

......@@ -364,13 +364,8 @@ define(function(require) {
_getSymbolIgnoreFunc: function (data, coordSys) {
var categoryAxis = coordSys.getAxesByScale('ordinal')[0];
// `getLabelInterval` is provided by echarts/component/axis
if (categoryAxis && categoryAxis.getLabelInterval) {
var labelInterval = categoryAxis.getLabelInterval();
return function (idx) {
return (typeof labelInterval === 'function')
&& !labelInterval(idx, categoryAxis.scale.getLabel(idx))
|| idx % (labelInterval + 1);
};
if (categoryAxis && categoryAxis.isLabelIgnored) {
return zrUtil.bind(categoryAxis.isLabelIgnored, categoryAxis);
}
},
......
......@@ -65,6 +65,21 @@ define(function (require) {
labelInterval = this._labelInterval = axisLabelInterval(this);
}
return labelInterval;
},
/**
* If label is ignored.
* Automatically used when axis is category and label can not be all shown
* @param {number} idx
* @return {boolean}
*/
isLabelIgnored: function (idx) {
if (this.type === 'category') {
var labelInterval = this.getLabelInterval();
return ((typeof labelInterval === 'function')
&& !labelInterval(idx, this.scale.getLabel(idx)))
|| idx % (labelInterval + 1);
}
}
};
zrUtil.inherits(Axis2D, Axis);
......
......@@ -31,7 +31,9 @@ define(function(require) {
zrUtil.merge(AxisModel.prototype, require('../axisModelCommonMixin'));
var extraOption = {gridIndex: 0};
var extraOption = {
gridIndex: 0
};
axisModelCreator('x', AxisModel, getAxisType, extraOption);
axisModelCreator('y', AxisModel, getAxisType, extraOption);
......
......@@ -30,6 +30,19 @@ define(function(require, factory) {
return ecModel.getComponent('grid', axisModel.get('gridIndex')) === gridModel;
}
function getLabelUnionRect(axis) {
var axisModel = axis.model;
var labels = axisModel.getFormattedLabels();
var rect;
for (var i = 0; i < labels.length; i++) {
if (!axis.isLabelIgnored(i)) {
var singleRect = axisModel.getTextRect(labels[i]);
rect ? rect.union(singleRect) : (rect = singleRect);
}
}
return rect;
}
function Grid(gridModel, ecModel, api) {
/**
* @type {Object.<string, module:echarts/coord/cartesian/Cartesian2D>}
......@@ -87,7 +100,24 @@ define(function(require, factory) {
this._rect = gridRect;
each(this._axesList, function (axis) {
var axesList = this._axesList;
// Minus label size
if (gridModel.get('containLabel')) {
each(axesList, function (axis) {
var labelUnionRect = getLabelUnionRect(axis);
var dim = axis.isHorizontal() ? 'height' : 'width';
var margin = axis.model.get('axisLabel.margin');
gridRect[dim] -= labelUnionRect[dim];
if (axis.isHorizontal()) {
gridRect.y += (axis.position === 'top' ? 1 : -1) * (labelUnionRect.height + margin);
}
else {
gridRect.x += (axis.position === 'left' ? 1 : -1) * (labelUnionRect.width + margin);
}
});
}
each(axesList, function (axis) {
var isHorizontal = axis.isHorizontal();
var extent = isHorizontal
? [gridRect.x, gridRect.x + gridRect.width]
......
......@@ -6,9 +6,7 @@ define(function(require) {
require('./AxisModel');
var zrUtil = require('zrender/core/util');
var GridModel = require('../../echarts').extendComponentModel({
return require('../../echarts').extendComponentModel({
type: 'grid',
......@@ -23,10 +21,12 @@ define(function(require) {
show: false,
zlevel: 0, // 一级层叠
z: 0, // 二级层叠
x: 80,
x: '10%',
y: 60,
x2: 80,
x2: '10%',
y2: 60,
// If grid size contain label
containLabel: false,
// width: {totalWidth} - x - x2,
// height: {totalHeight} - y - y2,
backgroundColor: 'rgba(0,0,0,0)',
......
......@@ -272,7 +272,7 @@ define(function(require) {
if (this.type !== 'image') {
var symbolStyle = this.style;
var symbolShape = this.shape;
if (symbolShape.symbolType === 'line') {
if (symbolShape && symbolShape.symbolType === 'line') {
symbolStyle.stroke = color;
}
else if (this.__isEmptyBrush) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册