@formant/ava
Version:
A framework for automated visual analytics.
81 lines (80 loc) • 2.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.processRuleCfg = exports.getChartRules = exports.getChartRule = exports.builtInRules = void 0;
var tslib_1 = require("tslib");
var rules_1 = require("./rules");
exports.builtInRules = Object.keys(rules_1.rules);
/**
*
* @param id rule id
* @returns the rule object or null if `id` not exist in built-in rules
*/
var getChartRule = function (id) {
if (Object.keys(rules_1.rules).includes(id)) {
return rules_1.rules[id];
}
return null;
};
exports.getChartRule = getChartRule;
/**
*
* @param ids rule list
* @returns rule object list
*/
var getChartRules = function (ids) {
var chartRules = {};
ids.forEach(function (id) {
if (Object.keys(rules_1.rules).includes(id)) {
chartRules[id] = rules_1.rules[id];
}
});
return chartRules;
};
exports.getChartRules = getChartRules;
/**
* processing ckb config and setup ckb used for advising
* @param ruleCfg rule configuration
* @returns rule base Record<string, RuleModule>
*/
var processRuleCfg = function (ruleCfg) {
if (!ruleCfg) {
// no specific rule configuration -> return default rules
return (0, exports.getChartRules)(exports.builtInRules);
}
// step 1: remove excluded rule
var ruleBase = (0, exports.getChartRules)(exports.builtInRules);
if (ruleCfg.exclude) {
// have `exclude` definition
var toExclude = ruleCfg.exclude;
toExclude.forEach(function (id) {
if (Object.keys(ruleBase).includes(id)) {
delete ruleBase[id];
}
});
}
// step 2: remove rules that are not included
if (ruleCfg.include) {
var toInclude_1 = ruleCfg.include;
Object.keys(ruleBase).forEach(function (id) {
if (!toInclude_1.includes(id)) {
delete ruleBase[id];
}
});
}
// step 3: combine ruleBase and custom rules
var finalRuleBase = tslib_1.__assign(tslib_1.__assign({}, ruleBase), ruleCfg.custom);
// step 4: check options
var options = ruleCfg.options;
if (options) {
var ruleWithOption = Object.keys(options);
ruleWithOption.forEach(function (rule) {
if (Object.keys(finalRuleBase).includes(rule)) {
var ruleOption = options[rule];
finalRuleBase[rule] = tslib_1.__assign(tslib_1.__assign({}, finalRuleBase[rule]), { option: ruleOption });
}
});
}
return finalRuleBase;
};
exports.processRuleCfg = processRuleCfg;
tslib_1.__exportStar(require("./types"), exports);