diff --git a/globalSettings.yml b/globalSettings.yml index 6070626..d393efa 100644 --- a/globalSettings.yml +++ b/globalSettings.yml @@ -23,3 +23,5 @@ courses: name: 1420_old - path: ./3820_BackEnd/2025-fall/Modules/ name: jonathan-backend + - path: ./4850_AdvancedFE/2026-spring-alex/modules + name: Adv Frontend Spring diff --git a/src/app/addCourse/AddCourseToGlobalSettingsForm.tsx b/src/app/addCourse/AddCourseToGlobalSettingsForm.tsx index abc457d..1a75b37 100644 --- a/src/app/addCourse/AddCourseToGlobalSettingsForm.tsx +++ b/src/app/addCourse/AddCourseToGlobalSettingsForm.tsx @@ -62,6 +62,7 @@ export default function AddNewCourseToGlobalSettingsForm() { const formIsComplete = selectedTerm && selectedCanvasCourse && selectedDirectory; + return (
{ if (formIsComplete) { - console.log("Creating course with settings:", selectedDirectory); + console.log("Creating course with settings:", selectedDirectory, "old course", courseToImport); const newSettings: LocalCourseSettings = courseToImport ? { ...courseToImport, - name: selectedDirectory, + name: name, daysOfWeek: selectedDaysOfWeek, canvasId: selectedCanvasCourse.id, startDate: selectedTerm.start_at ?? "", @@ -114,7 +115,7 @@ export default function AddNewCourseToGlobalSettingsForm() { assets: [], } : { - name: selectedDirectory, + name: name, assignmentGroups: [], daysOfWeek: selectedDaysOfWeek, canvasId: selectedCanvasCourse.id, @@ -145,10 +146,10 @@ export default function AddNewCourseToGlobalSettingsForm() {
{createCourse.isPending && } -
+      {/* 
         
Example docker compose
{sampleCompose} -
+
*/} ); } @@ -180,12 +181,10 @@ function OtherSettings({ name: string; setName: Dispatch>; }) { - const { data: canvasCourses } = useCourseListInTermQuery(selectedTerm.id); + const { data: canvasCourses, isLoading: canvasCoursesLoading } = + useCourseListInTermQuery(selectedTerm.id); const { data: allSettings } = useLocalCoursesSettingsQuery(); const [directory, setDirectory] = useState("./"); - // const directoryIsCourseQuery = useDirectoryIsCourseQuery( - // selectedDirectory ?? "./" - // ); const populatedCanvasCourseIds = allSettings?.map((s) => s.canvasId) ?? []; const availableCourses = @@ -204,6 +203,20 @@ function OtherSettings({ getOptionName={(c) => c?.name ?? ""} center={true} /> + {canvasCoursesLoading && } + {!canvasCoursesLoading && availableCourses.length === 0 && ( +
+
+
+ No available courses in this term to add. Either +
    +
  1. all courses have already been added, or
  2. +
  3. there are no courses in this term
  4. +
+
+
+
+ )} inputRef.current?.focus(), 0); } }; @@ -154,7 +156,10 @@ export function StoragePathSelector({ className={`dropdown-option w-full px-2 py-1 cursor-pointer ${ highlightedIndex === idx ? "bg-blue-700 text-white" : "" }`} - onMouseDown={() => handleSelectFolder(option)} + onMouseDown={(e) => { + e.preventDefault(); // Prevent input blur + handleSelectFolder(option, true); + }} onMouseEnter={() => setHighlightedIndex(idx)} > {option} diff --git a/src/features/local/course/settingsRouter.ts b/src/features/local/course/settingsRouter.ts index 9bc3f23..50bc695 100644 --- a/src/features/local/course/settingsRouter.ts +++ b/src/features/local/course/settingsRouter.ts @@ -103,6 +103,13 @@ async function migrateCourseContent( ) { const oldCourseName = settingsFromCourseToImport.name; const newCourseName = settings.name; + console.log( + "migrating content from ", + oldCourseName, + "to ", + newCourseName + ); + const oldModules = await getModuleNamesFromFiles(oldCourseName); await Promise.all( oldModules.map(async (moduleName) => {