deduplicate days

This commit is contained in:
2024-09-02 10:24:42 -06:00
parent 13be104499
commit 1b03061fdd
7 changed files with 60 additions and 18 deletions

View File

@@ -20,15 +20,15 @@ export const CalendarMonth = ({ month }: { month: CalendarMonthModel }) => {
return ( return (
<> <>
<h3 className="text-center text-2xl"> <h3 className="text-center text-2xl">
<button {/* <button
type="button" type="button"
className="btn btn-link" className="btn btn-link"
onClick={toggleCollapse} onClick={toggleCollapse}
aria-expanded={!isCollapsed} aria-expanded={!isCollapsed}
aria-controls={monthName} aria-controls={monthName}
> > */}
{monthName} {monthName}
</button> {/* </button> */}
</h3> </h3>
<div id={monthName}> <div id={monthName}>

View File

@@ -10,20 +10,21 @@ export default function Day({ day, month }: { day: Date; month: number }) {
const backgroundClass = isInSameMonth ? "" : "bg-slate-900"; const backgroundClass = isInSameMonth ? "" : "bg-slate-900";
return ( return (
<>
{moduleNames.map((moduleName) => (
<div <div
key={"" + day + month + moduleName}
className={ className={
"border border-slate-600 rounded-lg p-2 pb-4 m-1 " + backgroundClass "border border-slate-600 rounded-lg p-2 pb-4 m-1 " + backgroundClass
} }
>
{day.getDate()}
{moduleNames.map((moduleName) => (
<div
key={"" + day + month + moduleName}
onDrop={() => itemDrop(day)} onDrop={() => itemDrop(day)}
onDragOver={(e) => e.preventDefault()} onDragOver={(e) => e.preventDefault()}
> >
{day.getDate()}
<DayItemsInModule day={day} moduleName={moduleName} /> <DayItemsInModule day={day} moduleName={moduleName} />
</div> </div>
))} ))}
</> </div>
); );
} }

View File

@@ -14,7 +14,7 @@ export default async function CourseLayout({
await hydrateCourse(queryClient, courseName); await hydrateCourse(queryClient, courseName);
const dehydratedState = dehydrate(queryClient); const dehydratedState = dehydrate(queryClient);
console.log("hydrated course state", courseName, dehydratedState); // console.log("hydrated course state", courseName, dehydratedState);
return ( return (
<HydrationBoundary state={dehydratedState}>{children}</HydrationBoundary> <HydrationBoundary state={dehydratedState}>{children}</HydrationBoundary>
); );

View File

@@ -10,7 +10,12 @@ export const useAssignmentNamesQuery = (
useSuspenseQuery({ useSuspenseQuery({
queryKey: localCourseKeys.assignmentNames(courseName, moduleName), queryKey: localCourseKeys.assignmentNames(courseName, moduleName),
queryFn: async (): Promise<string[]> => { queryFn: async (): Promise<string[]> => {
const url = `/api/courses/${courseName}/modules/${moduleName}/assignments`; const url =
"/api/courses/" +
encodeURIComponent(courseName) +
"/modules/" +
encodeURIComponent(moduleName) +
"/assignments"
const response = await axios.get(url); const response = await axios.get(url);
return response.data; return response.data;
}, },
@@ -21,6 +26,7 @@ const getAssignmentQueryConfig = (
moduleName: string, moduleName: string,
assignmentName: string assignmentName: string
) => { ) => {
if (assignmentName === "Final Project Milestone ") console.log(moduleName);
return { return {
queryKey: localCourseKeys.assignment( queryKey: localCourseKeys.assignment(
courseName, courseName,
@@ -28,7 +34,15 @@ const getAssignmentQueryConfig = (
assignmentName assignmentName
), ),
queryFn: async (): Promise<LocalAssignment> => { queryFn: async (): Promise<LocalAssignment> => {
const url = `/api/courses/${courseName}/modules/${moduleName}/assignments/${assignmentName}`; const url =
"/api/courses/" +
encodeURIComponent(courseName) +
"/modules/" +
encodeURIComponent(moduleName) +
"/assignments/" +
encodeURIComponent(assignmentName);
console.log(url);
const response = await axios.get(url); const response = await axios.get(url);
return response.data; return response.data;
}, },

View File

@@ -59,7 +59,6 @@ export const useModuleDataQuery = (courseName: string, moduleName: string) => {
); );
const { data: pages } = usePagesQueries(courseName, moduleName, pageNames); const { data: pages } = usePagesQueries(courseName, moduleName, pageNames);
return { return {
assignments, assignments,
quizzes, quizzes,

View File

@@ -7,7 +7,12 @@ export const usePageNamesQuery = (courseName: string, moduleName: string) =>
useSuspenseQuery({ useSuspenseQuery({
queryKey: localCourseKeys.pageNames(courseName, moduleName), queryKey: localCourseKeys.pageNames(courseName, moduleName),
queryFn: async (): Promise<string[]> => { queryFn: async (): Promise<string[]> => {
const url = `/api/courses/${courseName}/modules/${moduleName}/pages`; const url =
"/api/courses/" +
encodeURIComponent(courseName) +
"/modules/" +
encodeURIComponent(moduleName) +
"/pages";
const response = await axios.get(url); const response = await axios.get(url);
return response.data; return response.data;
}, },
@@ -41,7 +46,13 @@ function getPageQueryConfig(
return { return {
queryKey: localCourseKeys.quiz(courseName, moduleName, pageName), queryKey: localCourseKeys.quiz(courseName, moduleName, pageName),
queryFn: async (): Promise<LocalCoursePage> => { queryFn: async (): Promise<LocalCoursePage> => {
const url = `/api/courses/${courseName}/modules/${moduleName}/pages/${pageName}`; const url =
"/api/courses/" +
encodeURIComponent(courseName) +
"/modules/" +
encodeURIComponent(moduleName) +
"/pages/" +
encodeURIComponent(pageName);
const response = await axios.get(url); const response = await axios.get(url);
return response.data; return response.data;
}, },

View File

@@ -12,7 +12,12 @@ export const useQuizNamesQuery = (courseName: string, moduleName: string) =>
useSuspenseQuery({ useSuspenseQuery({
queryKey: localCourseKeys.quizNames(courseName, moduleName), queryKey: localCourseKeys.quizNames(courseName, moduleName),
queryFn: async (): Promise<string[]> => { queryFn: async (): Promise<string[]> => {
const url = `/api/courses/${courseName}/modules/${moduleName}/quizzes`; const url =
"/api/courses/" +
encodeURIComponent(courseName) +
"/modules/" +
encodeURIComponent(moduleName) +
"/quizzes";
const response = await axios.get(url); const response = await axios.get(url);
return response.data; return response.data;
}, },
@@ -47,7 +52,13 @@ function getQuizQueryConfig(
return { return {
queryKey: localCourseKeys.quiz(courseName, moduleName, quizName), queryKey: localCourseKeys.quiz(courseName, moduleName, quizName),
queryFn: async (): Promise<LocalQuiz> => { queryFn: async (): Promise<LocalQuiz> => {
const url = `/api/courses/${courseName}/modules/${moduleName}/quizzes/${quizName}`; const url =
"/api/courses/" +
encodeURIComponent(courseName) +
"/modules/" +
encodeURIComponent(moduleName) +
"/quizzes/" +
encodeURIComponent(quizName);
const response = await axios.get(url); const response = await axios.get(url);
return response.data; return response.data;
}, },
@@ -66,7 +77,13 @@ export const useUpdateQuizMutation = (courseName: string) => {
moduleName: string; moduleName: string;
quizName: string; quizName: string;
}) => { }) => {
const url = `/api/courses/${courseName}/modules/${moduleName}/quizzes/${quizName}`; const url =
"/api/courses/" +
encodeURIComponent(courseName) +
"/modules/" +
encodeURIComponent(moduleName) +
"/quizzes/" +
encodeURIComponent(quizName);
await axios.put(url, quiz); await axios.put(url, quiz);
}, },
onSuccess: (_, { moduleName, quizName }) => { onSuccess: (_, { moduleName, quizName }) => {