UNPKG

@visactor/vchart

Version:

charts lib based @visactor/VGrammar

48 lines (42 loc) 1.55 kB
import { DEFAULT_KEY } from "../../constant/data"; export const MultiDatumMark = [ "line", "area", "trail" ]; export function isMultiDatumMark(type) { return MultiDatumMark.includes(type); } export function curveTypeTransform(type, direction) { return "monotone" === type ? "horizontal" === direction ? "monotoneY" : "monotoneX" : type; } export function groupData(data, groupBy, sort) { const groupedData = new Map; if (!data || 0 === data.length) return { keys: [], data: groupedData }; if (!groupBy) return groupedData.set(DEFAULT_KEY, sort ? data.slice().sort(sort) : data.slice()), { keys: [ DEFAULT_KEY ], data: groupedData }; if (1 === data.length) { const key = groupBy(data[0], 0); return groupedData.set(key, [ data[0] ]), { keys: [ key ], data: groupedData }; } const keys = new Set; return data.forEach(((entry, index) => { var _a; const key = groupBy(entry, index), lastData = null !== (_a = groupedData.get(key)) && void 0 !== _a ? _a : []; lastData.push(entry), groupedData.set(key, lastData), keys.add(key); })), sort && keys.forEach((key => { groupedData.get(key).sort(sort); })), { keys: Array.from(keys), data: groupedData }; } export const runEncoder = (styles, datum, attrs = {}) => (styles && Object.keys(styles).forEach((attrName => { attrs[attrName] = styles[attrName](datum); })), attrs); //# sourceMappingURL=common.js.map