This commit is contained in:
2025-09-22 10:51:13 -06:00
parent 5e088fb4eb
commit 2ec3d9349e
2 changed files with 43 additions and 10 deletions

View File

@@ -19,3 +19,5 @@ courses:
name: Jonathan UX name: Jonathan UX
- path: ./1400/2025_spring_alex/modules/ - path: ./1400/2025_spring_alex/modules/
name: 1400-spring name: 1400-spring
- path: ./1420/2024-fall/Modules/
name: 1420_old

View File

@@ -12,11 +12,13 @@ import { Spinner } from "@/components/Spinner";
import MeatballIcon from "./MeatballIcon"; import MeatballIcon from "./MeatballIcon";
import { useSetAssignmentGroupsMutation } from "@/features/canvas/hooks/canvasCourseHooks"; import { useSetAssignmentGroupsMutation } from "@/features/canvas/hooks/canvasCourseHooks";
import { baseCanvasUrl } from "@/features/canvas/services/canvasServiceUtils"; import { baseCanvasUrl } from "@/features/canvas/services/canvasServiceUtils";
import Modal, { useModal } from "@/components/Modal";
export default function AssignmentGroupManagement() { export default function AssignmentGroupManagement() {
const { data: settings, isPending } = useLocalCourseSettingsQuery(); const { data: settings, isPending } = useLocalCourseSettingsQuery();
const updateSettings = useUpdateLocalCourseSettingsMutation(); const updateSettings = useUpdateLocalCourseSettingsMutation();
const applyInCanvas = useSetAssignmentGroupsMutation(settings.canvasId); const applyInCanvas = useSetAssignmentGroupsMutation(settings.canvasId);
const modal = useModal();
const [assignmentGroups, setAssignmentGroups] = useState< const [assignmentGroups, setAssignmentGroups] = useState<
LocalAssignmentGroup[] LocalAssignmentGroup[]
@@ -104,17 +106,46 @@ export default function AssignmentGroupManagement() {
</div> </div>
<br /> <br />
<div className="flex justify-end"> <div className="flex justify-end">
<button <Modal
onClick={async () => { modalControl={modal}
const newSettings = await applyInCanvas.mutateAsync(settings); buttonText="Update Assignment Groups In Canvas"
buttonClass="btn-"
// prevent debounce from resetting modalWidth="w-1/5"
if (newSettings) setAssignmentGroups(newSettings.assignmentGroups);
}}
disabled={applyInCanvas.isPending}
> >
Update Assignment Groups In Canvas {({ closeModal }) => (
</button> <div>
<div className="text-center font-bold">
DANGER: updating assignment groups can delete assignments and grades from canvas.
</div>
<div className="text-center">
This is only recommended to do at the beginning of a semester. Are you sure you want to continue?
</div>
<br />
<div className="flex justify-around gap-3">
<button
onClick={async () => {
const newSettings = await applyInCanvas.mutateAsync(
settings
);
// prevent debounce from resetting
if (newSettings)
setAssignmentGroups(newSettings.assignmentGroups);
}}
disabled={applyInCanvas.isPending}
className="btn-danger"
>
Yes
</button>
<button onClick={closeModal} disabled={applyInCanvas.isPending}>
No
</button>
</div>
{applyInCanvas.isPending && <Spinner />}
</div>
)}
</Modal>
</div> </div>
{applyInCanvas.isPending && <Spinner />} {applyInCanvas.isPending && <Spinner />}
{applyInCanvas.isSuccess && ( {applyInCanvas.isSuccess && (