Skip to content

Commit 7ca41eb

Browse files
committed
updated indicators for 1.3 release
1 parent 96f72ff commit 7ca41eb

File tree

4 files changed

+155
-44
lines changed

4 files changed

+155
-44
lines changed

src/App.svelte

Lines changed: 41 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,11 @@
6363
var data1 = json1.epidata;
6464
var data2 = json2.epidata;
6565
for (var i = 0; i < data1.length; i++) {
66-
var death_ratio = data1[i].value;
67-
var total_daily_death = data2[i].value;
68-
data1[i].death_ratio = death_ratio;
66+
var ratio = data1[i].value;
67+
var count = data2[i].value;
68+
data1[i].ratio = ratio;
6969
delete data1[i].value;
70-
data1[i].total_daily_death = total_daily_death;
70+
data1[i].count = count;
7171
new_epidata.push(data1[i]);
7272
}
7373
return new_epidata;
@@ -86,14 +86,42 @@
8686
currentData.set([]);
8787
regionSliceCache.update(m => m.set(sensor + level + date, []));
8888
} else {
89-
// when displaying deaths, need to disply more info
90-
if (sEntry.signal === 'deaths_incidence_prop') {
91-
callAPI(sEntry.id, 'deaths_incidence_num', level, date, '*').then(d1 => {
92-
var extended = extend(d, d1);
93-
currentData.set(extended);
94-
regionSliceCache.update(m => m.set(sensor + level + date, extended));
95-
});
96-
} else {
89+
const death_regex = /deaths_incidence_/;
90+
const cases_regex = /confirmed_incidence_/;
91+
// deaths needs both count and ratio
92+
if (sEntry.signal.match(death_regex)) {
93+
if (sEntry.signal === 'deaths_incidence_prop') {
94+
callAPI(sEntry.id, 'deaths_incidence_num', level, date, '*').then(d1 => {
95+
var extended = extend(d, d1);
96+
currentData.set(extended);
97+
regionSliceCache.update(m => m.set(sensor + level + date, extended));
98+
});
99+
} else {
100+
callAPI(sEntry.id, 'deaths_incidence_prop', level, date, '*').then(d1 => {
101+
var extended = extend(d, d1);
102+
currentData.set(extended);
103+
regionSliceCache.update(m => m.set(sensor + level + date, extended));
104+
});
105+
}
106+
}
107+
// cases needs both count and ratio
108+
else if (sEntry.signal.match(cases_regex)) {
109+
if (sEntry.signal === 'confirmed_incidence_prop') {
110+
callAPI(sEntry.id, 'confirmed_incidence_num', level, date, '*').then(d1 => {
111+
var extended = extend(d, d1);
112+
currentData.set(extended);
113+
regionSliceCache.update(m => m.set(sensor + level + date, extended));
114+
});
115+
} else {
116+
callAPI(sEntry.id, 'confirmed_incidence_prop', level, date, '*').then(d1 => {
117+
var extended = extend(d, d1);
118+
currentData.set(extended);
119+
regionSliceCache.update(m => m.set(sensor + level + date, extended));
120+
});
121+
}
122+
}
123+
// everything else
124+
else {
97125
currentData.set(d.epidata);
98126
regionSliceCache.update(m => m.set(sensor + level + date, d.epidata));
99127
}
@@ -232,7 +260,7 @@
232260
std: matchedMeta.stdev_value,
233261
});
234262
// add min/max count for death count
235-
if (sEntry.signal === 'deaths_incidence_prop') {
263+
if (sEntry.signal.match(/num/)) {
236264
statsMap.set(sensorKey + '_count', {
237265
low: Math.max(matchedMeta.min_value, 1),
238266
high: matchedMeta.max_value,

src/Legend.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
let sts;
1414
let valueMinMax;
1515
16-
if ($currentSensor === 'jhu-csse-deaths_incidence_prop') {
16+
if ($currentSensor.match(/num/)) {
1717
sts = stats.get(sens + '_count');
1818
valueMinMax = [sts.low, sts.high];
1919
} else {

src/MapBox.svelte

Lines changed: 66 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -94,14 +94,14 @@
9494
let body;
9595
if ($signalType === 'value') {
9696
// More information displayed when deaths is shown
97-
if (sens.name === 'Deaths (JHU)') {
97+
if ($currentSensor.match(/deaths_incidence_num/)) {
9898
const death_num = e.features[0].properties.value;
9999
const ratio = e.features[0].properties.value1;
100100
body = `
101101
<div class="map-popup-region-value-container">
102102
Population: ${Population} <br>
103-
${sens.yAxis}: ${ratio.toFixed(2)} ${sens.format === 'percent' ? '%' : ''} <br>
104-
Deaths:
103+
Death per 100,000 people: ${ratio.toFixed(2)} ${sens.format === 'percent' ? '%' : ''} <br>
104+
${sens.yAxis}:
105105
<span class="map-popup-region-value"
106106
style="background-color: ${fillColor};
107107
color: ${getTextColorBasedOnBackground(fillColor)};">
@@ -110,6 +110,54 @@
110110
111111
</div>
112112
`;
113+
} else if ($currentSensor.match(/deaths_incidence_prop/)) {
114+
const death_num = e.features[0].properties.value;
115+
const ratio = e.features[0].properties.value1;
116+
body = `
117+
<div class="map-popup-region-value-container">
118+
Population: ${Population} <br>
119+
Deaths: ${death_num} <br>
120+
${sens.yAxis}:
121+
<span class="map-popup-region-value"
122+
style="background-color: ${fillColor};
123+
color: ${getTextColorBasedOnBackground(fillColor)};">
124+
${ratio.toFixed(2)}
125+
${sens.format === 'percent' ? '%' : ''}
126+
</span>
127+
</div>
128+
`;
129+
} else if ($currentSensor.match(/confirmed_incidence_num/)) {
130+
const cases_num = e.features[0].properties.value;
131+
const ratio = e.features[0].properties.value1;
132+
body = `
133+
<div class="map-popup-region-value-container">
134+
Population: ${Population} <br>
135+
Cases per 100,000 people: ${ratio.toFixed(2)} ${sens.format === 'percent' ? '%' : ''} <br>
136+
${sens.yAxis}:
137+
<span class="map-popup-region-value"
138+
style="background-color: ${fillColor};
139+
color: ${getTextColorBasedOnBackground(fillColor)};">
140+
${cases_num}
141+
</span>
142+
143+
</div>
144+
`;
145+
} else if ($currentSensor.match(/confirmed_incidence_prop/)) {
146+
const cases_num = e.features[0].properties.value;
147+
const ratio = e.features[0].properties.value1;
148+
body = `
149+
<div class="map-popup-region-value-container">
150+
Population: ${Population} <br>
151+
Cases: ${cases_num} <br>
152+
${sens.yAxis}:
153+
<span class="map-popup-region-value"
154+
style="background-color: ${fillColor};
155+
color: ${getTextColorBasedOnBackground(fillColor)};">
156+
${ratio.toFixed(2)}
157+
${sens.format === 'percent' ? '%' : ''}
158+
</span>
159+
</div>
160+
`;
113161
} else {
114162
body = `
115163
<div class="map-popup-region-value-container">
@@ -246,7 +294,7 @@
246294
let valueMinMax;
247295
248296
// Customize min max values for deaths
249-
if ($sensorMap.get($currentSensor).name === 'Deaths (JHU)') {
297+
if ($currentSensor.match(/num/)) {
250298
thisStats = $stats.get($currentSensor + '_count');
251299
valueMinMax = [thisStats.low, thisStats.high];
252300
} else {
@@ -270,9 +318,9 @@
270318
271319
if (d.value !== null) {
272320
var info = [];
273-
if ($sensorMap.get($currentSensor).name === 'Deaths (JHU)') {
274-
info.push(d.death_ratio);
275-
info.push(d.total_daily_death);
321+
if ($currentSensor.match(/prop/) || $currentSensor.match(/num/)) {
322+
info.push(d.ratio);
323+
info.push(d.count);
276324
} else {
277325
info.push(d.value);
278326
}
@@ -304,7 +352,11 @@
304352
305353
if (geoIds.has(id + '000') && valueMappedMega.get(id) !== undefined) {
306354
d.properties.value = valueMappedMega.get(id)[0];
307-
if ($sensorMap.get($currentSensor).name === 'Deaths (JHU)') {
355+
356+
if ($currentSensor.match(/num/)) {
357+
d.properties.value = valueMappedMega.get(id)[0];
358+
d.properties.value1 = valueMappedMega.get(id)[1];
359+
} else if ($currentSensor.match(/prop/)) {
308360
d.properties.value = valueMappedMega.get(id)[1];
309361
d.properties.value1 = valueMappedMega.get(id)[0];
310362
}
@@ -324,7 +376,10 @@
324376
325377
if (geoIds.has(id) && valueMappedVals.get(id) !== undefined) {
326378
d.properties.value = valueMappedVals.get(id)[0];
327-
if ($sensorMap.get($currentSensor).name === 'Deaths (JHU)') {
379+
if ($currentSensor.match(/num/)) {
380+
d.properties.value = valueMappedVals.get(id)[0];
381+
d.properties.value1 = valueMappedVals.get(id)[1];
382+
} else if ($currentSensor.match(/prop/)) {
328383
d.properties.value = valueMappedVals.get(id)[1];
329384
d.properties.value1 = valueMappedVals.get(id)[0];
330385
}
@@ -338,14 +393,15 @@
338393
let stopsMega;
339394
if ($signalType === 'value') {
340395
let center = valueMinMax[0] + (valueMinMax[1] - valueMinMax[0]) / 2;
341-
if ($sensorMap.get($currentSensor).name === 'Deaths (JHU)') {
396+
if ($currentSensor.match(/num/)) {
342397
stops = [
343398
[0, DIRECTION_THEME.deathMin],
344399
[valueMinMax[0], DIRECTION_THEME.gradientMin],
345400
[center, DIRECTION_THEME.gradientMiddle],
346401
[valueMinMax[1], DIRECTION_THEME.gradientMax],
347402
];
348403
stopsMega = [
404+
[0, DIRECTION_THEME.deathMin],
349405
[valueMinMax[0], DIRECTION_THEME.gradientMinMega],
350406
[center, DIRECTION_THEME.gradientMiddleMega],
351407
[valueMinMax[1], DIRECTION_THEME.gradientMaxMega],

src/stores.js

Lines changed: 47 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ export const sensors = readable(
2828
signal: 'smoothed_adj_cli',
2929
levels: ['county', 'msa', 'state'],
3030
official: false,
31+
bolded: false
3132
},
3233
{
3334
name: 'Symptoms (FB)',
@@ -40,7 +41,7 @@ export const sensors = readable(
4041
signal: 'smoothed_cli',
4142
levels: ['county', 'msa', 'state'],
4243
official: false,
43-
bolded: false,
44+
bolded: false
4445
},
4546
{
4647
name: 'Symptoms in Community (FB)',
@@ -53,7 +54,7 @@ export const sensors = readable(
5354
signal: 'smoothed_hh_cmnty_cli',
5455
levels: ['county', 'msa', 'state'],
5556
official: false,
56-
bolded: false,
57+
bolded: false
5758
},
5859
{
5960
name: 'Search Trends (Google)',
@@ -66,47 +67,73 @@ export const sensors = readable(
6667
signal: 'smoothed_search',
6768
levels: ['msa', 'state'],
6869
official: false,
69-
bolded: false,
70+
bolded: false
7071
},
7172
{
72-
name: 'Combined',
73-
id: 'indicator-combination',
73+
name: "Combined",
74+
id: "indicator-combination",
7475
tooltipText: 'Combination of COVID-19 indicators available at this geographic level',
7576
mapTitleText: 'Combination of COVID-19 indicators',
7677
chartTitleText: 'Combination of COVID-19 indicators',
7778
yAxis: 'Combined value (arbitrary scale)',
78-
format: 'raw',
79-
signal: 'nmf_day_doc_fbc_fbs_ght',
80-
levels: ['county', 'msa', 'state'],
79+
format: "raw",
80+
signal: "nmf_day_doc_fbc_fbs_ght",
81+
levels: ["county", "msa", "state"],
8182
official: false,
82-
bolded: true,
83+
bolded: true
84+
},
85+
{
86+
name: 'Cases',
87+
id: 'jhu-csse',
88+
tooltipText: 'Daily confirmed COVID-19 cases, as reported by Johns Hopkins University',
89+
mapTitleText: 'Daily confirmed COVID-19 cases',
90+
chartTitleText: 'Daily confirmed COVID-19 cases',
91+
yAxis: 'Cases',
92+
format: 'raw',
93+
signal: 'confirmed_incidence_num',
94+
levels: ['msa', 'county', 'state'],
95+
official: true,
96+
bolded: false
8397
},
8498
{
85-
name: 'Cases (JHU)',
99+
name: 'Cases per capita',
86100
id: 'jhu-csse',
87-
tooltipText: 'New COVID-19 cases per 100,000 people, as reported by Johns Hopkins University',
88-
mapTitleText: 'New confirmed COVID-19 cases per 100,000 people',
89-
chartTitleText: 'New confirmed COVID-19 cases per 100,000 people',
101+
tooltipText: 'Daily confirmed COVID-19 cases per 100,000 people, based on data reported by Johns Hopkins University',
102+
mapTitleText: 'Daily confirmed COVID-19 cases per 100,000 people',
103+
chartTitleText: 'Daily confirmed COVID-19 cases per 100,000 people',
90104
yAxis: 'Cases per 100,000 people',
91105
format: 'raw',
92106
signal: 'confirmed_incidence_prop',
93107
levels: ['msa', 'county', 'state'],
94108
official: true,
95-
bolded: false,
109+
bolded: false
96110
},
97111
{
98-
name: 'Deaths (JHU)',
112+
name: 'Deaths',
99113
id: 'jhu-csse',
100-
tooltipText: 'New COVID-19 deaths per 100,000 people, as reported by Johns Hopkins University',
101-
mapTitleText: 'New COVID-19 deaths per 100,000 people',
102-
chartTitleText: 'New COVID-19 deaths per 100,000 people',
114+
tooltipText: 'Daily COVID-19 deaths, as reported by Johns Hopkins University',
115+
mapTitleText: 'Daily COVID-19 deaths',
116+
chartTitleText: 'Daily COVID-19 deaths',
117+
yAxis: 'Deaths',
118+
format: 'raw',
119+
signal: 'deaths_incidence_num',
120+
levels: ['msa', 'county', 'state'],
121+
official: true,
122+
bolded: false
123+
},
124+
{
125+
name: 'Deaths per capita',
126+
id: 'jhu-csse',
127+
tooltipText: 'Daily COVID-19 deaths per 100,000 people, based on data reported by Johns Hopkins University',
128+
mapTitleText: 'Daily COVID-19 deaths per 100,000 people',
129+
chartTitleText: 'Daily COVID-19 deaths per 100,000 people',
103130
yAxis: 'Deaths per 100,000 people',
104131
format: 'raw',
105132
signal: 'deaths_incidence_prop',
106133
levels: ['msa', 'county', 'state'],
107134
official: true,
108-
bolded: false,
109-
},
135+
bolded: false
136+
}
110137
],
111138
(set) => {
112139
let sensorsOption = urlParams.get('sensors');

0 commit comments

Comments
 (0)