mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-26 07:38:33 -06:00
can drag and drop quizzes and assignments
This commit is contained in:
@@ -15,3 +15,19 @@ export async function GET(
|
||||
);
|
||||
return Response.json(settings);
|
||||
}
|
||||
|
||||
export async function PUT(
|
||||
request: Request,
|
||||
{
|
||||
params: { courseName, moduleName, assignmentName },
|
||||
}: { params: { courseName: string; moduleName: string; assignmentName: string } }
|
||||
) {
|
||||
const assignment = await request.json()
|
||||
await fileStorageService.updateAssignment(
|
||||
courseName,
|
||||
moduleName,
|
||||
assignmentName,
|
||||
assignment
|
||||
);
|
||||
return Response.json({});
|
||||
}
|
||||
|
||||
@@ -13,3 +13,19 @@ export async function GET(
|
||||
);
|
||||
return Response.json(settings);
|
||||
}
|
||||
|
||||
export async function PUT(
|
||||
request: Request,
|
||||
{
|
||||
params: { courseName, moduleName, pageName },
|
||||
}: { params: { courseName: string; moduleName: string; pageName: string } }
|
||||
) {
|
||||
const page = await request.json()
|
||||
await fileStorageService.updatePage(
|
||||
courseName,
|
||||
moduleName,
|
||||
pageName,
|
||||
page
|
||||
);
|
||||
return Response.json({});
|
||||
}
|
||||
|
||||
@@ -4,7 +4,14 @@ import { DraggingContext } from "./draggingContext";
|
||||
import { useUpdateQuizMutation } from "@/hooks/localCourse/quizHooks";
|
||||
import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks";
|
||||
import { LocalQuiz } from "@/models/local/quiz/localQuiz";
|
||||
import { getDateFromStringOrThrow, dateToMarkdownString } from "@/models/local/timeUtils";
|
||||
import {
|
||||
getDateFromStringOrThrow,
|
||||
dateToMarkdownString,
|
||||
} from "@/models/local/timeUtils";
|
||||
import { LocalAssignment } from "@/models/local/assignment/localAssignment";
|
||||
import { useUpdateAssignmentMutation } from "@/hooks/localCourse/assignmentHooks";
|
||||
import { useUpdatePageMutation } from "@/hooks/localCourse/pageHooks";
|
||||
import { LocalCoursePage } from "@/models/local/page/localCoursePage";
|
||||
|
||||
export default function DraggingContextProvider({
|
||||
children,
|
||||
@@ -13,6 +20,8 @@ export default function DraggingContextProvider({
|
||||
localCourseName: string;
|
||||
}) {
|
||||
const updateQuizMutation = useUpdateQuizMutation();
|
||||
const updateAssignmentMutation = useUpdateAssignmentMutation();
|
||||
const updatePageMutation = useUpdatePageMutation();
|
||||
const { data: settings } = useLocalCourseSettingsQuery();
|
||||
|
||||
const itemDrop = useCallback(
|
||||
@@ -35,12 +44,7 @@ export default function DraggingContextProvider({
|
||||
const quiz: LocalQuiz = {
|
||||
...previousQuiz,
|
||||
dueAt: dateToMarkdownString(dayAsDate),
|
||||
lockAt:
|
||||
previousQuiz.lockAt &&
|
||||
(getDateFromStringOrThrow(previousQuiz.lockAt, "lockAt date") >
|
||||
dayAsDate
|
||||
? previousQuiz.lockAt
|
||||
: dateToMarkdownString(dayAsDate)),
|
||||
lockAt: getLaterDate(previousQuiz.lockAt, dayAsDate),
|
||||
};
|
||||
updateQuizMutation.mutate({
|
||||
quiz: quiz,
|
||||
@@ -48,15 +52,46 @@ export default function DraggingContextProvider({
|
||||
moduleName: itemBeingDragged.sourceModuleName,
|
||||
});
|
||||
} else if (itemBeingDragged.type === "assignment") {
|
||||
console.log("dropped assignment");
|
||||
updateAssignment(dayAsDate);
|
||||
} else if (itemBeingDragged.type === "page") {
|
||||
console.log("dropped page");
|
||||
const previousPage = itemBeingDragged.item as LocalCoursePage;
|
||||
const page: LocalCoursePage = {
|
||||
...previousPage,
|
||||
dueAt: dateToMarkdownString(dayAsDate),
|
||||
};
|
||||
updatePageMutation.mutate({
|
||||
page,
|
||||
moduleName: itemBeingDragged.sourceModuleName,
|
||||
pageName: page.name,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function updateAssignment(dayAsDate: Date) {
|
||||
const previousAssignment = itemBeingDragged.item as LocalAssignment;
|
||||
const assignment: LocalAssignment = {
|
||||
...previousAssignment,
|
||||
dueAt: dateToMarkdownString(dayAsDate),
|
||||
lockAt: previousAssignment.lockAt &&
|
||||
(getDateFromStringOrThrow(
|
||||
previousAssignment.lockAt,
|
||||
"lockAt date"
|
||||
) > dayAsDate
|
||||
? previousAssignment.lockAt
|
||||
: dateToMarkdownString(dayAsDate)),
|
||||
};
|
||||
updateAssignmentMutation.mutate({
|
||||
assignment,
|
||||
moduleName: itemBeingDragged.sourceModuleName,
|
||||
assignmentName: assignment.name,
|
||||
});
|
||||
}
|
||||
},
|
||||
[
|
||||
settings.defaultDueTime.hour,
|
||||
settings.defaultDueTime.minute,
|
||||
updateAssignmentMutation,
|
||||
updateQuizMutation,
|
||||
]
|
||||
);
|
||||
@@ -71,3 +106,14 @@ export default function DraggingContextProvider({
|
||||
</DraggingContext.Provider>
|
||||
);
|
||||
}
|
||||
function getLaterDate(
|
||||
firstDate: string | undefined,
|
||||
dayAsDate: Date
|
||||
): string | undefined {
|
||||
return (
|
||||
firstDate &&
|
||||
(getDateFromStringOrThrow(firstDate, "lockAt date") > dayAsDate
|
||||
? firstDate
|
||||
: dateToMarkdownString(dayAsDate))
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user