diff --git a/backend/service/events/courseService.go b/backend/service/events/courseService.go index c20134e..0206a40 100644 --- a/backend/service/events/courseService.go +++ b/backend/service/events/courseService.go @@ -19,18 +19,19 @@ func GetAllCoursesForSemesterWithEvents(app *pocketbase.PocketBase, semester str if err != nil { return nil, err } else { - // remove empty courses + // remove empty courses like " " or "" courses = removeEmptyCourses(courses) return courses, nil } } +// removeEmptyCourses removes empty courses from the list of courses func removeEmptyCourses(courses []string) []string { var filteredCourses []string for index, course := range courses { - if functions.OnlyWhitespace(course) || len(course) == 0 { - filteredCourses = append(courses[:index], courses[index+1:]...) + if !functions.OnlyWhitespace(course) || len(course) != 0 { + filteredCourses = append(filteredCourses, courses[index]) } } return filteredCourses diff --git a/backend/service/events/courseService_test.go b/backend/service/events/courseService_test.go new file mode 100644 index 0000000..b478a58 --- /dev/null +++ b/backend/service/events/courseService_test.go @@ -0,0 +1,39 @@ +package events + +import ( + "reflect" + "testing" +) + +func Test_removeEmptyCourses(t *testing.T) { + type args struct { + courses []string + } + tests := []struct { + name string + args args + want []string + }{ + { + name: "Test remove empty courses", + args: args{ + courses: []string{"", "test", "test2", ""}, + }, + want: []string{"test", "test2"}, + }, + { + name: "Test remove empty courses", + args: args{ + courses: []string{"", "test", "test2", "", "test3"}, + }, + want: []string{"test", "test2", "test3"}, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := removeEmptyCourses(tt.args.courses); !reflect.DeepEqual(got, tt.want) { + t.Errorf("removeEmptyCourses() = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/frontend/src/view/CourseSelection.vue b/frontend/src/view/CourseSelection.vue index 7d898bf..614880f 100644 --- a/frontend/src/view/CourseSelection.vue +++ b/frontend/src/view/CourseSelection.vue @@ -26,6 +26,18 @@ async function getCourses() { return { name: course }; }); }); + + // replace selected course if it is not available in the new courses list + if ( + selectedCourse.value.name !== "" && + !courses.value.some((course) => course.name === selectedCourse.value.name) + ) { + selectedCourse.value = { name: "" }; + } + // if course is selected, get the modules for the selected course + if (selectedCourse.value.name !== "") { + await getModules(); + } } const store = moduleStore(); @@ -42,9 +54,14 @@ const semesters: ComputedRef<{ name: string; value: string }[]> = computed( ], ); -const selectedSemester: Ref<{ name: string; value: string }> = ref( - semesters.value[0], -); +// return current semester summer form march to august and winter from september to february +const currentSemester: { name: string; value: string } = + new Date().getMonth() >= 2 && new Date().getMonth() <= 7 + ? semesters.value[1] + : semesters.value[0]; + +const selectedSemester: Ref<{ name: string; value: string }> = + ref(currentSemester); //if semesters get changed, refresh the selected semester ref with a watcher watch(