mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-25 23:28:33 -06:00
merge
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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 && (
|
||||||
|
|||||||
Reference in New Issue
Block a user