Skip to content
This repository has been archived by the owner on Mar 25, 2024. It is now read-only.

Commit

Permalink
Select Population
Browse files Browse the repository at this point in the history
  • Loading branch information
eoussama committed Jan 11, 2024
1 parent 5064d3d commit 23dff95
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 44 deletions.
6 changes: 3 additions & 3 deletions src/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -102,13 +102,13 @@ <h5 class="card-title">Recovered</h5>
<div class="card card-cust card-cust--chart shadow border border-0">
<div class="card-head row p-4">
<div class="col">
<h5 class="card-title">Yearly Recovery Rates by Year</h5>
<h5 class="card-title">Yearly Stats</h5>
</div>

<div class="col">
<select
class="form-select"
id="chart-recovery-select"
id="chart-line-select"
aria-label="Year list"
>
</select>
Expand All @@ -134,7 +134,7 @@ <h5 class="card-title">Yearly Cases by Country</h5>
<div class="col">
<select
class="form-select"
id="chart-country-select"
id="chart-map-select"
aria-label="Year list"
>
</select>
Expand Down
58 changes: 37 additions & 21 deletions src/scripts/chart.js
Original file line number Diff line number Diff line change
@@ -1,30 +1,27 @@
window.addEventListener('DOMContentLoaded', () => {
let lineChart = null;
window.addEventListener('DOMContentLoaded', async () => {
const ctx = document.getElementById('chart-line');
const data = await loadData();

populateSelect();
loadChart();
loadChart(data);
populateSelect(data);

function populateSelect() {
const selectElement = document.getElementById('chart-recovery-select');
function loadData() {
return new Promise(resolve => {
fetch('https://disease.sh/v3/covid-19/historical/all?lastdays=all')
.then(e => e.json())
.then(data => {
const keys = Object.keys(data);
const result = keys.reduce((obj, key) => ({
...obj,
[key]: Object.entries(data[key]).map(e => [new Date(e[0]), e[1]])
}), {});

const startYear = 2019;
const endYear = new Date().getFullYear();
const yearRange = Math.abs(endYear - startYear + 1);
const years = Array(yearRange).fill(startYear).map((_, i) => startYear + i);

for (const year of years) {
const optionElement = document.createElement('option');

optionElement.value = year;
optionElement.innerText = year.toString();
optionElement.selected = year === endYear;

selectElement.appendChild(optionElement);
}
resolve(result);
});
})
}

function loadChart() {
function loadChart(data) {
const months = Array(12).fill(1).map((e, i) => Intl.DateTimeFormat('en', { month: 'long' }).format(new Date(`${e + i}`)));

lineChart = new Chart(ctx, {
Expand Down Expand Up @@ -82,4 +79,23 @@ window.addEventListener('DOMContentLoaded', () => {
}
});
}

function populateSelect(data) {
const selectElement = document.getElementById('chart-line-select');

const startYear = data.cases[0][0].getFullYear();
const endYear = data.cases.slice(0).reverse()[0][0].getFullYear();
const yearRange = Math.abs(endYear - startYear + 1);
const years = Array(yearRange).fill(startYear).map((_, i) => startYear + i);

for (const year of years) {
const optionElement = document.createElement('option');

optionElement.value = year;
optionElement.innerText = year.toString();
optionElement.selected = year === endYear;

selectElement.appendChild(optionElement);
}
}
});
56 changes: 36 additions & 20 deletions src/scripts/map.js
Original file line number Diff line number Diff line change
@@ -1,27 +1,24 @@
window.addEventListener('DOMContentLoaded', () => {
let mapChart = null;
window.addEventListener('DOMContentLoaded', async () => {
const ctx = document.getElementById('chart-map');
const data = await loadData()

populateSelect();
loadChart();
loadChart(data);
populateSelect(data);

function populateSelect() {
const selectElement = document.getElementById('chart-country-select');
function loadData() {
return new Promise(resolve => {
fetch('https://disease.sh/v3/covid-19/historical/all?lastdays=all')
.then(e => e.json())
.then(data => {
const keys = Object.keys(data);
const result = keys.reduce((obj, key) => ({
...obj,
[key]: Object.entries(data[key]).map(e => [new Date(e[0]), e[1]])
}), {});

const startYear = 2019;
const endYear = new Date().getFullYear();
const yearRange = Math.abs(endYear - startYear + 1);
const years = Array(yearRange).fill(startYear).map((_, i) => startYear + i);

for (const year of years) {
const optionElement = document.createElement('option');

optionElement.value = year;
optionElement.innerText = year.toString();
optionElement.selected = year === endYear;

selectElement.appendChild(optionElement);
}
resolve(result);
});
})
}

async function loadChart() {
Expand Down Expand Up @@ -78,4 +75,23 @@ window.addEventListener('DOMContentLoaded', () => {
}
});
}

function populateSelect(data) {
const selectElement = document.getElementById('chart-map-select');

const startYear = data.cases[0][0].getFullYear();
const endYear = data.cases.slice(0).reverse()[0][0].getFullYear();
const yearRange = Math.abs(endYear - startYear + 1);
const years = Array(yearRange).fill(startYear).map((_, i) => startYear + i);

for (const year of years) {
const optionElement = document.createElement('option');

optionElement.value = year;
optionElement.innerText = year.toString();
optionElement.selected = year === endYear;

selectElement.appendChild(optionElement);
}
}
});

0 comments on commit 23dff95

Please sign in to comment.