hierarchy = {
let config = {
dataset: pointsRoutes,
groupByFns: [d => d.country, d => d.code],
reduceFn: v => d3.sum(v, d => d["routes"])
}
const defaultConfig = {
childrenAccessorFn: ([key, value]) => value.size && Array.from(value),
sumFn: ([key, value]) => value,
sortFn: (a, b) => b.value - a.value,
};
const { dataset, reduceFn, groupByFns, childrenAccessorFn, sumFn, sortFn } = { ...defaultConfig, ...config };
const rollupData = d3.rollup(dataset, reduceFn, ...groupByFns);
const hierarchyData = d3.hierarchy([null, rollupData], childrenAccessorFn)
.sum(sumFn)
.sort(sortFn);
return hierarchyData;
}