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 */} -
- - -

- The difficulty of the question as given on question upload. -

-
+ {/* Correct Answer Rate / Difficulty */} + {(() => { + if (question && question.selection_frequency > 0) { + return ( +
+ + +

+ The percentage of students who answered this question correctly. +

+
+ ); + } else { + return ( +
+ + +

+ The difficulty of the question as given on question upload. +

+
+ ); + } + })()} {/* Unit */}
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; }