@alicloud/cloud-charts
Version:

71 lines (69 loc) • 3.45 kB
JavaScript
/** 数据结构 */
export var DataStructure = /*#__PURE__*/function (DataStructure) {
DataStructure[DataStructure["Common"] = 0] = "Common";
DataStructure[DataStructure["Tree"] = 1] = "Tree";
DataStructure[DataStructure["Origin"] = 2] = "Origin";
DataStructure[DataStructure["Graph"] = 3] = "Graph";
return DataStructure;
}({});
/** 数据结构检测,true表示正确,false表示错误 */
export function checkData(type, data) {
if (type === DataStructure.Common) {
return !data || Array.isArray(data) && (data === null || data === void 0 ? void 0 : data.every(function (item) {
return (item.x || item.x === 0) && (item.y || item.y === 0);
}));
} else if (type === DataStructure.Tree) {
return !data || !data.children || Array.isArray(data.children);
} else if (type === DataStructure.Origin) {
return !data || Array.isArray(data) && data.every(function (item) {
return !item.data || Array.isArray(item.data);
});
} else {
return !data || !data.nodes || Array.isArray(data.nodes);
}
}
/** 根据数据结构类型与数据计算数据量 */
export function calcDataSize(type, data) {
if (type === DataStructure.Common) {
var _Array$from$length, _Array$from;
// x种类个数
return (_Array$from$length = (_Array$from = Array.from(new Set(data === null || data === void 0 ? void 0 : data.map(function (item) {
return item.x;
})))) === null || _Array$from === void 0 ? void 0 : _Array$from.length) !== null && _Array$from$length !== void 0 ? _Array$from$length : 0;
} else if (type === DataStructure.Tree) {
var _data$children;
// 层次遍历,取每层节点数的最大值
if (!data || !(data !== null && data !== void 0 && (_data$children = data.children) !== null && _data$children !== void 0 && _data$children.length)) {
return 0;
}
var maxNum = 0;
var queue = [data];
var _loop = function _loop() {
var n = queue.length;
maxNum = Math.max(maxNum, n);
var newQueue = [];
queue.forEach(function (node) {
var _node$children;
if (node !== null && node !== void 0 && (_node$children = node.children) !== null && _node$children !== void 0 && _node$children.length) {
newQueue = [].concat(newQueue, node === null || node === void 0 ? void 0 : node.children);
}
});
queue = newQueue;
};
while (queue.length) {
_loop();
}
return maxNum;
} else if (type === DataStructure.Origin) {
// data数组长度中最大值
return (data === null || data === void 0 ? void 0 : data.length) > 0 ? Math.max.apply(Math, data === null || data === void 0 ? void 0 : data.map(function (item) {
var _item$data$length, _item$data;
return (_item$data$length = item === null || item === void 0 ? void 0 : (_item$data = item.data) === null || _item$data === void 0 ? void 0 : _item$data.length) !== null && _item$data$length !== void 0 ? _item$data$length : 0;
})) : 0;
} else {
var _data$nodes$length, _data$nodes;
// nodes数组长度
// 图数据可能只是一个空对象,不一定有nodes字段,不加兜底会返回undefined导致数据异常和图形一起显示
return (_data$nodes$length = data === null || data === void 0 ? void 0 : (_data$nodes = data.nodes) === null || _data$nodes === void 0 ? void 0 : _data$nodes.length) !== null && _data$nodes$length !== void 0 ? _data$nodes$length : 0;
}
}