diff --git a/vue3/src/apps/tandoor/Tandoor.vue b/vue3/src/apps/tandoor/Tandoor.vue
index de49c5b89..90d1ee50d 100644
--- a/vue3/src/apps/tandoor/Tandoor.vue
+++ b/vue3/src/apps/tandoor/Tandoor.vue
@@ -7,7 +7,7 @@
- {{useUserPreferenceStore().userSettings.user.displayName.charAt(0)}}
+ {{ useUserPreferenceStore().userSettings.user.displayName.charAt(0) }}
@@ -83,9 +83,13 @@
-
-
+
+
+
+
+
+
@@ -135,6 +139,8 @@ import {useDisplay} from "vuetify"
import VSnackbarQueued from "@/components/display/VSnackbarQueued.vue";
import MessageListDialog from "@/components/dialogs/MessageListDialog.vue";
import {useUserPreferenceStore} from "@/stores/UserPreferenceStore";
+import {TAutomation, TCookLog, TFood, TKeyword, TPropertyType, TSupermarket, TSupermarketCategory, TUnit, TUnitConversion, TUserFile, TViewLog} from "@/types/Models";
+import NavigationDrawerContextMenu from "@/components/display/NavigationDrawerContextMenu.vue";
const {lgAndUp} = useDisplay()
diff --git a/vue3/src/apps/tandoor/main.ts b/vue3/src/apps/tandoor/main.ts
index 82b890225..22b803bbc 100644
--- a/vue3/src/apps/tandoor/main.ts
+++ b/vue3/src/apps/tandoor/main.ts
@@ -26,6 +26,7 @@ import UserSpaceSettings from "@/components/settings/UserSpaceSettings.vue";
import ApiSettings from "@/components/settings/ApiSettings.vue";
import ModelListPage from "@/pages/ModelListPage.vue";
import ModelEditPage from "@/pages/ModelEditPage.vue";
+import RecipeImportPage from "@/pages/RecipeImportPage.vue";
const routes = [
{path: '/', component: StartPage, name: 'view_home'},
@@ -46,6 +47,7 @@ const routes = [
{path: '/shopping', component: ShoppingListPage, name: 'view_shopping'},
{path: '/mealplan', component: MealPlanPage, name: 'view_mealplan'},
{path: '/books', component: ShoppingListPage, name: 'view_books'},
+ {path: '/recipe/import', component: RecipeImportPage, name: 'RecipeImportPage'},
{path: '/recipe/:id', component: RecipeViewPage, name: 'view_recipe', props: true},
{path: '/recipe/edit/:recipe_id', component: RecipeEditPage, name: 'edit_recipe', props: true},
diff --git a/vue3/src/components/display/NavigationDrawerContextMenu.vue b/vue3/src/components/display/NavigationDrawerContextMenu.vue
new file mode 100644
index 000000000..f35ff9ead
--- /dev/null
+++ b/vue3/src/components/display/NavigationDrawerContextMenu.vue
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+ {{ $t(m.localizationKey) }}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue3/src/pages/ModelListPage.vue b/vue3/src/pages/ModelListPage.vue
index c52e472da..7cbc53e8e 100644
--- a/vue3/src/pages/ModelListPage.vue
+++ b/vue3/src/pages/ModelListPage.vue
@@ -9,7 +9,7 @@
@@ -63,7 +63,7 @@ import {useI18n} from "vue-i18n";
import {
EditorSupportedModels,
GenericModel,
- getGenericModelFromString,
+ getGenericModelFromString, getListModels,
Model,
TAutomation,
TCookLog,
diff --git a/vue3/src/pages/RecipeImportPage.vue b/vue3/src/pages/RecipeImportPage.vue
new file mode 100644
index 000000000..9437b6642
--- /dev/null
+++ b/vue3/src/pages/RecipeImportPage.vue
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ test1
+
+
+ test2
+
+
+ test3
+
+
+ test4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue3/src/types/Models.ts b/vue3/src/types/Models.ts
index c78a59e37..edf829f28 100644
--- a/vue3/src/types/Models.ts
+++ b/vue3/src/types/Models.ts
@@ -26,6 +26,19 @@ function registerModel(model: Model) {
SUPPORTED_MODELS.set(model.name.toLowerCase(), model)
}
+/**
+ * returns a list of models that should be shown in the list/database view
+ */
+export function getListModels() {
+ let modelList: Model[] = []
+ SUPPORTED_MODELS.forEach((model) => {
+ if(!model.disableListView){
+ modelList.push(model)
+ }
+ })
+ return modelList
+}
+
/**
* common list parameters shared by all generic models
*/
@@ -66,6 +79,8 @@ export type Model = {
disableCreate?: boolean | undefined,
disableUpdate?: boolean | undefined,
disableDelete?: boolean | undefined,
+ // disable showing this model as an option in the ModelListPage
+ disableListView?: boolean | undefined,
isPaginated: boolean | undefined,
@@ -151,6 +166,8 @@ export const TRecipe = {
isPaginated: true,
toStringKeys: ['name'],
+ disableListView: true,
+
tableHeaders: [
{title: 'Name', key: 'name'},
{title: 'Actions', key: 'action', align: 'end'},
@@ -166,6 +183,8 @@ export const TStep = {
isPaginated: true,
toStringKeys: ['name'],
+ disableListView: true,
+
tableHeaders: [
{title: 'Name', key: 'name'},
{title: 'Actions', key: 'action', align: 'end'},
@@ -181,6 +200,8 @@ export const TIngredient = {
isPaginated: true,
toStringKeys: ['id'],
+ disableListView: true,
+
tableHeaders: [
{title: 'Name', key: 'id'},
{title: 'Actions', key: 'action', align: 'end'},
@@ -211,6 +232,8 @@ export const TMealPlan = {
isPaginated: true,
toStringKeys: ['title', 'recipe.name'],
+ disableListView: true,
+
tableHeaders: [
{title: 'Title', key: 'title'},
{title: 'StartDate', key: 'startDate'},
@@ -227,6 +250,7 @@ export const TUser = {
disableCreate: true,
disableDelete: true,
disableUpdate: true,
+ disableListView: true,
isPaginated: false,
toStringKeys: ['displayName'],
@@ -274,6 +298,7 @@ export const TShoppingListEntry = {
localizationKey: 'ShoppingListEntry',
icon: 'fa-solid fa-list-check',
+ disableListView: true,
isPaginated: true,
toStringKeys: ['amount', 'unit.name', 'food.name'],
@@ -306,6 +331,7 @@ export const TProperty = {
localizationKey: 'Property',
icon: 'fa-solid fa-database',
+ disableListView: true,
isPaginated: true,
toStringKeys: ['propertyAmount', 'propertyType.name'],
@@ -404,6 +430,7 @@ export const TAccessToken = {
localizationKey: 'Access_Token',
icon: 'fa-solid fa-key',
+ disableListView: true,
isPaginated: true,
toStringKeys: ['token'],
@@ -420,6 +447,7 @@ export const TUserSpace = {
localizationKey: 'SpaceMembers',
icon: 'fa-solid fa-users',
+ disableListView: true,
isPaginated: true,
toStringKeys: ['user.displayName'],
@@ -437,8 +465,8 @@ export const TInviteLink = {
localizationKey: 'Invite_Link',
icon: 'fa-solid fa-link',
+ disableListView: true,
isPaginated: true,
-
toStringKeys: ['email', 'role'],
tableHeaders: [
@@ -455,6 +483,7 @@ export const TFoodInheritField = {
localizationKey: 'FoodInherit',
icon: 'fa-solid fa-list',
+ disableListView: true,
toStringKeys: ['name'],
disableCreate: true,