covid19/public/countries/united-states-massachusetts.html
2020-04-27 08:54:26 -07:00

272 lines
16 KiB
HTML

<!DOCTYPE html><html><head><title>Massachusetts - United States | Covid-19</title><meta charset="utf8"><link rel="stylesheet" href="/bootstrap.css"><script src="/Chart.bundle.js"></script><style>table td {
vertical-align: middle !important;
}
th.sorted, td.sorted {
background-color: #e0eefd;
}
.table-sm {
font-size: 80%;
}
</style><script>function makeSparkline(id, data) {
const canvas = document.getElementById(id);
const chart = new Chart(canvas.getContext('2d'), {
type: 'line',
data: {
labels: [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14],
datasets: [{ data: data }],
},
options: {
responsive: false,
legend: {
display: false,
},
elements: {
line: {
borderColor: '#000000',
borderWidth: 1,
},
point: {
radius: 0,
},
},
tooltips: {
enabled: false,
},
scales: {
yAxes: [
{
display: false,
ticks: {
precision: 0,
beginAtZero: true,
}
},
],
xAxes: [
{
display: false,
},
],
}
}
});
}
function makeHeroChart(id, title, labels, totalDeaths, newDeaths) {
const canvas = document.getElementById(id);
const chart = new Chart(canvas.getContext('2d'), {
type: 'line',
data: {
labels: labels,
datasets: [
{
label: 'Total Deaths',
data: totalDeaths,
fill: true,
borderColor: 'rgb(196, 64, 64)',
borderWidth: 1,
backgroundColor: 'rgba(196, 128, 128, 0.25)',
},
{
label: 'New Deaths',
data: newDeaths,
fill: true,
borderColor: 'rgb(64, 64, 64)',
borderWidth: 1,
backgroundColor: 'rgba(128, 128, 128, 0.75)',
}
],
},
options: {
responsive: false,
title: {
display: true,
position: 'top',
text: title,
},
tooltips: {
intersect: false,
position: 'nearest',
axis: 'x',
},
scales: {
yAxes: [
{
display: true,
ticks: {
precision: 0,
beginAtZero: true,
}
},
],
xAxes: [
{
display: true,
},
],
}
}
});
}</script></head><body><div class="container"><h1>Covid-19 Data</h1><p class="text-muted"><em>Data from <a href="https://github.com/CSSEGISandData/COVID-19">Johns Hopkins CSSE</a>.
This page generated from latest data as of 2020-04-27T15:51:54.813Z.
</em></p><div class="main-content"><h2><a class="float-right" href="/countries/united-states.html" style="font-size: 50%">◀ United States</a>Massachusetts - United States</h2><div class="card mb-4"><div class="card-body"><canvas class="mx-auto" id="main-chart" width="800" height="450"></canvas><script>makeHeroChart(
'main-chart',
"Massachusetts",
["2020-01-22","2020-01-23","2020-01-24","2020-01-25","2020-01-26","2020-01-27","2020-01-28","2020-01-29","2020-01-30","2020-01-31","2020-02-01","2020-02-02","2020-02-03","2020-02-04","2020-02-05","2020-02-06","2020-02-07","2020-02-08","2020-02-09","2020-02-10","2020-02-11","2020-02-12","2020-02-13","2020-02-14","2020-02-15","2020-02-16","2020-02-17","2020-02-18","2020-02-19","2020-02-20","2020-02-21","2020-02-22","2020-02-23","2020-02-24","2020-02-25","2020-02-26","2020-02-27","2020-02-28","2020-02-29","2020-03-01","2020-03-02","2020-03-03","2020-03-04","2020-03-05","2020-03-06","2020-03-07","2020-03-08","2020-03-09","2020-03-10","2020-03-11","2020-03-12","2020-03-13","2020-03-14","2020-03-15","2020-03-16","2020-03-17","2020-03-18","2020-03-19","2020-03-20","2020-03-21","2020-03-22","2020-03-23","2020-03-24","2020-03-25","2020-03-26","2020-03-27","2020-03-28","2020-03-29","2020-03-30","2020-03-31","2020-04-01","2020-04-02","2020-04-03","2020-04-04","2020-04-05","2020-04-06","2020-04-07","2020-04-08","2020-04-09","2020-04-10","2020-04-11","2020-04-12","2020-04-13","2020-04-14","2020-04-15","2020-04-16","2020-04-17","2020-04-18","2020-04-19","2020-04-20","2020-04-21","2020-04-22","2020-04-23","2020-04-24","2020-04-25","2020-04-26"],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,5,9,11,15,25,35,44,48,56,89,122,154,192,216,231,260,356,433,503,599,686,756,844,844,1108,1108,1245,1404,1706,1706,1961,2182,2360,2556,2730,2899],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,4,4,2,4,10,10,9,4,8,33,33,32,38,24,15,29,96,77,70,96,87,70,88,0,264,0,137,159,302,0,255,221,178,196,174,169],
);
</script></div></div><div class="table-responsive" id="table"><table class="table table-sm table-hover"><thead><tr><th>#</th><th data-col="name"><div class="d-inline-flex"><span class="sortables mr-2 d-inline-flex flex-column" style="font-size: 50%"><a href="#sort:name:asc"></a><a href="#sort:name:desc"></a></span><span>County/Region</span></div></th><th class="text-center" data-col="total"><div class="d-inline-flex"><span class="sortables mr-2 d-inline-flex flex-column" style="font-size: 50%"><a href="#sort:total:asc"></a><a href="#sort:total:desc"></a></span><span>Deaths</span></div></th><th class="text-center sorted" data-col="yesterday"><div class="d-inline-flex"><span class="sortables mr-2 d-inline-flex flex-column" style="font-size: 50%"><a href="#sort:yesterday:asc"></a><a href="#sort:yesterday:desc"></a></span><span>&hellip;since yesterday</span></div></th><th class="text-center" data-col="week"><div class="d-inline-flex"><span class="sortables mr-2 d-inline-flex flex-column" style="font-size: 50%"><a href="#sort:week:asc"></a><a href="#sort:week:desc"></a></span><span>&hellip;since last week</span></div></th><th class="text-center" data-col="month"><div class="d-inline-flex"><span class="sortables mr-2 d-inline-flex flex-column" style="font-size: 50%"><a href="#sort:month:asc"></a><a href="#sort:month:desc"></a></span><span>&hellip;month-to-date</span></div></th><th>Last 14 days</th></tr></thead><tbody><tr id="row-unassigned" data-name="Unassigned" data-total="141" data-yesterday="128" data-week="121" data-month="132"><td class="sort-order">1</td><td>Unassigned</td><td class="text-right">141</td><td class="text-right sorted">128</td><td class="text-right">121</td><td class="text-right">132</td><td><canvas id="sparkline-0" width="200" height="50"></canvas><script>makeSparkline(
"sparkline-0",
[100,100,14,14,16,19,20,20,8,229,407,603,13,141],
);</script></td></tr><tr id="row-middlesex" data-name="Middlesex" data-total="670" data-yesterday="41" data-week="298" data-month="653"><td class="sort-order">2</td><td>Middlesex</td><td class="text-right">670</td><td class="text-right sorted">41</td><td class="text-right">298</td><td class="text-right">653</td><td><canvas id="sparkline-1" width="200" height="50"></canvas><script>makeSparkline(
"sparkline-1",
[149,149,221,221,258,294,372,372,428,428,428,428,629,670],
);</script></td></tr><tr id="row-out-of-ma" data-name="Out of MA" data-total="0" data-yesterday="0" data-week="0" data-month="0"><td class="sort-order">3</td><td>Out of MA</td><td class="text-right">0</td><td class="text-right sorted">0</td><td class="text-right">0</td><td class="text-right">0</td><td><canvas id="sparkline-2" width="200" height="50"></canvas><script>makeSparkline(
"sparkline-2",
[0,0,0,0,0,0,0,0,0,0,0,0,0,0],
);</script></td></tr><tr id="row-dukes-and-nantucket" data-name="Dukes and Nantucket" data-total="1" data-yesterday="0" data-week="0" data-month="1"><td class="sort-order">4</td><td>Dukes and Nantucket</td><td class="text-right">1</td><td class="text-right sorted">0</td><td class="text-right">0</td><td class="text-right">1</td><td><canvas id="sparkline-3" width="200" height="50"></canvas><script>makeSparkline(
"sparkline-3",
[1,1,1,1,1,1,1,1,1,1,1,1,1,1],
);</script></td></tr><tr id="row-worcester" data-name="Worcester" data-total="183" data-yesterday="0" data-week="69" data-month="176"><td class="sort-order">5</td><td>Worcester</td><td class="text-right">183</td><td class="text-right sorted">0</td><td class="text-right">69</td><td class="text-right">176</td><td><canvas id="sparkline-4" width="200" height="50"></canvas><script>makeSparkline(
"sparkline-4",
[49,49,74,74,84,92,114,114,133,133,133,133,183,183],
);</script></td></tr><tr id="row-suffolk" data-name="Suffolk" data-total="391" data-yesterday="0" data-week="155" data-month="385"><td class="sort-order">6</td><td>Suffolk</td><td class="text-right">391</td><td class="text-right sorted">0</td><td class="text-right">155</td><td class="text-right">385</td><td><canvas id="sparkline-5" width="200" height="50"></canvas><script>makeSparkline(
"sparkline-5",
[86,86,145,145,164,188,236,236,285,285,285,285,391,391],
);</script></td></tr><tr id="row-plymouth" data-name="Plymouth" data-total="212" data-yesterday="0" data-week="81" data-month="210"><td class="sort-order">7</td><td>Plymouth</td><td class="text-right">212</td><td class="text-right sorted">0</td><td class="text-right">81</td><td class="text-right">210</td><td><canvas id="sparkline-6" width="200" height="50"></canvas><script>makeSparkline(
"sparkline-6",
[55,55,89,89,93,105,131,131,141,141,141,141,212,212],
);</script></td></tr><tr id="row-norfolk" data-name="Norfolk" data-total="400" data-yesterday="0" data-week="156" data-month="388"><td class="sort-order">8</td><td>Norfolk</td><td class="text-right">400</td><td class="text-right sorted">0</td><td class="text-right">156</td><td class="text-right">388</td><td><canvas id="sparkline-7" width="200" height="50"></canvas><script>makeSparkline(
"sparkline-7",
[91,91,147,147,173,195,244,244,290,290,290,290,400,400],
);</script></td></tr><tr id="row-nantucket" data-name="Nantucket" data-total="0" data-yesterday="0" data-week="0" data-month="0"><td class="sort-order">9</td><td>Nantucket</td><td class="text-right">0</td><td class="text-right sorted">0</td><td class="text-right">0</td><td class="text-right">0</td><td><canvas id="sparkline-8" width="200" height="50"></canvas><script>makeSparkline(
"sparkline-8",
[0,0,0,0,0,0,0,0,0,0,0,0,0,0],
);</script></td></tr><tr id="row-hampshire" data-name="Hampshire" data-total="20" data-yesterday="0" data-week="13" data-month="19"><td class="sort-order">10</td><td>Hampshire</td><td class="text-right">20</td><td class="text-right sorted">0</td><td class="text-right">13</td><td class="text-right">19</td><td><canvas id="sparkline-9" width="200" height="50"></canvas><script>makeSparkline(
"sparkline-9",
[6,6,6,6,6,7,7,7,10,10,10,10,20,20],
);</script></td></tr><tr id="row-hampden" data-name="Hampden" data-total="315" data-yesterday="0" data-week="104" data-month="304"><td class="sort-order">11</td><td>Hampden</td><td class="text-right">315</td><td class="text-right sorted">0</td><td class="text-right">104</td><td class="text-right">304</td><td><canvas id="sparkline-10" width="200" height="50"></canvas><script>makeSparkline(
"sparkline-10",
[102,102,151,151,161,181,211,211,244,244,244,244,315,315],
);</script></td></tr><tr id="row-franklin" data-name="Franklin" data-total="32" data-yesterday="0" data-week="6" data-month="28"><td class="sort-order">12</td><td>Franklin</td><td class="text-right">32</td><td class="text-right sorted">0</td><td class="text-right">6</td><td class="text-right">28</td><td><canvas id="sparkline-11" width="200" height="50"></canvas><script>makeSparkline(
"sparkline-11",
[25,25,25,25,25,25,26,26,29,29,29,29,32,32],
);</script></td></tr><tr id="row-essex" data-name="Essex" data-total="336" data-yesterday="0" data-week="127" data-month="324"><td class="sort-order">13</td><td>Essex</td><td class="text-right">336</td><td class="text-right sorted">0</td><td class="text-right">127</td><td class="text-right">324</td><td><canvas id="sparkline-12" width="200" height="50"></canvas><script>makeSparkline(
"sparkline-12",
[101,101,140,140,159,178,209,209,245,245,245,245,336,336],
);</script></td></tr><tr id="row-dukes" data-name="Dukes" data-total="0" data-yesterday="0" data-week="0" data-month="0"><td class="sort-order">14</td><td>Dukes</td><td class="text-right">0</td><td class="text-right sorted">0</td><td class="text-right">0</td><td class="text-right">0</td><td><canvas id="sparkline-13" width="200" height="50"></canvas><script>makeSparkline(
"sparkline-13",
[0,0,0,0,0,0,0,0,0,0,0,0,0,0],
);</script></td></tr><tr id="row-bristol" data-name="Bristol" data-total="130" data-yesterday="0" data-week="43" data-month="128"><td class="sort-order">15</td><td>Bristol</td><td class="text-right">130</td><td class="text-right sorted">0</td><td class="text-right">43</td><td class="text-right">128</td><td><canvas id="sparkline-14" width="200" height="50"></canvas><script>makeSparkline(
"sparkline-14",
[43,43,56,56,63,75,87,87,96,96,96,96,130,130],
);</script></td></tr><tr id="row-berkshire" data-name="Berkshire" data-total="31" data-yesterday="0" data-week="4" data-month="27"><td class="sort-order">16</td><td>Berkshire</td><td class="text-right">31</td><td class="text-right sorted">0</td><td class="text-right">4</td><td class="text-right">27</td><td><canvas id="sparkline-15" width="200" height="50"></canvas><script>makeSparkline(
"sparkline-15",
[20,20,21,21,24,24,27,27,29,29,29,29,31,31],
);</script></td></tr><tr id="row-barnstable" data-name="Barnstable" data-total="37" data-yesterday="0" data-week="16" data-month="35"><td class="sort-order">17</td><td>Barnstable</td><td class="text-right">37</td><td class="text-right sorted">0</td><td class="text-right">16</td><td class="text-right">35</td><td><canvas id="sparkline-16" width="200" height="50"></canvas><script>makeSparkline(
"sparkline-16",
[16,16,18,18,18,20,21,21,22,22,22,22,37,37],
);</script></td></tr></tbody></table></div></div></div><script>(function() {
const table = document.getElementById('table');
const headerRow = table.querySelector('thead tr');
const headers = [].slice.call(headerRow.querySelectorAll('th'));
const tbody = table.querySelector('tbody');
const allRows = [].slice.call(tbody.querySelectorAll('tbody tr'));
const resortTable = (col) => {
let nextChild = null;
const highlightedIndex = headers.findIndex(cell => cell.getAttribute('data-col') === col);
console.log(col, highlightedIndex);
headers.forEach((cell, i) => {
if (i !== highlightedIndex) {
cell.classList.remove('sorted');
} else {
cell.classList.add('sorted');
}
});
for (let i = allRows.length - 1; i >= 0; i--) {
const row = allRows[i];
if (!row) {
continue;
}
const cells = [].slice.call(row.querySelectorAll('td'));
cells.forEach((cell, i) => {
if (i !== highlightedIndex) {
cell.classList.remove('sorted');
} else {
cell.classList.add('sorted');
}
});
if (row === nextChild) {
continue;
}
tbody.insertBefore(row, nextChild);
row.querySelector('.sort-order').textContent = (i + 1).toString();
nextChild = row;
}
};
const handleSort = (value, dir) => {
const newSortDir = dir === 'desc' ? 'desc' : 'asc';
const sortByNumberThenName = (attr) => {
allRows.sort((a, b) => {
const aValue = Number(a.getAttribute('data-' + attr));
const bValue = Number(b.getAttribute('data-' + attr));
if (aValue === bValue) {
const aName = a.getAttribute('data-name');
const bName = b.getAttribute('data-name');
return aName && bName ? aName.localeCompare(bName) : 0;
}
return aValue < bValue ?
(newSortDir === 'asc' ? -1 : 1) :
(newSortDir === 'asc' ? 1 : -1);
});
resortTable(value);
};
switch (value) {
case 'name':
allRows.sort((a, b) => {
const aName = a.getAttribute('data-name');
const bName = b.getAttribute('data-name');
if (!aName || !bName) {
return -1;
}
if (newSortDir === 'asc') {
return aName.localeCompare(bName);
}
return bName.localeCompare(aName);
});
resortTable('name');
break;
case 'total':
sortByNumberThenName('total');
break;
case 'yesterday':
sortByNumberThenName('yesterday');
break;
case 'week':
sortByNumberThenName('week');
break;
case 'month':
sortByNumberThenName('month');
break;
}
};
const handleHash = (hash) => {
const sortValue = hash.replace(/^#sort:/, '').split(':');
handleSort(sortValue[0], sortValue[1]);
};
window.addEventListener('hashchange', () => {
handleHash(window.location.hash);
});
handleHash(window.location.hash);
}());</script></body></html>