diff --git a/bases/rsptx/assignment_server_api/assignment_builder/src/components/routes/AssignmentBuilder/components/reading/AssignmentReadingsTable.tsx b/bases/rsptx/assignment_server_api/assignment_builder/src/components/routes/AssignmentBuilder/components/reading/AssignmentReadingsTable.tsx index b6472bce4..3de26210f 100644 --- a/bases/rsptx/assignment_server_api/assignment_builder/src/components/routes/AssignmentBuilder/components/reading/AssignmentReadingsTable.tsx +++ b/bases/rsptx/assignment_server_api/assignment_builder/src/components/routes/AssignmentBuilder/components/reading/AssignmentReadingsTable.tsx @@ -48,7 +48,7 @@ export const AssignmentReadingsTable = ({ const getNumQuestionsOrDefault = (numQuestions: Nullable): number => { const defaultNumQuestions = 1; - return numQuestions ?? defaultNumQuestions; + return Math.max(numQuestions ?? 0, defaultNumQuestions); }; return ( diff --git a/bases/rsptx/assignment_server_api/assignment_builder/src/components/routes/AssignmentBuilder/components/reading/components/ActivitiesRequiredCell.tsx b/bases/rsptx/assignment_server_api/assignment_builder/src/components/routes/AssignmentBuilder/components/reading/components/ActivitiesRequiredCell.tsx index 8d5963e9a..2cbb9b946 100644 --- a/bases/rsptx/assignment_server_api/assignment_builder/src/components/routes/AssignmentBuilder/components/reading/components/ActivitiesRequiredCell.tsx +++ b/bases/rsptx/assignment_server_api/assignment_builder/src/components/routes/AssignmentBuilder/components/reading/components/ActivitiesRequiredCell.tsx @@ -11,6 +11,8 @@ interface ActivitiesRequiredCellProps { itemId: number; } +const MIN_ACTIVITIES = 1; + export const ActivitiesRequiredCell = ({ value, exercise, @@ -18,11 +20,11 @@ export const ActivitiesRequiredCell = ({ itemId }: ActivitiesRequiredCellProps) => { const { showToast } = useToastContext(); - const [currentValue, setCurrentValue] = useState(value || 0); + const [currentValue, setCurrentValue] = useState(value || MIN_ACTIVITIES); const handleValueChange = (newValue: number | null | undefined) => { - const numValue = newValue ?? 0; - const activityCount = exercise.numQuestions || 0; + const numValue = newValue ?? MIN_ACTIVITIES; + const activityCount = Math.max(exercise.numQuestions ?? 0, MIN_ACTIVITIES); if (numValue > activityCount) { showToast({ @@ -31,7 +33,7 @@ export const ActivitiesRequiredCell = ({ detail: `# required (${numValue}) must not exceed the activity count (${activityCount}).` }); - setCurrentValue(value || 0); + setCurrentValue(value || MIN_ACTIVITIES); return; } @@ -43,8 +45,8 @@ export const ActivitiesRequiredCell = ({ handleValueChange(e.value)} - min={0} - max={exercise.numQuestions || 0} + min={MIN_ACTIVITIES} + max={Math.max(exercise.numQuestions ?? 0, MIN_ACTIVITIES)} showButtons={false} style={{ width: "100%", diff --git a/bases/rsptx/assignment_server_api/routers/instructor.py b/bases/rsptx/assignment_server_api/routers/instructor.py index e27ae44bf..079e3140f 100644 --- a/bases/rsptx/assignment_server_api/routers/instructor.py +++ b/bases/rsptx/assignment_server_api/routers/instructor.py @@ -664,9 +664,9 @@ async def get_assignment_questions( if aq["reading_assignment"] == True: # noqa: E712 try: - aq["numQuestions"] = countd[q["chapter"]][q["subchapter"]] + aq["numQuestions"] = max(countd[q["chapter"]][q["subchapter"]], 1) except KeyError: - aq["numQuestions"] = 0 + aq["numQuestions"] = 1 # augment the assignment question with additional question data aq["name"] = q["name"]