1 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
2 |
|
3 | function _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 |
|
5 | function _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 |
|
7 | var isArray = require('@antv/util/lib/type/isArray');
|
8 | var isNil = require('@antv/util/lib/type/isNil');
|
9 | var Adjust = require('./base');
|
10 |
|
11 | var Stack = function (_Adjust) {
|
12 | _inherits(Stack, _Adjust);
|
13 |
|
14 | function Stack() {
|
15 | _classCallCheck(this, Stack);
|
16 |
|
17 | return _possibleConstructorReturn(this, _Adjust.apply(this, arguments));
|
18 | }
|
19 |
|
20 | Stack.prototype._initDefaultCfg = function _initDefaultCfg() {
|
21 | this.xField = null;
|
22 | this.yField = null;
|
23 | };
|
24 |
|
25 | Stack.prototype.processAdjust = function processAdjust(dataArray) {
|
26 | this.processStack(dataArray);
|
27 | };
|
28 |
|
29 | Stack.prototype.processStack = function processStack(dataArray) {
|
30 | var self = this;
|
31 | var xField = self.xField;
|
32 | var yField = self.yField;
|
33 | var count = dataArray.length;
|
34 | var stackCache = {
|
35 | positive: {},
|
36 | negative: {}
|
37 | };
|
38 |
|
39 | if (self.reverseOrder) {
|
40 | dataArray = dataArray.slice(0).reverse();
|
41 | }
|
42 | for (var i = 0; i < count; i++) {
|
43 | var data = dataArray[i];
|
44 | for (var j = 0, len = data.length; j < len; j++) {
|
45 | var item = data[j];
|
46 | var x = item[xField] || 0;
|
47 | var y = item[yField];
|
48 | var xkey = x.toString();
|
49 | y = isArray(y) ? y[1] : y;
|
50 | if (!isNil(y)) {
|
51 | var direction = y >= 0 ? 'positive' : 'negative';
|
52 | if (!stackCache[direction][xkey]) {
|
53 | stackCache[direction][xkey] = 0;
|
54 | }
|
55 | item[yField] = [stackCache[direction][xkey], y + stackCache[direction][xkey]];
|
56 | stackCache[direction][xkey] += y;
|
57 | }
|
58 | }
|
59 | }
|
60 | };
|
61 |
|
62 | return Stack;
|
63 | }(Adjust);
|
64 |
|
65 | Adjust.Stack = Stack;
|
66 | module.exports = Stack; |
\ | No newline at end of file |