async function getDataByTimeAndDSD() {
const dsdNameToId = Object.assign(
Object.entries(REGION_INDEX[REGION_TYPE.DSD]).reduce(function(
dsdNameToId,
[id, d]
) {
dsdNameToId[d.name] = id;
return dsdNameToId;
},
{}),
{
Sainthamarathu: 'LK-5225',
Walallawita: 'LK-1339',
"K.F.G. & G. Korale": 'LK-2130',
Panduwasnuwara: 'LK-6148',
"N. Palatha Central": 'LK-7115',
"N. Palatha East": 'LK-7133',
"Arachchikattuwa PS": 'LK-6230',
Kantalai: 'LK-5321',
Hildummulla: 'LK-8142',
"Dehiwala-Mount Lavinia": 'LK-1130',
Hanwella: 'LK-1115',
Ambalanthota: 'LK-3315',
"Valikamam East": 'LK-4118',
"Valikamam North": 'LK-4112',
"Valikamam South": 'LK-4115',
"Valikamam South-West": 'LK-4109',
"Valikamam West": 'LK-4106',
"Thenmaradchy (Chavakachcheri)": 'LK-4130',
"Vadamaradchi South-West": 'LK-4121',
"Vadamaradchy North": 'LK-4127'
}
);
const data = await getData();
const dataByTimeAndDSD = data.reduce(function(dataByTimeAndDSD, d) {
const ut = getUnixTimeFromDateStr(d.ds);
const dsdName = d.polygon_name;
const dsdID = dsdNameToId[dsdName];
if (!dataByTimeAndDSD[ut]) {
dataByTimeAndDSD[ut] = {};
}
if (!dataByTimeAndDSD[ut][dsdID]) {
dataByTimeAndDSD[ut][dsdID] = parseFloat(
d.all_day_ratio_single_tile_users
);
}
return dataByTimeAndDSD;
}, {});
return Object.entries(dataByTimeAndDSD)
.map(function([ts, dataForTimeByDSD]) {
return Object({
ut: parseInt(ts),
dataByDSD: Object.entries(dataForTimeByDSD)
.map(function([dsdID, p]) {
return Object({ dsdID, p });
})
.sort((a, b) => a.dsdID.localeCompare(b.dsdID))
});
})
.sort((a, b) => b.ut - a.ut);
}