Skip to content

Commit

Permalink
Express loading as promises.
Browse files Browse the repository at this point in the history
  • Loading branch information
davidbau committed Mar 31, 2020
1 parent 84beeb0 commit 6417053
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 64 deletions.
6 changes: 3 additions & 3 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@
<script src="lib/chartist-plugin-legend.js"></script> <!-- custom clicks -->
<script src="lib/chartist-logaxis.js"></script> <!-- packaged standalone -->
<script src="lib/chartist-print.js"></script> <!-- relayout when printing -->
<script src="lib/load_csse.js?v=2"></script> <!-- JHU CSSE loader -->
<script src="lib/load_cds.js"></script> <!-- JHU CSSE loader -->
<script src="lib/load_csse.js?v=3"></script> <!-- JHU CSSE loader -->
<script src="lib/load_cds.js?v=2"></script> <!-- JHU CSSE loader -->
<script src="lib/utils.js"></script> <!-- Date and csv utilities -->
<script src="lib/usa_state_list.js"></script> <!-- translating abbrevs -->
<script src="lib/fips_counties.js"></script>
Expand Down Expand Up @@ -867,7 +867,7 @@ <h1>{{ { US: 'USA', Intl: 'International' }[chosen_domain] }}
createCssStyles();

load_feed_data = (data_feed_name == 'cds' ? load_cds_data : load_csse_data);
load_feed_data((d) => {
load_feed_data().then(d => {
csse = d;
theapp.csse = d;
theapp.available_localities = all_localities(d);
Expand Down
54 changes: 28 additions & 26 deletions lib/load_cds.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,31 +21,33 @@ function normalize_county(county, state, country) {
return [county, fips]
}

function load_cds_data(loaded) {
$.getJSON(cds_byloc_url, (response, status, xhr) => {
var d_nums = _.map(_.keys(response.KOR.dates), d => num_from_date(d));
var ds = _.min(d_nums), df = _.max(d_nums) + 1;
var names = _.concat('Country State County City Aggregate FIPS Population Key'
.split(' '), _.range(ds, df).map(i => date_from_num(i)));
var cds = {};
for (var field of 'confirmed deaths recovered active tested'.split(' ')) {
var table = [names]
_.forEach(response, (record, k) => {
var country = COUNTRIES[record.country] || record.country;
var state = normalize_state(record.state, country);
var county, fips;
[county, fips] = normalize_county(record.county, state, country);
var dayrow = Array(df - ds);
_.forEach(record.dates, (r, d) => {
var dat = field == 'confirmed' ? r.cases : r[field];
dayrow[num_from_date(d) - ds] = dat;
});
table.push(_.concat(
[country, state, county, record.city, record.aggregate,
fips, record.population, k], dayrow));
})
cds[field] = table;
}
loaded(cds);
function load_cds_data() {
return new Promise((resolve, reject) => {
$.getJSON(cds_byloc_url, (response, status, xhr) => {
var d_nums = _.map(_.keys(response.KOR.dates), d => num_from_date(d));
var ds = _.min(d_nums), df = _.max(d_nums) + 1;
var names = _.concat('Country State County City Aggregate FIPS Population Key'
.split(' '), _.range(ds, df).map(i => date_from_num(i)));
var cds = {};
for (var field of 'confirmed deaths recovered active tested'.split(' ')) {
var table = [names]
_.forEach(response, (record, k) => {
var country = COUNTRIES[record.country] || record.country;
var state = normalize_state(record.state, country);
var county, fips;
[county, fips] = normalize_county(record.county, state, country);
var dayrow = Array(df - ds);
_.forEach(record.dates, (r, d) => {
var dat = field == 'confirmed' ? r.cases : r[field];
dayrow[num_from_date(d) - ds] = dat;
});
table.push(_.concat(
[country, state, county, record.city, record.aggregate,
fips, record.population, k], dayrow));
})
cds[field] = table;
}
resolve(cds);
});
});
}
68 changes: 35 additions & 33 deletions lib/load_csse.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,42 +35,44 @@ function old_ts_url(seriesname) {
function daily_url(date) {
return daily_base_url + date + '.csv';
}
function load_csse_data(loaded) {
var needed = {
confirmed_global: ts_url('confirmed', 'global'),
deaths_global: ts_url('deaths', 'global'),
confirmed_old: old_ts_url('Confirmed'),
deaths_old: old_ts_url('Deaths'),
// Daily files are now autmoatically discovered.
// We will load them individually until the US time series API appears.
// 'daily_03-23-2020': daily_url('03-23-2020'),
// 'daily_03-24-2020': daily_url('03-24-2020')
};
var results = {}, pending = 0;
function start_download(k) {
pending += 1;
url = needed[k];
Papa.parse(url, {
download: true,
complete: r => {
r.data[0] = _.map(r.data[0], normalize_date);
results[k] = r.data;
if (k == 'confirmed_global') {
for (var bad_date of get_bad_date_list(r.data)) {
var bd_filename = format_date_filename(bad_date);
if (!needed.hasOwnProperty(bd_filename)) {
var new_k = 'daily_' + bd_filename;
needed[new_k] = daily_url(bd_filename);
start_download(new_k);
function load_csse_data() {
return new Promise((resolve, reject) => {
var needed = {
confirmed_global: ts_url('confirmed', 'global'),
deaths_global: ts_url('deaths', 'global'),
confirmed_old: old_ts_url('Confirmed'),
deaths_old: old_ts_url('Deaths'),
// Daily files are now autmoatically discovered.
// We will load them individually until the US time series API appears.
// 'daily_03-23-2020': daily_url('03-23-2020'),
// 'daily_03-24-2020': daily_url('03-24-2020')
};
var results = {}, pending = 0;
function start_download(k) {
pending += 1;
url = needed[k];
Papa.parse(url, {
download: true,
complete: r => {
r.data[0] = _.map(r.data[0], normalize_date);
results[k] = r.data;
if (k == 'confirmed_global') {
for (var bad_date of get_bad_date_list(r.data)) {
var bd_filename = format_date_filename(bad_date);
if (!needed.hasOwnProperty(bd_filename)) {
var new_k = 'daily_' + bd_filename;
needed[new_k] = daily_url(bd_filename);
start_download(new_k);
}
}
}
pending -= 1;
if (!pending) resolve(merge_sources(results));
}
pending -= 1;
if (!pending) loaded(merge_sources(results));
}
});
}
_.forOwn(needed, (url, k) => { start_download(k); });
});
}
_.forOwn(needed, (url, k) => { start_download(k); });
});
}
function get_bad_date_list(series) {
var first_bad_date_i = fieldnum(series[0], '3/23/20');
Expand Down
2 changes: 1 addition & 1 deletion test_cds.html
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
</pre>
<script>
var cds = null;
load_cds_data((d) => {
load_cds_data().then(d => {
cds = d;
// document.querySelector('pre').innerText = JSON.stringify(d, null, 1);
document.querySelector('pre').innerText = 'use the console to see cds var.';
Expand Down
2 changes: 1 addition & 1 deletion test_csse.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
</pre>
<script>
var csse = null;
load_csse_data((d) => {
load_csse_data().then(d => {
csse = d;
// document.querySelector('pre').innerText = JSON.stringify(d, null, 1);
document.querySelector('pre').innerText = 'Loaded csse with ' +
Expand Down

0 comments on commit 6417053

Please sign in to comment.