69 lines
2.0 KiB
Java
69 lines
2.0 KiB
Java
![]() |
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
|
|||
|
|
|||
|
var Adjust = require('./base');
|
|||
|
|
|||
|
var each = require('@antv/util/lib/each');
|
|||
|
|
|||
|
var MARGIN_RATIO = 1 / 2;
|
|||
|
var DODGE_RATIO = 1 / 2;
|
|||
|
|
|||
|
var Dodge =
|
|||
|
/*#__PURE__*/
|
|||
|
function (_Adjust) {
|
|||
|
_inheritsLoose(Dodge, _Adjust);
|
|||
|
|
|||
|
function Dodge() {
|
|||
|
return _Adjust.apply(this, arguments) || this;
|
|||
|
}
|
|||
|
|
|||
|
var _proto = Dodge.prototype;
|
|||
|
|
|||
|
_proto._initDefaultCfg = function _initDefaultCfg() {
|
|||
|
/**
|
|||
|
* 调整过程中,2个数据的间距
|
|||
|
* @type {Number}
|
|||
|
*/
|
|||
|
this.marginRatio = MARGIN_RATIO;
|
|||
|
/**
|
|||
|
* 调整占单位宽度的比例,例如:占2个分类间距的 1/2
|
|||
|
* @type {Number}
|
|||
|
*/
|
|||
|
|
|||
|
this.dodgeRatio = DODGE_RATIO;
|
|||
|
this.adjustNames = ['x', 'y']; // 调整的维度,默认,x,y都做调整
|
|||
|
};
|
|||
|
|
|||
|
_proto.getDodgeOffset = function getDodgeOffset(range, index, count) {
|
|||
|
var self = this;
|
|||
|
var pre = range.pre;
|
|||
|
var next = range.next;
|
|||
|
var tickLength = next - pre;
|
|||
|
var width = tickLength * self.dodgeRatio / count;
|
|||
|
var margin = self.marginRatio * width;
|
|||
|
var offset = 1 / 2 * (tickLength - count * width - (count - 1) * margin) + ((index + 1) * width + index * margin) - 1 / 2 * width - 1 / 2 * tickLength;
|
|||
|
return (pre + next) / 2 + offset;
|
|||
|
};
|
|||
|
|
|||
|
_proto.processAdjust = function processAdjust(dataArray) {
|
|||
|
var self = this;
|
|||
|
var count = dataArray.length;
|
|||
|
var xField = self.xField;
|
|||
|
each(dataArray, function (data, index) {
|
|||
|
for (var i = 0, len = data.length; i < len; i++) {
|
|||
|
var obj = data[i];
|
|||
|
var value = obj[xField];
|
|||
|
var range = {
|
|||
|
pre: len === 1 ? value - 1 : value - 0.5,
|
|||
|
next: len === 1 ? value + 1 : value + 0.5
|
|||
|
};
|
|||
|
var dodgeValue = self.getDodgeOffset(range, index, count);
|
|||
|
obj[xField] = dodgeValue;
|
|||
|
}
|
|||
|
});
|
|||
|
};
|
|||
|
|
|||
|
return Dodge;
|
|||
|
}(Adjust);
|
|||
|
|
|||
|
Adjust.Dodge = Dodge;
|
|||
|
module.exports = Dodge;
|