diff --git a/cookbook/templates/recipe_view.html b/cookbook/templates/recipe_view.html index 2ec2b117..c0f62d47 100644 --- a/cookbook/templates/recipe_view.html +++ b/cookbook/templates/recipe_view.html @@ -79,6 +79,7 @@ window.CUSTOM_LOCALE = '{{ request.LANGUAGE_CODE }}' window.RECIPE_ID = {{recipe.pk}}; + window.RECIPE_SERVINGS = '{{ servings }}' window.SHARE_UID = '{{ share }}'; window.USER_PREF = { 'use_fractions': {% if request.user.userpreference.use_fractions %} true {% else %} false {% endif %}, diff --git a/cookbook/views/views.py b/cookbook/views/views.py index 1c12c77d..6454cf0d 100644 --- a/cookbook/views/views.py +++ b/cookbook/views/views.py @@ -171,9 +171,10 @@ def recipe_view(request, pk, share=None): created_at__gt=(timezone.now() - timezone.timedelta(minutes=5)), space=request.space).exists(): ViewLog.objects.create(recipe=recipe, created_by=request.user, space=request.space) - + if request.method == "GET": + servings = request.GET.get("servings") return render(request, 'recipe_view.html', - {'recipe': recipe, 'comments': comments, 'comment_form': comment_form, 'share': share, }) + {'recipe': recipe, 'comments': comments, 'comment_form': comment_form, 'share': share, 'servings': servings }) @group_required('user') diff --git a/vue/src/apps/MealPlanView/MealPlanView.vue b/vue/src/apps/MealPlanView/MealPlanView.vue index 58793c70..dc51fa23 100644 --- a/vue/src/apps/MealPlanView/MealPlanView.vue +++ b/vue/src/apps/MealPlanView/MealPlanView.vue @@ -126,7 +126,7 @@
- {{ plan.entry.recipe.name }} + {{ plan.entry.recipe.name }} {{ plan.entry.title }}
@@ -169,7 +169,7 @@ v-if="contextData && contextData.originalItem && contextData.originalItem.entry.recipe != null" @click=" $refs.menu.close() - openRecipe(contextData.originalItem.entry.recipe) + openRecipe(contextData.originalItem.entry.recipe, contextData.originalItem.entry.servings) " > @@ -392,8 +392,13 @@ export default { }, }, methods: { - openRecipe: function (recipe) { - window.open(this.resolveDjangoUrl("view_recipe", recipe.id)) + + getRecipeURL: function (recipe, servings) { + return this.resolveDjangoUrl("view_recipe",`${recipe.id}?servings=${servings}`) + }, + + openRecipe: function (recipe, servings) { + window.open(this.getRecipeURL(recipe, servings)) }, setStartingDay(days) { if (this.settings.startingDayOfWeek + days < 0) { diff --git a/vue/src/components/RecipeViewComponent.vue b/vue/src/components/RecipeViewComponent.vue index 07a051ad..584d354b 100644 --- a/vue/src/components/RecipeViewComponent.vue +++ b/vue/src/components/RecipeViewComponent.vue @@ -237,6 +237,7 @@ export default { }, props: { recipe_id: Number, + def_servings: Number, recipe_obj: {type: Object, default: null}, show_context_menu: {type: Boolean, default: true}, enable_keyword_links: {type: Boolean, default: true}, @@ -320,8 +321,13 @@ export default { if (this.recipe.image === null) this.printReady() - - this.servings = this.servings_cache[this.rootrecipe.id] = this.recipe.servings + window.RECIPE_SERVINGS = Number(window.RECIPE_SERVINGS) + if (window.RECIPE_SERVINGS && ! isNaN(window.RECIPE_SERVINGS)) { + //I am not sure this is the best way. This overwrites our servings cache, which may not be intended? + this.servings = window.RECIPE_SERVINGS + } else { + this.servings = this.servings_cache[this.rootrecipe.id] = this.recipe.servings + } this.loading = false setTimeout(() => {