Repository navigation
Expand file tree
/
Copy pathscript.js
More file actions
72 lines (61 loc) · 1.82 KB
/
Copy pathscript.js
File metadata and controls
72 lines (61 loc) · 1.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
const dailyBtn = document.querySelector("#daily");
const weeklyBtn = document.querySelector("#weekly");
const monthlyBtn = document.querySelector("#monthly");
let activities = [];
const labelMap = {
daily: "Yesterday",
weekly: "Last Week",
monthly: "Last Month",
};
function titleToId(title) {
return title.toLowerCase().replaceAll(" ", "-");
}
function render(timeframe) {
activities.forEach((activity) => {
const id = titleToId(activity.title);
const card = document.querySelector(`#${id}`);
if (!card) return;
const currentEl = card.querySelector(".current-hrs");
const previousEl = card.querySelector(".previous-hrs");
const tf = activity.timeframes[timeframe];
currentEl.textContent = `${tf.current}hrs`;
previousEl.textContent = `${labelMap[timeframe]} - ${tf.previous}hrs`;
});
}
function setActiveBtn(activeBtn) {
dailyBtn.classList.remove("active");
dailyBtn.setAttribute("aria-pressed", "false");
weeklyBtn.classList.remove("active");
weeklyBtn.setAttribute("aria-pressed", "false");
monthlyBtn.classList.remove("active");
monthlyBtn.setAttribute("aria-pressed", "false");
activeBtn.classList.add("active");
activeBtn.setAttribute("aria-pressed", "true");
}
fetch("./data.json")
.then((response) => {
if (!response.ok) {
throw new Error(`HTTP error! Status: ${response.status}`);
}
return response.json();
})
.then((data) => {
activities = data;
render("daily");
setActiveBtn(dailyBtn);
})
.catch((error) => {
console.error("Fetch error:", error);
});
dailyBtn.addEventListener("click", (e) => {
render("daily");
setActiveBtn(dailyBtn);
});
weeklyBtn.addEventListener("click", (e) => {
render("weekly");
setActiveBtn(weeklyBtn);
});
monthlyBtn.addEventListener("click", (e) => {
render("monthly");
setActiveBtn(monthlyBtn);
});