From 75f0b5d9a01a7808329690c4b6ce65ae9a5d28ba Mon Sep 17 00:00:00 2001
From: DD4869
Date: Thu, 2 Apr 2026 03:33:56 -0400
Subject: [PATCH] Rename difficulty filter to selection_frequency and show
correct answer rate when selection_frequency is available
---
.../[questionId]/edit/tabs/question-tab.tsx | 65 +++++++++++++------
src/components/macfast/questions-filter.tsx | 10 +--
.../macfast/questions-item/questions-item.tsx | 31 ++++++---
src/hooks/useCourseQuestions.ts | 8 +--
src/types/Question.ts | 1 +
src/types/QuestionFilters.ts | 4 +-
6 files changed, 79 insertions(+), 40 deletions(-)
diff --git a/src/app/courses/[courseCode]/question/[questionId]/edit/tabs/question-tab.tsx b/src/app/courses/[courseCode]/question/[questionId]/edit/tabs/question-tab.tsx
index 1d68215..31f75b8 100644
--- a/src/app/courses/[courseCode]/question/[questionId]/edit/tabs/question-tab.tsx
+++ b/src/app/courses/[courseCode]/question/[questionId]/edit/tabs/question-tab.tsx
@@ -66,25 +66,52 @@ export default function QuestionTab({
- {/* Difficulty */}
-
diff --git a/src/components/macfast/questions-filter.tsx b/src/components/macfast/questions-filter.tsx
index 93a5461..07ba0b6 100644
--- a/src/components/macfast/questions-filter.tsx
+++ b/src/components/macfast/questions-filter.tsx
@@ -33,8 +33,8 @@ export function QuestionsFilter({
}: QuestionsFilterProps) {
const [open, setOpen] = useState(false);
const [sliderValue, setSliderValue] = useState([
- filters.min_difficulty ?? 0,
- filters.max_difficulty ?? 1,
+ filters.min_selection_frequency ?? 0,
+ filters.max_selection_frequency ?? 1,
]);
const debouncedFilterChange = useMemo(
@@ -44,8 +44,8 @@ export function QuestionsFilter({
const maxVal = value[1] < 1 ? value[1] : undefined;
onFilterChange({
...filters,
- min_difficulty: minVal,
- max_difficulty: maxVal,
+ min_selection_frequency: minVal,
+ max_selection_frequency: maxVal,
});
}, 300),
[filters, onFilterChange],
@@ -118,7 +118,7 @@ export function QuestionsFilter({
{sliderValue[0].toFixed(2)} - {sliderValue[1].toFixed(2)}
diff --git a/src/components/macfast/questions-item/questions-item.tsx b/src/components/macfast/questions-item/questions-item.tsx
index f32b50e..d75dee0 100644
--- a/src/components/macfast/questions-item/questions-item.tsx
+++ b/src/components/macfast/questions-item/questions-item.tsx
@@ -56,16 +56,27 @@ function QuestionItem({
)}
-
-
- Difficulty {question.difficulty}
-
+ {(() => {
+ let badgeText: string;
+ if (question.selection_frequency > 0) {
+ badgeText = `Correct Answer Rate ${question.selection_frequency}`;
+ } else {
+ badgeText = `Difficulty ${question.difficulty}`;
+ }
+
+ return (
+
+
+ {badgeText}
+
+ );
+ })()}
{question.is_flagged && (
diff --git a/src/hooks/useCourseQuestions.ts b/src/hooks/useCourseQuestions.ts
index b089b03..6f9520d 100644
--- a/src/hooks/useCourseQuestions.ts
+++ b/src/hooks/useCourseQuestions.ts
@@ -55,12 +55,12 @@ export function useCourseQuestions({
queryParams.append("is_flagged", filters.is_flagged.toString());
}
- if (filters.min_difficulty !== undefined) {
- queryParams.append("difficulty__gte", filters.min_difficulty.toString());
+ if (filters.min_selection_frequency !== undefined) {
+ queryParams.append("selection_frequency__gte", filters.min_selection_frequency.toString());
}
- if (filters.max_difficulty !== undefined) {
- queryParams.append("difficulty__lte", filters.max_difficulty.toString());
+ if (filters.max_selection_frequency !== undefined) {
+ queryParams.append("selection_frequency__lte", filters.max_selection_frequency.toString());
}
if (filters.subtopic_name) {
diff --git a/src/types/Question.ts b/src/types/Question.ts
index 59d615b..824af61 100644
--- a/src/types/Question.ts
+++ b/src/types/Question.ts
@@ -3,6 +3,7 @@ interface Question {
serial_number: string;
content: string;
difficulty: number;
+ selection_frequency: number;
is_flagged: boolean;
is_active: boolean;
is_verified: boolean;
diff --git a/src/types/QuestionFilters.ts b/src/types/QuestionFilters.ts
index f3dd24d..b7412ff 100644
--- a/src/types/QuestionFilters.ts
+++ b/src/types/QuestionFilters.ts
@@ -1,7 +1,7 @@
interface QuestionFilters {
is_verified?: boolean | null;
is_flagged?: boolean | null;
- min_difficulty?: number;
- max_difficulty?: number;
+ min_selection_frequency?: number;
+ max_selection_frequency?: number;
subtopic_name?: string | null;
}