mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-26 15:48:32 -06:00
working on settings
This commit is contained in:
@@ -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>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -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 });
|
||||
|
||||
9
nextjs/src/app/api/directories/empty/route.ts
Normal file
9
nextjs/src/app/api/directories/empty/route.ts
Normal 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);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user