working on settings

This commit is contained in:
2024-09-11 21:33:35 -06:00
parent f42f631fad
commit 32b59b3975
7 changed files with 131 additions and 34 deletions

View File

@@ -1,17 +1,48 @@
import { DayOfWeekInput } from "@/components/form/DayOfWeekInput";
import SelectInput from "@/components/form/SelectInput";
import { useCourseListInTermQuery } from "@/hooks/canvas/canvasCourseHooks";
import { useCanvasTermsQuery } from "@/hooks/canvas/canvasHooks";
import { useEmptyDirectoriesQuery } from "@/hooks/localCourse/storageDirectoryHooks";
import { CanvasCourseModel } from "@/models/canvas/courses/canvasCourseModel";
import { CanvasEnrollmentTermModel } from "@/models/canvas/enrollmentTerms/canvasEnrollmentTermModel";
import { DayOfWeek } from "@/models/local/localCourse";
import React, { useState } from "react";
import React, { useMemo, useState } from "react";
const sampleCompose = `
services:
canvas_manager:
image: alexmickelson/canvas_management:2
user: 1000:1000 # userid:groupid that matches file ownership on host system
ports:
- 8080:8080 # hostPort:containerPort - you can change the first one if you like
env_file:
- .env # needs to have your CANVAS_TOKEN set
environment:
- storageDirectory=/app/storage
- TZ=America/Denver
volumes:
- ~/projects/faculty/1430/2024-fall-alex/modules:/app/storage/UX
- ~/projects/faculty/4850_AdvancedFE/2024-fall-alex/modules:/app/storage/advanced_frontend
- ~/projects/faculty/1810/2024-fall-alex/modules:/app/storage/intro_to_web
- ~/projects/faculty/1420/2024-fall/Modules:/app/storage/1420
- ~/projects/faculty/1425/2024-fall/Modules:/app/storage/1425
`
export default function NewCourseForm() {
const { data: canvasTerms } = useCanvasTermsQuery(new Date());
const today = useMemo(() => new Date(), []);
const { data: canvasTerms } = useCanvasTermsQuery(today);
const { data: emptyDirectories } = useEmptyDirectoriesQuery();
const [selectedTerm, setSelectedTerm] = useState<
CanvasEnrollmentTermModel | undefined
>();
const { data: canvasCourses } = useCourseListInTermQuery(selectedTerm?.id);
const [selectedDaysOfWeek, setSelectedDaysOfWeek] = useState<DayOfWeek[]>([]);
const [selectedCanvasCourse, setSelectedCanvasCourse] = useState<
CanvasCourseModel | undefined
>();
const [selectedDirectory, setSelectedDirectory] = useState<
string | undefined
>();
return (
<div>
@@ -23,7 +54,22 @@ export default function NewCourseForm() {
getOptionName={(t) => t.name}
/>
{selectedTerm && (
<div>
<>
<SelectInput
value={selectedCanvasCourse}
setValue={setSelectedCanvasCourse}
label={"Course"}
options={canvasCourses}
getOptionName={(c) => c.name}
/>
<SelectInput
value={selectedDirectory}
setValue={setSelectedDirectory}
label={"Storage Folder"}
options={emptyDirectories}
getOptionName={(d) => d}
/>
<br />
<DayOfWeekInput
selectedDays={selectedDaysOfWeek}
updateSettings={(day) => {
@@ -36,8 +82,9 @@ export default function NewCourseForm() {
});
}}
/>
</div>
</>
)}
</div>
);
}

View File

@@ -50,12 +50,6 @@ export async function GET(
return withErrorHandling(async () => {
try {
const url = getUrl(params);
// const response = await axiosClient.get(url, {
// headers: {
// // Include other headers from the incoming request if needed:
// "Content-Type": "application/json",
// },
// });
var requestCount = 1;
url.searchParams.set("per_page", "100");
@@ -100,7 +94,7 @@ export async function POST(
try {
const url = getUrl(params);
const body = await req.json();
const response = await axiosClient.post(url, body);
const response = await axiosClient.post(url.toString(), body);
const headers = proxyResponseHeaders(response);
return new NextResponse(JSON.stringify(response.data), { headers });
@@ -123,7 +117,7 @@ export async function PUT(
try {
const url = getUrl(params);
const body = await req.json();
const response = await axiosClient.put(url, body);
const response = await axiosClient.put(url.toString(), body);
const headers = proxyResponseHeaders(response);
return new NextResponse(JSON.stringify(response.data), { headers });
@@ -143,7 +137,7 @@ export async function DELETE(
return withErrorHandling(async () => {
try {
const url = getUrl(params);
const response = await axiosClient.delete(url);
const response = await axiosClient.delete(url.toString());
const headers = proxyResponseHeaders(response);
return new NextResponse(JSON.stringify(response.data), { headers });

View File

@@ -0,0 +1,9 @@
import { fileStorageService } from "@/services/fileStorage/fileStorageService";
import { withErrorHandling } from "@/services/withErrorHandling";
export const GET = async () =>
await withErrorHandling(async () => {
const directories = await fileStorageService.getEmptyDirectories();
return Response.json(directories);
});