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 (
<>
<h3 className="text-center text-2xl">
<button
{/* <button
type="button"
className="btn btn-link"
onClick={toggleCollapse}
aria-expanded={!isCollapsed}
aria-controls={monthName}
>
> */}
{monthName}
</button>
{/* </button> */}
</h3>
<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";
return (
<>
{moduleNames.map((moduleName) => (
<div
key={"" + day + month + moduleName}
className={
"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)}
onDragOver={(e) => e.preventDefault()}
>
{day.getDate()}
<DayItemsInModule day={day} moduleName={moduleName} />
</div>
))}
</>
</div>
);
}

View File

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

View File

@@ -10,7 +10,12 @@ export const useAssignmentNamesQuery = (
useSuspenseQuery({
queryKey: localCourseKeys.assignmentNames(courseName, moduleName),
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);
return response.data;
},
@@ -21,6 +26,7 @@ const getAssignmentQueryConfig = (
moduleName: string,
assignmentName: string
) => {
if (assignmentName === "Final Project Milestone ") console.log(moduleName);
return {
queryKey: localCourseKeys.assignment(
courseName,
@@ -28,7 +34,15 @@ const getAssignmentQueryConfig = (
assignmentName
),
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);
return response.data;
},

View File

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

View File

@@ -7,7 +7,12 @@ export const usePageNamesQuery = (courseName: string, moduleName: string) =>
useSuspenseQuery({
queryKey: localCourseKeys.pageNames(courseName, moduleName),
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);
return response.data;
},
@@ -41,7 +46,13 @@ function getPageQueryConfig(
return {
queryKey: localCourseKeys.quiz(courseName, moduleName, pageName),
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);
return response.data;
},

View File

@@ -12,7 +12,12 @@ export const useQuizNamesQuery = (courseName: string, moduleName: string) =>
useSuspenseQuery({
queryKey: localCourseKeys.quizNames(courseName, moduleName),
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);
return response.data;
},
@@ -47,7 +52,13 @@ function getQuizQueryConfig(
return {
queryKey: localCourseKeys.quiz(courseName, moduleName, quizName),
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);
return response.data;
},
@@ -66,7 +77,13 @@ export const useUpdateQuizMutation = (courseName: string) => {
moduleName: 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);
},
onSuccess: (_, { moduleName, quizName }) => {