diff --git a/nextjs/src/app/course/[courseName]/calendar/Day.tsx b/nextjs/src/app/course/[courseName]/calendar/Day.tsx
index faf292d..ec5af6d 100644
--- a/nextjs/src/app/course/[courseName]/calendar/Day.tsx
+++ b/nextjs/src/app/course/[courseName]/calendar/Day.tsx
@@ -2,26 +2,32 @@
import { useModuleNamesQuery } from "@/hooks/localCourse/localCoursesHooks";
import DayItemsInModule from "./DayItemsInModule";
import { getDateFromStringOrThrow } from "@/models/local/timeUtils";
-import { useDraggingContext } from "../context/DraggingContext";
+import { useDraggingContext } from "../context/draggingContext";
export default function Day({ day, month }: { day: string; month: number }) {
const { data: moduleNames } = useModuleNamesQuery();
- const dayAsDate = getDateFromStringOrThrow(day, "calculating same month in day")
- const isInSameMonth =
- dayAsDate.getMonth() + 1 !=
- month;
+ const dayAsDate = getDateFromStringOrThrow(
+ day,
+ "calculating same month in day"
+ );
+ const isInSameMonth = dayAsDate.getMonth() + 1 != month;
const backgroundClass = isInSameMonth ? "" : "bg-slate-900";
+ const { itemDrop } = useDraggingContext();
return (
{
+ itemDrop(e, day);
+ }}
+ onDragOver={(e) => e.preventDefault()}
>
{dayAsDate.getDate()}
{moduleNames.map((moduleName) => (
-
);
}
-
-function ModuleInDay({ moduleName, day }: { moduleName: string; day: string }) {
- const { itemDrop } = useDraggingContext();
- return (
- itemDrop(day)} onDragOver={(e) => e.preventDefault()}>
-
-
- );
-}
diff --git a/nextjs/src/app/course/[courseName]/calendar/DayItemsInModule.tsx b/nextjs/src/app/course/[courseName]/calendar/DayItemsInModule.tsx
index 90da62e..125b608 100644
--- a/nextjs/src/app/course/[courseName]/calendar/DayItemsInModule.tsx
+++ b/nextjs/src/app/course/[courseName]/calendar/DayItemsInModule.tsx
@@ -1,13 +1,12 @@
"use client";
-import React, { useCallback, useMemo } from "react";
+import React, { useMemo } from "react";
import { useCourseContext } from "../context/courseContext";
import { useModuleDataQuery } from "@/hooks/localCourse/localCoursesHooks";
import { getDateFromStringOrThrow } from "@/models/local/timeUtils";
import Link from "next/link";
-import { LocalAssignment } from "@/models/local/assignmnet/localAssignment";
-import { LocalQuiz } from "@/models/local/quiz/localQuiz";
-import { LocalCoursePage } from "@/models/local/page/localCoursePage";
-import { useDraggingContext } from "../context/DraggingContext";
+import { usePageNamesQuery, usePagesQueries } from "@/hooks/localCourse/pageHooks";
+import { useQuizNamesQuery, useQuizzesQueries } from "@/hooks/localCourse/quizHooks";
+import { useAssignmentNamesQuery, useAssignmentsQueries } from "@/hooks/localCourse/assignmentHooks";
export default function DayItemsInModule({
day,
@@ -16,10 +15,121 @@ export default function DayItemsInModule({
day: string;
moduleName: string;
}) {
+ return (
+
+ );
+}
+
+function Pages({ moduleName, day }: { moduleName: string; day: string }) {
+ const { data: pageNames } = usePageNamesQuery(moduleName);
+ const { data: pages } = usePagesQueries(moduleName, pageNames);
+ const todaysPages = useMemo(
+ () =>
+ pages.filter((p) => {
+ const dueDate = getDateFromStringOrThrow(
+ p.dueAt,
+ "due at for page in day"
+ );
+ const dayAsDate = getDateFromStringOrThrow(
+ day,
+ "in pages in DayItemsInModule"
+ );
+ return (
+ dueDate.getFullYear() === dayAsDate.getFullYear() &&
+ dueDate.getMonth() === dayAsDate.getMonth() &&
+ dueDate.getDate() === dayAsDate.getDate()
+ );
+ }),
+ [day, pages]
+ );
+ return (
+ <>
+ {todaysPages.map((p) => (
+ {
+ e.dataTransfer.setData(
+ "draggableItem",
+ JSON.stringify({
+ type: "page",
+ item: p,
+ sourceModuleName: moduleName,
+ })
+ );
+ }}
+ >
+ {p.name}
+
+ ))}
+ >
+ );
+}
+
+function Quizzes({ moduleName, day }: { moduleName: string; day: string }) {
+ const { data: quizNames } = useQuizNamesQuery(moduleName);
+ const { data: quizzes } = useQuizzesQueries(moduleName, quizNames);
+
const { courseName } = useCourseContext();
- const { endItemDrag, startItemDrag } = useDraggingContext();
- const { assignments, quizzes, pages } = useModuleDataQuery(
- moduleName
+ const todaysQuizzes = useMemo(
+ () =>
+ quizzes.filter((q) => {
+ const dueDate = getDateFromStringOrThrow(
+ q.dueAt,
+ "due at for quiz in day"
+ );
+ const dayAsDate = getDateFromStringOrThrow(
+ day,
+ "in quizzes in DayItemsInModule"
+ );
+ return (
+ dueDate.getFullYear() === dayAsDate.getFullYear() &&
+ dueDate.getMonth() === dayAsDate.getMonth() &&
+ dueDate.getDate() === dayAsDate.getDate()
+ );
+ }),
+ [day, quizzes]
+ );
+ return (
+ <>
+ {todaysQuizzes.map((q) => (
+ {
+ e.dataTransfer.setData(
+ "draggableItem",
+ JSON.stringify({
+ type: "quiz",
+ item: q,
+ sourceModuleName: moduleName,
+ })
+ );
+ }}
+ onDragEnd={(e) => e.preventDefault()}
+ >
+
+ {q.name}
+
+
+ ))}
+ >
+ );
+}
+
+function Assignments({ moduleName, day }: { moduleName: string; day: string }) {
+ const { data: assignmentNames } = useAssignmentNamesQuery(moduleName);
+ const { data: assignments } = useAssignmentsQueries(
+ moduleName,
+ assignmentNames
);
const todaysAssignments = useMemo(
() =>
@@ -40,112 +150,27 @@ export default function DayItemsInModule({
}),
[assignments, day]
);
- const todaysQuizzes = useMemo(
- () =>
- quizzes.filter((q) => {
- const dueDate = getDateFromStringOrThrow(
- q.dueAt,
- "due at for quiz in day"
- );
- const dayAsDate = getDateFromStringOrThrow(
- day,
- "in quizzes in DayItemsInModule"
- );
- return (
- dueDate.getFullYear() === dayAsDate.getFullYear() &&
- dueDate.getMonth() === dayAsDate.getMonth() &&
- dueDate.getDate() === dayAsDate.getDate()
- );
- }),
- [day, quizzes]
- );
- const todaysPages = useMemo(
- () =>
- pages.filter((p) => {
- const dueDate = getDateFromStringOrThrow(
- p.dueAt,
- "due at for page in day"
- );
- const dayAsDate = getDateFromStringOrThrow(
- day,
- "in pages in DayItemsInModule"
- );
- return (
- dueDate.getFullYear() === dayAsDate.getFullYear() &&
- dueDate.getMonth() === dayAsDate.getMonth() &&
- dueDate.getDate() === dayAsDate.getDate()
- );
- }),
- [day, pages]
- );
- const startAssignmentDrag = useCallback(
- (a: LocalAssignment) => () =>
- startItemDrag({
- type: "assignment",
- item: a,
- sourceModuleName: moduleName,
- }),
- [moduleName, startItemDrag]
- );
- const startQuizDrag = useCallback(
- (q: LocalQuiz) => () =>
- startItemDrag({
- type: "quiz",
- item: q,
- sourceModuleName: moduleName,
- }),
- [moduleName, startItemDrag]
- );
- const starPageDrag = useCallback(
- (p: LocalCoursePage) => () =>
- startItemDrag({
- type: "page",
- item: p,
- sourceModuleName: moduleName,
- }),
- [moduleName, startItemDrag]
- );
return (
<>
-
- {todaysAssignments.map((a) => (
- -
- {a.name}
-
- ))}
- {todaysQuizzes.map((q) => (
- -
-
- {q.name}
-
-
- ))}
- {todaysPages.map((p) => (
- -
- {p.name}
-
- ))}
-
+ {todaysAssignments.map((a) => (
+ {
+ e.dataTransfer.setData(
+ "draggableItem",
+ JSON.stringify({
+ type: "assignment",
+ item: a,
+ sourceModuleName: moduleName,
+ })
+ );
+ }}
+ >
+ {a.name}
+
+ ))}
>
);
}
diff --git a/nextjs/src/app/course/[courseName]/calendar/calendarMonthUtils.ts b/nextjs/src/app/course/[courseName]/calendar/calendarMonthUtils.ts
index 611c26d..eb4f9c8 100644
--- a/nextjs/src/app/course/[courseName]/calendar/calendarMonthUtils.ts
+++ b/nextjs/src/app/course/[courseName]/calendar/calendarMonthUtils.ts
@@ -34,14 +34,14 @@ function createCalendarMonth(year: number, month: number): CalendarMonthModel {
Array.from({ length: 7 }).map((_, dayIndex) => {
if (weekIndex === 0 && dayIndex < firstDayOfMonth) {
return dateToMarkdownString(
- new Date(year, month - 1, dayIndex - firstDayOfMonth + 1)
+ new Date(year, month - 1, dayIndex - firstDayOfMonth + 1, 12, 0, 0)
);
} else if (currentDay <= daysInMonth) {
- return dateToMarkdownString(new Date(year, month - 1, currentDay++));
+ return dateToMarkdownString(new Date(year, month - 1, currentDay++, 12, 0, 0));
} else {
currentDay++;
return dateToMarkdownString(
- new Date(year, month, currentDay - daysInMonth - 1)
+ new Date(year, month, currentDay - daysInMonth - 1, 12, 0, 0)
);
}
})
diff --git a/nextjs/src/app/course/[courseName]/context/CourseContextProvider.tsx b/nextjs/src/app/course/[courseName]/context/CourseContextProvider.tsx
index 3760fe1..9386943 100644
--- a/nextjs/src/app/course/[courseName]/context/CourseContextProvider.tsx
+++ b/nextjs/src/app/course/[courseName]/context/CourseContextProvider.tsx
@@ -1,14 +1,6 @@
-"use client";
-import { ReactNode, useCallback, useState } from "react";
+"use client"
+import { ReactNode } from "react";
import { CourseContext } from "./courseContext";
-import { DraggableItem } from "./DraggingContext";
-import { LocalQuiz } from "@/models/local/quiz/localQuiz";
-import {
- dateToMarkdownString,
- getDateFromStringOrThrow,
-} from "@/models/local/timeUtils";
-import { useUpdateQuizMutation } from "@/hooks/localCourse/quizHooks";
-import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks";
export default function CourseContextProvider({
localCourseName,
diff --git a/nextjs/src/app/course/[courseName]/context/DraggingContextProvider.tsx b/nextjs/src/app/course/[courseName]/context/DraggingContextProvider.tsx
index 6fd4f96..7e47db2 100644
--- a/nextjs/src/app/course/[courseName]/context/DraggingContextProvider.tsx
+++ b/nextjs/src/app/course/[courseName]/context/DraggingContextProvider.tsx
@@ -1,11 +1,6 @@
"use client";
-import { ReactNode, useCallback, useState } from "react";
-import { DraggableItem, DraggingContext } from "./DraggingContext";
-import { LocalQuiz } from "@/models/local/quiz/localQuiz";
-import {
- dateToMarkdownString,
- getDateFromStringOrThrow,
-} from "@/models/local/timeUtils";
+import { ReactNode, useCallback, DragEvent } from "react";
+import { DraggingContext } from "./draggingContext";
import { useUpdateQuizMutation } from "@/hooks/localCourse/quizHooks";
import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks";
@@ -17,62 +12,56 @@ export default function DraggingContextProvider({
}) {
const updateQuizMutation = useUpdateQuizMutation();
const { data: settings } = useLocalCourseSettingsQuery();
- const [itemBeingDragged, setItemBeingDragged] = useState<
- DraggableItem | undefined
- >();
const itemDrop = useCallback(
- (day: string | undefined) => {
- if (itemBeingDragged && day) {
- const dayAsDate = getDateFromStringOrThrow(day, "in drop callback");
- dayAsDate.setHours(settings.defaultDueTime.hour);
- dayAsDate.setHours(settings.defaultDueTime.minute);
- if (itemBeingDragged.type === "quiz") {
- console.log("dropping quiz");
- const previousQuiz = itemBeingDragged.item as LocalQuiz;
+ (e: DragEvent, day: string | undefined) => {
+ // const itemBeingDragged = JSON.parse(
+ // e.dataTransfer.getData("draggableItem")
+ // );
- const quiz: LocalQuiz = {
- ...previousQuiz,
- dueAt: dateToMarkdownString(dayAsDate),
- lockAt:
- previousQuiz.lockAt &&
- (getDateFromStringOrThrow(previousQuiz.lockAt, "lockAt date") >
- dayAsDate
- ? previousQuiz.lockAt
- : dateToMarkdownString(dayAsDate)),
- };
- updateQuizMutation.mutate({
- quiz: quiz,
- quizName: quiz.name,
- moduleName: itemBeingDragged.sourceModuleName,
- });
- } else if (itemBeingDragged.type === "assignment") {
- console.log("dropped assignment");
- } else if (itemBeingDragged.type === "page") {
- console.log("dropped page");
- }
- }
- setItemBeingDragged(undefined);
+ // if (itemBeingDragged && day) {
+ // const dayAsDate = getDateFromStringOrThrow(day, "in drop callback");
+ // dayAsDate.setHours(settings.defaultDueTime.hour);
+ // dayAsDate.setMinutes(settings.defaultDueTime.minute);
+ // dayAsDate.setSeconds(0);
+
+ // console.log("dropped on day", dayAsDate, day);
+ // if (itemBeingDragged.type === "quiz") {
+ // console.log("dropping quiz");
+ // const previousQuiz = itemBeingDragged.item as LocalQuiz;
+
+ // const quiz: LocalQuiz = {
+ // ...previousQuiz,
+ // dueAt: dateToMarkdownString(dayAsDate),
+ // lockAt:
+ // previousQuiz.lockAt &&
+ // (getDateFromStringOrThrow(previousQuiz.lockAt, "lockAt date") >
+ // dayAsDate
+ // ? previousQuiz.lockAt
+ // : dateToMarkdownString(dayAsDate)),
+ // };
+ // updateQuizMutation.mutate({
+ // quiz: quiz,
+ // quizName: quiz.name,
+ // moduleName: itemBeingDragged.sourceModuleName,
+ // });
+ // } else if (itemBeingDragged.type === "assignment") {
+ // console.log("dropped assignment");
+ // } else if (itemBeingDragged.type === "page") {
+ // console.log("dropped page");
+ // }
+ // }
},
[
- itemBeingDragged,
- settings.defaultDueTime.hour,
- settings.defaultDueTime.minute,
- updateQuizMutation,
+ // settings.defaultDueTime.hour,
+ // settings.defaultDueTime.minute,
+ // updateQuizMutation,
]
);
- const startItemDrag = useCallback((d: DraggableItem) => {
- setItemBeingDragged(d);
- }, []);
- const endItemDrag = useCallback(() => {
- setItemBeingDragged(undefined);
- }, []);
return (
diff --git a/nextjs/src/app/course/[courseName]/context/DraggingContext.ts b/nextjs/src/app/course/[courseName]/context/draggingContext.tsx
similarity index 68%
rename from nextjs/src/app/course/[courseName]/context/DraggingContext.ts
rename to nextjs/src/app/course/[courseName]/context/draggingContext.tsx
index abed118..bd42bfb 100644
--- a/nextjs/src/app/course/[courseName]/context/DraggingContext.ts
+++ b/nextjs/src/app/course/[courseName]/context/draggingContext.tsx
@@ -1,6 +1,6 @@
"use client";
import { IModuleItem } from "@/models/local/IModuleItem";
-import { createContext, useContext } from "react";
+import { createContext, useContext, DragEvent } from "react";
export interface DraggableItem {
item: IModuleItem;
@@ -9,13 +9,9 @@ export interface DraggableItem {
}
export interface DraggingContextInterface {
- startItemDrag: (dragging: DraggableItem) => void;
- endItemDrag: () => void;
- itemDrop: (droppedOnDay?: string) => void;
+ itemDrop: (e: DragEvent,droppedOnDay?: string) => void;
}
const defaultDraggingValue: DraggingContextInterface = {
- startItemDrag: () => { },
- endItemDrag: () => { },
itemDrop: () => { },
};
export const DraggingContext = createContext(defaultDraggingValue);
diff --git a/nextjs/src/app/course/[courseName]/layout.tsx b/nextjs/src/app/course/[courseName]/layout.tsx
index 7820dcd..f46fc19 100644
--- a/nextjs/src/app/course/[courseName]/layout.tsx
+++ b/nextjs/src/app/course/[courseName]/layout.tsx
@@ -1,10 +1,9 @@
import {
dehydrate,
HydrationBoundary,
- QueryClient,
} from "@tanstack/react-query";
-import { hydrateCourse } from "@/hooks/hookHydration";
import { getQueryClient } from "@/app/providersQueryClientUtils";
+import { hydrateCourse } from "@/hooks/hookHydration";
export default async function CourseLayout({
children,
diff --git a/nextjs/src/app/course/[courseName]/modules/ExpandableModule.tsx b/nextjs/src/app/course/[courseName]/modules/ExpandableModule.tsx
index 8f42279..245d934 100644
--- a/nextjs/src/app/course/[courseName]/modules/ExpandableModule.tsx
+++ b/nextjs/src/app/course/[courseName]/modules/ExpandableModule.tsx
@@ -1,17 +1,25 @@
+import { useAssignmentNamesQuery, useAssignmentsQueries } from "@/hooks/localCourse/assignmentHooks";
+import { usePageNamesQuery, usePagesQueries } from "@/hooks/localCourse/pageHooks";
+import { useQuizNamesQuery, useQuizzesQueries } from "@/hooks/localCourse/quizHooks";
import { IModuleItem } from "@/models/local/IModuleItem";
import { getDateFromStringOrThrow } from "@/models/local/timeUtils";
import { useState } from "react";
-import { useCourseContext } from "../context/courseContext";
-import { useModuleDataQuery } from "@/hooks/localCourse/localCoursesHooks";
export default function ExpandableModule({
moduleName,
}: {
moduleName: string;
}) {
- const { assignments, quizzes, pages } = useModuleDataQuery(
- moduleName
+ const { data: assignmentNames } = useAssignmentNamesQuery(moduleName);
+ const { data: quizNames } = useQuizNamesQuery(moduleName);
+ const { data: pageNames } = usePageNamesQuery(moduleName);
+
+ const { data: assignments } = useAssignmentsQueries(
+ moduleName,
+ assignmentNames
);
+ const { data: quizzes } = useQuizzesQueries(moduleName, quizNames);
+ const { data: pages } = usePagesQueries(moduleName, pageNames);
const [expanded, setExpanded] = useState(false);
diff --git a/nextjs/src/hooks/localCourse/assignmentHooks.ts b/nextjs/src/hooks/localCourse/assignmentHooks.ts
index b3ebd20..5bb04b4 100644
--- a/nextjs/src/hooks/localCourse/assignmentHooks.ts
+++ b/nextjs/src/hooks/localCourse/assignmentHooks.ts
@@ -1,6 +1,7 @@
+"use client"
import axios from "axios";
import { localCourseKeys } from "./localCourseKeys";
-import { LocalAssignment } from "@/models/local/assignmnet/localAssignment";
+import { LocalAssignment } from "@/models/local/assignment/localAssignment";
import { useSuspenseQuery, useSuspenseQueries } from "@tanstack/react-query";
import { useCourseContext } from "@/app/course/[courseName]/context/courseContext";
diff --git a/nextjs/src/hooks/localCourse/localCoursesHooks.ts b/nextjs/src/hooks/localCourse/localCoursesHooks.ts
index a9eba8e..9dbc070 100644
--- a/nextjs/src/hooks/localCourse/localCoursesHooks.ts
+++ b/nextjs/src/hooks/localCourse/localCoursesHooks.ts
@@ -1,3 +1,4 @@
+"use client";
import { LocalCourseSettings } from "@/models/local/localCourse";
import { useSuspenseQuery } from "@tanstack/react-query";
import axios from "axios";
@@ -45,32 +46,35 @@ export const useModuleNamesQuery = () => {
});
};
-export const useModuleDataQuery = (moduleName: string) => {
- const { data: assignmentNames } = useAssignmentNamesQuery(
- moduleName
- );
- const { data: quizNames } = useQuizNamesQuery(moduleName);
- const { data: pageNames } = usePageNamesQuery(moduleName);
+// dangerous? really slowed down page...
+// maybe it only slowed down with react query devtools...
+// export const useModuleDataQuery = (moduleName: string) => {
+// console.log("running");
+// const { data: assignmentNames } = useAssignmentNamesQuery(moduleName);
+// const { data: quizNames } = useQuizNamesQuery(moduleName);
+// const { data: pageNames } = usePageNamesQuery(moduleName);
- const { data: assignments } = useAssignmentsQueries(
- moduleName,
- assignmentNames
- );
- const { data: quizzes } = useQuizzesQueries(
- moduleName,
- quizNames
- );
- const { data: pages } = usePagesQueries(moduleName, pageNames);
+// const { data: assignments } = useAssignmentsQueries(
+// moduleName,
+// assignmentNames
+// );
+// const { data: quizzes } = useQuizzesQueries(moduleName, quizNames);
+// const { data: pages } = usePagesQueries(moduleName, pageNames);
- return useMemo(
- () => ({
- assignments,
- quizzes,
- pages,
- }),
- [assignments, pages, quizzes]
- );
-};
+// return {
+// assignments,
+// quizzes,
+// pages,
+// };
+// // return useMemo(
+// // () => ({
+// // assignments,
+// // quizzes,
+// // pages,
+// // }),
+// // [assignments, pages, quizzes]
+// // );
+// };
// export const useUpdateCourseMutation = (courseName: string) => {
// const queryClient = useQueryClient();
diff --git a/nextjs/src/hooks/localCourse/pageHooks.ts b/nextjs/src/hooks/localCourse/pageHooks.ts
index ce594e5..b91bc84 100644
--- a/nextjs/src/hooks/localCourse/pageHooks.ts
+++ b/nextjs/src/hooks/localCourse/pageHooks.ts
@@ -1,3 +1,4 @@
+"use client"
import { LocalCoursePage } from "@/models/local/page/localCoursePage";
import { useSuspenseQueries, useSuspenseQuery } from "@tanstack/react-query";
import axios from "axios";
@@ -54,7 +55,6 @@ function getPageQueryConfig(
"/pages/" +
encodeURIComponent(pageName);
try {
- console.log("making a request to get a page");
const response = await axios.get(url);
return response.data;
} catch (e) {
diff --git a/nextjs/src/hooks/localCourse/quizHooks.ts b/nextjs/src/hooks/localCourse/quizHooks.ts
index 6affa2a..6f14555 100644
--- a/nextjs/src/hooks/localCourse/quizHooks.ts
+++ b/nextjs/src/hooks/localCourse/quizHooks.ts
@@ -1,3 +1,4 @@
+"use client"
import { LocalQuiz } from "@/models/local/quiz/localQuiz";
import {
useMutation,
@@ -66,9 +67,8 @@ function getQuizQueryConfig(
}
export const useUpdateQuizMutation = () => {
-
const { courseName } = useCourseContext();
- const queryClient = useQueryClient();
+ // const queryClient = useQueryClient();
return useMutation({
mutationFn: async ({
quiz,
@@ -89,9 +89,9 @@ export const useUpdateQuizMutation = () => {
await axios.put(url, quiz);
},
onSuccess: (_, { moduleName, quizName }) => {
- queryClient.invalidateQueries({
- queryKey: localCourseKeys.quiz(courseName, moduleName, quizName),
- });
+ // queryClient.invalidateQueries({
+ // queryKey: localCourseKeys.quiz(courseName, moduleName, quizName),
+ // });
// queryClient.invalidateQueries({
// queryKey: localCourseKeys.quizNames(courseName, moduleName),
// });
diff --git a/nextjs/src/models/local/assignmnet/assignmentSubmissionType.ts b/nextjs/src/models/local/assignment/assignmentSubmissionType.ts
similarity index 100%
rename from nextjs/src/models/local/assignmnet/assignmentSubmissionType.ts
rename to nextjs/src/models/local/assignment/assignmentSubmissionType.ts
diff --git a/nextjs/src/models/local/assignmnet/localAssignment.ts b/nextjs/src/models/local/assignment/localAssignment.ts
similarity index 100%
rename from nextjs/src/models/local/assignmnet/localAssignment.ts
rename to nextjs/src/models/local/assignment/localAssignment.ts
diff --git a/nextjs/src/models/local/assignmnet/localAssignmentGroup.ts b/nextjs/src/models/local/assignment/localAssignmentGroup.ts
similarity index 100%
rename from nextjs/src/models/local/assignmnet/localAssignmentGroup.ts
rename to nextjs/src/models/local/assignment/localAssignmentGroup.ts
diff --git a/nextjs/src/models/local/assignmnet/rubricItem.ts b/nextjs/src/models/local/assignment/rubricItem.ts
similarity index 100%
rename from nextjs/src/models/local/assignmnet/rubricItem.ts
rename to nextjs/src/models/local/assignment/rubricItem.ts
diff --git a/nextjs/src/models/local/assignmnet/utils/assignmentMarkdownParser.ts b/nextjs/src/models/local/assignment/utils/assignmentMarkdownParser.ts
similarity index 100%
rename from nextjs/src/models/local/assignmnet/utils/assignmentMarkdownParser.ts
rename to nextjs/src/models/local/assignment/utils/assignmentMarkdownParser.ts
diff --git a/nextjs/src/models/local/assignmnet/utils/assignmentMarkdownSerializer.ts b/nextjs/src/models/local/assignment/utils/assignmentMarkdownSerializer.ts
similarity index 100%
rename from nextjs/src/models/local/assignmnet/utils/assignmentMarkdownSerializer.ts
rename to nextjs/src/models/local/assignment/utils/assignmentMarkdownSerializer.ts
diff --git a/nextjs/src/models/local/assignmnet/utils/markdownUtils.ts b/nextjs/src/models/local/assignment/utils/markdownUtils.ts
similarity index 100%
rename from nextjs/src/models/local/assignmnet/utils/markdownUtils.ts
rename to nextjs/src/models/local/assignment/utils/markdownUtils.ts
diff --git a/nextjs/src/models/local/localCourse.ts b/nextjs/src/models/local/localCourse.ts
index 077371a..b3e7cc4 100644
--- a/nextjs/src/models/local/localCourse.ts
+++ b/nextjs/src/models/local/localCourse.ts
@@ -1,4 +1,4 @@
-import { LocalAssignmentGroup } from "./assignmnet/localAssignmentGroup";
+import { LocalAssignmentGroup } from "./assignment/localAssignmentGroup";
import { LocalModule } from "./localModules";
import { parse, stringify } from "yaml";
diff --git a/nextjs/src/models/local/localModules.ts b/nextjs/src/models/local/localModules.ts
index 206b0c0..29b833e 100644
--- a/nextjs/src/models/local/localModules.ts
+++ b/nextjs/src/models/local/localModules.ts
@@ -1,4 +1,4 @@
-import { LocalAssignment } from "./assignmnet/localAssignment";
+import { LocalAssignment } from "./assignment/localAssignment";
import { IModuleItem } from "./IModuleItem";
import { LocalCoursePage } from "./page/localCoursePage";
import { LocalQuiz } from "./quiz/localQuiz";
diff --git a/nextjs/src/models/local/page/localCoursePage.ts b/nextjs/src/models/local/page/localCoursePage.ts
index 4b59216..e41fab5 100644
--- a/nextjs/src/models/local/page/localCoursePage.ts
+++ b/nextjs/src/models/local/page/localCoursePage.ts
@@ -1,4 +1,4 @@
-import { extractLabelValue } from "../assignmnet/utils/markdownUtils";
+import { extractLabelValue } from "../assignment/utils/markdownUtils";
import { IModuleItem } from "../IModuleItem";
import { verifyDateOrThrow } from "../timeUtils";
diff --git a/nextjs/src/models/local/tests/assignmentMarkdown.test.ts b/nextjs/src/models/local/tests/assignmentMarkdown.test.ts
index adc2afa..be92620 100644
--- a/nextjs/src/models/local/tests/assignmentMarkdown.test.ts
+++ b/nextjs/src/models/local/tests/assignmentMarkdown.test.ts
@@ -1,8 +1,8 @@
import { describe, it, expect } from "vitest";
-import { LocalAssignment } from "../assignmnet/localAssignment";
-import { AssignmentSubmissionType } from "../assignmnet/assignmentSubmissionType";
-import { assignmentMarkdownSerializer } from "../assignmnet/utils/assignmentMarkdownSerializer";
-import { assignmentMarkdownParser } from "../assignmnet/utils/assignmentMarkdownParser";
+import { LocalAssignment } from "../assignment/localAssignment";
+import { AssignmentSubmissionType } from "../assignment/assignmentSubmissionType";
+import { assignmentMarkdownSerializer } from "../assignment/utils/assignmentMarkdownSerializer";
+import { assignmentMarkdownParser } from "../assignment/utils/assignmentMarkdownParser";
describe("AssignmentMarkdownTests", () => {
it("can parse assignment settings", () => {
diff --git a/nextjs/src/models/local/tests/rubricMarkdown.test.ts b/nextjs/src/models/local/tests/rubricMarkdown.test.ts
index 8fc6543..5e6e2f5 100644
--- a/nextjs/src/models/local/tests/rubricMarkdown.test.ts
+++ b/nextjs/src/models/local/tests/rubricMarkdown.test.ts
@@ -1,6 +1,6 @@
import { describe, it, expect } from "vitest";
-import { RubricItem, rubricItemIsExtraCredit } from "../assignmnet/rubricItem";
-import { assignmentMarkdownParser } from "../assignmnet/utils/assignmentMarkdownParser";
+import { RubricItem, rubricItemIsExtraCredit } from "../assignment/rubricItem";
+import { assignmentMarkdownParser } from "../assignment/utils/assignmentMarkdownParser";
describe("RubricMarkdownTests", () => {
it("can parse one item", () => {
diff --git a/nextjs/src/models/local/tests/timeUtils.test.ts b/nextjs/src/models/local/tests/timeUtils.test.ts
index d3428c6..7308cfd 100644
--- a/nextjs/src/models/local/tests/timeUtils.test.ts
+++ b/nextjs/src/models/local/tests/timeUtils.test.ts
@@ -1,5 +1,5 @@
import { describe, it, expect } from "vitest";
-import { getDateFromString } from "../timeUtils";
+import { dateToMarkdownString, getDateFromString } from "../timeUtils";
describe("Can properly handle expected date formats", () => {
it("can use AM/PM dates", () => {
@@ -39,4 +39,12 @@ describe("Can properly handle expected date formats", () => {
expect(dateObject?.getHours()).toBe(1);
expect(dateObject?.getSeconds()).toBe(0);
});
+ it("can get correct time from format", () => {
+ const dateString = "08/27/2024 23:59:00";
+ const dateObject = getDateFromString(dateString);
+
+ expect(dateObject).not.toBeUndefined()
+ const updatedString = dateToMarkdownString(dateObject!)
+ expect(updatedString).toBe(dateString)
+ });
});
diff --git a/nextjs/src/services/fileStorage/fileStorageService.ts b/nextjs/src/services/fileStorage/fileStorageService.ts
index 77ee238..3b907c3 100644
--- a/nextjs/src/services/fileStorage/fileStorageService.ts
+++ b/nextjs/src/services/fileStorage/fileStorageService.ts
@@ -9,7 +9,7 @@ import {
directoryOrFileExists,
hasFileSystemEntries,
} from "./utils/fileSystemUtils";
-import { localAssignmentMarkdown } from "@/models/local/assignmnet/localAssignment";
+import { localAssignmentMarkdown } from "@/models/local/assignment/localAssignment";
import { LocalQuiz, localQuizMarkdownUtils } from "@/models/local/quiz/localQuiz";
import { localPageMarkdownUtils } from "@/models/local/page/localCoursePage";
import { quizMarkdownUtils } from "@/models/local/quiz/utils/quizMarkdownUtils";
diff --git a/nextjs/src/services/fileStorage/utils/courseMarkdownLoader.ts b/nextjs/src/services/fileStorage/utils/courseMarkdownLoader.ts
index 6e0372f..be472b1 100644
--- a/nextjs/src/services/fileStorage/utils/courseMarkdownLoader.ts
+++ b/nextjs/src/services/fileStorage/utils/courseMarkdownLoader.ts
@@ -1,7 +1,7 @@
import {
LocalAssignment,
localAssignmentMarkdown,
-} from "@/models/local/assignmnet/localAssignment";
+} from "@/models/local/assignment/localAssignment";
import {
LocalCourse,
LocalCourseSettings,
diff --git a/nextjs/src/services/fileStorage/utils/courseMarkdownSaver.ts b/nextjs/src/services/fileStorage/utils/courseMarkdownSaver.ts
index 5d049a2..cd24710 100644
--- a/nextjs/src/services/fileStorage/utils/courseMarkdownSaver.ts
+++ b/nextjs/src/services/fileStorage/utils/courseMarkdownSaver.ts
@@ -1,4 +1,4 @@
-import { localAssignmentMarkdown } from "@/models/local/assignmnet/localAssignment";
+import { localAssignmentMarkdown } from "@/models/local/assignment/localAssignment";
import { LocalCourse, localCourseYamlUtils } from "@/models/local/localCourse";
import { LocalModule } from "@/models/local/localModules";
import { localPageMarkdownUtils } from "@/models/local/page/localCoursePage";
diff --git a/nextjs/src/services/tests/courseDifferenceChanges.test.ts b/nextjs/src/services/tests/courseDifferenceChanges.test.ts
index 2d1cf36..adfc604 100644
--- a/nextjs/src/services/tests/courseDifferenceChanges.test.ts
+++ b/nextjs/src/services/tests/courseDifferenceChanges.test.ts
@@ -1,7 +1,7 @@
import { describe, it, expect } from "vitest";
import { LocalCourse } from "@/models/local/localCourse";
import { CourseDifferences } from "../fileStorage/utils/courseDifferences";
-import { AssignmentSubmissionType } from "@/models/local/assignmnet/assignmentSubmissionType";
+import { AssignmentSubmissionType } from "@/models/local/assignment/assignmentSubmissionType";
describe("CourseDifferencesChangesTests", () => {
it("can detect new settings", () => {