NuclearDispersionSystem/ant-design-vue-jeecg/node_modules/@antv/adjust/lib/mixin/stack.js
2023-09-14 14:47:11 +08:00

51 lines
1.4 KiB
Java

module.exports = {
_initDefaultCfg: function _initDefaultCfg() {
this.xField = null; // 调整对应的 x 方向对应的字段名称
this.yField = null; // 调整对应的 y 方向对应的字段名称
this.height = null; // 仅有一个维度调整时,总的高度
this.size = 10; // 单个点的大小
this.reverseOrder = false; // 是否反序进行层叠
this.adjustNames = ['y']; // Only support stack y
},
processOneDimStack: function processOneDimStack(dataArray) {
var self = this;
var xField = self.xField;
var yField = self.yField || 'y';
var height = self.height;
var stackY = {}; // 如果层叠的顺序翻转
if (self.reverseOrder) {
dataArray = dataArray.slice(0).reverse();
}
for (var i = 0, len = dataArray.length; i < len; i++) {
var data = dataArray[i]; // cates
for (var j = 0, dataLen = data.length; j < dataLen; j++) {
var item = data[j];
var size = item.size || self.size;
var stackHeight = size * 2 / height;
var x = item[xField];
if (!stackY[x]) {
stackY[x] = stackHeight / 2;
}
item[yField] = stackY[x];
stackY[x] += stackHeight;
}
}
},
processAdjust: function processAdjust(dataArray) {
if (this.yField) {
this.processStack(dataArray);
} else {
this.processOneDimStack(dataArray);
}
}
};