mirror of
				https://github.com/mealie-recipes/mealie.git
				synced 2025-10-31 10:13:32 -04:00 
			
		
		
		
	Add functionality to edit mealplan item
This commit is contained in:
		| @@ -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=" | ||||||
|  |         if (newMeal.existing) { | ||||||
|  |           actions.updateOne(newMeal); | ||||||
|  |         } else { | ||||||
|           actions.createOne(newMeal); |           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, | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user