UNPKG

2.98 kBJavaScriptView Raw
1function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2
3function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
4
5function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
6
7var each = require('@antv/util/lib/each');
8var mix = require('@antv/util/lib/mix');
9var ArrayUtil = {
10 merge: require('@antv/util/lib/array/merge'),
11 values: require('@antv/util/lib/array/values')
12};
13
14var Adjust = require('./base');
15var AdjustMixin = require('./mixin/adjust');
16
17var Jitter = function (_Adjust) {
18 _inherits(Jitter, _Adjust);
19
20 function Jitter() {
21 _classCallCheck(this, Jitter);
22
23 return _possibleConstructorReturn(this, _Adjust.apply(this, arguments));
24 }
25
26 Jitter.prototype._initDefaultCfg = function _initDefaultCfg() {
27 this.xField = null; // 调整对应的 x 方向对应的字段名称
28 this.yField = null; // 调整对应的 y 方向对应的字段名称
29 this.adjustNames = ['x', 'y']; // 指x,y
30 this.groupFields = null; // 参与分组的数据维度
31 };
32
33 Jitter.prototype.processAdjust = function processAdjust(dataArray) {
34 var self = this;
35 var mergeData = ArrayUtil.merge(dataArray);
36
37 self.adjDataArray = dataArray;
38 self.mergeData = mergeData;
39 self.adjustData(dataArray, mergeData);
40 self.adjFrames = null;
41 self.mergeData = null;
42 };
43
44 Jitter.prototype.getAdjustOffset = function getAdjustOffset(pre, next) {
45 var r = Math.random(); // 随机位置,均匀分布
46 var avg = next - pre; // * length
47 var append = avg * 0.05;
48 return pre + append + avg * 0.9 * r;
49 };
50
51 // adjust group data
52
53
54 Jitter.prototype._adjustGroup = function _adjustGroup(group, dim, key, values) {
55 var self = this;
56 var range = self.getAdjustRange(dim, key, values);
57
58 each(group, function (record) {
59 record[dim] = self.getAdjustOffset(range.pre, range.next); // 获取调整的位置
60 });
61 };
62
63 Jitter.prototype.adjustDim = function adjustDim(dim, values, data) {
64 var self = this;
65 var groupData = self.groupData(data, dim);
66 each(groupData, function (group, key) {
67 key = parseFloat(key);
68 self._adjustGroup(group, dim, key, values);
69 });
70 };
71
72 return Jitter;
73}(Adjust);
74
75mix(Jitter.prototype, AdjustMixin);
76
77Adjust.Jitter = Jitter;
78module.exports = Jitter;
\No newline at end of file