From cb6a6107f285c8c57699fe44c2083f24b6ff4366 Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Sat, 21 Sep 2024 10:48:36 +0200 Subject: [PATCH] wip --- src/components/Category.vue | 14 +++++++++++++- src/components/ListCategory.vue | 34 ++++++++++++++++++++++++--------- src/store/categoryStore.ts | 13 +++++++++++++ src/views/ListSettings.vue | 20 ++++++++++++++++++- 4 files changed, 70 insertions(+), 11 deletions(-) diff --git a/src/components/Category.vue b/src/components/Category.vue index 949663b..d805730 100644 --- a/src/components/Category.vue +++ b/src/components/Category.vue @@ -3,7 +3,13 @@

Categories for {{ listId }}

@@ -74,6 +80,12 @@ export default { this.newCategoryId = category.id this.category = category.name }, + sortUp() { + console.error("sortup ") + }, + sortDown() { + console.error("sort down") + }, async onSaveCategory() { if (this.newCategoryId === -1) { this.addCategory() diff --git a/src/components/ListCategory.vue b/src/components/ListCategory.vue index 5715527..1ec4ab2 100644 --- a/src/components/ListCategory.vue +++ b/src/components/ListCategory.vue @@ -1,22 +1,34 @@ @@ -28,6 +40,8 @@ import { useCategoryStore } from '../store/categoryStore.ts' import IconCheck from 'vue-material-design-icons/Check.vue' import IconPencil from 'vue-material-design-icons/Pencil.vue' +import IconArrowUp from 'vue-material-design-icons/ArrowUp.vue' +import IconArrowDown from 'vue-material-design-icons/ArrowDown.vue' export default { name: 'ListCategory', @@ -35,6 +49,8 @@ export default { components: { IconCheck, IconPencil, + IconArrowUp, + IconArrowDown, NcButton, NcTextField, }, diff --git a/src/store/categoryStore.ts b/src/store/categoryStore.ts index e343642..4a1feea 100644 --- a/src/store/categoryStore.ts +++ b/src/store/categoryStore.ts @@ -46,11 +46,24 @@ export const useCategoryStore = defineStore('category', { { id: category.id, newName: category.name, + order: category.order }, ) this.categories = { ...this.categories, [category.grocery_list]: data } }, + async updateCategory(category: ICategory) { + const { data } = await axios.post( + generateUrl('/apps/grocerylist/api/category/update'), + { + id: category.id, + newName: category.name, + order: category.order + }, + ) + // this.categories = { ...this.categories, [category.grocery_list]: data } + }, + async loadCategories(listId: number) { const response = await axios.get( generateUrl(`/apps/grocerylist/api/all_categories/${listId}`), diff --git a/src/views/ListSettings.vue b/src/views/ListSettings.vue index 47f5c34..d2179a9 100644 --- a/src/views/ListSettings.vue +++ b/src/views/ListSettings.vue @@ -13,7 +13,12 @@
    - +
@@ -80,6 +85,19 @@ export default { }, methods: { + async sortUp(category) { + category.order = category.order + 1 + + try { + this.categoryStore.updateCategory({ ...this.category, id: category.id, name: category.name, order: category.order }) + } catch (e) { + console.error(e) + showError(t('grocerylist', 'Could not update category order')) + } + }, + sortDown() { + console.error("sort down ") + }, /** * Handle loading categories, sets the loading state and triggers store updates */