@alicloud/cloud-charts
Version:

37 lines (33 loc) • 1.35 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.classifyChart = classifyChart;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _index = _interopRequireDefault(require("./index"));
/** 根据配置项与数据判断图表类型 */
function classifyChart(chartName, data, config) {
var parentRule = _index["default"][chartName];
if (!parentRule) {
return null;
}
// 若无分类函数,则直接使用父类规则
if (!(parentRule !== null && parentRule !== void 0 && parentRule.classify)) {
return parentRule;
}
// 根据父类的classify判断该图属于哪个子类(或基础父类)
var category = parentRule === null || parentRule === void 0 ? void 0 : parentRule.classify(data, config);
if (!category) {
// 没有对应规则
return null;
} else if (category === parentRule.id) {
// 基础类,直接用父类规则
return parentRule;
} else {
// 非基础类,需要找到对应子类
var _parentRule$children = parentRule.children,
children = _parentRule$children === void 0 ? {} : _parentRule$children;
var childRule = children[category];
// 合并父类与子类的规则
return (0, _extends2["default"])({}, parentRule, childRule);
}
}