From bcd1dd714d31e027f07e2a026f7b358390f3458c Mon Sep 17 00:00:00 2001 From: survellow <59056368+survellow@users.noreply.github.com> Date: Mon, 20 Nov 2023 02:24:22 +0100 Subject: [PATCH] 15 refactor additional modules to table --- backend/Dockerfile | 2 +- backend/go.mod | 2 +- frontend/src/components/AdditionalModules.vue | 158 ++++++++++++++++-- frontend/src/store/moduleStore.ts | 3 + 4 files changed, 151 insertions(+), 14 deletions(-) diff --git a/backend/Dockerfile b/backend/Dockerfile index 67a9d42..655af93 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.21.3-alpine +FROM golang:1.21-alpine # Set the Current Working Directory inside the container WORKDIR /app diff --git a/backend/go.mod b/backend/go.mod index 660cc3d..3a2ca8b 100644 --- a/backend/go.mod +++ b/backend/go.mod @@ -1,6 +1,6 @@ module htwkalender -go 1.21.3 +go 1.21 require ( github.com/google/uuid v1.3.1 diff --git a/frontend/src/components/AdditionalModules.vue b/frontend/src/components/AdditionalModules.vue index 3f2e786..bf08122 100644 --- a/frontend/src/components/AdditionalModules.vue +++ b/frontend/src/components/AdditionalModules.vue @@ -3,7 +3,7 @@ import { defineAsyncComponent, ref, Ref } from "vue"; import { Module } from "../model/module.ts"; import { fetchAllModules } from "../api/fetchCourse.ts"; import moduleStore from "../store/moduleStore.ts"; -import { MultiSelectAllChangeEvent } from "primevue/multiselect"; +import { FilterMatchMode } from "primevue/api"; import { useDialog } from "primevue/usedialog"; const dialog = useDialog(); @@ -15,9 +15,25 @@ const fetchedModules = async () => { return await fetchAllModules(); }; +const store = moduleStore(); const modules: Ref = ref([]); +const filters = ref({ + course: { + value: null, + matchMode: FilterMatchMode.CONTAINS, + }, + name: { + value: null, + matchMode: FilterMatchMode.CONTAINS, + }, + prof: { + value: null, + matchMode: FilterMatchMode.CONTAINS, + } +}); -const selectedModules: Ref = ref([] as Module[]); +//const selectedModules: Ref = ref([] as Module[]); +//const additionalModules: Ref> = ref(new Map()); fetchedModules().then( (data) => @@ -27,9 +43,9 @@ fetchedModules().then( ); async function nextStep() { - selectedModules.value.forEach((module: Module) => { - moduleStore().addModule(module); - }); + //selectedModules.value.forEach((module: Module) => { + // moduleStore().addModule(module); + //}); await router.push("/rename-modules"); } @@ -59,20 +75,42 @@ async function showInfo(module: Module) { }); } +/* const display = (module: Module) => module.name + " (" + module.course + ")"; const selectAll = ref(false); const onSelectAllChange = (event: MultiSelectAllChangeEvent) => { - selectedModules.value = event.checked - ? modules.value.map((module: Module) => module) - : []; + 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() { - selectAll.value = selectedModules.value.length === modules.value.length; +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; } +*/