-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.mjs
More file actions
70 lines (57 loc) · 2.01 KB
/
script.mjs
File metadata and controls
70 lines (57 loc) · 2.01 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
import { getQuestionAndAnswerArrayOfObjects } from "./common.mjs";
import { getUserIDs } from "./data.mjs";
const state = {
userId: 0,
};
function populateUserSelect() {
const userSelect = document.getElementById("user-select");
const userIdArray = getUserIDs();
userIdArray.forEach((userId) => {
const userOption = document.createElement("option");
userOption.textContent = `User ${userId}`;
userOption.value = userId;
userSelect.append(userOption);
});
}
function addListeners() {
document.getElementById("user-select").addEventListener("change", (e) => {
state.userId = parseInt(e.target.value);
renderReport();
});
}
function createQuestionAndAnswerCard({ question, answer }) {
const questionAndAnswerCard = document.createElement("div");
questionAndAnswerCard.className = "question-and-answer-card";
const questionElement = document.createElement("p");
questionElement.className = "question";
questionElement.textContent = question;
const answerElement = document.createElement("p");
answerElement.className = "answer";
answerElement.textContent = answer;
questionAndAnswerCard.append(questionElement, answerElement);
return questionAndAnswerCard;
}
function renderReport() {
const reportArea = document.getElementById("report-area");
reportArea.innerHTML = "";
const questionAndAnswerArrayOfObjects = getQuestionAndAnswerArrayOfObjects(
state.userId,
);
questionAndAnswerArrayOfObjects.forEach((questionAndAnswerObject) => {
if (questionAndAnswerObject.answer && questionAndAnswerObject.question) {
const questionAndAnswerCard = createQuestionAndAnswerCard(
questionAndAnswerObject,
);
reportArea.append(questionAndAnswerCard);
}
});
if (state.userId && reportArea.innerHTML === "") {
const emptyMessage = document.createElement("p");
emptyMessage.textContent = "This user didn't listen to any songs.";
reportArea.append(emptyMessage);
}
}
window.onload = function () {
populateUserSelect();
addListeners();
};