@visactor/vchart
Version:
charts lib based @visactor/VGrammar
48 lines (42 loc) • 1.55 kB
JavaScript
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