mirror of
https://github.com/TandoorRecipes/recipes.git
synced 2026-01-02 12:49:02 -05:00
food editor WIP
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
<invite-link-editor :item="item" @create="createEvent" @save="saveEvent" @delete="deleteEvent" dialog @close="dialog = false" v-if="model == SupportedModels.InviteLink"></invite-link-editor>
|
||||
<user-space-editor :item="item" @create="createEvent" @save="saveEvent" @delete="deleteEvent" dialog @close="dialog = false" v-if="model == SupportedModels.UserSpace"></user-space-editor>
|
||||
<meal-type-editor :item="item" @create="createEvent" @save="saveEvent" @delete="deleteEvent" dialog @close="dialog = false" v-if="model == SupportedModels.MealType"></meal-type-editor>
|
||||
<property-editor :item="item" @create="createEvent" @save="saveEvent" @delete="deleteEvent" dialog @close="dialog = false" v-if="model == SupportedModels.Property"></property-editor>
|
||||
</v-dialog>
|
||||
</template>
|
||||
|
||||
@@ -16,12 +17,14 @@ import {AccessToken, Food} from "@/openapi";
|
||||
import InviteLinkEditor from "@/components/model_editors/InviteLinkEditor.vue";
|
||||
import UserSpaceEditor from "@/components/model_editors/UserSpaceEditor.vue";
|
||||
import MealTypeEditor from "@/components/model_editors/MealTypeEditor.vue";
|
||||
import PropertyEditor from "@/components/model_editors/PropertyEditor.vue";
|
||||
|
||||
enum SupportedModels {
|
||||
AccessToken = 'AccessToken',
|
||||
InviteLink = 'InviteLink',
|
||||
UserSpace = 'UserSpace',
|
||||
MealType = 'MealType',
|
||||
Property = 'Property',
|
||||
}
|
||||
|
||||
const emit = defineEmits(['create', 'save', 'delete'])
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
<template>
|
||||
<v-input :hint="hint" persistent-hint :label="label">
|
||||
<!-- TODO label is not showing for some reason, for now in placeholder -->
|
||||
<!-- TODO support density prop -->
|
||||
<v-input :hint="hint" persistent-hint :label="label" class="">
|
||||
|
||||
<!-- TODO resolve-on-load false for now, race condition with model class, make prop once better solution is found -->
|
||||
<!-- TODO strange behavior/layering issues with appendTo body, find solution to make it work -->
|
||||
<!-- TODO label is not showing for some reason -->
|
||||
|
||||
<Multiselect
|
||||
:id="id"
|
||||
@@ -24,7 +25,7 @@
|
||||
:can-clear="canClear"
|
||||
:can-deselect="canClear"
|
||||
:limit="limit"
|
||||
:placeholder="$t('Search')"
|
||||
:placeholder="label"
|
||||
:noOptionsText="$t('No_Results')"
|
||||
:noResultsText="$t('No_Results')"
|
||||
/>
|
||||
|
||||
@@ -1,13 +1,77 @@
|
||||
<template>
|
||||
<v-card>
|
||||
<v-card-title>
|
||||
{{ $t(OBJ_LOCALIZATION_KEY) }}
|
||||
{{ $t(OBJ_LOCALIZATION_KEY) }} <span class="text-disabled">{{ editingObj.name }}</span>
|
||||
<v-btn class="float-right" icon="$close" variant="plain" @click="emit('close')" v-if="dialog"></v-btn>
|
||||
</v-card-title>
|
||||
<v-tabs v-model="tab">
|
||||
<v-tab value="food">{{ $t('Food') }}</v-tab>
|
||||
<v-tab value="properties">{{ $t('Properties') }}</v-tab>
|
||||
<v-tab value="conversions">{{ $t('Conversion') }}</v-tab>
|
||||
<v-tab value="misc">{{ $t('Miscellaneous') }}</v-tab>
|
||||
</v-tabs>
|
||||
|
||||
<v-card-text>
|
||||
<v-form>
|
||||
<v-text-field v-model="editingObj.name"></v-text-field>
|
||||
</v-form>
|
||||
<v-tabs-window v-model="tab">
|
||||
<v-tabs-window-item value="food">
|
||||
<v-form>
|
||||
<v-text-field :label="$t('Name')" v-model="editingObj.name"></v-text-field>
|
||||
<v-text-field :label="$t('Plural')" v-model="editingObj.pluralName"></v-text-field>
|
||||
<v-textarea :label="$t('Description')" v-model="editingObj.description"></v-textarea>
|
||||
<!-- TODO fix card overflow invisible, overflow-visible class is not working -->
|
||||
<model-select :label="$t('Category')" v-model="editingObj.supermarketCategory" model="SupermarketCategory"></model-select>
|
||||
</v-form>
|
||||
</v-tabs-window-item>
|
||||
|
||||
<v-tabs-window-item value="properties">
|
||||
<v-alert icon="$help">{{ $t('PropertiesFoodHelp') }}</v-alert>
|
||||
<v-form class="mt-5">
|
||||
<v-number-input :label="$t('Properties_Food_Amount')" v-model="editingObj.propertiesFoodAmount"></v-number-input>
|
||||
<model-select :label="$t('Properties_Food_Unit')" v-model="editingObj.propertiesFoodUnit" model="Unit"></model-select>
|
||||
|
||||
<v-btn-group density="compact">
|
||||
<v-btn color="create" @click="editingObj.properties.push({} as Property)" prepend-icon="$create">{{ $t('Add') }}</v-btn>
|
||||
<v-btn color="secondary" @click="addAllProperties" prepend-icon="fa-solid fa-list">{{ $t('AddAll') }}</v-btn>
|
||||
</v-btn-group>
|
||||
|
||||
<v-row class="mt-2" v-for="p in editingObj.properties" dense>
|
||||
<v-col cols="0" md="5">
|
||||
<v-number-input :step="10" v-model="p.propertyAmount" control-variant="stacked">
|
||||
<template #append-inner v-if="p.propertyType">
|
||||
<v-chip class="me-4">{{ p.propertyType.unit }} / {{ editingObj.propertiesFoodAmount }} <span v-if="editingObj.propertiesFoodUnit"> {{
|
||||
editingObj.propertiesFoodUnit.name
|
||||
}}</span>
|
||||
</v-chip>
|
||||
</template>
|
||||
</v-number-input>
|
||||
</v-col>
|
||||
<v-col cols="0" md="6">
|
||||
<!-- TODO fix card overflow invisible, overflow-visible class is not working -->
|
||||
<model-select :label="$t('Property')" v-model="p.propertyType" model="PropertyType"></model-select>
|
||||
</v-col>
|
||||
<v-col cols="0" md="1">
|
||||
<v-btn color="delete" @click="deleteFoodProperty(p)">
|
||||
<v-icon icon="$delete"></v-icon>
|
||||
</v-btn>
|
||||
</v-col>
|
||||
</v-row>
|
||||
<v-list >
|
||||
<v-list-item v-for="p in editingObj.properties" border>
|
||||
<span v-if="p.propertyType">{{ p.propertyAmount }} {{p.propertyType.unit}} {{p.propertyType.name}}
|
||||
<span v-if="editingObj.propertiesFoodUnit"> / {{ editingObj.propertiesFoodAmount }} {{ editingObj.propertiesFoodUnit.name }}</span>
|
||||
</span>
|
||||
<span v-else><i><{{$t('New')}}></i></span>
|
||||
<template #append>
|
||||
<v-btn color="edit"><v-icon icon="$edit"></v-icon>
|
||||
<model-editor-dialog model="Property" :item="p"></model-editor-dialog>
|
||||
</v-btn>
|
||||
</template>
|
||||
</v-list-item>
|
||||
</v-list>
|
||||
</v-form>
|
||||
</v-tabs-window-item>
|
||||
</v-tabs-window>
|
||||
|
||||
</v-card-text>
|
||||
<v-card-actions>
|
||||
<v-btn color="delete" prepend-icon="$delete" v-if="isUpdate">{{ $t('Delete') }}
|
||||
@@ -20,11 +84,14 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
|
||||
import {computed, onMounted, ref} from "vue";
|
||||
import {ApiApi, Food} from "@/openapi";
|
||||
import {computed, onMounted, Prop, ref} from "vue";
|
||||
import {ApiApi, Food, Property, Unit} from "@/openapi";
|
||||
import DeleteConfirmDialog from "@/components/dialogs/DeleteConfirmDialog.vue";
|
||||
import {useI18n} from "vue-i18n";
|
||||
import {ErrorMessageType, PreparedMessage, useMessageStore} from "@/stores/MessageStore";
|
||||
import ModelSelect from "@/components/inputs/ModelSelect.vue";
|
||||
import {VNumberInput} from 'vuetify/labs/VNumberInput'
|
||||
import ModelEditorDialog from "@/components/dialogs/ModelEditorDialog.vue"; //TODO remove once component is out of labs
|
||||
|
||||
const {t} = useI18n()
|
||||
|
||||
@@ -40,6 +107,14 @@ const OBJ_LOCALIZATION_KEY = 'Food'
|
||||
const editingObj = ref({} as Food)
|
||||
const loading = ref(false)
|
||||
|
||||
// object specific data (for selects/display)
|
||||
const tab = ref("properties")
|
||||
const propertyTableHeaders = ref([
|
||||
{title: t('Amount'), key: 'propertyAmount'},
|
||||
{title: t('Type'), key: 'propertyType'},
|
||||
{title: t('Delete'), key: 'action', align: 'end'},
|
||||
])
|
||||
|
||||
/**
|
||||
* checks if given object has ID property to determine if it needs to be updated or created
|
||||
*/
|
||||
@@ -57,7 +132,7 @@ const objectName = computed(() => {
|
||||
onMounted(() => {
|
||||
if (props.item != null) {
|
||||
editingObj.value = props.item
|
||||
} else if(props.itemId != null){
|
||||
} else if (props.itemId != null) {
|
||||
const api = new ApiApi()
|
||||
api.apiFoodRetrieve({id: props.itemId}).then(r => {
|
||||
editingObj.value = r
|
||||
@@ -66,7 +141,8 @@ onMounted(() => {
|
||||
})
|
||||
} else {
|
||||
// functions to populate defaults for new item
|
||||
|
||||
editingObj.value.propertiesFoodAmount = 100
|
||||
editingObj.value.propertiesFoodUnit = {name: 'g'} as Unit // TODO properly fetch default unit
|
||||
}
|
||||
})
|
||||
|
||||
@@ -76,7 +152,7 @@ onMounted(() => {
|
||||
async function saveObject() {
|
||||
let api = new ApiApi()
|
||||
if (isUpdate.value) {
|
||||
api.apiFoodUpdate({id: editingObj.value.id, accessToken: editingObj.value}).then(r => {
|
||||
api.apiFoodUpdate({id: editingObj.value.id, food: editingObj.value}).then(r => {
|
||||
editingObj.value = r
|
||||
emit('save', r)
|
||||
useMessageStore().addPreparedMessage(PreparedMessage.UPDATE_SUCCESS)
|
||||
@@ -84,7 +160,7 @@ async function saveObject() {
|
||||
useMessageStore().addError(ErrorMessageType.UPDATE_ERROR, err)
|
||||
})
|
||||
} else {
|
||||
api.apiFoodCreate({accessToken: editingObj.value}).then(r => {
|
||||
api.apiFoodCreate({food: editingObj.value}).then(r => {
|
||||
editingObj.value = r
|
||||
emit('create', r)
|
||||
useMessageStore().addPreparedMessage(PreparedMessage.CREATE_SUCCESS)
|
||||
@@ -107,6 +183,34 @@ async function deleteObject() {
|
||||
})
|
||||
}
|
||||
|
||||
// ------------------------------------------------------
|
||||
// object specific functions
|
||||
// ------------------------------------------------------
|
||||
|
||||
/**
|
||||
* load list of property types from server and add all types that are not yet linked
|
||||
* to the given food to its properties
|
||||
*/
|
||||
function addAllProperties() {
|
||||
const api = new ApiApi()
|
||||
api.apiPropertyTypeList().then(r => {
|
||||
r.results.forEach(pt => {
|
||||
if (editingObj.value.properties.findIndex(x => x.propertyType.name == pt.name) == -1) {
|
||||
editingObj.value.properties.push({propertyAmount: 0, propertyType: pt} as Property)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* remove property from food
|
||||
* //TODO also delete relation in database
|
||||
* @param property property to delete
|
||||
*/
|
||||
function deleteFoodProperty(property: Property) {
|
||||
editingObj.value.properties = editingObj.value.properties.filter(p => p !== property)
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
133
vue3/src/components/model_editors/PropertyEditor.vue
Normal file
133
vue3/src/components/model_editors/PropertyEditor.vue
Normal file
@@ -0,0 +1,133 @@
|
||||
<template>
|
||||
<v-card>
|
||||
<v-card-title>
|
||||
{{ $t(OBJ_LOCALIZATION_KEY) }}
|
||||
<v-btn class="float-right" icon="$close" variant="plain" @click="emit('close')" v-if="dialog"></v-btn>
|
||||
</v-card-title>
|
||||
|
||||
<v-card-text>
|
||||
<v-form>
|
||||
<v-number-input :step="10" v-model="editingObj.propertyAmount" control-variant="stacked">
|
||||
<template #append-inner v-if="editingObj.propertyType">
|
||||
<v-chip class="me-4">{{ editingObj.propertyType.unit }}</v-chip>
|
||||
</template>
|
||||
</v-number-input>
|
||||
<model-select :label="$t('Property')" v-model="editingObj.propertyType" model="PropertyType"></model-select>
|
||||
</v-form>
|
||||
</v-card-text>
|
||||
<v-card-actions>
|
||||
<v-btn color="delete" prepend-icon="$delete" v-if="isUpdate">{{ $t('Delete') }}
|
||||
<delete-confirm-dialog :object-name="objectName" @delete="deleteObject"></delete-confirm-dialog>
|
||||
</v-btn>
|
||||
<v-btn color="save" prepend-icon="$save" @click="saveObject">{{ isUpdate ? $t('Save') : $t('Create') }}</v-btn>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
|
||||
import {computed, onMounted, ref} from "vue";
|
||||
import {ApiApi, Property} from "@/openapi";
|
||||
import DeleteConfirmDialog from "@/components/dialogs/DeleteConfirmDialog.vue";
|
||||
import {useI18n} from "vue-i18n";
|
||||
import {ErrorMessageType, PreparedMessage, useMessageStore} from "@/stores/MessageStore";
|
||||
import ModelSelect from "@/components/inputs/ModelSelect.vue";
|
||||
import {VNumberInput} from 'vuetify/labs/VNumberInput' //TODO remove once component is out of labs
|
||||
|
||||
const {t} = useI18n()
|
||||
|
||||
const emit = defineEmits(['create', 'save', 'delete', 'close'])
|
||||
|
||||
const props = defineProps({
|
||||
item: {type: {} as Property, required: false},
|
||||
itemId: {type: String, required: false},
|
||||
dialog: {type: Boolean, default: false}
|
||||
})
|
||||
|
||||
const OBJ_LOCALIZATION_KEY = 'Food'
|
||||
const editingObj = ref({} as Property)
|
||||
const loading = ref(false)
|
||||
|
||||
// object specific data (for selects/display)
|
||||
|
||||
/**
|
||||
* checks if given object has ID property to determine if it needs to be updated or created
|
||||
*/
|
||||
const isUpdate = computed(() => {
|
||||
return Object.keys(editingObj.value).length > 0
|
||||
})
|
||||
|
||||
/**
|
||||
* display name for object in headers/delete dialog/...
|
||||
*/
|
||||
const objectName = computed(() => {
|
||||
return isUpdate ? `${t(OBJ_LOCALIZATION_KEY)} ${editingObj.value.token}` : `${t(OBJ_LOCALIZATION_KEY)} (${t('New')})`
|
||||
})
|
||||
|
||||
onMounted(() => {
|
||||
if (props.item != null) {
|
||||
editingObj.value = props.item
|
||||
} else if (props.itemId != null) {
|
||||
const api = new ApiApi()
|
||||
api.apiPropertyRetrieve({id: props.itemId}).then(r => {
|
||||
editingObj.value = r
|
||||
}).catch(err => {
|
||||
useMessageStore().addError(ErrorMessageType.FETCH_ERROR, err)
|
||||
})
|
||||
} else {
|
||||
// functions to populate defaults for new item
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
/**
|
||||
* saves the edited object in the database
|
||||
*/
|
||||
async function saveObject() {
|
||||
let api = new ApiApi()
|
||||
if (isUpdate.value) {
|
||||
api.apiPropertyUpdate({id: editingObj.value.id, property: editingObj.value}).then(r => {
|
||||
editingObj.value = r
|
||||
emit('save', r)
|
||||
useMessageStore().addPreparedMessage(PreparedMessage.UPDATE_SUCCESS)
|
||||
}).catch(err => {
|
||||
useMessageStore().addError(ErrorMessageType.UPDATE_ERROR, err)
|
||||
})
|
||||
} else {
|
||||
api.apiPropertyCreate({property: editingObj.value}).then(r => {
|
||||
editingObj.value = r
|
||||
emit('create', r)
|
||||
useMessageStore().addPreparedMessage(PreparedMessage.CREATE_SUCCESS)
|
||||
}).catch(err => {
|
||||
useMessageStore().addError(ErrorMessageType.CREATE_ERROR, err)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* deletes the editing object from the database
|
||||
*/
|
||||
async function deleteObject() {
|
||||
if (editingObj.value.id !== undefined) {
|
||||
let api = new ApiApi()
|
||||
api.apiPropertyDestroy({id: editingObj.value.id}).then(r => {
|
||||
editingObj.value = {} as Property
|
||||
emit('delete', editingObj.value)
|
||||
}).catch(err => {
|
||||
useMessageStore().addError(ErrorMessageType.DELETE_ERROR, err)
|
||||
})
|
||||
} else {
|
||||
editingObj.value = {} as Property
|
||||
emit('delete', editingObj.value)
|
||||
}
|
||||
}
|
||||
|
||||
// ------------------------------------------------------
|
||||
// object specific functions
|
||||
// ------------------------------------------------------
|
||||
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"Access_Token": "",
|
||||
"Add": "",
|
||||
"AddAll": "",
|
||||
"AddFoodToShopping": "",
|
||||
"AddToShopping": "",
|
||||
"Add_Servings_to_Shopping": "",
|
||||
@@ -147,6 +148,7 @@
|
||||
"Merge": "",
|
||||
"Merge_Keyword": "",
|
||||
"Message": "",
|
||||
"Miscellaneous": "",
|
||||
"Monday": "",
|
||||
"Month": "",
|
||||
"Move": "",
|
||||
@@ -201,6 +203,7 @@
|
||||
"Previous_Period": "",
|
||||
"Print": "",
|
||||
"Profile": "",
|
||||
"PropertiesFoodHelp": "",
|
||||
"Protected": "",
|
||||
"Proteins": "",
|
||||
"Quick actions": "",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"Access_Token": "",
|
||||
"Add": "Добави",
|
||||
"AddAll": "",
|
||||
"AddFoodToShopping": "Добавете {food} към списъка си за пазаруване",
|
||||
"AddToShopping": "Добавяне към списъка за пазаруване",
|
||||
"Add_Servings_to_Shopping": "Добавете {servings} порции към Пазаруване",
|
||||
@@ -141,6 +142,7 @@
|
||||
"Meal_Types": "Видове хранене",
|
||||
"Merge": "Обединяване",
|
||||
"Merge_Keyword": "Обединяване на ключова дума",
|
||||
"Miscellaneous": "",
|
||||
"Monday": "",
|
||||
"Month": "Месец",
|
||||
"Move": "Премести",
|
||||
@@ -194,6 +196,7 @@
|
||||
"Previous_Period": "Предишен период",
|
||||
"Print": "Печат",
|
||||
"Profile": "",
|
||||
"PropertiesFoodHelp": "",
|
||||
"Protected": "Защитен",
|
||||
"Proteins": "Протеини (белтъчини)",
|
||||
"Quick actions": "Бързи действия",
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"Access_Token": "",
|
||||
"Account": "",
|
||||
"Add": "",
|
||||
"AddAll": "",
|
||||
"AddFoodToShopping": "",
|
||||
"AddToShopping": "",
|
||||
"Add_Servings_to_Shopping": "",
|
||||
@@ -197,6 +198,7 @@
|
||||
"Merge": "",
|
||||
"Merge_Keyword": "Fusioneu paraula clau",
|
||||
"Message": "",
|
||||
"Miscellaneous": "",
|
||||
"Monday": "",
|
||||
"Month": "",
|
||||
"Move": "",
|
||||
@@ -267,6 +269,7 @@
|
||||
"Private_Recipe_Help": "Només tu i la gent amb qui l'has compartit podran veure aquesta recepta.",
|
||||
"Profile": "",
|
||||
"Properties": "",
|
||||
"PropertiesFoodHelp": "",
|
||||
"Properties_Food_Amount": "",
|
||||
"Properties_Food_Unit": "",
|
||||
"Property": "",
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"Access_Token": "",
|
||||
"Account": "Účet",
|
||||
"Add": "Přidat",
|
||||
"AddAll": "",
|
||||
"AddFoodToShopping": "Přidat {food} na váš nákupní seznam",
|
||||
"AddToShopping": "Přidat do nákupního seznamu",
|
||||
"Add_Servings_to_Shopping": "Přidat {servings} porce na nákupní seznam",
|
||||
@@ -196,6 +197,7 @@
|
||||
"Merge": "Spojit",
|
||||
"Merge_Keyword": "Sloučit štítek",
|
||||
"Message": "Zpráva",
|
||||
"Miscellaneous": "",
|
||||
"Monday": "",
|
||||
"Month": "Měsíc",
|
||||
"Move": "Přesunout",
|
||||
@@ -265,6 +267,7 @@
|
||||
"Private_Recipe_Help": "Recept můžete zobrazit pouze vy a lidé, se kterými jej sdílíte.",
|
||||
"Profile": "",
|
||||
"Properties": "Nutriční vlastnosti",
|
||||
"PropertiesFoodHelp": "",
|
||||
"Properties_Food_Amount": "Množství nutriční vlastnosti",
|
||||
"Properties_Food_Unit": "Jednotka nutriční vlastnosti",
|
||||
"Property": "Nutriční vlastnost",
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"Access_Token": "",
|
||||
"Account": "Bruger",
|
||||
"Add": "Tilføj",
|
||||
"AddAll": "",
|
||||
"AddFoodToShopping": "Tilføj {food} til indkøbsliste",
|
||||
"AddToShopping": "Tilføj til indkøbsliste",
|
||||
"Add_Servings_to_Shopping": "Tilføj {servings} serveringer til indkøb",
|
||||
@@ -183,6 +184,7 @@
|
||||
"Merge": "Sammenflet",
|
||||
"Merge_Keyword": "Sammenflet nøgleord",
|
||||
"Message": "Besked",
|
||||
"Miscellaneous": "",
|
||||
"Monday": "",
|
||||
"Month": "Måned",
|
||||
"Move": "Flyt",
|
||||
@@ -250,6 +252,7 @@
|
||||
"Private_Recipe_Help": "Opskriften er kun synlig for dig, og dem som den er delt med.",
|
||||
"Profile": "",
|
||||
"Properties": "Egenskaber",
|
||||
"PropertiesFoodHelp": "",
|
||||
"Property": "Egenskab",
|
||||
"Protected": "Beskyttet",
|
||||
"Proteins": "Proteiner",
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"Access_Token": "Zugriffstoken",
|
||||
"Account": "Konto",
|
||||
"Add": "Hinzufügen",
|
||||
"AddAll": "Alle Hinzufügen",
|
||||
"AddFoodToShopping": "Fügen Sie {food} zur Einkaufsliste hinzu",
|
||||
"AddToShopping": "Zur Einkaufsliste hinzufügen",
|
||||
"Add_Servings_to_Shopping": "{servings} Portionen zum Einkauf hinzufügen",
|
||||
@@ -199,6 +200,7 @@
|
||||
"Merge": "Zusammenführen",
|
||||
"Merge_Keyword": "Schlagworte zusammenführen",
|
||||
"Message": "Nachricht",
|
||||
"Miscellaneous": "Sonstige",
|
||||
"Monday": "Montag",
|
||||
"Month": "Monat",
|
||||
"Move": "Verschieben",
|
||||
@@ -269,6 +271,7 @@
|
||||
"Private_Recipe_Help": "Dieses Rezept ist nur für dich und Personen mit denen du es geteilt hast sichtbar.",
|
||||
"Profile": "Profil",
|
||||
"Properties": "Eigenschaften",
|
||||
"PropertiesFoodHelp": "Jedes Lebensmittel kann Eigenschaften zugeordnet bekommen. Rezepte berechnen die Summe der Eigenschaften basierend auf den verwendeten Lebensmitteln und Ihren Mengen.",
|
||||
"Properties_Food_Amount": "Eigenschaften: Lebensmittelmenge",
|
||||
"Properties_Food_Unit": "Nährwert Einheit",
|
||||
"Property": "Eigenschaft",
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"Access_Token": "",
|
||||
"Account": "Λογαριασμός",
|
||||
"Add": "Προσθήκη",
|
||||
"AddAll": "",
|
||||
"AddFoodToShopping": "Προσθήκη του φαγητού {food} στη λίστα αγορών σας",
|
||||
"AddToShopping": "Προσθήκη στη λίστα αγορών",
|
||||
"Add_Servings_to_Shopping": "Προσθήκη {servings} μερίδων στις αγορές",
|
||||
@@ -178,6 +179,7 @@
|
||||
"Merge": "Συγχώνευση",
|
||||
"Merge_Keyword": "Συγχώνευση λέξης-κλειδί",
|
||||
"Message": "Μήνυμα",
|
||||
"Miscellaneous": "",
|
||||
"Monday": "",
|
||||
"Month": "Μήνας",
|
||||
"Move": "Μετακίνηση",
|
||||
@@ -242,6 +244,7 @@
|
||||
"Private_Recipe_Help": "Η συνταγή είναι ορατή μόνο σε εσάς και στα άτομα με τα οποία την μοιράζεστε.",
|
||||
"Profile": "",
|
||||
"Properties": "Ιδιότητες",
|
||||
"PropertiesFoodHelp": "",
|
||||
"Property": "Ιδιότητα",
|
||||
"Protected": "Προστατευμένο",
|
||||
"Proteins": "Πρωτεΐνες",
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"Access_Token": "Access Token",
|
||||
"Account": "Account",
|
||||
"Add": "Add",
|
||||
"AddAll": "Add all",
|
||||
"AddFoodToShopping": "Add {food} to your shopping list",
|
||||
"AddToShopping": "Add to shopping list",
|
||||
"Add_Servings_to_Shopping": "Add {servings} Servings to Shopping",
|
||||
@@ -199,6 +200,7 @@
|
||||
"Merge": "Merge",
|
||||
"Merge_Keyword": "Merge Keyword",
|
||||
"Message": "Message",
|
||||
"Miscellaneous": "Miscellaneous",
|
||||
"Monday": "Monday",
|
||||
"Month": "Month",
|
||||
"Move": "Move",
|
||||
@@ -270,6 +272,7 @@
|
||||
"Private_Recipe_Help": "Recipe is only shown to you and people its shared with.",
|
||||
"Profile": "Profile",
|
||||
"Properties": "Properties",
|
||||
"PropertiesFoodHelp": "Every food can have properties. Recipes calculate the properties automatically, based on the properties of their foods and the amount given in the ingredients.",
|
||||
"Properties_Food_Amount": "Properties Food Amount",
|
||||
"Properties_Food_Unit": "Properties Food Unit",
|
||||
"Property": "Property",
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"Access_Token": "",
|
||||
"Account": "Cuenta",
|
||||
"Add": "Añadir",
|
||||
"AddAll": "",
|
||||
"AddFoodToShopping": "Añadir {food} a la lista de la compra",
|
||||
"AddToShopping": "Añadir a la lista de la compra",
|
||||
"Add_Servings_to_Shopping": "Añadir {servings} raciones a la compra",
|
||||
@@ -198,6 +199,7 @@
|
||||
"Merge": "Unificar",
|
||||
"Merge_Keyword": "Fusionar palabra clave",
|
||||
"Message": "Mensaje",
|
||||
"Miscellaneous": "",
|
||||
"Monday": "",
|
||||
"Month": "Mes",
|
||||
"Move": "Mover",
|
||||
@@ -268,6 +270,7 @@
|
||||
"Private_Recipe_Help": "La receta solo podrás verla tu y la gente con la que esta compartida.",
|
||||
"Profile": "",
|
||||
"Properties": "Propiedades",
|
||||
"PropertiesFoodHelp": "",
|
||||
"Property": "Propiedad",
|
||||
"Property_Editor": "Editor de Propiedades",
|
||||
"Protected": "Protegido",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"Access_Token": "",
|
||||
"Add": "Lisää",
|
||||
"AddAll": "",
|
||||
"Add_Step": "Lisää Vaihe",
|
||||
"Add_nutrition_recipe": "Lisää ravintoaine reseptiin",
|
||||
"Add_to_Plan": "Lisää suunnitelmaan",
|
||||
@@ -96,6 +97,7 @@
|
||||
"Meal_Types": "Ateriatyypit",
|
||||
"Merge": "Yhdistä",
|
||||
"Merge_Keyword": "Yhdistä Avainsana",
|
||||
"Miscellaneous": "",
|
||||
"Monday": "",
|
||||
"Month": "Kuukausi",
|
||||
"Move": "Siirry",
|
||||
@@ -135,6 +137,7 @@
|
||||
"Previous_Period": "Edellinen Jakso",
|
||||
"Print": "Tulosta",
|
||||
"Profile": "",
|
||||
"PropertiesFoodHelp": "",
|
||||
"Proteins": "Proteiinit",
|
||||
"Rating": "Luokitus",
|
||||
"Recently_Viewed": "Äskettäin katsotut",
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"Access_Token": "",
|
||||
"Account": "Compte",
|
||||
"Add": "Ajouter",
|
||||
"AddAll": "",
|
||||
"AddFoodToShopping": "Ajouter l’aliment {food} à votre liste de courses",
|
||||
"AddToShopping": "Ajouter à la liste de courses",
|
||||
"Add_Servings_to_Shopping": "Ajouter {servings} portions aux courses",
|
||||
@@ -197,6 +198,7 @@
|
||||
"Merge": "Fusionner",
|
||||
"Merge_Keyword": "Fusionner le mot-clé",
|
||||
"Message": "Message",
|
||||
"Miscellaneous": "",
|
||||
"Monday": "",
|
||||
"Month": "Mois",
|
||||
"Move": "Déplacer",
|
||||
@@ -267,6 +269,7 @@
|
||||
"Private_Recipe_Help": "La recette est uniquement visible par vous et les gens avec qui elle est partagée.",
|
||||
"Profile": "",
|
||||
"Properties": "Propriétés",
|
||||
"PropertiesFoodHelp": "",
|
||||
"Properties_Food_Amount": "Propriété Quantité de nourriture",
|
||||
"Properties_Food_Unit": "Propriété Unité de nourriture",
|
||||
"Property": "Propriété",
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"Access_Token": "",
|
||||
"Account": "חשבון",
|
||||
"Add": "הוספה",
|
||||
"AddAll": "",
|
||||
"AddFoodToShopping": "הוסף {מזון} לרשימת הקניות",
|
||||
"AddToShopping": "הוסף לרשימת קניות",
|
||||
"Add_Servings_to_Shopping": "הוסף{מנה}מנות לקנייה",
|
||||
@@ -198,6 +199,7 @@
|
||||
"Merge": "איחוד",
|
||||
"Merge_Keyword": "איחוד מילת מפתח",
|
||||
"Message": "הודעה",
|
||||
"Miscellaneous": "",
|
||||
"Monday": "",
|
||||
"Month": "חודש",
|
||||
"Move": "העברה",
|
||||
@@ -268,6 +270,7 @@
|
||||
"Private_Recipe_Help": "המתכון מוצג רק לך ולאנשים ששותפו.",
|
||||
"Profile": "",
|
||||
"Properties": "ערכים",
|
||||
"PropertiesFoodHelp": "",
|
||||
"Properties_Food_Amount": "הגדרות כמות אוכל",
|
||||
"Properties_Food_Unit": "הגדרות יחידת אוכל",
|
||||
"Property": "נכס",
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"Access_Token": "",
|
||||
"Account": "Fiók",
|
||||
"Add": "Hozzáadás",
|
||||
"AddAll": "",
|
||||
"AddFoodToShopping": "{food} hozzáadása bevásárlólistához",
|
||||
"AddToShopping": "Hozzáadás a bevásárlólistához",
|
||||
"Add_Servings_to_Shopping": "",
|
||||
@@ -179,6 +180,7 @@
|
||||
"Merge": "Összefűzés",
|
||||
"Merge_Keyword": "Kulcsszó összevonása",
|
||||
"Message": "Üzenet",
|
||||
"Miscellaneous": "",
|
||||
"Monday": "",
|
||||
"Month": "Hónap",
|
||||
"Move": "Mozgatás",
|
||||
@@ -244,6 +246,7 @@
|
||||
"Private_Recipe_Help": "A recept csak Önnek és azoknak az embereknek jelenik meg, akikkel megosztotta.",
|
||||
"Profile": "",
|
||||
"Properties": "Tulajdonságok",
|
||||
"PropertiesFoodHelp": "",
|
||||
"Property": "Tulajdonság",
|
||||
"Protected": "Védett",
|
||||
"Proteins": "Fehérjék",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"Access_Token": "",
|
||||
"Add": "",
|
||||
"AddAll": "",
|
||||
"Add_nutrition_recipe": "Ավելացնել սննդայնություն բաղադրատոմսին",
|
||||
"Add_to_Book": "",
|
||||
"Add_to_Plan": "Ավելացնել պլանին",
|
||||
@@ -61,6 +62,7 @@
|
||||
"Meal_Plan": "Ճաշացուցակ",
|
||||
"Merge": "Միացնել",
|
||||
"Merge_Keyword": "Միացնել բանալի բառը",
|
||||
"Miscellaneous": "",
|
||||
"Monday": "",
|
||||
"Move": "Տեղափոխել",
|
||||
"Move_Food": "Տեղափոխել սննդամթերքը",
|
||||
@@ -81,6 +83,7 @@
|
||||
"Preparation": "",
|
||||
"Print": "Տպել",
|
||||
"Profile": "",
|
||||
"PropertiesFoodHelp": "",
|
||||
"Proteins": "",
|
||||
"Rating": "",
|
||||
"Recently_Viewed": "Վերջերս դիտած",
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"Access_Token": "",
|
||||
"Account": "",
|
||||
"Add": "Tambahkan",
|
||||
"AddAll": "",
|
||||
"AddFoodToShopping": "",
|
||||
"AddToShopping": "",
|
||||
"Add_Servings_to_Shopping": "",
|
||||
@@ -164,6 +165,7 @@
|
||||
"Merge": "Menggabungkan",
|
||||
"Merge_Keyword": "Gabungkan Kata Kunci",
|
||||
"Message": "",
|
||||
"Miscellaneous": "",
|
||||
"Monday": "",
|
||||
"Month": "",
|
||||
"Move": "Bergerak",
|
||||
@@ -221,6 +223,7 @@
|
||||
"Private_Recipe": "Resep Pribadi",
|
||||
"Private_Recipe_Help": "Resep hanya diperlihatkan kepada Anda dan orang-orang yang dibagikan resep tersebut.",
|
||||
"Profile": "",
|
||||
"PropertiesFoodHelp": "",
|
||||
"Protected": "Terlindung",
|
||||
"Proteins": "Protein",
|
||||
"Quick actions": "",
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"Access_Token": "",
|
||||
"Account": "",
|
||||
"Add": "",
|
||||
"AddAll": "",
|
||||
"AddFoodToShopping": "",
|
||||
"AddToShopping": "",
|
||||
"Add_Servings_to_Shopping": "",
|
||||
@@ -197,6 +198,7 @@
|
||||
"Merge": "",
|
||||
"Merge_Keyword": "",
|
||||
"Message": "",
|
||||
"Miscellaneous": "",
|
||||
"Monday": "",
|
||||
"Month": "",
|
||||
"Move": "",
|
||||
@@ -267,6 +269,7 @@
|
||||
"Private_Recipe_Help": "",
|
||||
"Profile": "",
|
||||
"Properties": "",
|
||||
"PropertiesFoodHelp": "",
|
||||
"Properties_Food_Amount": "",
|
||||
"Properties_Food_Unit": "",
|
||||
"Property": "",
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"Access_Token": "",
|
||||
"Account": "Account",
|
||||
"Add": "Aggiungi",
|
||||
"AddAll": "",
|
||||
"AddFoodToShopping": "Aggiungi {food} alla tua lista della spesa",
|
||||
"AddToShopping": "Aggiungi a lista della spesa",
|
||||
"Add_Servings_to_Shopping": "Aggiungi {servings} porzioni alla spesa",
|
||||
@@ -169,6 +170,7 @@
|
||||
"Merge": "Unisci",
|
||||
"Merge_Keyword": "Unisci parola chiave",
|
||||
"Message": "Messaggio",
|
||||
"Miscellaneous": "",
|
||||
"Monday": "",
|
||||
"Month": "Mese",
|
||||
"Move": "Sposta",
|
||||
@@ -229,6 +231,7 @@
|
||||
"Private_Recipe": "Ricetta privata",
|
||||
"Private_Recipe_Help": "La ricetta viene mostrata solo a te e a chi l'hai condivisa.",
|
||||
"Profile": "",
|
||||
"PropertiesFoodHelp": "",
|
||||
"Protected": "Protetto",
|
||||
"Proteins": "Proteine",
|
||||
"Quick actions": "Azioni rapide",
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"Access_Token": "",
|
||||
"Account": "",
|
||||
"Add": "",
|
||||
"AddAll": "",
|
||||
"AddFoodToShopping": "",
|
||||
"AddToShopping": "",
|
||||
"Add_Servings_to_Shopping": "",
|
||||
@@ -181,6 +182,7 @@
|
||||
"Merge": "",
|
||||
"Merge_Keyword": "Sujungti raktažodį",
|
||||
"Message": "",
|
||||
"Miscellaneous": "",
|
||||
"Monday": "",
|
||||
"Month": "",
|
||||
"Move": "",
|
||||
@@ -248,6 +250,7 @@
|
||||
"Private_Recipe_Help": "",
|
||||
"Profile": "",
|
||||
"Properties": "",
|
||||
"PropertiesFoodHelp": "",
|
||||
"Property": "",
|
||||
"Protected": "",
|
||||
"Proteins": "",
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"Access_Token": "",
|
||||
"Account": "",
|
||||
"Add": "Legg til",
|
||||
"AddAll": "",
|
||||
"AddFoodToShopping": "Legg til {food] i handlelisten din",
|
||||
"AddToShopping": "Legg til i handleliste",
|
||||
"Add_Servings_to_Shopping": "Legg til {servings} serveringer i handlelisten",
|
||||
@@ -176,6 +177,7 @@
|
||||
"Merge": "Slå sammen",
|
||||
"Merge_Keyword": "Slå sammen nøkkelord",
|
||||
"Message": "Melding",
|
||||
"Miscellaneous": "",
|
||||
"Monday": "",
|
||||
"Month": "Måned",
|
||||
"Move": "Flytt",
|
||||
@@ -240,6 +242,7 @@
|
||||
"Private_Recipe_Help": "Oppskriften er bare vist til deg og dem du har delt den med.",
|
||||
"Profile": "",
|
||||
"Properties": "Egenskaper",
|
||||
"PropertiesFoodHelp": "",
|
||||
"Property": "Egenskap",
|
||||
"Protected": "Beskyttet",
|
||||
"Proteins": "Protein",
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"Access_Token": "",
|
||||
"Account": "Account",
|
||||
"Add": "Voeg toe",
|
||||
"AddAll": "",
|
||||
"AddFoodToShopping": "Voeg {food} toe aan je boodschappenlijst",
|
||||
"AddToShopping": "Voeg toe aan boodschappenlijst",
|
||||
"Add_Servings_to_Shopping": "Voeg {servings} porties toe aan Winkelen",
|
||||
@@ -180,6 +181,7 @@
|
||||
"Merge": "Samenvoegen",
|
||||
"Merge_Keyword": "Voeg Etiket samen",
|
||||
"Message": "Bericht",
|
||||
"Miscellaneous": "",
|
||||
"Monday": "",
|
||||
"Month": "Maand",
|
||||
"Move": "Verplaats",
|
||||
@@ -244,6 +246,7 @@
|
||||
"Private_Recipe_Help": "Recept is alleen zichtbaar voor jou en de mensen waar je het mee gedeeld hebt.",
|
||||
"Profile": "",
|
||||
"Properties": "Eigenschappen",
|
||||
"PropertiesFoodHelp": "",
|
||||
"Property": "Eigenschap",
|
||||
"Protected": "Beschermd",
|
||||
"Proteins": "Eiwitten",
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"Access_Token": "",
|
||||
"Account": "Konto",
|
||||
"Add": "Dodaj",
|
||||
"AddAll": "",
|
||||
"AddFoodToShopping": "Dodaj {food} do swojej listy zakupów",
|
||||
"AddToShopping": "Dodaj do listy zakupów",
|
||||
"Add_Servings_to_Shopping": "Dodaj {servings} porcje do zakupów",
|
||||
@@ -199,6 +200,7 @@
|
||||
"Merge": "Scal",
|
||||
"Merge_Keyword": "Scal słowa kluczowe",
|
||||
"Message": "Wiadomość",
|
||||
"Miscellaneous": "",
|
||||
"Monday": "",
|
||||
"Month": "Miesiąc",
|
||||
"Move": "Przenieś",
|
||||
@@ -269,6 +271,7 @@
|
||||
"Private_Recipe_Help": "Przepis jest widoczny tylko dla Ciebie i dla osób, którym jest udostępniany.",
|
||||
"Profile": "",
|
||||
"Properties": "Właściwości",
|
||||
"PropertiesFoodHelp": "",
|
||||
"Properties_Food_Amount": "Właściwości ilości żywności",
|
||||
"Properties_Food_Unit": "Właściwości jednostek żywności",
|
||||
"Property": "Właściwość",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"Access_Token": "",
|
||||
"Add": "Adicionar",
|
||||
"AddAll": "",
|
||||
"AddFoodToShopping": "Adicionar {food} à sua lista de compras",
|
||||
"AddToShopping": "Adicionar á lista de compras",
|
||||
"Add_Servings_to_Shopping": "Adicionar {servings} doses ás compras",
|
||||
@@ -138,6 +139,7 @@
|
||||
"Meal_Types": "Tipos de refeições",
|
||||
"Merge": "Juntar",
|
||||
"Merge_Keyword": "Unir palavra-chave",
|
||||
"Miscellaneous": "",
|
||||
"Monday": "",
|
||||
"Month": "Mês",
|
||||
"Move": "Mover",
|
||||
@@ -191,6 +193,7 @@
|
||||
"Private_Recipe": "Receita Privada",
|
||||
"Private_Recipe_Help": "A receita só é mostrada ás pessoas com que foi partilhada.",
|
||||
"Profile": "",
|
||||
"PropertiesFoodHelp": "",
|
||||
"Protected": "Protegido",
|
||||
"Proteins": "Proteínas",
|
||||
"Quick actions": "Acções Rápidas",
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"Access_Token": "",
|
||||
"Account": "Conta",
|
||||
"Add": "Adicionar",
|
||||
"AddAll": "",
|
||||
"AddFoodToShopping": "Incluir {food} na sua lista de compras",
|
||||
"AddToShopping": "Incluir na Lista de Compras",
|
||||
"Add_Servings_to_Shopping": "Adicionar {servings} porções às compras",
|
||||
@@ -191,6 +192,7 @@
|
||||
"Merge": "Mesclar",
|
||||
"Merge_Keyword": "Mesclar palavra-chave",
|
||||
"Message": "Mensagem",
|
||||
"Miscellaneous": "",
|
||||
"Monday": "",
|
||||
"Month": "Mês",
|
||||
"Move": "Mover",
|
||||
@@ -256,6 +258,7 @@
|
||||
"Private_Recipe_Help": "Receita é visível somente para você e para pessoas compartilhadas.",
|
||||
"Profile": "",
|
||||
"Properties": "Propriedades",
|
||||
"PropertiesFoodHelp": "",
|
||||
"Properties_Food_Amount": "Quantidade de Alimento das Propriedades",
|
||||
"Properties_Food_Unit": "Unidade de Alimento das Propriedades",
|
||||
"Property": "Propriedade",
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"Access_Token": "",
|
||||
"Account": "Cont",
|
||||
"Add": "Adaugă",
|
||||
"AddAll": "",
|
||||
"AddFoodToShopping": "Adăugă {food} în lista de cumpărături",
|
||||
"AddToShopping": "Adaugă la lista de cumpărături",
|
||||
"Add_Servings_to_Shopping": "Adăugă {servings} porții la cumpărături",
|
||||
@@ -173,6 +174,7 @@
|
||||
"Merge": "Unire",
|
||||
"Merge_Keyword": "Unește cuvânt cheie",
|
||||
"Message": "Mesaj",
|
||||
"Miscellaneous": "",
|
||||
"Monday": "",
|
||||
"Month": "Lună",
|
||||
"Move": "Mută",
|
||||
@@ -233,6 +235,7 @@
|
||||
"Private_Recipe": "Rețetă privată",
|
||||
"Private_Recipe_Help": "Rețeta este arătată doar ție și oamenilor cu care este împărtășită.",
|
||||
"Profile": "",
|
||||
"PropertiesFoodHelp": "",
|
||||
"Protected": "Protejat",
|
||||
"Proteins": "Proteine",
|
||||
"Quick actions": "Acțiuni rapide",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"Access_Token": "",
|
||||
"Add": "Добавить",
|
||||
"AddAll": "",
|
||||
"AddFoodToShopping": "Добавить {food} в ваш список покупок",
|
||||
"AddToShopping": "Добавить в лист покупок",
|
||||
"Add_Servings_to_Shopping": "Добавить {servings} порции в список покупок",
|
||||
@@ -127,6 +128,7 @@
|
||||
"Meal_Types": "Типы питания",
|
||||
"Merge": "Объединить",
|
||||
"Merge_Keyword": "Объеденить ключевые слова",
|
||||
"Miscellaneous": "",
|
||||
"Monday": "",
|
||||
"Month": "Месяц",
|
||||
"Move": "Переместить",
|
||||
@@ -177,6 +179,7 @@
|
||||
"Previous_Period": "Предыдущий период",
|
||||
"Print": "Распечатать",
|
||||
"Profile": "",
|
||||
"PropertiesFoodHelp": "",
|
||||
"Protected": "Защищено",
|
||||
"Proteins": "Белки",
|
||||
"Quick actions": "Быстрые действия",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"Access_Token": "",
|
||||
"Add": "Dodaj",
|
||||
"AddAll": "",
|
||||
"AddFoodToShopping": "Dodaj {food} v nakupovalni listek",
|
||||
"AddToShopping": "Dodaj nakupovlanemu listku",
|
||||
"Add_Step": "Dodaj korak",
|
||||
@@ -123,6 +124,7 @@
|
||||
"Meal_Types": "Tipi obroka",
|
||||
"Merge": "Združi",
|
||||
"Merge_Keyword": "Združi ključno besedo",
|
||||
"Miscellaneous": "",
|
||||
"Monday": "",
|
||||
"Month": "Mesec",
|
||||
"Move": "Premakni",
|
||||
@@ -172,6 +174,7 @@
|
||||
"Private_Recipe": "Zasebni Recept",
|
||||
"Private_Recipe_Help": "Recept je prikazan samo vam in osebam, s katerimi ga delite.",
|
||||
"Profile": "",
|
||||
"PropertiesFoodHelp": "",
|
||||
"Proteins": "Beljakovine",
|
||||
"QuickEntry": "Hitri vnos",
|
||||
"Rating": "Ocena",
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"Access_Token": "",
|
||||
"Account": "Konto",
|
||||
"Add": "Lägg till",
|
||||
"AddAll": "",
|
||||
"AddFoodToShopping": "Lägg till {food} på din inköpslista",
|
||||
"AddToShopping": "Lägg till i inköpslista",
|
||||
"Add_Servings_to_Shopping": "Lägg till {servings} portioner till inköp",
|
||||
@@ -199,6 +200,7 @@
|
||||
"Merge": "Slå samman",
|
||||
"Merge_Keyword": "Slå samman nyckelord",
|
||||
"Message": "Meddelande",
|
||||
"Miscellaneous": "",
|
||||
"Monday": "",
|
||||
"Month": "Månad",
|
||||
"Move": "Flytta",
|
||||
@@ -269,6 +271,7 @@
|
||||
"Private_Recipe_Help": "Receptet visas bara för dig och personer som det delas med.",
|
||||
"Profile": "",
|
||||
"Properties": "Egenskaper",
|
||||
"PropertiesFoodHelp": "",
|
||||
"Properties_Food_Amount": "Egenskaper Livsmedel Mängd",
|
||||
"Properties_Food_Unit": "Egenskaper Livsmedel Enhet",
|
||||
"Property": "Egendom",
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"Access_Token": "",
|
||||
"Account": "Hesap",
|
||||
"Add": "Ekle",
|
||||
"AddAll": "",
|
||||
"AddFoodToShopping": "{food}'ı alışveriş listenize ekleyin",
|
||||
"AddToShopping": "Alışveriş listesine ekle",
|
||||
"Add_Servings_to_Shopping": "Alışverişe {servings} Porsiyon Ekle",
|
||||
@@ -198,6 +199,7 @@
|
||||
"Merge": "Birleştir",
|
||||
"Merge_Keyword": "Anahtar Kelimeyi Birleştir",
|
||||
"Message": "Mesaj",
|
||||
"Miscellaneous": "",
|
||||
"Monday": "",
|
||||
"Month": "Ay",
|
||||
"Move": "Taşı",
|
||||
@@ -268,6 +270,7 @@
|
||||
"Private_Recipe_Help": "Tarif yalnızca size ve paylaştığınız kişilere gösterilir.",
|
||||
"Profile": "",
|
||||
"Properties": "Özellikler",
|
||||
"PropertiesFoodHelp": "",
|
||||
"Properties_Food_Amount": "Özellikler Yiyecek Miktar",
|
||||
"Properties_Food_Unit": "Özellikler Yiyecek Birim",
|
||||
"Property": "Özellik",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"Access_Token": "",
|
||||
"Add": "Додати",
|
||||
"AddAll": "",
|
||||
"AddFoodToShopping": "Додати {food} до вашого списку покупок",
|
||||
"AddToShopping": "Додати до списку покупок",
|
||||
"Add_Servings_to_Shopping": "Додати {servings} Порції до Покупок",
|
||||
@@ -152,6 +153,7 @@
|
||||
"Meal_Types": "Типи страви",
|
||||
"Merge": "Об'єднати",
|
||||
"Merge_Keyword": "Об'єднати Ключове слово",
|
||||
"Miscellaneous": "",
|
||||
"Monday": "",
|
||||
"Month": "Місяць",
|
||||
"Move": "Перемістити",
|
||||
@@ -209,6 +211,7 @@
|
||||
"Private_Recipe": "Приватний Рецепт",
|
||||
"Private_Recipe_Help": "Рецепт показаний тільки Вам і тими з ким ви поділилися їм.",
|
||||
"Profile": "",
|
||||
"PropertiesFoodHelp": "",
|
||||
"Protected": "Захищено",
|
||||
"Proteins": "Білки",
|
||||
"Quick actions": "",
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"Access_Token": "",
|
||||
"Account": "账户",
|
||||
"Add": "添加",
|
||||
"AddAll": "",
|
||||
"AddFoodToShopping": "添加 {food} 到购物清单",
|
||||
"AddToShopping": "添加到购物清单",
|
||||
"Add_Servings_to_Shopping": "添加 {servings} 份到购物",
|
||||
@@ -194,6 +195,7 @@
|
||||
"Merge": "合并",
|
||||
"Merge_Keyword": "合并关键词",
|
||||
"Message": "信息",
|
||||
"Miscellaneous": "",
|
||||
"Monday": "",
|
||||
"Month": "月份",
|
||||
"Move": "移动",
|
||||
@@ -263,6 +265,7 @@
|
||||
"Private_Recipe_Help": "食谱只有你和共享的人会显示。",
|
||||
"Profile": "",
|
||||
"Properties": "属性",
|
||||
"PropertiesFoodHelp": "",
|
||||
"Properties_Food_Amount": "食物数量属性",
|
||||
"Properties_Food_Unit": "食品单位属性",
|
||||
"Property": "属性",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"Access_Token": "",
|
||||
"Add": "",
|
||||
"AddAll": "",
|
||||
"Add_nutrition_recipe": "為食譜添加營養資訊",
|
||||
"Add_to_Plan": "加入計劃",
|
||||
"Add_to_Shopping": "加入購物清單",
|
||||
@@ -44,6 +45,7 @@
|
||||
"ManageSubscription": "",
|
||||
"Manage_Books": "管理書籍",
|
||||
"Meal_Plan": "膳食計劃",
|
||||
"Miscellaneous": "",
|
||||
"Monday": "",
|
||||
"New": "",
|
||||
"New_Recipe": "",
|
||||
@@ -56,6 +58,7 @@
|
||||
"Preparation": "",
|
||||
"Print": "",
|
||||
"Profile": "",
|
||||
"PropertiesFoodHelp": "",
|
||||
"Proteins": "",
|
||||
"Rating": "",
|
||||
"Recently_Viewed": "",
|
||||
|
||||
@@ -8,6 +8,8 @@ import {
|
||||
MealType as IMealType,
|
||||
User as IUser,
|
||||
FoodInheritField as IFoodInheritField,
|
||||
SupermarketCategory as ISupermarketCategory,
|
||||
PropertyType as IPropertyType,
|
||||
} from "@/openapi";
|
||||
|
||||
export function getModelFromStr(model_name: String) {
|
||||
@@ -33,6 +35,12 @@ export function getModelFromStr(model_name: String) {
|
||||
case 'foodinheritfield': {
|
||||
return new FoodInheritField
|
||||
}
|
||||
case 'supermarketcategory': {
|
||||
return new SupermarketCategory
|
||||
}
|
||||
case 'propertytype': {
|
||||
return new PropertyType
|
||||
}
|
||||
default: {
|
||||
throw Error(`Invalid Model ${model_name}, did you forget to register it in Models.ts?`)
|
||||
}
|
||||
@@ -152,7 +160,7 @@ export class MealType extends GenericModel<IMealType> {
|
||||
create(name: string) {
|
||||
const api = new ApiApi()
|
||||
return api.apiMealTypeCreate({mealType: {name: name} as IMealType}).then(r => {
|
||||
return r as unknown as IRecipeOverview
|
||||
return r as unknown as IMealType
|
||||
})
|
||||
}
|
||||
|
||||
@@ -202,4 +210,46 @@ export class FoodInheritField extends GenericModel<IFoodInheritField> {
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
export class SupermarketCategory extends GenericModel<ISupermarketCategory> {
|
||||
|
||||
create(name: string) {
|
||||
const api = new ApiApi()
|
||||
return api.apiSupermarketCategoryCreate({supermarketCategory: {name: name} as ISupermarketCategory}).then(r => {
|
||||
return r as unknown as ISupermarketCategory
|
||||
})
|
||||
}
|
||||
|
||||
list(query: string) {
|
||||
const api = new ApiApi()
|
||||
return api.apiSupermarketCategoryList({query: query}).then(r => {
|
||||
if (r.results) {
|
||||
return r.results
|
||||
} else {
|
||||
return []
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
export class PropertyType extends GenericModel<IPropertyType> {
|
||||
|
||||
create(name: string) {
|
||||
const api = new ApiApi()
|
||||
return api.apiPropertyTypeCreate({propertyType: {name: name} as IPropertyType}).then(r => {
|
||||
return r as unknown as IPropertyType
|
||||
})
|
||||
}
|
||||
|
||||
list(query: string) {
|
||||
const api = new ApiApi()
|
||||
return api.apiPropertyTypeList({query: query}).then(r => {
|
||||
if (r.results) {
|
||||
return r.results
|
||||
} else {
|
||||
return []
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -64,6 +64,7 @@ export default createVuetify({
|
||||
search: 'fa-solid fa-magnifying-glass',
|
||||
copy: 'fa-solid fa-copy',
|
||||
close: 'fa-solid fa-xmark',
|
||||
help: 'fa-solid fa-info',
|
||||
settings: 'fa-solid fa-sliders',
|
||||
spaces: 'fa-solid fa-database',
|
||||
shopping: 'fa-solid fa-cart-shopping',
|
||||
|
||||
Reference in New Issue
Block a user