From c9ff0543e32d0f1cb4b54b6fe4e8b9c5489f3c6b Mon Sep 17 00:00:00 2001 From: xeals Date: Mon, 25 Oct 2021 17:29:40 +1100 Subject: [PATCH] Convert nutrition input from KJ to calories with preference --- cookbook/templates/forms/edit_internal_recipe.html | 3 +++ vue/src/apps/RecipeEditView/RecipeEditView.vue | 11 +++++++++-- vue/src/utils/utils.js | 8 ++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/cookbook/templates/forms/edit_internal_recipe.html b/cookbook/templates/forms/edit_internal_recipe.html index 85a04474..70e93083 100644 --- a/cookbook/templates/forms/edit_internal_recipe.html +++ b/cookbook/templates/forms/edit_internal_recipe.html @@ -32,6 +32,9 @@ window.CUSTOM_LOCALE = '{{ request.LANGUAGE_CODE }}' window.RECIPE_ID = {{ recipe.pk }} window.DEFAULT_UNIT = '{{request.user.userpreference.default_unit}}' + window.USER_PREF = { + 'use_kj': {% if request.user.userpreference.use_kj %} true {% else %} false {% endif %}, + } diff --git a/vue/src/apps/RecipeEditView/RecipeEditView.vue b/vue/src/apps/RecipeEditView/RecipeEditView.vue index 07665664..f516a99c 100644 --- a/vue/src/apps/RecipeEditView/RecipeEditView.vue +++ b/vue/src/apps/RecipeEditView/RecipeEditView.vue @@ -481,7 +481,7 @@ import {BootstrapVue} from 'bootstrap-vue' import 'bootstrap-vue/dist/bootstrap-vue.css' import draggable from 'vuedraggable' -import {ApiMixin, resolveDjangoUrl, ResolveUrlMixin, StandardToasts} from "@/utils/utils"; +import {ApiMixin, resolveDjangoUrl, ResolveUrlMixin, StandardToasts, convertEnergyToCalories} from "@/utils/utils"; import Multiselect from "vue-multiselect"; import {ApiApiFactory} from "@/utils/openapi/api"; import LoadingSpinner from "@/components/LoadingSpinner"; @@ -605,11 +605,13 @@ export default { updateRecipe: function (view_after) { let apiFactory = new ApiApiFactory() + this.normalizeEnergy() + this.sortSteps() for (let s of this.recipe.steps) { this.sortIngredients(s) - } + apiFactory.updateRecipe(this.recipe_id, this.recipe, {}).then((response) => { console.log(response) @@ -812,6 +814,11 @@ export default { el.select(); document.execCommand('copy'); document.body.removeChild(el); + }, + normalizeEnergy: function () { + if (this.recipe.nutrition && this.recipe.nutrition.calories) { + this.recipe.nutrition.calories = convertEnergyToCalories(this.recipe.nutrition.calories) + } } } diff --git a/vue/src/utils/utils.js b/vue/src/utils/utils.js index 8415f816..3ad19b73 100644 --- a/vue/src/utils/utils.js +++ b/vue/src/utils/utils.js @@ -167,6 +167,14 @@ export function calculateEnergy(amount, factor) { } } +export function convertEnergyToCalories(amount) { + if (getUserPreference('use_kj')) { + return amount / KILOJOULES_PER_CALORIE + } else { + return amount + } +} + /* * Utility functions to use OpenAPIs generically * */