@alicloud/cloud-charts
Version:

32 lines (29 loc) • 1.11 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import rules from './index';
/** 根据配置项与数据判断图表类型 */
export function classifyChart(chartName, data, config) {
var parentRule = rules[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 _extends({}, parentRule, childRule);
}
}