async function getKingsSunburstData() {
const kingdomToDynastyToKings = await getKingsByKingdomAndDynasty();
return Object({
name: 'Kings of Sri Lanka',
subName: '543 BC - 2020',
children: Object.entries(kingdomToDynastyToKings).reduce(function(
sunburstData,
[kingdom, dynastyToKings]
) {
const kingdomChildren = Object.entries(dynastyToKings).reduce(function(
kingdomChildren,
[dynasty, dynastyChildren]
) {
const ascent = Math.min(...dynastyChildren.map(x => x.ascent));
const descent = Math.max(...dynastyChildren.map(x => x.descent));
kingdomChildren.push(
Object({
name: dynasty,
children: dynastyChildren,
ascent: ascent,
descent: descent,
subName: `${format_year(ascent)} - ${format_year(descent)}`
})
);
return kingdomChildren;
},
[]);
const ascent = Math.min(...kingdomChildren.map(x => x.ascent));
const descent = Math.max(...kingdomChildren.map(x => x.descent));
sunburstData.push(
Object({
name: kingdom,
children: kingdomChildren,
ascent: ascent,
descent: descent,
subName: `${format_year(ascent)} - ${format_year(descent)}`
})
);
return sunburstData;
},
[])
});
}