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
+
+ - all courses have already been added, or
+ - there are no courses in this term
+
+
+
+
+ )}
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) => {