mirror of
https://github.com/TandoorRecipes/recipes.git
synced 2026-01-06 22:58:19 -05:00
new recipe fix
This commit is contained in:
@@ -10,7 +10,7 @@
|
|||||||
<v-icon icon="$add"></v-icon>
|
<v-icon icon="$add"></v-icon>
|
||||||
<v-menu activator="parent">
|
<v-menu activator="parent">
|
||||||
<v-list>
|
<v-list>
|
||||||
<v-list-item prepend-icon="$add" :to="{ name: 'ModelEditPage', params: {model: 'Recipe'} }">{{ $t('Create Recipe') }}</v-list-item>
|
<v-list-item prepend-icon="$add" :to="{ name: 'ModelEditPage', params: {model: 'recipe'} }">{{ $t('Create Recipe') }}</v-list-item>
|
||||||
<v-list-item prepend-icon="fa-solid fa-globe" :to="{ name: 'RecipeImportPage', params: {} }">{{ $t('Import Recipe') }}</v-list-item>
|
<v-list-item prepend-icon="fa-solid fa-globe" :to="{ name: 'RecipeImportPage', params: {} }">{{ $t('Import Recipe') }}</v-list-item>
|
||||||
</v-list>
|
</v-list>
|
||||||
</v-menu>
|
</v-menu>
|
||||||
|
|||||||
@@ -75,7 +75,7 @@
|
|||||||
<v-tabs-window-item value="properties">
|
<v-tabs-window-item value="properties">
|
||||||
<v-form :disabled="loading">
|
<v-form :disabled="loading">
|
||||||
<v-alert class="mb-2" icon="$help">{{ $t('PropertiesFoodHelp') }}</v-alert>
|
<v-alert class="mb-2" icon="$help">{{ $t('PropertiesFoodHelp') }}</v-alert>
|
||||||
<properties-editor v-model="editingObj.properties" :amount-for="$t('Serving')"></properties-editor>
|
<properties-editor v-model="editingObj.properties" :amount-for="$t('Serving')"></properties-editor>
|
||||||
</v-form>
|
</v-form>
|
||||||
</v-tabs-window-item>
|
</v-tabs-window-item>
|
||||||
<v-tabs-window-item value="settings">
|
<v-tabs-window-item value="settings">
|
||||||
@@ -100,7 +100,8 @@
|
|||||||
<v-list>
|
<v-list>
|
||||||
<vue-draggable handle=".drag-handle" v-model="editingObj.steps" :on-sort="sortSteps">
|
<vue-draggable handle=".drag-handle" v-model="editingObj.steps" :on-sort="sortSteps">
|
||||||
<v-list-item v-for="(s,i) in editingObj.steps" :key="s.id">
|
<v-list-item v-for="(s,i) in editingObj.steps" :key="s.id">
|
||||||
<v-chip color="primary">{{ i + 1 }}</v-chip> {{s.name}}
|
<v-chip color="primary">{{ i + 1 }}</v-chip>
|
||||||
|
{{ s.name }}
|
||||||
<template #append>
|
<template #append>
|
||||||
<v-icon class="drag-handle" icon="$dragHandle"></v-icon>
|
<v-icon class="drag-handle" icon="$dragHandle"></v-icon>
|
||||||
</template>
|
</template>
|
||||||
@@ -115,7 +116,7 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|
||||||
import {onMounted, PropType, ref} from "vue";
|
import {onMounted, PropType, ref} from "vue";
|
||||||
import {Recipe} from "@/openapi";
|
import {Recipe, Step} from "@/openapi";
|
||||||
import ModelEditorBase from "@/components/model_editors/ModelEditorBase.vue";
|
import ModelEditorBase from "@/components/model_editors/ModelEditorBase.vue";
|
||||||
import {useModelEditorFunctions} from "@/composables/useModelEditorFunctions";
|
import {useModelEditorFunctions} from "@/composables/useModelEditorFunctions";
|
||||||
import {useI18n} from "vue-i18n";
|
import {useI18n} from "vue-i18n";
|
||||||
@@ -140,13 +141,17 @@ const tab = ref("recipe")
|
|||||||
const dialogStepManager = ref(false)
|
const dialogStepManager = ref(false)
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
setupState(props.item, props.itemId)
|
setupState(props.item, props.itemId, {
|
||||||
|
newItemFunction: () => {
|
||||||
|
editingObj.value.steps = [] as Step[]
|
||||||
|
}
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* called by draggable in step manager dialog when steps are sorted
|
* called by draggable in step manager dialog when steps are sorted
|
||||||
*/
|
*/
|
||||||
function sortSteps(){
|
function sortSteps() {
|
||||||
editingObj.value.steps.forEach((value, index) => {
|
editingObj.value.steps.forEach((value, index) => {
|
||||||
value.order = index
|
value.order = index
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -145,6 +145,7 @@ export function useModelEditorFunctions<T>(modelName: EditorSupportedModels, emi
|
|||||||
editingObj.value = r
|
editingObj.value = r
|
||||||
useMessageStore().addPreparedMessage(PreparedMessage.UPDATE_SUCCESS)
|
useMessageStore().addPreparedMessage(PreparedMessage.UPDATE_SUCCESS)
|
||||||
}).catch((err: any) => {
|
}).catch((err: any) => {
|
||||||
|
console.error(err)
|
||||||
useMessageStore().addError(ErrorMessageType.UPDATE_ERROR, err)
|
useMessageStore().addError(ErrorMessageType.UPDATE_ERROR, err)
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
loading.value = false
|
loading.value = false
|
||||||
@@ -155,6 +156,7 @@ export function useModelEditorFunctions<T>(modelName: EditorSupportedModels, emi
|
|||||||
editingObj.value = r
|
editingObj.value = r
|
||||||
useMessageStore().addPreparedMessage(PreparedMessage.CREATE_SUCCESS)
|
useMessageStore().addPreparedMessage(PreparedMessage.CREATE_SUCCESS)
|
||||||
}).catch((err: any) => {
|
}).catch((err: any) => {
|
||||||
|
console.error(err)
|
||||||
useMessageStore().addError(ErrorMessageType.CREATE_ERROR, err)
|
useMessageStore().addError(ErrorMessageType.CREATE_ERROR, err)
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
loading.value = false
|
loading.value = false
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<v-card-title><i class="fa-solid fa-eye-slash"></i> {{ $t('search_no_recipes') }}</v-card-title>
|
<v-card-title><i class="fa-solid fa-eye-slash"></i> {{ $t('search_no_recipes') }}</v-card-title>
|
||||||
<v-card-text>
|
<v-card-text>
|
||||||
<v-btn-group divided>
|
<v-btn-group divided>
|
||||||
<v-btn size="large" color="success" prepend-icon="$create" :to="{ name: 'ModelEditPage', params: {model: 'Recipe'} }">{{ $t('Create Recipe') }}</v-btn>
|
<v-btn size="large" color="success" prepend-icon="$create" :to="{ name: 'ModelEditPage', params: {model: 'recipe'} }">{{ $t('Create Recipe') }}</v-btn>
|
||||||
<v-btn size="large" color="primary" prepend-icon="fa-solid fa-globe" :to="{ name: 'RecipeImportPage', params: {} }">{{ $t('Import Recipe') }}</v-btn>
|
<v-btn size="large" color="primary" prepend-icon="fa-solid fa-globe" :to="{ name: 'RecipeImportPage', params: {} }">{{ $t('Import Recipe') }}</v-btn>
|
||||||
</v-btn-group>
|
</v-btn-group>
|
||||||
</v-card-text>
|
</v-card-text>
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import {useStorage} from "@vueuse/core";
|
|||||||
import {DateTime} from "luxon";
|
import {DateTime} from "luxon";
|
||||||
import {ResponseError} from "@/openapi";
|
import {ResponseError} from "@/openapi";
|
||||||
import {useI18n} from "vue-i18n";
|
import {useI18n} from "vue-i18n";
|
||||||
|
import {useUserPreferenceStore} from "@/stores/UserPreferenceStore";
|
||||||
|
|
||||||
/** @enum {string} different message types */
|
/** @enum {string} different message types */
|
||||||
export enum MessageType {
|
export enum MessageType {
|
||||||
|
|||||||
Reference in New Issue
Block a user