From 03a9e513a8e0a52fa4a638491107aad2efd7906f Mon Sep 17 00:00:00 2001 From: Joyelle Ndagijimana Date: Wed, 19 Mar 2025 21:19:44 +0100 Subject: [PATCH] feat: theme card component aangemaakt --- frontend/src/components/BrowseThemes.vue | 50 +++++++++++++++++++- frontend/src/components/ThemeCard.vue | 27 +++++++++++ frontend/src/i18n/locale/en.json | 3 +- frontend/src/router/index.ts | 9 +++- frontend/src/utils/constants.ts | 22 +++++++++ frontend/src/views/SingleTheme.vue | 11 +++++ frontend/src/views/homepage/UserHomePage.vue | 41 +++++++++------- 7 files changed, 143 insertions(+), 20 deletions(-) create mode 100644 frontend/src/components/ThemeCard.vue create mode 100644 frontend/src/utils/constants.ts create mode 100644 frontend/src/views/SingleTheme.vue diff --git a/frontend/src/components/BrowseThemes.vue b/frontend/src/components/BrowseThemes.vue index 9575da5f..3e63a2f9 100644 --- a/frontend/src/components/BrowseThemes.vue +++ b/frontend/src/components/BrowseThemes.vue @@ -1,9 +1,57 @@ diff --git a/frontend/src/components/ThemeCard.vue b/frontend/src/components/ThemeCard.vue new file mode 100644 index 00000000..f84a9c2f --- /dev/null +++ b/frontend/src/components/ThemeCard.vue @@ -0,0 +1,27 @@ + + + + + diff --git a/frontend/src/i18n/locale/en.json b/frontend/src/i18n/locale/en.json index 2f6555a4..18be114d 100644 --- a/frontend/src/i18n/locale/en.json +++ b/frontend/src/i18n/locale/en.json @@ -28,5 +28,6 @@ "upper-secondary": "14-16 years old", "high-school": "16-18 years old", "older": "18 and older" - } + }, + "read-more": "read-more" } diff --git a/frontend/src/router/index.ts b/frontend/src/router/index.ts index 08618aac..0d1b5a0d 100644 --- a/frontend/src/router/index.ts +++ b/frontend/src/router/index.ts @@ -13,6 +13,7 @@ import UserClasses from "@/views/classes/UserClasses.vue"; import UserAssignments from "@/views/classes/UserAssignments.vue"; import authState from "@/services/auth/auth-service.ts"; import UserHomePage from "@/views/homepage/UserHomePage.vue"; +import SingleTheme from "@/views/SingleTheme.vue"; const router = createRouter({ history: createWebHistory(import.meta.env.BASE_URL), @@ -63,6 +64,12 @@ const router = createRouter({ ], }, + { + path: "/theme/:id", + name: "Theme", + component: SingleTheme, + meta: { requiresAuth: true }, + }, { path: "/assignment/create", name: "CreateAssigment", @@ -112,7 +119,7 @@ router.beforeEach(async (to, from, next) => { // Verify if user is logged in before accessing certain routes if (to.meta.requiresAuth) { if (!authState.isLoggedIn.value) { - //next("/login"); + //Next("/login"); next(); } else { next(); diff --git a/frontend/src/utils/constants.ts b/frontend/src/utils/constants.ts new file mode 100644 index 00000000..32ccb76f --- /dev/null +++ b/frontend/src/utils/constants.ts @@ -0,0 +1,22 @@ +import { ref } from "vue"; + +export const THEMESITEMS = ref([ + "all-themes", + "culture", + "electricity-and-mechanics", + "nature-and-climate", + "agriculture", + "society", + "math", + "technology", + "algorithms", +]); + +export const AGEITEMS = ref([ + "all-ages", + "primary-school", + "lower-secondary", + "upper-secondary", + "high-school", + "older", +]); diff --git a/frontend/src/views/SingleTheme.vue b/frontend/src/views/SingleTheme.vue new file mode 100644 index 00000000..85af7153 --- /dev/null +++ b/frontend/src/views/SingleTheme.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/frontend/src/views/homepage/UserHomePage.vue b/frontend/src/views/homepage/UserHomePage.vue index cfd4d7db..e90f0262 100644 --- a/frontend/src/views/homepage/UserHomePage.vue +++ b/frontend/src/views/homepage/UserHomePage.vue @@ -1,12 +1,11 @@