From a684e89d962df696a5d9952b58cb38f98a38fff8 Mon Sep 17 00:00:00 2001 From: Elmar Kresse <18119527+masterElmar@users.noreply.github.com> Date: Tue, 17 Oct 2023 01:36:03 +0200 Subject: [PATCH] added information button to additional Modules --- backend/service/addRoute.go | 4 ++- backend/service/events/eventService.go | 2 ++ frontend/src/api/fetchModule.ts | 27 +++++++++++++++++++ frontend/src/components/AdditionalModules.vue | 10 +++++-- frontend/src/components/ModuleInformation.vue | 25 ++++++++++++----- frontend/src/main.ts | 2 ++ frontend/src/model/event.ts | 14 ++++++++++ frontend/src/model/module.ts | 5 ++++ 8 files changed, 80 insertions(+), 9 deletions(-) create mode 100644 frontend/src/api/fetchModule.ts create mode 100644 frontend/src/model/event.ts diff --git a/backend/service/addRoute.go b/backend/service/addRoute.go index 2bf004b..d5066bf 100644 --- a/backend/service/addRoute.go +++ b/backend/service/addRoute.go @@ -11,6 +11,7 @@ import ( "htwkalender/service/room" "io" "net/http" + "net/url" "os" ) @@ -181,7 +182,8 @@ func AddRoutes(app *pocketbase.PocketBase) { Method: http.MethodGet, Path: "/api/module", Handler: func(c echo.Context) error { - name := c.QueryParam("name") + name := c.Request().Header.Get("Name") + name, err := url.QueryUnescape(name) module, err := events.GetModuleByName(app, name) if err != nil { diff --git a/backend/service/events/eventService.go b/backend/service/events/eventService.go index 450ae43..edbd9c8 100644 --- a/backend/service/events/eventService.go +++ b/backend/service/events/eventService.go @@ -49,6 +49,8 @@ func GetAllModulesDistinct(app *pocketbase.PocketBase, c echo.Context) error { func GetModuleByName(app *pocketbase.PocketBase, name string) (model.Module, error) { events, err := db.FindAllEventsByModule(app, name) + println("Module: ", name) + if err != nil || len(events) == 0 { return model.Module{}, err } else { diff --git a/frontend/src/api/fetchModule.ts b/frontend/src/api/fetchModule.ts new file mode 100644 index 0000000..472046b --- /dev/null +++ b/frontend/src/api/fetchModule.ts @@ -0,0 +1,27 @@ +import { Module } from "../model/module.ts"; + +export async function fetchModule( name: string): Promise { + const request = new Request("/api/module", { + method: "GET", + headers: { + "Content-Type": "application/json", + Name: encodeURI(name), + }, + }); + + return await fetch(request) + .then((response) => { + return response.json(); + }) + .then( + (module: Module) => + new Module( + module.name, + module.course, + module.name, + module.prof, + module.semester, + module.events, + ), + ); +} \ No newline at end of file diff --git a/frontend/src/components/AdditionalModules.vue b/frontend/src/components/AdditionalModules.vue index 15aa235..f1843a7 100644 --- a/frontend/src/components/AdditionalModules.vue +++ b/frontend/src/components/AdditionalModules.vue @@ -9,6 +9,7 @@ import { useDialog } from "primevue/usedialog"; const dialog = useDialog(); import router from "../router"; +import { fetchModule } from "../api/fetchModule.ts"; const fetchedModules = async () => { return await fetchAllModules(); @@ -38,7 +39,12 @@ const ModuleInformation = defineAsyncComponent( ); //TODO add missing module prop informations for ModuleInformation.vue -function showInfo(module : Module) { +async function showInfo(moduleName : string) { + + const module: Ref = ref(new Module("", "", "", "", "", [])); + await fetchModule(moduleName).then((data) => { + module.value = data; + }); dialog.open(ModuleInformation, { props: { style: { @@ -108,7 +114,7 @@ function selectChange() { rounded outlined aria-label="Information" - @click.stop="showInfo(slotProps.option)" + @click.stop="showInfo(slotProps.option.name)" > diff --git a/frontend/src/components/ModuleInformation.vue b/frontend/src/components/ModuleInformation.vue index ee300e5..74ead85 100644 --- a/frontend/src/components/ModuleInformation.vue +++ b/frontend/src/components/ModuleInformation.vue @@ -4,9 +4,6 @@ import { Module } from "../model/module.ts"; const dialogRef = inject("dialogRef") as any; const module = dialogRef.value.data.module as Module; - -console.debug(module); -