diff --git a/frontend/src/api/fetchEvents.ts b/frontend/src/api/fetchEvents.ts
new file mode 100644
index 0000000..7738036
--- /dev/null
+++ b/frontend/src/api/fetchEvents.ts
@@ -0,0 +1,33 @@
+//Calendar implementation for the HTWK Leipzig timetable. Evaluation and display of the individual dates in iCal format.
+//Copyright (C) 2024 HTWKalender support@htwkalender.de
+
+//This program is free software: you can redistribute it and/or modify
+//it under the terms of the GNU Affero General Public License as published by
+//the Free Software Foundation, either version 3 of the License, or
+//(at your option) any later version.
+
+//This program is distributed in the hope that it will be useful,
+//but WITHOUT ANY WARRANTY; without even the implied warranty of
+//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+//GNU Affero General Public License for more details.
+
+//You should have received a copy of the GNU Affero General Public License
+//along with this program. If not, see .
+
+// function to fetch course data from the API
+
+export async function fetchEventTypes(): Promise {
+ const eventTypes: string[] = [];
+ await fetch("/api/events/types")
+ .then((response) => {
+ return response.json() as Promise;
+ })
+ .then((responseModules: string[]) => {
+ responseModules.forEach((eventType: string) => {
+ eventTypes.push(
+ eventType,
+ );
+ });
+ });
+ return eventTypes;
+}
\ No newline at end of file
diff --git a/frontend/src/components/AdditionalModuleTable.vue b/frontend/src/components/AdditionalModuleTable.vue
index e62e436..d437567 100644
--- a/frontend/src/components/AdditionalModuleTable.vue
+++ b/frontend/src/components/AdditionalModuleTable.vue
@@ -30,6 +30,7 @@ import { useDialog } from "primevue/usedialog";
import router from "../router";
import { fetchModule } from "../api/fetchModule.ts";
import { useI18n } from "vue-i18n";
+import { fetchEventTypes } from "../api/fetchEvents.ts";
const dialog = useDialog();
const { t } = useI18n({ useScope: "global" });
@@ -39,6 +40,9 @@ if (store.isEmpty()) {
router.replace("/");
}
+const eventTypes: Ref = ref([]);
+
+
const mobilePage = inject("mobilePage") as Ref;
const filters = ref({
course: {
@@ -51,7 +55,7 @@ const filters = ref({
},
eventType: {
value: null,
- matchMode: FilterMatchMode.CONTAINS,
+ matchMode: FilterMatchMode.IN,
},
prof: {
value: null,
@@ -63,7 +67,7 @@ const loadedModules: Ref = ref(new Array(10));
const loadingData = ref(true);
-onMounted(() => {
+onMounted( () => {
fetchAllModules()
.then(
(data) =>
@@ -74,6 +78,10 @@ onMounted(() => {
.finally(() => {
loadingData.value = false;
});
+
+ fetchEventTypes().then((data) => {
+ eventTypes.value = data;
+ });
});
const ModuleInformation = defineAsyncComponent(
@@ -184,16 +192,20 @@ function unselectModule(event: DataTableRowUnselectEvent) {
-