mirror of
				https://github.com/mealie-recipes/mealie.git
				synced 2025-11-03 19:18:22 -05:00 
			
		
		
		
	Add functionality to edit mealplan item
This commit is contained in:
		
							parent
							
								
									4b55b838ed
								
							
						
					
					
						commit
						1197aa3f37
					
				@ -170,6 +170,7 @@ export default defineComponent({
 | 
				
			|||||||
    close() {
 | 
					    close() {
 | 
				
			||||||
      this.dialog = false;
 | 
					      this.dialog = false;
 | 
				
			||||||
      this.logDeprecatedProp("close");
 | 
					      this.logDeprecatedProp("close");
 | 
				
			||||||
 | 
					      this.$emit("closed");
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    logDeprecatedProp(val: string) {
 | 
					    logDeprecatedProp(val: string) {
 | 
				
			||||||
      console.warn(
 | 
					      console.warn(
 | 
				
			||||||
 | 
				
			|||||||
@ -249,6 +249,7 @@
 | 
				
			|||||||
  },
 | 
					  },
 | 
				
			||||||
  "meal-plan": {
 | 
					  "meal-plan": {
 | 
				
			||||||
    "create-a-new-meal-plan": "Create a New Meal Plan",
 | 
					    "create-a-new-meal-plan": "Create a New Meal Plan",
 | 
				
			||||||
 | 
					    "update-this-meal-plan": "Update this Meal Plan",
 | 
				
			||||||
    "dinner-this-week": "Dinner This Week",
 | 
					    "dinner-this-week": "Dinner This Week",
 | 
				
			||||||
    "dinner-today": "Dinner Today",
 | 
					    "dinner-today": "Dinner Today",
 | 
				
			||||||
    "dinner-tonight": "DINNER TONIGHT",
 | 
					    "dinner-tonight": "DINNER TONIGHT",
 | 
				
			||||||
 | 
				
			|||||||
@ -249,6 +249,7 @@
 | 
				
			|||||||
  },
 | 
					  },
 | 
				
			||||||
  "meal-plan": {
 | 
					  "meal-plan": {
 | 
				
			||||||
    "create-a-new-meal-plan": "Create a New Meal Plan",
 | 
					    "create-a-new-meal-plan": "Create a New Meal Plan",
 | 
				
			||||||
 | 
					    "update-this-meal-plan": "Update this Meal Plan",
 | 
				
			||||||
    "dinner-this-week": "Dinner This Week",
 | 
					    "dinner-this-week": "Dinner This Week",
 | 
				
			||||||
    "dinner-today": "Dinner Today",
 | 
					    "dinner-today": "Dinner Today",
 | 
				
			||||||
    "dinner-tonight": "DINNER TONIGHT",
 | 
					    "dinner-tonight": "DINNER TONIGHT",
 | 
				
			||||||
 | 
				
			|||||||
@ -249,6 +249,7 @@
 | 
				
			|||||||
  },
 | 
					  },
 | 
				
			||||||
  "meal-plan": {
 | 
					  "meal-plan": {
 | 
				
			||||||
    "create-a-new-meal-plan": "Create a New Meal Plan",
 | 
					    "create-a-new-meal-plan": "Create a New Meal Plan",
 | 
				
			||||||
 | 
					    "update-this-meal-plan": "Update this Meal Plan",
 | 
				
			||||||
    "dinner-this-week": "Dinner This Week",
 | 
					    "dinner-this-week": "Dinner This Week",
 | 
				
			||||||
    "dinner-today": "Dinner Today",
 | 
					    "dinner-today": "Dinner Today",
 | 
				
			||||||
    "dinner-tonight": "DINNER TONIGHT",
 | 
					    "dinner-tonight": "DINNER TONIGHT",
 | 
				
			||||||
 | 
				
			|||||||
@ -249,6 +249,7 @@
 | 
				
			|||||||
  },
 | 
					  },
 | 
				
			||||||
  "meal-plan": {
 | 
					  "meal-plan": {
 | 
				
			||||||
    "create-a-new-meal-plan": "Create a New Meal Plan",
 | 
					    "create-a-new-meal-plan": "Create a New Meal Plan",
 | 
				
			||||||
 | 
					    "update-this-meal-plan": "Update this Meal Plan",
 | 
				
			||||||
    "dinner-this-week": "今週の夕食",
 | 
					    "dinner-this-week": "今週の夕食",
 | 
				
			||||||
    "dinner-today": "今日の夕食",
 | 
					    "dinner-today": "今日の夕食",
 | 
				
			||||||
    "dinner-tonight": "今夜の夕食",
 | 
					    "dinner-tonight": "今夜の夕食",
 | 
				
			||||||
 | 
				
			|||||||
@ -249,6 +249,7 @@
 | 
				
			|||||||
  },
 | 
					  },
 | 
				
			||||||
  "meal-plan": {
 | 
					  "meal-plan": {
 | 
				
			||||||
    "create-a-new-meal-plan": "Create a New Meal Plan",
 | 
					    "create-a-new-meal-plan": "Create a New Meal Plan",
 | 
				
			||||||
 | 
					    "update-this-meal-plan": "Update this Meal Plan",
 | 
				
			||||||
    "dinner-this-week": "Dinner This Week",
 | 
					    "dinner-this-week": "Dinner This Week",
 | 
				
			||||||
    "dinner-today": "Dinner Today",
 | 
					    "dinner-today": "Dinner Today",
 | 
				
			||||||
    "dinner-tonight": "DINNER TONIGHT",
 | 
					    "dinner-tonight": "DINNER TONIGHT",
 | 
				
			||||||
 | 
				
			|||||||
@ -249,6 +249,7 @@
 | 
				
			|||||||
  },
 | 
					  },
 | 
				
			||||||
  "meal-plan": {
 | 
					  "meal-plan": {
 | 
				
			||||||
    "create-a-new-meal-plan": "Create a New Meal Plan",
 | 
					    "create-a-new-meal-plan": "Create a New Meal Plan",
 | 
				
			||||||
 | 
					    "update-this-meal-plan": "Update this Meal Plan",
 | 
				
			||||||
    "dinner-this-week": "Dinner This Week",
 | 
					    "dinner-this-week": "Dinner This Week",
 | 
				
			||||||
    "dinner-today": "Dinner Today",
 | 
					    "dinner-today": "Dinner Today",
 | 
				
			||||||
    "dinner-tonight": "DINNER TONIGHT",
 | 
					    "dinner-tonight": "DINNER TONIGHT",
 | 
				
			||||||
 | 
				
			|||||||
@ -249,6 +249,7 @@
 | 
				
			|||||||
  },
 | 
					  },
 | 
				
			||||||
  "meal-plan": {
 | 
					  "meal-plan": {
 | 
				
			||||||
    "create-a-new-meal-plan": "Create a New Meal Plan",
 | 
					    "create-a-new-meal-plan": "Create a New Meal Plan",
 | 
				
			||||||
 | 
					    "update-this-meal-plan": "Update this Meal Plan",
 | 
				
			||||||
    "dinner-this-week": "Dinner This Week",
 | 
					    "dinner-this-week": "Dinner This Week",
 | 
				
			||||||
    "dinner-today": "Dinner Today",
 | 
					    "dinner-today": "Dinner Today",
 | 
				
			||||||
    "dinner-tonight": "DINNER TONIGHT",
 | 
					    "dinner-tonight": "DINNER TONIGHT",
 | 
				
			||||||
 | 
				
			|||||||
@ -249,6 +249,7 @@
 | 
				
			|||||||
  },
 | 
					  },
 | 
				
			||||||
  "meal-plan": {
 | 
					  "meal-plan": {
 | 
				
			||||||
    "create-a-new-meal-plan": "Create a New Meal Plan",
 | 
					    "create-a-new-meal-plan": "Create a New Meal Plan",
 | 
				
			||||||
 | 
					    "update-this-meal-plan": "Update this Meal Plan",
 | 
				
			||||||
    "dinner-this-week": "Dinner This Week",
 | 
					    "dinner-this-week": "Dinner This Week",
 | 
				
			||||||
    "dinner-today": "Dinner Today",
 | 
					    "dinner-today": "Dinner Today",
 | 
				
			||||||
    "dinner-tonight": "DINNER TONIGHT",
 | 
					    "dinner-tonight": "DINNER TONIGHT",
 | 
				
			||||||
 | 
				
			|||||||
@ -1,15 +1,28 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <div>
 | 
					  <div>
 | 
				
			||||||
 | 
					    {{ state.dialog }}
 | 
				
			||||||
    <!-- Create Meal Dialog -->
 | 
					    <!-- Create Meal Dialog -->
 | 
				
			||||||
    <BaseDialog
 | 
					    <BaseDialog
 | 
				
			||||||
      v-model="state.dialog"
 | 
					      v-model="state.dialog"
 | 
				
			||||||
      :title="$tc('meal-plan.create-a-new-meal-plan')"
 | 
					      :title="$tc(newMeal.existing
 | 
				
			||||||
 | 
					        ? 'meal-plan.update-this-meal-plan'
 | 
				
			||||||
 | 
					        : 'meal-plan.create-a-new-meal-plan'
 | 
				
			||||||
 | 
					      )"
 | 
				
			||||||
 | 
					      :submit-text="$tc(newMeal.existing
 | 
				
			||||||
 | 
					        ? 'general.update'
 | 
				
			||||||
 | 
					        : 'general.create'
 | 
				
			||||||
 | 
					      )"
 | 
				
			||||||
      color="primary"
 | 
					      color="primary"
 | 
				
			||||||
      :icon="$globals.icons.foods"
 | 
					      :icon="$globals.icons.foods"
 | 
				
			||||||
      @submit="
 | 
					      @submit="
 | 
				
			||||||
        actions.createOne(newMeal);
 | 
					        if (newMeal.existing) {
 | 
				
			||||||
 | 
					          actions.updateOne(newMeal);
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					          actions.createOne(newMeal);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        resetDialog();
 | 
					        resetDialog();
 | 
				
			||||||
      "
 | 
					      "
 | 
				
			||||||
 | 
					      @close="resetDialog()"
 | 
				
			||||||
    >
 | 
					    >
 | 
				
			||||||
      <v-card-text>
 | 
					      <v-card-text>
 | 
				
			||||||
        <v-menu
 | 
					        <v-menu
 | 
				
			||||||
@ -68,7 +81,6 @@
 | 
				
			|||||||
        </v-card-actions>
 | 
					        </v-card-actions>
 | 
				
			||||||
      </v-card-text>
 | 
					      </v-card-text>
 | 
				
			||||||
    </BaseDialog>
 | 
					    </BaseDialog>
 | 
				
			||||||
 | 
					 | 
				
			||||||
    <v-row>
 | 
					    <v-row>
 | 
				
			||||||
      <v-col
 | 
					      <v-col
 | 
				
			||||||
        v-for="(plan, index) in mealplans"
 | 
					        v-for="(plan, index) in mealplans"
 | 
				
			||||||
@ -101,7 +113,9 @@
 | 
				
			|||||||
            class="my-1"
 | 
					            class="my-1"
 | 
				
			||||||
            :class="{ handle: $vuetify.breakpoint.smAndUp }"
 | 
					            :class="{ handle: $vuetify.breakpoint.smAndUp }"
 | 
				
			||||||
          >
 | 
					          >
 | 
				
			||||||
            <v-list-item>
 | 
					            <v-list-item
 | 
				
			||||||
 | 
					              @click="editMeal(mealplan)"
 | 
				
			||||||
 | 
					            >
 | 
				
			||||||
              <v-list-item-avatar :rounded="false">
 | 
					              <v-list-item-avatar :rounded="false">
 | 
				
			||||||
                <RecipeCardImage
 | 
					                <RecipeCardImage
 | 
				
			||||||
                  v-if="mealplan.recipe"
 | 
					                  v-if="mealplan.recipe"
 | 
				
			||||||
@ -213,7 +227,7 @@ import draggable from "vuedraggable";
 | 
				
			|||||||
import { MealsByDate } from "./types";
 | 
					import { MealsByDate } from "./types";
 | 
				
			||||||
import { useMealplans, usePlanTypeOptions, getEntryTypeText } from "~/composables/use-group-mealplan";
 | 
					import { useMealplans, usePlanTypeOptions, getEntryTypeText } from "~/composables/use-group-mealplan";
 | 
				
			||||||
import RecipeCardImage from "~/components/Domain/Recipe/RecipeCardImage.vue";
 | 
					import RecipeCardImage from "~/components/Domain/Recipe/RecipeCardImage.vue";
 | 
				
			||||||
import { PlanEntryType } from "~/lib/api/types/meal-plan";
 | 
					import { PlanEntryType, UpdatePlanEntry } from "~/lib/api/types/meal-plan";
 | 
				
			||||||
import { useUserApi } from "~/composables/api";
 | 
					import { useUserApi } from "~/composables/api";
 | 
				
			||||||
import { useGroupSelf } from "~/composables/use-groups";
 | 
					import { useGroupSelf } from "~/composables/use-groups";
 | 
				
			||||||
import { useRecipeSearch } from "~/composables/recipes/use-recipe-search";
 | 
					import { useRecipeSearch } from "~/composables/recipes/use-recipe-search";
 | 
				
			||||||
@ -290,8 +304,6 @@ export default defineComponent({
 | 
				
			|||||||
      if (dialog.note) {
 | 
					      if (dialog.note) {
 | 
				
			||||||
        newMeal.recipeId = undefined;
 | 
					        newMeal.recipeId = undefined;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      newMeal.title = "";
 | 
					 | 
				
			||||||
      newMeal.text = "";
 | 
					 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const newMeal = reactive({
 | 
					    const newMeal = reactive({
 | 
				
			||||||
@ -300,6 +312,9 @@ export default defineComponent({
 | 
				
			|||||||
      text: "",
 | 
					      text: "",
 | 
				
			||||||
      recipeId: undefined as string | undefined,
 | 
					      recipeId: undefined as string | undefined,
 | 
				
			||||||
      entryType: "dinner" as PlanEntryType,
 | 
					      entryType: "dinner" as PlanEntryType,
 | 
				
			||||||
 | 
					      existing: false,
 | 
				
			||||||
 | 
					      id: 0,
 | 
				
			||||||
 | 
					      groupId: ""
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function openDialog(date: Date) {
 | 
					    function openDialog(date: Date) {
 | 
				
			||||||
@ -307,12 +322,32 @@ export default defineComponent({
 | 
				
			|||||||
      state.value.dialog = true;
 | 
					      state.value.dialog = true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    function editMeal(mealplan: UpdatePlanEntry) {
 | 
				
			||||||
 | 
					      const { date, title, text, entryType, recipeId, id, groupId } = mealplan;
 | 
				
			||||||
 | 
					      if (!entryType) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      newMeal.date = date;
 | 
				
			||||||
 | 
					      newMeal.title = title || "";
 | 
				
			||||||
 | 
					      newMeal.text = text || "";
 | 
				
			||||||
 | 
					      newMeal.recipeId = recipeId;
 | 
				
			||||||
 | 
					      newMeal.entryType = entryType;
 | 
				
			||||||
 | 
					      newMeal.existing = true;
 | 
				
			||||||
 | 
					      newMeal.id = id;
 | 
				
			||||||
 | 
					      newMeal.groupId = groupId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      state.value.dialog = true;
 | 
				
			||||||
 | 
					      dialog.note = !recipeId;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function resetDialog() {
 | 
					    function resetDialog() {
 | 
				
			||||||
      newMeal.date = "";
 | 
					      newMeal.date = "";
 | 
				
			||||||
      newMeal.title = "";
 | 
					      newMeal.title = "";
 | 
				
			||||||
      newMeal.text = "";
 | 
					      newMeal.text = "";
 | 
				
			||||||
      newMeal.entryType = "dinner";
 | 
					      newMeal.entryType = "dinner";
 | 
				
			||||||
      newMeal.recipeId = undefined;
 | 
					      newMeal.recipeId = undefined;
 | 
				
			||||||
 | 
					      newMeal.existing = false;
 | 
				
			||||||
 | 
					      newMeal.id = 0;
 | 
				
			||||||
 | 
					      newMeal.groupId = "";
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    async function randomMeal(date: Date, type: PlanEntryType) {
 | 
					    async function randomMeal(date: Date, type: PlanEntryType) {
 | 
				
			||||||
@ -346,6 +381,7 @@ export default defineComponent({
 | 
				
			|||||||
      dialog,
 | 
					      dialog,
 | 
				
			||||||
      newMeal,
 | 
					      newMeal,
 | 
				
			||||||
      openDialog,
 | 
					      openDialog,
 | 
				
			||||||
 | 
					      editMeal,
 | 
				
			||||||
      resetDialog,
 | 
					      resetDialog,
 | 
				
			||||||
      randomMeal,
 | 
					      randomMeal,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user