From e17a42900a956db0065b091aa2a1525c4e73cac2 Mon Sep 17 00:00:00 2001 From: hay-kot Date: Mon, 5 Apr 2021 20:58:09 -0800 Subject: [PATCH] unified category/tag selector --- frontend/src/api/category.js | 5 ++ .../Admin/General/HomePageSettings.vue | 2 +- .../Admin/General/NewCategoryDialog.vue | 78 ------------------- .../FormHelpers/CategoryTagSelector.vue | 42 ++++++++-- .../components/Recipe/RecipeEditor/index.vue | 63 ++++----------- .../src/pages/Admin/MealPlanner/index.vue | 1 + mealie/db/models/recipe/tag.py | 4 +- mealie/routes/recipe/tag_routes.py | 10 ++- mealie/schema/category.py | 4 + 9 files changed, 71 insertions(+), 138 deletions(-) delete mode 100644 frontend/src/components/Admin/General/NewCategoryDialog.vue diff --git a/frontend/src/api/category.js b/frontend/src/api/category.js index 0f8ecd3fd..f60739c8d 100644 --- a/frontend/src/api/category.js +++ b/frontend/src/api/category.js @@ -44,6 +44,11 @@ export const tagAPI = { let response = await apiReq.get(tagURLs.getAll); return response.data; }, + async create(name) { + let response = await apiReq.post(tagURLs.getAll, { name: name }); + store.dispatch("requestTags"); + return response.data; + }, async getRecipesInTag(tag) { let response = await apiReq.get(tagURLs.getTag(tag)); return response.data; diff --git a/frontend/src/components/Admin/General/HomePageSettings.vue b/frontend/src/components/Admin/General/HomePageSettings.vue index b31c6b609..63b13909d 100644 --- a/frontend/src/components/Admin/General/HomePageSettings.vue +++ b/frontend/src/components/Admin/General/HomePageSettings.vue @@ -133,7 +133,7 @@ import { api } from "@/api"; import LanguageMenu from "@/components/UI/LanguageMenu"; import draggable from "vuedraggable"; -import NewCategoryDialog from "./NewCategoryDialog.vue"; +import NewCategoryDialog from "@/components/UI/Dialogs/NewCategoryDialog.vue"; export default { components: { diff --git a/frontend/src/components/Admin/General/NewCategoryDialog.vue b/frontend/src/components/Admin/General/NewCategoryDialog.vue deleted file mode 100644 index e9ad28f22..000000000 --- a/frontend/src/components/Admin/General/NewCategoryDialog.vue +++ /dev/null @@ -1,78 +0,0 @@ - - - - - \ No newline at end of file diff --git a/frontend/src/components/FormHelpers/CategoryTagSelector.vue b/frontend/src/components/FormHelpers/CategoryTagSelector.vue index 39785ec44..3bcdb2944 100644 --- a/frontend/src/components/FormHelpers/CategoryTagSelector.vue +++ b/frontend/src/components/FormHelpers/CategoryTagSelector.vue @@ -1,7 +1,8 @@ diff --git a/frontend/src/components/Recipe/RecipeEditor/index.vue b/frontend/src/components/Recipe/RecipeEditor/index.vue index 6917ad2c1..5e6cf46b1 100644 --- a/frontend/src/components/Recipe/RecipeEditor/index.vue +++ b/frontend/src/components/Recipe/RecipeEditor/index.vue @@ -114,60 +114,21 @@

{{ $t("recipe.categories") }}

- - - + :show-add="true" + :show-label="false" + />

{{ $t("recipe.tags") }}

- - - + :show-add="true" + :tag-selector="true" + :show-label="false" + />

{{ $t("recipe.notes") }}

None: + def __init__(self, name, session=None) -> None: self.name = name.strip() self.slug = slugify(self.name) diff --git a/mealie/routes/recipe/tag_routes.py b/mealie/routes/recipe/tag_routes.py index 11572316f..65dfbdc19 100644 --- a/mealie/routes/recipe/tag_routes.py +++ b/mealie/routes/recipe/tag_routes.py @@ -2,7 +2,7 @@ from fastapi import APIRouter, Depends from mealie.db.database import db from mealie.db.db_setup import generate_session from mealie.routes.deps import get_current_user -from mealie.schema.category import RecipeTagResponse +from mealie.schema.category import RecipeTagResponse, TagIn from mealie.schema.snackbar import SnackResponse from sqlalchemy.orm.session import Session @@ -19,6 +19,14 @@ async def get_all_recipe_tags(session: Session = Depends(generate_session)): """ Returns a list of available tags in the database """ return db.tags.get_all_limit_columns(session, ["slug", "name"]) +@router.post("") +async def create_recipe_tag( + tag: TagIn, session: Session = Depends(generate_session), current_user=Depends(get_current_user) +): + """ Creates a Tag in the database """ + + return db.tags.create(session, tag.dict()) + @router.get("/{tag}", response_model=RecipeTagResponse) def get_all_recipes_by_tag(tag: str, session: Session = Depends(generate_session)): diff --git a/mealie/schema/category.py b/mealie/schema/category.py index 36c6d7ec1..5e7f1c842 100644 --- a/mealie/schema/category.py +++ b/mealie/schema/category.py @@ -23,6 +23,10 @@ class RecipeCategoryResponse(CategoryBase): schema_extra = {"example": {"id": 1, "name": "dinner", "recipes": [{}]}} +class TagIn(CategoryIn): + pass + + class TagBase(CategoryBase): pass