getData = async ({ date } = {}) => {
const dateStr = d3.timeFormat('%Y-%m-%d')(date);
const uri = getSource({
date: dateStr
});
const buffer = await d3.buffer(uri);
const array = new Uint8Array(buffer);
const wb = xlsx.read(array, { type: 'array' });
const ws = wb.Sheets[wb.SheetNames[1]];
const json = xlsx.utils.sheet_to_json(ws);
const headerRow = json.findIndex(d => d.__EMPTY == '未就学児');
const [header, number] = json.slice(headerRow, headerRow + 2);
const result = [];
for (let key of Object.keys(header)) {
result.push({
date: dateStr,
age:
header[key] === '未就学児' || header[key] === '就学児'
? 0
: +header[key].replace(/(\d+).+/, '$1'),
cases: number[key]
});
}
if (result[0].age === 0 && result[1].age === 0) {
result[1].cases += result[0].cases;
result.shift();
}
return result;
}