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

Commit cdceda5

Browse files
committed
Toggle buttons
1 parent bddf075 commit cdceda5

File tree

6 files changed

+73
-5
lines changed

6 files changed

+73
-5
lines changed

src/index.html

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,18 @@ <h5 class="card-title">Recovered</h5>
144144
<h5 class="card-title">Yearly Stats</h5>
145145
</div>
146146

147-
<div class="col">
147+
<div class="col d-flex justify-content-end">
148+
<button
149+
type="button"
150+
id="chart-line-btn"
151+
class="btn btn-primary"
152+
>
153+
<img
154+
src="images/icons/maximize.svg"
155+
alt="Maximize icon"
156+
>
157+
</button>
158+
148159
<select
149160
class="form-select"
150161
id="chart-line-select"
@@ -174,7 +185,18 @@ <h5 class="card-title">Yearly Stats</h5>
174185
<h5 class="card-title">Yearly Vaccinations by Country</h5>
175186
</div>
176187

177-
<div class="col">
188+
<div class="col d-flex justify-content-end">
189+
<button
190+
type="button"
191+
id="chart-map-btn"
192+
class="btn btn-primary"
193+
>
194+
<img
195+
src="images/icons/maximize.svg"
196+
alt="Maximize icon"
197+
>
198+
</button>
199+
178200
<select
179201
class="form-select"
180202
id="chart-map-select"

src/scripts/chart.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import { getHistoricalData } from './api.js';
2-
import { populateSelect, getDataByMonth, sendLoadEvent } from './utils.js';
2+
import { populateSelect, getDataByMonth, sendLoadEvent, toggleButton } from './utils.js';
33

44
window.addEventListener('DOMContentLoaded', async () => {
55
let lineChart;
6+
67
const data = await getHistoricalData();
78
const ctx = document.getElementById('chart-line');
89

@@ -12,6 +13,8 @@ window.addEventListener('DOMContentLoaded', async () => {
1213
const yearRange = Math.abs(endYear - startYear + 1);
1314
const years = Array(yearRange).fill(startYear).map((_, i) => startYear + i);
1415

16+
toggleButton('chart-line-btn', console.log);
17+
1518
sendLoadEvent(() => {
1619
populateSelect('chart-line-select', years, loadChart, data);
1720
loadChart(data);

src/scripts/map.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { getVaccinationData } from './api.js';
2-
import { populateSelect, getDataByMonth, sendLoadEvent } from './utils.js';
2+
import { populateSelect, getDataByMonth, sendLoadEvent, toggleButton } from './utils.js';
33

44
window.addEventListener('DOMContentLoaded', async () => {
55
let mapChart;
@@ -13,6 +13,8 @@ window.addEventListener('DOMContentLoaded', async () => {
1313
const yearRange = Math.abs(endYear - startYear + 1);
1414
const years = Array(yearRange).fill(startYear).map((_, i) => startYear + i);
1515

16+
toggleButton('chart-map-btn', console.log);
17+
1618
sendLoadEvent(() => {
1719
populateSelect('chart-map-select', years, loadChart, data);
1820
loadChart(data);

src/scripts/utils.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,21 @@ export function sendLoadEvent(callback) {
4141
export function sendReadyEvent() {
4242
const event = new CustomEvent('pageReady');
4343
setTimeout(() => document.dispatchEvent(event));
44+
}
45+
46+
export function toggleButton(buttonId, callback) {
47+
let maximized = false;
48+
const btn = document.getElementById(buttonId);
49+
50+
btn.addEventListener('click', () => {
51+
const img = btn.querySelector('img');
52+
maximized = !maximized;
53+
54+
if (img) {
55+
const iconPath = `images/icons/${maximized ? 'minimize' : 'maximize'}.svg`;
56+
img.setAttribute('src', iconPath);
57+
}
58+
59+
callback(maximized);
60+
});
4461
}

src/styles/card.css

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,28 @@
3838

3939
opacity: 0.1;
4040
transform: translateY(-50%);
41+
}
42+
43+
.card .btn {
44+
width: 35px;
45+
height: 36px;
46+
47+
display: flex;
48+
align-items: center;
49+
justify-content: center;
50+
51+
--bs-btn-bg: #ced0ff;
52+
--bs-btn-hover-bg: #bcbeff;
53+
--bs-btn-active-bg: #bcbeff;
54+
55+
--bs-btn-border-color: transparent;
56+
--bs-btn-hover-border-color: transparent;
57+
--bs-btn-active-border-color: transparent;
58+
}
59+
60+
.card .btn img {
61+
width: 20px;
62+
63+
opacity: 0.7;
64+
filter: brightness(0);
4165
}

src/styles/chart.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
cursor: pointer;
88

99
width: 100px;
10-
margin-left: auto;
10+
margin-left: 10px;
1111

1212
color: #40415a;
1313
background-color: #ced0ff;

0 commit comments

Comments
 (0)