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") - ); -} -*/ - - +