adding default offset settings

This commit is contained in:
2024-10-01 13:59:16 -06:00
parent 3130b75392
commit 44d1823028
4 changed files with 82 additions and 0 deletions

View File

@@ -5,10 +5,15 @@ import {
useUpdateLocalCourseSettingsMutation, useUpdateLocalCourseSettingsMutation,
} from "@/hooks/localCourse/localCoursesHooks"; } from "@/hooks/localCourse/localCoursesHooks";
import { TimePicker } from "../../../../components/TimePicker"; import { TimePicker } from "../../../../components/TimePicker";
import { useState } from "react";
import DefaultLockOffset from "./DefaultLockOffset";
export default function DefaultDueTime() { export default function DefaultDueTime() {
const { data: settings } = useLocalCourseSettingsQuery(); const { data: settings } = useLocalCourseSettingsQuery();
const updateSettings = useUpdateLocalCourseSettingsMutation(); const updateSettings = useUpdateLocalCourseSettingsMutation();
const [haveLockOffset, setHaveLockOffset] = useState(
!!settings.defaultLockHoursOffset
);
return ( return (
<div className="border w-fit p-3 m-3 rounded-md"> <div className="border w-fit p-3 m-3 rounded-md">
<div className="text-center">Default Assignment Due Time</div> <div className="text-center">Default Assignment Due Time</div>
@@ -23,6 +28,37 @@ export default function DefaultDueTime() {
}); });
}} }}
/> />
<hr />
{!haveLockOffset && (
<button
onClick={async () => {
await updateSettings.mutateAsync({
...settings,
defaultLockHoursOffset: 0,
});
setHaveLockOffset(true);
}}
>
have a default Lock Offset?
</button>
)}
{haveLockOffset && <DefaultLockOffset />}
<br />
{haveLockOffset && (
<button
className="btn-danger"
onClick={async () => {
await updateSettings.mutateAsync({
...settings,
defaultLockHoursOffset: undefined,
});
setHaveLockOffset(false);
}}
>
remove default Lock Offset?
</button>
)}
</div> </div>
); );
} }

View File

@@ -0,0 +1,44 @@
"use client";
import TextInput from "@/components/form/TextInput";
import {
useLocalCourseSettingsQuery,
useUpdateLocalCourseSettingsMutation,
} from "@/hooks/localCourse/localCoursesHooks";
import { useEffect, useState } from "react";
export default function DefaultLockOffset() {
const { data: settings } = useLocalCourseSettingsQuery();
const updateSettings = useUpdateLocalCourseSettingsMutation();
const [hoursOffset, setHoursOffset] = useState(
settings.defaultLockHoursOffset?.toString() ?? "0"
);
useEffect(() => {
const id = setTimeout(() => {
try {
const hoursNumber = parseInt(hoursOffset);
if (hoursNumber && hoursNumber !== settings.defaultLockHoursOffset) {
updateSettings.mutate({
...settings,
defaultLockHoursOffset: hoursNumber,
});
}
} catch {}
}, 500);
return () => clearTimeout(id);
}, [hoursOffset, settings, settings.defaultLockHoursOffset, updateSettings]);
return (
<div>
<div className="text-center">Default Assignment Due Time</div>
<hr className="m-1 p-0" />
<TextInput
value={hoursOffset}
setValue={(n) => setHoursOffset(n)}
label={"Hours Offset"}
/>
</div>
);
}

View File

@@ -95,6 +95,7 @@ export default function NewCourseForm() {
AssignmentSubmissionType.ONLINE_UPLOAD, AssignmentSubmissionType.ONLINE_UPLOAD,
], ],
defaultFileUploadTypes: ["pdf", "png", "jpg", "jpeg"], defaultFileUploadTypes: ["pdf", "png", "jpg", "jpeg"],
defaultLockHoursOffset: 0
}, },
}) })
.then(() => { .then(() => {

View File

@@ -21,6 +21,7 @@ export interface LocalCourseSettings {
startDate: string; startDate: string;
endDate: string; endDate: string;
defaultDueTime: SimpleTimeOnly; defaultDueTime: SimpleTimeOnly;
defaultLockHoursOffset?: number;
defaultAssignmentSubmissionTypes: AssignmentSubmissionType[]; defaultAssignmentSubmissionTypes: AssignmentSubmissionType[];
defaultFileUploadTypes: string[]; defaultFileUploadTypes: string[];
} }