Skip to content

Commit bb2ac11

Browse files
committed
feat: enhance multi-select question prompts and improve flashcard styles
1 parent b4f8265 commit bb2ac11

4 files changed

Lines changed: 71 additions & 17 deletions

File tree

‎Projects/intelligent-systems-reviewer-quiz/quiz.js‎

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,12 @@ function renderQuestion() {
170170

171171
questionTypeBadge.textContent = questionTypeLabels[question.type] || "Question";
172172
questionTopic.textContent = question.topic;
173-
questionText.textContent = question.prompt || question.question;
173+
174+
if (question.type === "multi-select" && question.requiredSelections) {
175+
questionText.textContent = `${question.prompt || question.question} (Select ${question.requiredSelections} answers)`;
176+
} else {
177+
questionText.textContent = question.prompt || question.question;
178+
}
174179

175180
if (question.type === "multiple") {
176181
renderMultipleChoice(question);
@@ -207,7 +212,8 @@ function renderMultipleChoice(question) {
207212

208213
function renderMultiSelect(question) {
209214
multipleChoiceOptions.style.display = "flex";
210-
const required = question.minSelections || question.answers.length;
215+
const required = question.answers.length;
216+
question.requiredSelections = required;
211217
question.options.forEach(option => {
212218
const button = document.createElement("button");
213219
button.type = "button";
@@ -225,7 +231,7 @@ function renderMultiSelect(question) {
225231
selectedOptions.add(option.value);
226232
button.classList.add("selected");
227233
}
228-
submitAnswerBtn.disabled = selectedOptions.size < required;
234+
submitAnswerBtn.disabled = selectedOptions.size < 1;
229235
});
230236
multipleChoiceOptions.appendChild(button);
231237
});

‎Projects/intelligent-systems-reviewer-quiz/styles.css‎

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -171,13 +171,27 @@ main {
171171
}
172172

173173
.flashcard-face {
174-
position: absolute;
175-
inset: 32px;
176174
backface-visibility: hidden;
177175
display: flex;
178176
flex-direction: column;
179177
justify-content: center;
180178
gap: 16px;
179+
min-height: 256px;
180+
}
181+
182+
.flashcard-face.front {
183+
transform: rotateY(0deg);
184+
}
185+
186+
.flashcard-face.back {
187+
position: absolute;
188+
top: 0;
189+
left: 0;
190+
right: 0;
191+
bottom: 0;
192+
padding: 32px;
193+
transform: rotateY(180deg);
194+
overflow-y: auto;
181195
}
182196

183197
.flashcard-face h2 {
@@ -402,7 +416,10 @@ footer {
402416
}
403417

404418
.flashcard-face {
405-
inset: 24px;
406-
overflow-y: auto;
419+
min-height: 200px;
420+
}
421+
422+
.flashcard-face.back {
423+
padding: 24px;
407424
}
408425
}

‎Projects/iot-reviewer-quiz/quiz.js‎

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -862,14 +862,16 @@ function generateMultiSelect(card) {
862862
);
863863

864864
const correctAnswers = options.filter(opt => opt.isCorrect).map(opt => opt.value);
865+
const requiredSelections = correctAnswers.length;
865866

866867
return {
867868
type: "ms",
868869
card,
869870
question: card.question,
870871
options,
871872
correctAnswers,
872-
minSelections: override.minSelections || correctAnswers.length,
873+
requiredSelections,
874+
minSelections: 1,
873875
explanation: buildExplanationMarkup(card, "ms"),
874876
userAnswer: new Set(),
875877
isCorrect: false
@@ -1066,7 +1068,12 @@ function renderQuestion() {
10661068

10671069
questionTypeBadge.textContent = typeLabels[q.type] || "Quiz";
10681070
questionTopic.textContent = q.card.topic;
1069-
questionText.textContent = q.question;
1071+
1072+
if (q.type === "ms" && q.requiredSelections) {
1073+
questionText.textContent = `${q.question} (Select ${q.requiredSelections} answers)`;
1074+
} else {
1075+
questionText.textContent = q.question;
1076+
}
10701077

10711078
feedback.style.display = "none";
10721079
submitAnswerBtn.disabled = true;

‎Projects/iot-reviewer-quiz/styles.css‎

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -169,13 +169,38 @@ main {
169169
}
170170

171171
.flashcard-face {
172-
position: absolute;
173-
inset: 32px;
174172
backface-visibility: hidden;
175173
display: flex;
176174
flex-direction: column;
177175
justify-content: center;
178176
gap: 16px;
177+
min-height: 256px;
178+
}
179+
180+
.flashcard-face.front {
181+
transform: rotateY(0deg);
182+
}
183+
184+
.flashcard-face.back {
185+
position: absolute;
186+
top: 0;
187+
left: 0;
188+
right: 0;
189+
bottom: 0;
190+
padding: 32px;
191+
transform: rotateY(180deg);
192+
overflow-y: auto;
193+
}
194+
195+
.flashcard-face.back {
196+
position: absolute;
197+
top: 0;
198+
left: 0;
199+
right: 0;
200+
bottom: 0;
201+
padding: 32px;
202+
transform: rotateY(180deg);
203+
overflow-y: auto;
179204
}
180205

181206
.flashcard-face h2 {
@@ -211,10 +236,6 @@ main {
211236
border-radius: 3px;
212237
}
213238

214-
.flashcard-face.back {
215-
transform: rotateY(180deg);
216-
}
217-
218239
.flashcard-help {
219240
font-size: 0.85rem;
220241
color: var(--muted);
@@ -367,7 +388,10 @@ footer {
367388
}
368389

369390
.flashcard-face {
370-
inset: 24px;
371-
overflow-y: auto;
391+
min-height: 200px;
392+
}
393+
394+
.flashcard-face.back {
395+
padding: 24px;
372396
}
373397
}

0 commit comments

Comments
 (0)