diff --git a/frontend/src/App.vue b/frontend/src/App.vue
index 4562c96..b220877 100644
--- a/frontend/src/App.vue
+++ b/frontend/src/App.vue
@@ -1,13 +1,24 @@
-
+
+
diff --git a/frontend/src/components/CalendarPreview.vue b/frontend/src/components/CalendarPreview.vue
index a01afe7..eb0a671 100644
--- a/frontend/src/components/CalendarPreview.vue
+++ b/frontend/src/components/CalendarPreview.vue
@@ -45,8 +45,6 @@ window.addEventListener("resize", updateMobile);
position="bottomright"
@update:visible="dialogVisible = $event"
>
- Hier könnte Ihre Werbung stehen!
-
-import { defineAsyncComponent, ref, Ref } from "vue";
+import { defineAsyncComponent, ref, Ref, watch} from "vue";
import { Module } from "../model/module.ts";
import { fetchAllModules } from "../api/fetchCourse.ts";
import moduleStore from "../store/moduleStore.ts";
@@ -17,6 +17,11 @@ const fetchedModules = async () => {
};
const store = moduleStore();
+
+const selectedModules: Ref = ref(
+ store.getAllModules()
+);
+
const modules: Ref = ref([]);
const filters = ref({
course: {
@@ -41,13 +46,29 @@ fetchedModules().then(
(modules.value = data.map((module: Module) => {
return module;
})),
-);
+).finally(() => {
+ // init selected modules from store with fetched modules and set selected modules
+ selectedModules.value = store.getAllModules().filter((module: Module) => {
+ return modules.value.some((m: Module) => m.uuid === module.uuid);
+ });
+});
+
+watch(selectedModules, () => {
+ //add missing modules to store
+ selectedModules.value.forEach((module: Module) => {
+ if (!store.getAllModules().some((m: Module) => m.uuid === module.uuid)) {
+ store.addModule(module);
+ }
+ });
+ //remove modules from store that are not selected anymore
+ store.getAllModules().forEach((module: Module) => {
+ if (!selectedModules.value.some((m: Module) => m.uuid === module.uuid)) {
+ store.removeModule(module);
+ }
+ });
+});
async function nextStep() {
- //selectedModules.value.forEach((module: Module) => {
- // moduleStore().addModule(module);
- //});
-
await router.push("/rename-modules");
}
@@ -75,59 +96,6 @@ async function showInfo(module: Module) {
},
});
}
-
-/*
-const display = (module: Module) => module.name + " (" + module.course + ")";
-
-const selectAll = ref(false);
-
-const onSelectAllChange = (event: MultiSelectAllChangeEvent) => {
- if (event.checked) {
- additionalModules.value = new Map(
- modules.value
- .filter((module: Module) => !store.hasModule(module))
- .map((module: Module) => [module.uuid, module]),
- );
- store.overwriteModules(modules.value);
- } else {
- store.overwriteModules(
- store.getAllModules().filter(
- (module: Module) => !additionalModules.value.has(module.uuid)
- )
- );
- additionalModules.value.clear();
- }
-
- selectAll.value = event.checked;
-};
-
-function selectChange(event : MultiSelectChangeEvent) {
- let wasSelected: boolean = additionalModules.value.has(event.value.uuid);
-
- if (event.originalEvent.target.) {
- additionalModules.value.set(event.value.uuid, event.value);
- } else {
- additionalModules.value.delete(event.value.uuid);
- }
- selectAll.value = store.countModules() === modules.value.length;
-}
-
-function itemsLabel(selectedModules: Module[]): string {
- return (selectedModules ? selectedModules.length : 0) != 1
- ? t("additionalModules.modules")
- : t("additionalModules.module");
-}
-
-function itemsLabelWithNumber(selectedModules: Module[]): string {
- return (
- selectedModules.length.toString() +
- " " +
- itemsLabel(selectedModules) +
- " " +
- t("additionalModules.dropDownFooterSelected")
- );
-}
-*/
@@ -141,6 +109,7 @@ function itemsLabelWithNumber(selectedModules: Module[]): string {
-
+
+
-
-
+