creating other things

This commit is contained in:
2024-09-13 21:49:20 -06:00
parent 4803adf604
commit 0b56e1d604
6 changed files with 60 additions and 18 deletions

View File

@@ -62,7 +62,7 @@ function CalendarWeek({
monthNumber: number; monthNumber: number;
}) { }) {
return ( return (
<div className="grid grid-cols-7 m-3"> <div className="grid grid-cols-7 m-1">
{week.map((day, dayIndex) => ( {week.map((day, dayIndex) => (
<Day key={dayIndex} day={day} month={monthNumber} /> <Day key={dayIndex} day={day} month={monthNumber} />
))} ))}

View File

@@ -40,12 +40,12 @@ export default function Day({ day, month }: { day: string; month: number }) {
return ( return (
<div <div
className={" rounded-lg p-2 pb-4 m-1 " + todayClass + monthClass} className={" rounded-lg pb-4 m-1 " + todayClass + monthClass}
onDrop={(e) => itemDrop(e, day)} onDrop={(e) => itemDrop(e, day)}
onDragOver={(e) => e.preventDefault()} onDragOver={(e) => e.preventDefault()}
> >
{dayAsDate.getDate()} <div className="ms-1">{dayAsDate.getDate()}</div>
<ul className="list-disc"> <div>
{todaysAssignments.map(({ assignment, moduleName }) => ( {todaysAssignments.map(({ assignment, moduleName }) => (
<DraggableListItem <DraggableListItem
key={assignment.name} key={assignment.name}
@@ -70,7 +70,7 @@ export default function Day({ day, month }: { day: string; month: number }) {
item={page} item={page}
/> />
))} ))}
</ul> </div>
</div> </div>
); );
} }
@@ -122,7 +122,11 @@ function DraggableListItem({
}) { }) {
const { courseName } = useCourseContext(); const { courseName } = useCourseContext();
return ( return (
<li <div
className={
" border rounded-sm px-1 mx-1 break-all " +
" border-slate-600 bg-slate-800 "
}
role="button" role="button"
draggable="true" draggable="true"
onDragStart={(e) => { onDragStart={(e) => {
@@ -142,6 +146,6 @@ function DraggableListItem({
> >
{item.name} {item.name}
</Link> </Link>
</li> </div>
); );
} }

View File

@@ -83,7 +83,7 @@ export default function ExpandableModule({
<Modal buttonText="New Item"> <Modal buttonText="New Item">
{({ closeModal }) => ( {({ closeModal }) => (
<div> <div>
<NewItemForm moduleName={moduleName} /> <NewItemForm moduleName={moduleName} onCreate={closeModal} />
<br /> <br />
<button onClick={closeModal}>close</button> <button onClick={closeModal}>close</button>
</div> </div>

View File

@@ -11,7 +11,13 @@ import { LocalAssignmentGroup } from "@/models/local/assignment/localAssignmentG
import { dateToMarkdownString } from "@/models/local/timeUtils"; import { dateToMarkdownString } from "@/models/local/timeUtils";
import React, { useState } from "react"; import React, { useState } from "react";
export default function NewItemForm({ moduleName }: { moduleName: string }) { export default function NewItemForm({
moduleName,
onCreate = () => {},
}: {
moduleName: string;
onCreate?: () => void;
}) {
const [type, setType] = useState<"Assignment" | "Quiz" | "Page">( const [type, setType] = useState<"Assignment" | "Quiz" | "Page">(
"Assignment" "Assignment"
); );
@@ -31,12 +37,14 @@ export default function NewItemForm({ moduleName }: { moduleName: string }) {
className="flex flex-col gap-3" className="flex flex-col gap-3"
onSubmit={(e) => { onSubmit={(e) => {
e.preventDefault(); e.preventDefault();
const dueAt = dateToMarkdownString(new Date());
console.log("submitting");
if (type === "Assignment") { if (type === "Assignment") {
createAssignment.mutate({ createAssignment.mutate({
assignment: { assignment: {
name, name,
description: "", description: "",
dueAt: dateToMarkdownString(new Date()), dueAt,
submissionTypes: [ submissionTypes: [
AssignmentSubmissionType.ONLINE_TEXT_ENTRY, AssignmentSubmissionType.ONLINE_TEXT_ENTRY,
AssignmentSubmissionType.ONLINE_UPLOAD, AssignmentSubmissionType.ONLINE_UPLOAD,
@@ -48,8 +56,32 @@ export default function NewItemForm({ moduleName }: { moduleName: string }) {
assignmentName: name, assignmentName: name,
}); });
} else if (type === "Quiz") { } else if (type === "Quiz") {
createQuiz.mutate({
quiz: {
name,
description: "",
dueAt,
shuffleAnswers: true,
showCorrectAnswers: true,
oneQuestionAtATime: true,
allowedAttempts: -1,
questions: [],
},
moduleName: moduleName,
quizName: name,
});
} else if (type === "Page") { } else if (type === "Page") {
createPage.mutate({
page: {
name,
text: "",
dueAt,
},
moduleName: moduleName,
pageName: name,
});
} }
onCreate();
}} }}
> >
<div> <div>
@@ -64,19 +96,21 @@ export default function NewItemForm({ moduleName }: { moduleName: string }) {
<TextInput label={type + " Name"} value={name} setValue={setName} /> <TextInput label={type + " Name"} value={name} setValue={setName} />
</div> </div>
<div> <div>
<ButtonSelect {type !== "Page" && (
options={settings.assignmentGroups} <ButtonSelect
getName={(g) => g?.name ?? ""} options={settings.assignmentGroups}
setSelectedOption={setAssignmentGroup} getName={(g) => g?.name ?? ""}
selectedOption={assignmentGroup} setSelectedOption={setAssignmentGroup}
/> selectedOption={assignmentGroup}
/>
)}
</div> </div>
{settings.assignmentGroups.length === 0 && ( {settings.assignmentGroups.length === 0 && (
<div> <div>
No assignment groups created, create them in the course settings page No assignment groups created, create them in the course settings page
</div> </div>
)} )}
<button>Create</button> <button type="submit">Create</button>
{isPending && <Spinner />} {isPending && <Spinner />}
</form> </form>
); );

View File

@@ -88,7 +88,7 @@ export default function NewCourseForm() {
canvasId: selectedCanvasCourse.id, canvasId: selectedCanvasCourse.id,
startDate: selectedTerm.start_at ?? "", startDate: selectedTerm.start_at ?? "",
endDate: selectedTerm.end_at ?? "", endDate: selectedTerm.end_at ?? "",
defaultDueTime: { hour: 11, minute: 59 }, defaultDueTime: { hour: 23, minute: 59 },
}, },
}) })
.then(() => { .then(() => {

View File

@@ -30,6 +30,10 @@ export default function Modal({
onClick={closeModal} onClick={closeModal}
> >
<div <div
onClick={(e) => {
// e.preventDefault();
e.stopPropagation();
}}
className={ className={
` bg-slate-800 p-6 rounded-lg shadow-lg w-1/3 ` + ` bg-slate-800 p-6 rounded-lg shadow-lg w-1/3 ` +
` transition-all duration-400 ` + ` transition-all duration-400 ` +