From 7b245da95962ffdf11656aceeb6724c8a033a1f7 Mon Sep 17 00:00:00 2001 From: Tobias Zoghaib Date: Wed, 18 Sep 2024 16:21:07 +0200 Subject: [PATCH] CategoryStore, API calls --- software/src/App.vue | 3 ++ software/src/data/api/categoryApi.ts | 7 ++++ software/src/data/models/productModel.ts | 2 -- .../data/models/productWithCategoryModel.ts | 13 ++++++++ software/src/data/stores/categoryStore.ts | 25 ++++++++++++++ software/src/data/stores/productStore.ts | 14 ++++---- software/src/pages/productsPage/filterBar.vue | 12 ++++--- software/src/pages/productsPage/index.vue | 33 ++++--------------- .../src/pages/productsPage/productCard.vue | 19 +++++------ .../src/pages/productsPage/productDetails.vue | 4 +-- software/src/scripts/productScripts.ts | 3 +- 11 files changed, 83 insertions(+), 52 deletions(-) create mode 100644 software/src/data/api/categoryApi.ts create mode 100644 software/src/data/models/productWithCategoryModel.ts create mode 100644 software/src/data/stores/categoryStore.ts diff --git a/software/src/App.vue b/software/src/App.vue index 04b3e6e..0ee999e 100644 --- a/software/src/App.vue +++ b/software/src/App.vue @@ -6,9 +6,11 @@ import { ref } from 'vue'; import vuetify from './plugins/vuetify'; import navigationItems from './components/navigationItems.vue'; import { useProductStore } from './data/stores/productStore'; +import { useCategoryStore } from './data/stores/categoryStore'; const userStore = useUserStore() const productStore = useProductStore() +const categoryStore = useCategoryStore() const theme = useTheme() const navRail = ref(vuetify.display.mobile) @@ -16,6 +18,7 @@ theme.global.name.value = userStore.theme i18n.global.locale = userStore.language productStore.fetchAllProducts() +categoryStore.fetchAllCategories() \ No newline at end of file diff --git a/software/src/pages/productsPage/productCard.vue b/software/src/pages/productsPage/productCard.vue index d422b39..82bed89 100644 --- a/software/src/pages/productsPage/productCard.vue +++ b/software/src/pages/productsPage/productCard.vue @@ -1,15 +1,11 @@ @@ -25,9 +21,12 @@ defineProps({ {{ product.name }} - + +
+ + {{ product.category.name }} +
+
diff --git a/software/src/pages/productsPage/productDetails.vue b/software/src/pages/productsPage/productDetails.vue index 63fa35b..098d17f 100644 --- a/software/src/pages/productsPage/productDetails.vue +++ b/software/src/pages/productsPage/productDetails.vue @@ -6,14 +6,14 @@ import { ModelRef, ref } from 'vue'; import { useBasketStore } from '@/data/stores/basketStore'; import { calcProductPrice, productToBasketItem } from '@/scripts/productScripts'; import ActionDialog from '@/components/actionDialog.vue' +import { ProductWithCategoryModel } from '@/data/models/productWithCategoryModel'; const showDialog: ModelRef = defineModel() const nrOfArticles = ref(1) const basketStore = useBasketStore() const props = defineProps({ - product: ProductModel, - // todo productCategory: CategoryModel + product: ProductWithCategoryModel }) function addProductToBasket() { diff --git a/software/src/scripts/productScripts.ts b/software/src/scripts/productScripts.ts index 51701a4..8d8fce9 100644 --- a/software/src/scripts/productScripts.ts +++ b/software/src/scripts/productScripts.ts @@ -1,8 +1,9 @@ import { BasketItemModel } from "@/data/models/basketItemModel"; import { CategoryModel } from "@/data/models/categoryModel"; import { ProductModel } from "@/data/models/productModel"; +import { ProductWithCategoryModel } from "@/data/models/productWithCategoryModel"; -export function calcProductPrice(product: ProductModel, quantity: number = 1): number { +export function calcProductPrice(product: ProductWithCategoryModel, quantity: number = 1): number { return calcPrice(product.price, product.discount, quantity) }