@visactor/vchart
Version:
charts lib based @visactor/VGrammar
31 lines (28 loc) • 1.28 kB
JavaScript
import { isFunction, isNil, isValid } from "@visactor/vutils";
const resolveOptionValue = option => isFunction(option) ? option() : option;
export const lookup = (data, opt) => {
var _a;
const fromData = null === (_a = opt.from) || void 0 === _a ? void 0 : _a.call(opt);
if (!fromData) return data;
const fields = (option = opt.fields, isFunction(option) ? option() : option);
var option;
const key = opt.key, values = opt.values, defaultValue = opt.default, as = opt.as || [ fields ], index = fromData.reduce((function(map, obj) {
return obj[fields] && map.set(`${obj[fields]}`, obj), map;
}), new Map);
let set;
if (isFunction(opt.set)) set = function(d) {
const v = index.get(`${d[key]}`);
opt.set(d, v);
}; else if (values) {
const m = values.length;
set = function(d) {
const v = index.get(`${d[key]}`);
if (isNil(v)) for (let i = 0; i < m; ++i) d[as[i]] = defaultValue; else for (let i = 0; i < m; ++i) d[as[i]] = v[values[i]];
};
} else set = function(d) {
const v = index.get(`${d[key]}`);
d[as[0]] = isValid(v) ? v : defaultValue;
};
return 0 === data.length ? [] : data.map((d => (set(d), d)));
};
//# sourceMappingURL=lookup.js.map