This commit is contained in:
2024-09-16 21:06:25 -06:00
parent e60f96e463
commit c6c9b299d9
8 changed files with 71 additions and 55 deletions

View File

@@ -8,13 +8,11 @@ export default function CourseList() {
return ( return (
<div> <div>
{allSettings.map((settings) => ( {allSettings.map((settings) => (
<Link <div key={settings.name}>
href={getCourseUrl(settings.name)} <Link href={getCourseUrl(settings.name)} shallow={true}>
key={settings.name} {settings.name}
shallow={true} </Link>
> </div>
{settings.name}
</Link>
))} ))}
</div> </div>
); );

View File

@@ -0,0 +1,21 @@
"use client";
import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks";
import Link from "next/link";
export function CourseNavigation() {
const { data: settings } = useLocalCourseSettingsQuery();
return (
<div className="pb-1 ps-5 flex flex-row gap-3">
<Link href={"/"} className="btn">
Back to Course List
</Link>
<a
href={`https://snow.instructure.com/courses/${settings.canvasId}`}
className="btn"
target="_blank"
>
View in Canvas
</a>
</div>
);
}

View File

@@ -122,10 +122,13 @@ function DraggableListItem({
}) { }) {
const { courseName } = useCourseContext(); const { courseName } = useCourseContext();
return ( return (
<div <Link
href={getModuleItemUrl(courseName, moduleName, type, item.name)}
shallow={true}
className={ className={
" border rounded-sm px-1 mx-1 break-all " + " border rounded-sm px-1 mx-1 break-all " +
" border-slate-600 bg-slate-800 " " border-slate-600 bg-slate-800 " +
" block "
} }
role="button" role="button"
draggable="true" draggable="true"
@@ -140,12 +143,7 @@ function DraggableListItem({
); );
}} }}
> >
<Link {item.name}
href={getModuleItemUrl(courseName, moduleName, type, item.name)} </Link>
shallow={true}
>
{item.name}
</Link>
</div>
); );
} }

View File

@@ -25,9 +25,9 @@ export default function DraggingContextProvider({
const itemDrop = useCallback( const itemDrop = useCallback(
(e: DragEvent<HTMLDivElement>, day: string | undefined) => { (e: DragEvent<HTMLDivElement>, day: string | undefined) => {
const itemBeingDragged = JSON.parse( const rawData = e.dataTransfer.getData("draggableItem");
e.dataTransfer.getData("draggableItem") // console.log(rawData);
); const itemBeingDragged = JSON.parse(rawData);
if (itemBeingDragged && day) { if (itemBeingDragged && day) {
const dayAsDate = getDateFromStringOrThrow(day, "in drop callback"); const dayAsDate = getDateFromStringOrThrow(day, "in drop callback");

View File

@@ -26,22 +26,23 @@ export default function EditAssignment({
useEffect(() => { useEffect(() => {
const delay = 500; const delay = 500;
const handler = setTimeout(() => { const handler = setTimeout(() => {
const updatedAssignment = try {
localAssignmentMarkdown.parseMarkdown(assignmentText); const updatedAssignment =
if ( localAssignmentMarkdown.parseMarkdown(assignmentText);
localAssignmentMarkdown.toMarkdown(assignment) !== if (
localAssignmentMarkdown.toMarkdown(updatedAssignment) localAssignmentMarkdown.toMarkdown(assignment) !==
) { localAssignmentMarkdown.toMarkdown(updatedAssignment)
console.log("updating assignment"); ) {
try { console.log("updating assignment");
updateAssignment.mutate({ updateAssignment.mutate({
assignment: updatedAssignment, assignment: updatedAssignment,
moduleName, moduleName,
assignmentName, assignmentName,
}); });
} catch (e: any) {
setError(e.toString());
} }
setError("");
} catch (e: any) {
setError(e.toString());
} }
}, delay); }, delay);
@@ -68,9 +69,7 @@ export default function EditAssignment({
</div> </div>
</div> </div>
<div className="p-5"> <div className="p-5">
<button> <button>Add to canvas....</button>
Add to canvas....
</button>
</div> </div>
</div> </div>
); );

View File

@@ -35,21 +35,22 @@ export default function EditPage({
useEffect(() => { useEffect(() => {
const delay = 500; const delay = 500;
const handler = setTimeout(() => { const handler = setTimeout(() => {
const updatedPage = localPageMarkdownUtils.parseMarkdown(pageText); try {
if ( const updatedPage = localPageMarkdownUtils.parseMarkdown(pageText);
localPageMarkdownUtils.toMarkdown(page) !== if (
localPageMarkdownUtils.toMarkdown(updatedPage) localPageMarkdownUtils.toMarkdown(page) !==
) { localPageMarkdownUtils.toMarkdown(updatedPage)
console.log("updating assignment"); ) {
try { console.log("updating page");
updatePage.mutate({ updatePage.mutate({
page: updatedPage, page: updatedPage,
moduleName, moduleName,
pageName, pageName,
}); });
} catch (e: any) {
setError(e.toString());
} }
setError("");
} catch (e: any) {
setError(e.toString());
} }
}, delay); }, delay);

View File

@@ -23,20 +23,23 @@ export default function EditQuiz({
useEffect(() => { useEffect(() => {
const delay = 500; const delay = 500;
const handler = setTimeout(() => { const handler = setTimeout(() => {
if ( try {
quizMarkdownUtils.toMarkdown(quiz) !== if (
quizMarkdownUtils.toMarkdown(quizMarkdownUtils.parseMarkdown(quizText)) quizMarkdownUtils.toMarkdown(quiz) !==
) { quizMarkdownUtils.toMarkdown(
try { quizMarkdownUtils.parseMarkdown(quizText)
)
) {
const updatedQuiz = quizMarkdownUtils.parseMarkdown(quizText); const updatedQuiz = quizMarkdownUtils.parseMarkdown(quizText);
updateQuizMutation.mutate({ updateQuizMutation.mutate({
quiz: updatedQuiz, quiz: updatedQuiz,
moduleName, moduleName,
quizName, quizName,
}); });
} catch (e: any) {
setError(e.toString());
} }
setError("");
} catch (e: any) {
setError(e.toString());
} }
}, delay); }, delay);

View File

@@ -4,6 +4,7 @@ import ModuleList from "./modules/ModuleList";
import DraggingContextProvider from "./context/DraggingContextProvider"; import DraggingContextProvider from "./context/DraggingContextProvider";
import Link from "next/link"; import Link from "next/link";
import CourseTitle from "./CourseTitle"; import CourseTitle from "./CourseTitle";
import { CourseNavigation } from "./CourseNavigation";
export default async function CoursePage({}: {}) { export default async function CoursePage({}: {}) {
return ( return (
@@ -13,12 +14,7 @@ export default async function CoursePage({}: {}) {
<div className="flex flex-row min-h-0"> <div className="flex flex-row min-h-0">
<DraggingContextProvider> <DraggingContextProvider>
<div className="flex-1 min-h-0"> <div className="flex-1 min-h-0">
<div className="pb-1 ps-5"> <CourseNavigation />
<Link href={"/"} className="btn">
Back to Course List
</Link>
</div>
<CourseCalendar /> <CourseCalendar />
</div> </div>
<div className="w-96 p-3"> <div className="w-96 p-3">