|
|
|
// SARS-CoV-2-Viz
|
|
|
|
// Animated COVID case count visualization
|
|
|
|
// Copyright 2022 Edward L. Platt <ed@elplatt.com>
|
|
|
|
|
|
|
|
const metadataUrl = "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/UID_ISO_FIPS_LookUp_Table.csv";
|
|
|
|
|
|
|
|
async function getMetadata(onProgress) {
|
|
|
|
const content = await fetchWithProgress(metadataUrl, onProgress);
|
|
|
|
return content;
|
|
|
|
}
|
|
|
|
|
|
|
|
function parseMetadataTSV(tsv, onProgress) {
|
|
|
|
return tsvToJSON(tsv, onProgress);
|
|
|
|
}
|
|
|
|
|
|
|
|
async function parseMetadata(content, onProgress) {
|
|
|
|
// Convert to TSV then to object
|
|
|
|
onProgress("initializing...");
|
|
|
|
let tsv = await csvToTSV(
|
|
|
|
content,
|
|
|
|
(progress) => onProgress(`parsing CSV: ${progress}`));
|
|
|
|
let metadata = parseMetadataTSV(
|
|
|
|
tsv,
|
|
|
|
(progress) => onProgress(`buidling data structure: ${progress}`));
|
|
|
|
onProgress("done");
|
|
|
|
return metadata;
|
|
|
|
}
|
|
|
|
|
|
|
|
function populationMap(metadata) {
|
|
|
|
let result = {};
|
|
|
|
for (const row of metadata) {
|
|
|
|
if (row["FIPS"]) {
|
|
|
|
result[row["FIPS"]] = parseInt(row["Population"]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return result;
|
|
|
|
}
|